diff options
598 files changed, 87318 insertions, 22350 deletions
diff --git a/EVENTS.txt b/EVENTS.txt index cf9c6123f..1a3b2594a 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -818,3 +818,251 @@ 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 + +StartNoticeSaveWeb: before saving a notice through the Web interface +- $action: action being executed (instance of NewNoticeAction) +- &$authorId: integer ID of the author +- &$text: text of the notice +- &$options: additional options (location, replies, etc.) + +EndNoticeSaveWeb: after saving a notice through the Web interface +- $action: action being executed (instance of NewNoticeAction) +- $notice: notice that was saved + +StartRssEntryArray: at the start of copying a notice to an array +- $notice: the notice being copied +- &$entry: the entry (empty at beginning) + +EndRssEntryArray: at the end of copying a notice to an array +- $notice: the notice being copied +- &$entry: the entry, with all the fields filled up + +NoticeDeleteRelated: at the beginning of deleting related fields to a notice +- $notice: notice being deleted @@ -2,8 +2,8 @@ README ------ -StatusNet 0.9.2 ("King of Birds") -3 May 2010 +StatusNet 0.9.4beta2 +11 August 2010 This is the README file for StatusNet, the Open Source microblogging platform. It includes installation instructions, descriptions of @@ -43,6 +43,10 @@ on status.net is identical to the software available for download, so you can move back and forth between a hosted version or a version installed on your own servers. +A commercial software subscription is available from StatusNet Inc. It +includes 24-hour technical support and developer support. More +information at http://status.net/contact or email sales@status.net. + License ======= @@ -77,40 +81,31 @@ 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 security, bug and feature release since version 0.9.3 released on +29 June 2010. + +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. -Because of fixes to OStatus bugs, it is highly recommended that all -public sites upgrade to the new version immediately. +Changes from 0.9.4beta1: +- fix for daemon config switching on multi-site setup 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. +- OpenID and OAuth libraries patched for potential timing attack +- OStatus feed i/o updated for Activity Streams +- Correctness fixes on XRD, other discovery bits +- Support for contacting SNI-based SSL virtual hosts when SSL + certificate verification is enabled (requires PHP 5.3.2+ or + enabling CURL backend with $config['http']['curl'] = true) +- Experimental SubMirror plugin +- Multi-site status_network table mode has been tweaked to support + multiple tags better +- Many updates to user interface translation from TranslateWiki +- Many other bugfixes + +A full changelog is available at http://status.net/wiki/StatusNet_0.9.4. Prerequisites ============= @@ -121,8 +116,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 @@ -138,7 +133,6 @@ Your PHP installation must include the following PHP extensions: - MySQL. For accessing the database. - GD. For scaling down avatar images. - mbstring. For handling Unicode (UTF-8) encoded strings. -- gettext. For multiple languages. Default on many PHP installs. For some functionality, you will also need the following extensions: @@ -153,6 +147,8 @@ For some functionality, you will also need the following extensions: Sphinx server to serve the search queries. - bcmath or gmp. For Salmon signatures (part of OStatus). Needed if you have OStatus configured. +- gettext. For multiple languages. Default on many PHP installs; + will be emulated if not present. You will almost definitely get 2-3 times better performance from your site if you install a PHP bytecode cache/accelerator. Some well-known @@ -222,7 +218,7 @@ especially if you've previously installed PHP/MySQL packages. 1. Unpack the tarball you downloaded on your Web server. Usually a command like this will work: - tar zxf statusnet-0.9.2.tar.gz + tar zxf statusnet-0.9.4.tar.gz ...which will make a statusnet-0.9.2 subdirectory in your current directory. (If you don't have shell access on your Web server, you @@ -232,7 +228,7 @@ especially if you've previously installed PHP/MySQL packages. 2. Move the tarball to a directory of your choosing in your Web root directory. Usually something like this will work: - mv statusnet-0.9.2 /var/www/statusnet + mv statusnet-0.9.4 /var/www/statusnet This will make your StatusNet instance available in the statusnet path of your server, like "http://example.net/statusnet". "microblog" or diff --git a/actions/all.php b/actions/all.php index a977fce95..6c14d2f13 100644 --- a/actions/all.php +++ b/actions/all.php @@ -18,15 +18,19 @@ * * @category Actions * @package Actions - * @author Evan Prodromou <evan@status.net> - * @author Mike Cochrane <mikec@mikenz.geek.nz> - * @author Robin Millette <millette@controlyourself.ca> * @author Adrian Lang <mail@adrianlang.de> - * @author Meitar Moscovitz <meitarm@gmail.com> - * @author Sarven Capadisli <csarven@status.net> + * @author Brenda Wallace <shiny@cpan.org> + * @author Brion Vibber <brion@pobox.com> * @author Craig Andrews <candrews@integralblue.com> + * @author Evan Prodromou <evan@status.net> * @author Jeffery To <jeffery.to@gmail.com> - * @author Zach Copley <zach@controlyourself.ca> + * @author Meitar Moscovitz <meitarm@gmail.com> + * @author Mike Cochrane <mikec@mikenz.geek.nz> + * @author Robin Millette <millette@status.net> + * @author Sarven Capadisli <csarven@status.net> + * @author Siebrand Mazeland <s.mazeland@xs4all.nl> + * @author Zach Copley <zach@status.net> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license GNU Affero General Public License http://www.gnu.org/licenses/ * @link http://status.net */ @@ -139,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/apiaccountratelimitstatus.php b/actions/apiaccountratelimitstatus.php index f19e315bf..e2dff2db9 100644 --- a/actions/apiaccountratelimitstatus.php +++ b/actions/apiaccountratelimitstatus.php @@ -21,8 +21,10 @@ * * @category API * @package StatusNet + * @author Brion Vibber <brion@pobox.com> * @author Evan Prodromou <evan@status.net> * @author Robin Millette <robin@millette.info> + * @author Siebrand Mazeland <s.mazeland@xs4all.nl> * @author Zach Copley <zach@status.net> * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 diff --git a/actions/apiaccountupdatedeliverydevice.php b/actions/apiaccountupdatedeliverydevice.php index 05d19c22d..295378aa6 100644 --- a/actions/apiaccountupdatedeliverydevice.php +++ b/actions/apiaccountupdatedeliverydevice.php @@ -21,6 +21,7 @@ * * @category API * @package StatusNet + * @author Siebrand Mazeland <s.mazeland@xs4all.nl> * @author Zach Copley <zach@status.net> * @copyright 2009 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 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/apiaccountverifycredentials.php b/actions/apiaccountverifycredentials.php index ea61a3205..79416e9b2 100644 --- a/actions/apiaccountverifycredentials.php +++ b/actions/apiaccountverifycredentials.php @@ -75,7 +75,7 @@ class ApiAccountVerifyCredentialsAction extends ApiAuthAction if ($this->format == 'xml') { $this->initDocument('xml'); - $this->showTwitterXmlUser($twitter_user); + $this->showTwitterXmlUser($twitter_user, 'user', true); $this->endDocument('xml'); } elseif ($this->format == 'json') { $this->initDocument('json'); 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/apidirectmessage.php b/actions/apidirectmessage.php index 53da9e0c6..7a0f46274 100644 --- a/actions/apidirectmessage.php +++ b/actions/apidirectmessage.php @@ -232,7 +232,8 @@ class ApiDirectMessageAction extends ApiAuthAction function showXmlDirectMessages() { $this->initDocument('xml'); - $this->elementStart('direct-messages', array('type' => 'array')); + $this->elementStart('direct-messages', array('type' => 'array', + 'xmlns:statusnet' => 'http://status.net/schema/api/1/')); foreach ($this->messages as $m) { $dm_array = $this->directMessageArray($m); diff --git a/actions/apifavoritecreate.php b/actions/apifavoritecreate.php index 00b6349b0..0447a92ba 100644 --- a/actions/apifavoritecreate.php +++ b/actions/apifavoritecreate.php @@ -25,6 +25,7 @@ * @author Evan Prodromou <evan@status.net> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apifavoritedestroy.php b/actions/apifavoritedestroy.php index c4daf480e..9f2efdd00 100644 --- a/actions/apifavoritedestroy.php +++ b/actions/apifavoritedestroy.php @@ -25,6 +25,7 @@ * @author Evan Prodromou <evan@status.net> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ 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/apigroupcreate.php b/actions/apigroupcreate.php index 3eb3ae5fc..d216c15cd 100644 --- a/actions/apigroupcreate.php +++ b/actions/apigroupcreate.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigroupismember.php b/actions/apigroupismember.php index f51c747df..eaa4769f3 100644 --- a/actions/apigroupismember.php +++ b/actions/apigroupismember.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigroupjoin.php b/actions/apigroupjoin.php index 28df72fa9..5265ec629 100644 --- a/actions/apigroupjoin.php +++ b/actions/apigroupjoin.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigroupleave.php b/actions/apigroupleave.php index f6e52b26e..8c100d58a 100644 --- a/actions/apigroupleave.php +++ b/actions/apigroupleave.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigrouplist.php b/actions/apigrouplist.php index 3ea2c30cb..148c802f4 100644 --- a/actions/apigrouplist.php +++ b/actions/apigrouplist.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigrouplistall.php b/actions/apigrouplistall.php index bd05fa3ea..a8317608d 100644 --- a/actions/apigrouplistall.php +++ b/actions/apigrouplistall.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigroupmembership.php b/actions/apigroupmembership.php index c97b27fac..ffd5c7c7d 100644 --- a/actions/apigroupmembership.php +++ b/actions/apigroupmembership.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apigroupshow.php b/actions/apigroupshow.php index 8e471689a..2998e505e 100644 --- a/actions/apigroupshow.php +++ b/actions/apigroupshow.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ 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/twitapisearchatom.php b/actions/apisearchatom.php index 51e8a8881..60bb8b040 100644 --- a/actions/twitapisearchatom.php +++ b/actions/apisearchatom.php @@ -22,7 +22,7 @@ * @category Search * @package StatusNet * @author Zach Copley <zach@status.net> - * @copyright 2008-2009 StatusNet, Inc. + * @copyright 2008-2010 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ @@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +require_once INSTALLDIR.'/lib/apiprivateauth.php'; + /** * Action for outputting search results in Twitter compatible Atom * format. @@ -44,10 +46,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ * - * @see ApiAction + * @see ApiPrivateAuthAction */ -class TwitapisearchatomAction extends ApiAction +class ApiSearchAtomAction extends ApiPrivateAuthAction { var $cnt; @@ -96,8 +98,11 @@ class TwitapisearchatomAction extends ApiAction function prepare($args) { + common_debug("in apisearchatom prepare()"); + parent::prepare($args); + $this->query = $this->trimmed('q'); $this->lang = $this->trimmed('lang'); $this->rpp = $this->trimmed('rpp'); @@ -138,6 +143,7 @@ class TwitapisearchatomAction extends ApiAction function handle($args) { parent::handle($args); + common_debug("In apisearchatom handle()"); $this->showAtom(); } diff --git a/actions/twitapisearchjson.php b/actions/apisearchjson.php index b5c006aa7..e44634684 100644 --- a/actions/twitapisearchjson.php +++ b/actions/apisearchjson.php @@ -22,7 +22,7 @@ * @category Search * @package StatusNet * @author Zach Copley <zach@status.net> - * @copyright 2008-2009 StatusNet, Inc. + * @copyright 2008-2010 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ @@ -31,6 +31,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +require_once INSTALLDIR.'/lib/apiprivateauth.php'; require_once INSTALLDIR.'/lib/jsonsearchresultslist.php'; /** @@ -44,7 +45,7 @@ require_once INSTALLDIR.'/lib/jsonsearchresultslist.php'; * @see ApiAction */ -class TwitapisearchjsonAction extends ApiAction +class ApiSearchJSONAction extends ApiPrivateAuthAction { var $query; var $lang; @@ -64,6 +65,8 @@ class TwitapisearchjsonAction extends ApiAction function prepare($args) { + common_debug("apisearchjson prepare()"); + parent::prepare($args); $this->query = $this->trimmed('q'); diff --git a/actions/apistatusesdestroy.php b/actions/apistatusesdestroy.php index f7d52f020..0dfeb4812 100644 --- a/actions/apistatusesdestroy.php +++ b/actions/apistatusesdestroy.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ @@ -57,7 +58,7 @@ require_once INSTALLDIR . '/lib/apiauth.php'; class ApiStatusesDestroyAction extends ApiAuthAction { - var $status = null; + var $status = null; /** * Take arguments for running @@ -99,39 +100,43 @@ class ApiStatusesDestroyAction extends ApiAuthAction parent::handle($args); if (!in_array($this->format, array('xml', 'json'))) { - $this->clientError(_('API method not found.'), $code = 404); - return; + $this->clientError( + _('API method not found.'), + 404 + ); + return; } - if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { - $this->clientError(_('This method requires a POST or DELETE.'), - 400, $this->format); - return; - } - - if (empty($this->notice)) { - $this->clientError(_('No status found with that ID.'), - 404, $this->format); - return; - } - - if ($this->user->id == $this->notice->profile_id) { - $replies = new Reply; - $replies->get('notice_id', $this->notice_id); - $replies->delete(); - $this->notice->delete(); - - if ($this->format == 'xml') { - $this->showSingleXmlStatus($this->notice); - } elseif ($this->format == 'json') { - $this->show_single_json_status($this->notice); - } - } else { - $this->clientError(_('You may not delete another user\'s status.'), - 403, $this->format); - } - - $this->showNotice(); + if (!in_array($_SERVER['REQUEST_METHOD'], array('POST', 'DELETE'))) { + $this->clientError( + _('This method requires a POST or DELETE.'), + 400, + $this->format + ); + return; + } + + if (empty($this->notice)) { + $this->clientError( + _('No status found with that ID.'), + 404, $this->format + ); + return; + } + + if ($this->user->id == $this->notice->profile_id) { + $replies = new Reply; + $replies->get('notice_id', $this->notice_id); + $replies->delete(); + $this->notice->delete(); + $this->showNotice(); + } else { + $this->clientError( + _('You may not delete another user\'s status.'), + 403, + $this->format + ); + } } /** diff --git a/actions/apistatusesshow.php b/actions/apistatusesshow.php index 0315d2953..476820a43 100644 --- a/actions/apistatusesshow.php +++ b/actions/apistatusesshow.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/actions/apistatusesupdate.php b/actions/apistatusesupdate.php index a0a81f336..fa3f611c0 100644 --- a/actions/apistatusesupdate.php +++ b/actions/apistatusesupdate.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @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/ */ @@ -195,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; } @@ -216,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 ); @@ -290,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; } @@ -304,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 + ); } } @@ -331,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/apisubscriptions.php b/actions/apisubscriptions.php index 0ba324057..63d65f289 100644 --- a/actions/apisubscriptions.php +++ b/actions/apisubscriptions.php @@ -206,7 +206,8 @@ class ApiSubscriptionsAction extends ApiBareAuthAction { switch ($this->format) { case 'xml': - $this->elementStart('users', array('type' => 'array')); + $this->elementStart('users', array('type' => 'array', + 'xmlns:statusnet' => 'http://status.net/schema/api/1/')); foreach ($this->profiles as $profile) { $this->showProfile( $profile, diff --git a/actions/apitimelinefavorites.php b/actions/apitimelinefavorites.php index 79632447e..7228960c0 100644 --- a/actions/apitimelinefavorites.php +++ b/actions/apitimelinefavorites.php @@ -25,6 +25,7 @@ * @author Evan Prodromou <evan@status.net> * @author Zach Copley <zach@status.net> * @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/ */ @@ -150,7 +151,7 @@ class ApiTimelineFavoritesAction extends ApiBareAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelinefriends.php b/actions/apitimelinefriends.php index 3c25c049e..40ce35979 100644 --- a/actions/apitimelinefriends.php +++ b/actions/apitimelinefriends.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @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/ */ @@ -248,7 +249,7 @@ class ApiTimelineFriendsAction extends ApiBareAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelinegroup.php b/actions/apitimelinegroup.php index 56d1de094..7a40fd808 100644 --- a/actions/apitimelinegroup.php +++ b/actions/apitimelinegroup.php @@ -25,7 +25,8 @@ * @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/ */ @@ -105,7 +106,7 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction function showTimeline() { // We'll pull common formatting out of this for other formats - $atom = new AtomGroupNoticeFeed($this->group); + $atom = new AtomGroupNoticeFeed($this->group, $this->auth_user); $self = $this->getSelfUri(); @@ -137,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/apitimelinehome.php b/actions/apitimelinehome.php index 43a13dcda..27eb74169 100644 --- a/actions/apitimelinehome.php +++ b/actions/apitimelinehome.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ @@ -152,7 +153,7 @@ class ApiTimelineHomeAction extends ApiBareAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelinementions.php b/actions/apitimelinementions.php index c3aec7c5a..ed1ad20e3 100644 --- a/actions/apitimelinementions.php +++ b/actions/apitimelinementions.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ @@ -151,7 +152,7 @@ class ApiTimelineMentionsAction extends ApiBareAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelinepublic.php b/actions/apitimelinepublic.php index 30f9f4cda..f90164288 100644 --- a/actions/apitimelinepublic.php +++ b/actions/apitimelinepublic.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ @@ -219,7 +220,7 @@ class ApiTimelinePublicAction extends ApiPrivateAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelineretweetsofme.php b/actions/apitimelineretweetsofme.php index c77912fd0..ea922fc42 100644 --- a/actions/apitimelineretweetsofme.php +++ b/actions/apitimelineretweetsofme.php @@ -117,7 +117,7 @@ class ApiTimelineRetweetsOfMeAction extends ApiAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelinetag.php b/actions/apitimelinetag.php index fed1437ea..c7ec172ae 100644 --- a/actions/apitimelinetag.php +++ b/actions/apitimelinetag.php @@ -26,6 +26,7 @@ * @author Jeffery To <jeffery.to@gmail.com> * @author Zach Copley <zach@status.net> * @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 +139,7 @@ class ApiTimelineTagAction extends ApiPrivateAuthAction header('Content-Type: application/atom+xml; charset=utf-8'); - $atom = new AtomNoticeFeed(); + $atom = new AtomNoticeFeed($this->auth_user); $atom->setId($id); $atom->setTitle($title); diff --git a/actions/apitimelineuser.php b/actions/apitimelineuser.php index 11431a82c..17a283663 100644 --- a/actions/apitimelineuser.php +++ b/actions/apitimelineuser.php @@ -29,6 +29,7 @@ * @author Robin Millette <robin@millette.info> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ @@ -115,7 +116,7 @@ class ApiTimelineUserAction extends ApiBareAuthAction // We'll use the shared params from the Atom stub // for other feed types. - $atom = new AtomUserNoticeFeed($this->user); + $atom = new AtomUserNoticeFeed($this->user, $this->auth_user); $link = common_local_url( 'showstream', diff --git a/actions/twitapitrends.php b/actions/apitrends.php index 5a04569a2..5b74636c6 100644 --- a/actions/twitapitrends.php +++ b/actions/apitrends.php @@ -22,7 +22,7 @@ * @category Search * @package StatusNet * @author Zach Copley <zach@status.net> - * @copyright 2008-2009 StatusNet, Inc. + * @copyright 2008-2010 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ @@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +require_once INSTALLDIR.'/lib/apiprivateauth.php'; + /** * Returns the top ten queries that are currently trending * @@ -43,7 +45,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @see ApiAction */ -class TwitapitrendsAction extends ApiAction +class ApiTrendsAction extends ApiPrivateAuthAction { var $callback; @@ -82,7 +84,7 @@ class TwitapitrendsAction extends ApiAction */ function showTrends() { - $this->serverError(_('API method under construction.'), $code = 501); + $this->serverError(_('API method under construction.'), 501); } }
\ No newline at end of file diff --git a/actions/apiusershow.php b/actions/apiusershow.php index 6c8fad49b..28993102c 100644 --- a/actions/apiusershow.php +++ b/actions/apiusershow.php @@ -113,7 +113,7 @@ class ApiUserShowAction extends ApiPrivateAuthAction if ($this->format == 'xml') { $this->initDocument('xml'); - $this->showTwitterXmlUser($twitter_user); + $this->showTwitterXmlUser($twitter_user, 'user', true); $this->endDocument('xml'); } elseif ($this->format == 'json') { $this->initDocument('json'); diff --git a/actions/designadminpanel.php b/actions/designadminpanel.php index 8c08581b5..763737175 100644 --- a/actions/designadminpanel.php +++ b/actions/designadminpanel.php @@ -126,9 +126,19 @@ class DesignadminpanelAction extends AdminPanelAction return; } - // check for an image upload + // check for file uploads $bgimage = $this->saveBackgroundImage(); + $customTheme = $this->saveCustomTheme(); + + $oldtheme = common_config('site', 'theme'); + if ($customTheme) { + // This feels pretty hacky :D + $this->args['theme'] = $customTheme; + $themeChanged = true; + } else { + $themeChanged = ($this->trimmed('theme') != $oldtheme); + } static $settings = array('theme', 'logo'); @@ -140,15 +150,13 @@ class DesignadminpanelAction extends AdminPanelAction $this->validate($values); - $oldtheme = common_config('site', 'theme'); - $config = new Config(); $config->query('BEGIN'); // Only update colors if the theme has not changed. - if ($oldtheme == $values['theme']) { + if (!$themeChanged) { $bgcolor = new WebColor($this->trimmed('design_background')); $ccolor = new WebColor($this->trimmed('design_content')); @@ -190,6 +198,13 @@ class DesignadminpanelAction extends AdminPanelAction Config::save('design', 'backgroundimage', $bgimage); } + if (common_config('custom_css', 'enabled')) { + $css = $this->arg('css'); + if ($css != common_config('custom_css', 'css')) { + Config::save('custom_css', 'css', $css); + } + } + $config->query('COMMIT'); } @@ -264,6 +279,33 @@ class DesignadminpanelAction extends AdminPanelAction } /** + * Save the custom theme if the user uploaded one. + * + * @return mixed custom theme name, if succesful, or null if no theme upload. + * @throws ClientException for invalid theme archives + * @throws ServerException if trouble saving the theme files + */ + + function saveCustomTheme() + { + if (common_config('theme_upload', 'enabled') && + $_FILES['design_upload_theme']['error'] == UPLOAD_ERR_OK) { + + $upload = ThemeUploader::fromUpload('design_upload_theme'); + $basedir = common_config('local', 'dir'); + if (empty($basedir)) { + $basedir = INSTALLDIR . '/local'; + } + $name = 'custom'; // @todo allow multiples, custom naming? + $outdir = $basedir . '/theme/' . $name; + $upload->extract($outdir); + return $name; + } else { + return null; + } + } + + /** * Attempt to validate setting values * * @return void @@ -371,7 +413,15 @@ class DesignAdminPanelForm extends AdminForm function formData() { + $this->showLogo(); + $this->showTheme(); + $this->showBackground(); + $this->showColors(); + $this->showAdvanced(); + } + function showLogo() + { $this->out->elementStart('fieldset', array('id' => 'settings_design_logo')); $this->out->element('legend', null, _('Change logo')); @@ -384,6 +434,11 @@ class DesignAdminPanelForm extends AdminForm $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); + + } + + function showTheme() + { $this->out->elementStart('fieldset', array('id' => 'settings_design_theme')); $this->out->element('legend', null, _('Change theme')); @@ -407,10 +462,23 @@ class DesignAdminPanelForm extends AdminForm false, $this->value('theme')); $this->unli(); + if (common_config('theme_upload', 'enabled')) { + $this->li(); + $this->out->element('label', array('for' => 'design_upload_theme'), _('Custom theme')); + $this->out->element('input', array('id' => 'design_upload_theme', + 'name' => 'design_upload_theme', + 'type' => 'file')); + $this->out->element('p', 'form_guide', _('You can upload a custom StatusNet theme as a .ZIP archive.')); + $this->unli(); + } + $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); + } + function showBackground() + { $design = $this->out->design; $this->out->elementStart('fieldset', array('id' => @@ -486,6 +554,11 @@ class DesignAdminPanelForm extends AdminForm $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); + } + + function showColors() + { + $design = $this->out->design; $this->out->elementStart('fieldset', array('id' => 'settings_design_color')); $this->out->element('legend', null, _('Change colours')); @@ -493,6 +566,7 @@ class DesignAdminPanelForm extends AdminForm $this->out->elementStart('ul', 'form_data'); try { + // @fixme avoid loop unrolling in non-performance-critical contexts like this $bgcolor = new WebColor($design->backgroundcolor); @@ -560,6 +634,7 @@ class DesignAdminPanelForm extends AdminForm $this->unli(); } catch (WebColorException $e) { + // @fixme normalize them individually! common_log(LOG_ERR, 'Bad color values in site design: ' . $e->getMessage()); } @@ -569,6 +644,27 @@ class DesignAdminPanelForm extends AdminForm $this->out->elementEnd('ul'); } + function showAdvanced() + { + if (common_config('custom_css', 'enabled')) { + $this->out->elementStart('fieldset', array('id' => 'settings_design_advanced')); + $this->out->element('legend', null, _('Advanced')); + $this->out->elementStart('ul', 'form_data'); + + $this->li(); + $this->out->element('label', array('for' => 'css'), _('Custom CSS')); + $this->out->element('textarea', array('name' => 'css', + 'id' => 'css', + 'cols' => '50', + 'rows' => '10'), + strval(common_config('custom_css', 'css'))); + $this->unli(); + + $this->out->elementEnd('fieldset'); + $this->out->elementEnd('ul'); + } + } + /** * Action elements * 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/foaf.php b/actions/foaf.php index 2f054de0c..09af7b502 100644 --- a/actions/foaf.php +++ b/actions/foaf.php @@ -154,7 +154,9 @@ class FoafAction extends Action } $person = $this->showMicrobloggingAccount($this->profile, - common_root_url(), $this->user->uri, false); + common_root_url(), $this->user->uri, + /*$fetchSubscriptions*/true, + /*$isSubscriber*/false); // Get people who subscribe to user @@ -209,7 +211,8 @@ class FoafAction extends Action $this->showMicrobloggingAccount($profile, ($local == 'local') ? common_root_url() : null, $uri, - true); + /*$fetchSubscriptions*/false, + /*$isSubscriber*/($type == LISTENER || $type == BOTH)); if ($foaf_url) { $this->element('rdfs:seeAlso', array('rdf:resource' => $foaf_url)); } @@ -234,7 +237,21 @@ class FoafAction extends Action $this->elementEnd('PersonalProfileDocument'); } - function showMicrobloggingAccount($profile, $service=null, $useruri=null, $isSubscriber=false) + /** + * Output FOAF <account> bit for the given profile. + * + * @param Profile $profile + * @param mixed $service Root URL of this StatusNet instance for a local + * user, otherwise null. + * @param mixed $useruri URI string for the referenced profile.. + * @param boolean $fetchSubscriptions Should we load and list all their subscriptions? + * @param boolean $isSubscriber if not fetching subs, we can still mark the user as following the current page. + * + * @return array if $fetchSubscribers is set, return a list of info on those + * subscriptions. + */ + + function showMicrobloggingAccount($profile, $service=null, $useruri=null, $fetchSubscriptions=false, $isSubscriber=false) { $attr = array(); if ($useruri) { @@ -256,9 +273,7 @@ class FoafAction extends Action $person = array(); - if ($isSubscriber) { - $this->element('sioc:follows', array('rdf:resource'=>$this->user->uri . '#acct')); - } else { + if ($fetchSubscriptions) { // Get people user is subscribed to $sub = new Subscription(); $sub->subscriber = $profile->id; @@ -283,6 +298,9 @@ class FoafAction extends Action } unset($sub); + } else if ($isSubscriber) { + // Just declare that they follow the user whose FOAF we're showing. + $this->element('sioc:follows', array('rdf:resource' => $this->user->uri . '#acct')); } $this->elementEnd('OnlineAccount'); diff --git a/actions/geocode.php b/actions/geocode.php index e883c6ce4..d93493060 100644 --- a/actions/geocode.php +++ b/actions/geocode.php @@ -37,6 +37,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @category Action * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ diff --git a/actions/newnotice.php b/actions/newnotice.php index 748d104ff..ea832cf4e 100644 --- a/actions/newnotice.php +++ b/actions/newnotice.php @@ -131,6 +131,8 @@ class NewnoticeAction extends Action $user = common_current_user(); assert($user); // XXX: maybe an error instead... $content = $this->trimmed('status_textarea'); + $options = array(); + Event::handle('StartSaveNewNoticeWeb', array($this, $user, &$content, &$options)); if (!$content) { $this->clientError(_('No content!')); @@ -157,11 +159,9 @@ class NewnoticeAction extends Action Notice::maxContent())); } - $replyto = $this->trimmed('inreplyto'); - #If an ID of 0 is wrongly passed here, it will cause a database error, - #so override it... - if ($replyto == 0) { - $replyto = 'false'; + $replyto = intval($this->trimmed('inreplyto')); + if ($replyto) { + $options['reply_to'] = $replyto; } $upload = null; @@ -169,7 +169,10 @@ class NewnoticeAction extends Action if (isset($upload)) { - $content_shortened .= ' ' . $upload->shortUrl(); + if (Event::handle('StartSaveNewNoticeAppendAttachment', array($this, $upload, &$content_shortened, &$options))) { + $content_shortened .= ' ' . $upload->shortUrl(); + } + Event::handle('EndSaveNewNoticeAppendAttachment', array($this, $upload, &$content_shortened, &$options)); if (Notice::contentTooLong($content_shortened)) { $upload->delete(); @@ -182,8 +185,6 @@ class NewnoticeAction extends Action } } - $options = array('reply_to' => ($replyto == 'false') ? null : $replyto); - if ($user->shareLocation()) { // use browser data if checked; otherwise profile data if ($this->arg('notice_data-geo')) { @@ -203,11 +204,20 @@ class NewnoticeAction extends Action $options = array_merge($options, $locOptions); } - $notice = Notice::saveNew($user->id, $content_shortened, 'web', $options); + $author_id = $user->id; + $text = $content_shortened; - if (isset($upload)) { - $upload->attachToNotice($notice); + if (Event::handle('StartNoticeSaveWeb', array($this, &$author_id, &$text, &$options))) { + + $notice = Notice::saveNew($user->id, $content_shortened, 'web', $options); + + if (isset($upload)) { + $upload->attachToNotice($notice); + } + + Event::handle('EndNoticeSaveWeb', array($this, $notice)); } + Event::handle('EndSaveNewNoticeWeb', array($this, $user, &$content_shortened, &$options)); if ($this->boolean('ajax')) { header('Content-Type: text/xml;charset=utf-8'); 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/oembed.php b/actions/oembed.php index 1503aa9c2..e25e4cb25 100644 --- a/actions/oembed.php +++ b/actions/oembed.php @@ -23,6 +23,7 @@ * @package StatusNet * @author Evan Prodromou <evan@status.net> * @copyright 2008 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/ */ diff --git a/actions/publicxrds.php b/actions/publicxrds.php index 5fd4eead7..8f0337e4f 100644 --- a/actions/publicxrds.php +++ b/actions/publicxrds.php @@ -8,7 +8,9 @@ * @category Action * @package StatusNet * @author Evan Prodromou <evan@status.net> + * @author Craig Andrews <candrews@integralblue.com> * @author Robin Millette <millette@status.net> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ * @@ -44,6 +46,7 @@ require_once INSTALLDIR.'/lib/xrdsoutputter.php'; * @author Evan Prodromou <evan@status.net> * @author Robin Millette <millette@status.net> * @author Craig Andrews <candrews@integralblue.com> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ * 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/showgroup.php b/actions/showgroup.php index 3d369e9eb..17c37e4d7 100644 --- a/actions/showgroup.php +++ b/actions/showgroup.php @@ -430,14 +430,6 @@ class ShowgroupAction extends GroupDesignAction function showStatistics() { - // XXX: WORM cache this - $members = $this->group->getMembers(); - $members_count = 0; - /** $member->count() doesn't work. */ - while ($members->fetch()) { - $members_count++; - } - $this->elementStart('div', array('id' => 'entity_statistics', 'class' => 'section')); @@ -451,7 +443,7 @@ class ShowgroupAction extends GroupDesignAction $this->elementStart('dl', 'entity_members'); $this->element('dt', null, _('Members')); - $this->element('dd', null, (is_int($members_count)) ? $members_count : '0'); + $this->element('dd', null, $this->group->getMemberCount()); $this->elementEnd('dl'); $this->elementEnd('div'); diff --git a/actions/showstream.php b/actions/showstream.php index f9407e35a..2476f19fa 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -204,11 +204,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/actions/version.php b/actions/version.php index b6593e5ed..9e4e836d2 100644 --- a/actions/version.php +++ b/actions/version.php @@ -41,6 +41,8 @@ if (!defined('STATUSNET')) { * @category Info * @package StatusNet * @author Evan Prodromou <evan@status.net> + * @author Craig Andrews <candrews@integralblue.com> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 * @link http://status.net/ */ diff --git a/classes/File.php b/classes/File.php index c9477f5f1..407fd3211 100644 --- a/classes/File.php +++ b/classes/File.php @@ -116,7 +116,11 @@ class File extends Memcached_DataObject return false; } - function processNew($given_url, $notice_id=null) { + /** + * @fixme refactor this mess, it's gotten pretty scary. + * @param bool $followRedirects + */ + function processNew($given_url, $notice_id=null, $followRedirects=true) { if (empty($given_url)) return -1; // error, no url to process $given_url = File_redirection::_canonUrl($given_url); if (empty($given_url)) return -1; // error, no url to process @@ -124,6 +128,10 @@ class File extends Memcached_DataObject if (empty($file)) { $file_redir = File_redirection::staticGet('url', $given_url); if (empty($file_redir)) { + // @fixme for new URLs this also looks up non-redirect data + // such as target content type, size, etc, which we need + // for File::saveNew(); so we call it even if not following + // new redirects. $redir_data = File_redirection::where($given_url); if (is_array($redir_data)) { $redir_url = $redir_data['url']; @@ -131,14 +139,23 @@ 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) { + if ($redir_url === $given_url || strlen($redir_url) > 255 || !$followRedirects) { $x = File::saveNew($redir_data, $given_url); $file_id = $x->id; } else { - $x = File::processNew($redir_url, $notice_id); + // This seems kind of messed up... for now skipping this part + // if we're already under a redirect, so we don't go into + // horrible infinite loops if we've been given an unstable + // redirect (where the final destination of the first request + // doesn't match what we get when we ask for it again). + // + // Seen in the wild with clojure.org, which redirects through + // wikispaces for auth and appends session data in the URL params. + $x = File::processNew($redir_url, $notice_id, /*followRedirects*/false); $file_id = $x->id; File_redirection::saveNew($redir_data, $file_id, $given_url); } @@ -153,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.")); } } @@ -166,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); } @@ -176,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())'; @@ -183,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; @@ -219,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'); @@ -233,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')) { @@ -286,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); } @@ -325,4 +353,3 @@ class File extends Memcached_DataObject return !empty($enclosure); } } - diff --git a/classes/File_redirection.php b/classes/File_redirection.php index f128b3e07..51b8be3b0 100644 --- a/classes/File_redirection.php +++ b/classes/File_redirection.php @@ -210,6 +210,14 @@ class File_redirection extends Memcached_DataObject } else if (is_string($redir_data)) { // The file is a known redirect target. $file = File::staticGet('url', $redir_data); + if (empty($file)) { + // @fixme should we save a new one? + // this case was triggering sometimes for redirects + // with unresolvable targets; found while fixing + // "can't linkify" bugs with shortened links to + // SSL sites with cert issues. + return null; + } $file_id = $file->id; } } else { 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/Inbox.php b/classes/Inbox.php index 2533210b7..430419ba5 100644 --- a/classes/Inbox.php +++ b/classes/Inbox.php @@ -115,9 +115,12 @@ class Inbox extends Memcached_DataObject */ static function insertNotice($user_id, $notice_id) { - $inbox = DB_DataObject::staticGet('inbox', 'user_id', $user_id); - - if (empty($inbox)) { + // Going straight to the DB rather than trusting our caching + // during an update. Note: not using DB_DataObject::staticGet, + // which is unsafe to use directly (in-process caching causes + // memory leaks, which accumulate in queue processes). + $inbox = new Inbox(); + if (!$inbox->get('user_id', $user_id)) { $inbox = Inbox::initialize($user_id); } 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 0836c2019..0f1ed0489 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -128,12 +128,13 @@ class Memcached_DataObject extends Safe_DataObject } static function cacheKey($cls, $k, $v) { - if (is_object($cls) || is_object($k) || is_object($v)) { + if (is_object($cls) || is_object($k) || (is_object($v) && !($v instanceof DB_DataObject_Cast))) { $e = new Exception(); common_log(LOG_ERR, __METHOD__ . ' object in param: ' . str_replace("\n", " ", $e->getTraceAsString())); } - return common_cache_key(strtolower($cls).':'.$k.':'.$v); + $vstr = self::valueString($v); + return common_cache_key(strtolower($cls).':'.$k.':'.$vstr); } static function getcached($cls, $k, $v) { @@ -229,11 +230,12 @@ class Memcached_DataObject extends Safe_DataObject if (empty($this->$key)) { continue; } - $ckeys[] = $this->cacheKey($this->tableName(), $key, $this->$key); + $ckeys[] = $this->cacheKey($this->tableName(), $key, self::valueString($this->$key)); } else if ($type == 'K' || $type == 'N') { $pkey[] = $key; - $pval[] = $this->$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()); } } @@ -281,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 { @@ -351,7 +354,7 @@ class Memcached_DataObject extends Safe_DataObject * low-level database function and add a comment to the * query string. This should then be visible in process lists * and slow query logs, to help identify problem areas. - * + * * Also marks whether this was a web GET/POST or which daemon * was running it. * @@ -526,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; @@ -570,12 +574,13 @@ class Memcached_DataObject extends Safe_DataObject function raiseError($message, $type = null, $behaviour = null) { $id = get_class($this); - if ($this->id) { + if (!empty($this->id)) { $id .= ':' . $this->id; } 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"); } @@ -592,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(); @@ -602,7 +607,34 @@ 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) + { + $vstr = null; + if (is_object($v) && $v instanceof DB_DataObject_Cast) { + switch ($v->type) { + case 'date': + $vstr = $v->year . '-' . $v->month . '-' . $v->day; + break; + case 'blob': + case 'string': + 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; + } + } else { + $vstr = strval($v); + } + return $vstr; } } 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 7c3b5b519..5a70f70b6 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -29,6 +29,7 @@ * @author Robin Millette <millette@controlyourself.ca> * @author Sarven Capadisli <csarven@controlyourself.ca> * @author Tom Adams <tom@holizz.com> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license GNU Affero General Public License http://www.gnu.org/licenses/ */ @@ -41,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); @@ -89,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() @@ -97,26 +106,34 @@ class Notice extends Memcached_DataObject // For auditing purposes, save a record that the notice // was deleted. - $deleted = new Deleted_notice(); + // @fixme we have some cases where things get re-run and so the + // insert fails. + $deleted = Deleted_notice::staticGet('id', $this->id); + if (!$deleted) { + $deleted = new Deleted_notice(); - $deleted->id = $this->id; - $deleted->profile_id = $this->profile_id; - $deleted->uri = $this->uri; - $deleted->created = $this->created; - $deleted->deleted = common_sql_now(); + $deleted->id = $this->id; + $deleted->profile_id = $this->profile_id; + $deleted->uri = $this->uri; + $deleted->created = $this->created; + $deleted->deleted = common_sql_now(); - $deleted->insert(); + $deleted->insert(); + } + + if (Event::handle('NoticeDeleteRelated', array($this))) { - // Clear related records + // Clear related records - $this->clearReplies(); - $this->clearRepeats(); - $this->clearFaves(); - $this->clearTags(); - $this->clearGroupInboxes(); + $this->clearReplies(); + $this->clearRepeats(); + $this->clearFaves(); + $this->clearTags(); + $this->clearGroupInboxes(); - // NOTE: we don't clear inboxes - // NOTE: we don't clear queue items + // NOTE: we don't clear inboxes + // NOTE: we don't clear queue items + } $result = parent::delete(); @@ -231,6 +248,8 @@ class Notice extends Memcached_DataObject if (!empty($options)) { $options = $options + $defaults; extract($options); + } else { + extract($defaults); } if (!isset($is_local)) { @@ -242,28 +261,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(); @@ -329,6 +354,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.')); } @@ -355,6 +381,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.')); } } @@ -463,7 +490,7 @@ class Notice extends Memcached_DataObject function saveKnownUrls($urls) { // @fixme validation? - foreach ($urls as $url) { + foreach (array_unique($urls) as $url) { File::processNew($url, $this->id); } } @@ -866,11 +893,12 @@ 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(); - foreach ($group_ids as $id) { + foreach (array_unique($group_ids) as $id) { $group = User_group::staticGet('id', $id); if ($group) { common_log(LOG_ERR, "Local delivery to group id $id, $group->nickname"); @@ -964,6 +992,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.')); } @@ -992,7 +1021,7 @@ class Notice extends Memcached_DataObject } $sender = Profile::staticGet($this->profile_id); - foreach ($uris as $uri) { + foreach (array_unique($uris) as $uri) { $user = User::staticGet('uri', $uri); @@ -1005,6 +1034,7 @@ class Notice extends Memcached_DataObject $reply->notice_id = $this->id; $reply->profile_id = $user->id; + common_log(LOG_INFO, __METHOD__ . ": saving reply: notice $this->id to profile $user->id"); $id = $reply->insert(); } @@ -1069,7 +1099,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); @@ -1172,6 +1204,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(); @@ -1186,167 +1221,331 @@ class Notice extends Memcached_DataObject 'xmlns:media' => 'http://purl.org/syndication/atommedia', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0', - 'xmlns:statusnet' => 'http://status.net/ont/'); + 'xmlns:statusnet' => 'http://status.net/schema/api/1/'); } else { $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 ($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 (Event::handle('StartActivitySource', array(&$this, &$xs))) { + + 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)); + } + + $atomAuthor = ''; + + if ($author) { + $atomAuthor = $profile->asAtomAuthor($cur); } - if ($source) { - $xs->elementEnd('source'); + if (Event::handle('StartActivityAuthor', array(&$this, &$xs, &$atomAuthor))) { + if (!empty($atomAuthor)) { + $xs->raw($atomAuthor); + Event::handle('EndActivityAuthor', array(&$this, &$xs, &$atomAuthor)); + } } - $xs->element('title', null, common_xml_safe_str($this->content)); + $actor = ''; if ($author) { - $xs->raw($profile->asAtomAuthor()); - $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)); + } + } + + $url = $this->bestUrl(); + + 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)); + } + + $id = $this->uri; + + if (Event::handle('StartActivityId', array(&$this, &$xs, &$id))) { + $xs->element('id', null, $id); + Event::handle('EndActivityId', array(&$this, &$xs, $id)); + } + + $published = self::utcDate($this->created); + + 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)); } - $xs->element('link', array('rel' => 'alternate', - 'type' => 'text/html', - 'href' => $this->bestUrl())); + // 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.). - $xs->element('id', null, $this->uri); + $objects = array(); - $xs->element('published', null, common_date_w3dtf($this->created)); - $xs->element('updated', null, common_date_w3dtf($this->created)); + 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' => $this->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>'; + } } } if (!empty($cur)) { - $noticeInfoAttr['favorited'] = ($cur->hasFave($this)) ? 'true' : 'false'; + $noticeInfoAttr['favorite'] = ($cur->hasFave($this)) ? "true" : "false"; + $profile = $cur->getProfile(); + $noticeInfoAttr['repeated'] = ($profile->hasRepeated($this->id)) ? "true" : "false"; + } + + if (!empty($this->repeat_of)) { + $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(); } @@ -1855,4 +2054,36 @@ class Notice extends Memcached_DataObject return $ns; } + /** + * Determine whether the notice was locally created + * + * @return boolean locality + */ + + public function isLocal() + { + return ($this->is_local == Notice::LOCAL_PUBLIC || + $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 54f557ea7..d7617f0b7 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) @@ -465,11 +464,9 @@ class Profile extends Memcached_DataObject $sub = new Subscription(); $sub->subscribed = $this->id; - + $sub->whereAdd('subscriber != subscribed'); $cnt = (int) $sub->count('distinct subscriber'); - $cnt = ($cnt > 0) ? $cnt - 1 : $cnt; - if (!empty($c)) { $c->set(common_cache_key('profile:subscriber_count:'.$this->id), $cnt); } @@ -735,14 +732,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; @@ -849,15 +850,23 @@ class Profile extends Memcached_DataObject * * Assumes that Atom has been previously set up as the base namespace. * + * @param Profile $cur the current authenticated user + * * @return string */ - function asAtomAuthor() + function asAtomAuthor($cur = null) { $xs = new XMLStringer(true); $xs->elementStart('author'); $xs->element('name', null, $this->nickname); $xs->element('uri', null, $this->getUri()); + if ($cur != null) { + $attrs = Array(); + $attrs['following'] = $cur->isSubscribed($this) ? 'true' : 'false'; + $attrs['blocking'] = $cur->hasBlocked($this) ? 'true' : 'false'; + $xs->element('statusnet:profile_info', $attrs, null); + } $xs->elementEnd('author'); return $xs->getString(); @@ -935,4 +944,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/Queue_item.php b/classes/Queue_item.php index f83c2cef1..c7e17be6e 100644 --- a/classes/Queue_item.php +++ b/classes/Queue_item.php @@ -64,4 +64,17 @@ class Queue_item extends Memcached_DataObject $qi = null; return null; } + + /** + * Release a claimed item. + */ + function releaseCLaim() + { + // DB_DataObject doesn't let us save nulls right now + $sql = sprintf("UPDATE queue_item SET claimed=NULL WHERE id=%d", $this->id); + $this->query($sql); + + $this->claimed = null; + $this->encache(); + } } 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 a452c32ce..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) { @@ -144,26 +144,49 @@ class Status_network extends Safe_DataObject return parent::update($orig); } + /** + * DB_DataObject doesn't allow updating keys (even non-primary) + */ + function updateKeys(&$orig) + { + $this->_connect(); + foreach (array('hostname', 'pathname') as $k) { + if (strcmp($this->$k, $orig->$k) != 0) { + $parts[] = $k . ' = ' . $this->_quote($this->$k); + } + } + if (count($parts) == 0) { + // No changes + return true; + } + + $toupdate = implode(', ', $parts); + + $table = common_database_tablename($this->tableName()); + $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . + ' WHERE nickname = ' . $this->_quote($this->nickname); + $orig->decache(); + $result = $this->query($qry); + if ($result) { + $this->encache(); + } + return $result; + } + function delete() { $this->decache(); # while we still have the values! return parent::delete(); } - + /** * @param string $servername hostname - * @param string $pathname URL base path * @param string $wildcard hostname suffix to match wildcard config + * @return mixed Status_network or null */ - static function setupSite($servername, $pathname, $wildcard) + static function getFromHostname($servername, $wildcard) { - global $config; - $sn = null; - - // XXX I18N, probably not crucial for hostnames - // XXX This probably needs a tune up - if (0 == strncasecmp(strrev($wildcard), strrev($servername), strlen($wildcard))) { // special case for exact match if (0 == strcasecmp($servername, $wildcard)) { @@ -182,6 +205,23 @@ class Status_network extends Safe_DataObject } } } + return $sn; + } + + /** + * @param string $servername hostname + * @param string $pathname URL base path + * @param string $wildcard hostname suffix to match wildcard config + */ + static function setupSite($servername, $pathname, $wildcard) + { + global $config; + + $sn = null; + + // XXX I18N, probably not crucial for hostnames + // XXX This probably needs a tune up + $sn = self::getFromHostname($servername, $wildcard); if (!empty($sn)) { @@ -268,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 2abb7eeb6..8033229c4 100644 --- a/classes/User.php +++ b/classes/User.php @@ -360,11 +360,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'); - } } @@ -375,7 +376,6 @@ class User extends Memcached_DataObject } // Things we do when the email changes - function emailChanged() { @@ -524,7 +524,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 110f08301..0b83cfd47 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -154,6 +154,21 @@ class User_group extends Memcached_DataObject return $members; } + function getMemberCount() + { + // XXX: WORM cache this + + $members = $this->getMembers(); + $member_count = 0; + + /** $member->count() doesn't work. */ + while ($members->fetch()) { + $member_count++; + } + + return $member_count; + } + function getAdmins($offset=0, $limit=null) { $qry = @@ -477,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.')); } @@ -486,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.')); } } @@ -493,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.')); } @@ -507,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.')); } @@ -521,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/08to09_pg.sql b/db/08to09_pg.sql index c2fabf63b..d3eb64443 100644 --- a/db/08to09_pg.sql +++ b/db/08to09_pg.sql @@ -100,6 +100,25 @@ insert into queue_item_new (frame,transport,created,claimed) alter table queue_item rename to queue_item_old; alter table queue_item_new rename to queue_item; +ALTER TABLE confirm_address ALTER column sent set default CURRENT_TIMESTAMP; + +create table user_location_prefs ( + user_id integer not null /*comment 'user who has the preference'*/ references "user" (id), + share_location int default 1 /* comment 'Whether to share location data'*/, + created timestamp not null /*comment 'date this record was created'*/, + modified timestamp /* comment 'date this record was modified'*/, + + primary key (user_id) +); + +create table inbox ( + + user_id integer not null /* comment 'user receiving the notice' */ references "user" (id), + notice_ids bytea /* comment 'packed list of notice ids' */, + + primary key (user_id) + +); create table user_location_prefs ( user_id integer not null /*comment 'user who has the preference'*/ references "user" (id), diff --git a/db/notice_source.sql b/db/notice_source.sql index fbcdd6568..6bfd5c5f1 100644 --- a/db/notice_source.sql +++ b/db/notice_source.sql @@ -9,6 +9,7 @@ VALUES ('bti','bti','http://gregkh.github.com/bti/', now()), ('choqok', 'Choqok', 'http://choqok.gnufolks.org/', now()), ('cliqset', 'Cliqset', 'http://www.cliqset.com/', now()), + ('DarterosStatus', 'Darteros Status', 'http://www.darteros.com/doc/Darteros_Status', now()), ('deskbar','Deskbar-Applet','http://www.gnome.org/projects/deskbar-applet/', now()), ('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()), ('drupal','Drupal','http://drupal.org/', now()), @@ -17,6 +18,7 @@ VALUES ('Facebook','Facebook','http://apps.facebook.com/identica/', now()), ('feed2omb','feed2omb','http://projects.ciarang.com/p/feed2omb/', now()), ('get2gnow', 'get2gnow', 'http://uberchicgeekchick.com/?projects=get2gnow', now()), + ('gNewBook', 'gNewBook', 'http://www.gnewbook.org/', now()), ('gravity', 'Gravity', 'http://mobileways.de/gravity', now()), ('Gwibber','Gwibber','http://launchpad.net/gwibber', now()), ('HelloTxt','HelloTxt','http://hellotxt.com/', now()), @@ -49,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/db/statusnet_pg.sql b/db/statusnet_pg.sql index 3f62ab752..2db98550c 100644 --- a/db/statusnet_pg.sql +++ b/db/statusnet_pg.sql @@ -276,7 +276,7 @@ create table confirm_address ( address_extra varchar(255) not null default '' /* comment 'carrier ID, for SMS' */, address_type varchar(8) not null /* comment 'address type ("email", "jabber", "sms")' */, claimed timestamp /* comment 'date this was claimed for queueing' */, - sent timestamp /* comment 'date this was sent for queueing' */, + sent timestamp default CURRENT_TIMESTAMP /* comment 'date this was sent for queueing' */, modified timestamp /* comment 'date this record was modified' */ ); 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); } ?> @@ -19,16 +19,20 @@ * @category StatusNet * @package StatusNet * @author Brenda Wallace <shiny@cpan.org> + * @author Brion Vibber <brion@pobox.com> * @author Christopher Vollick <psycotica0@gmail.com> * @author CiaranG <ciaran@ciarang.com> * @author Craig Andrews <candrews@integralblue.com> * @author Evan Prodromou <evan@controlezvous.ca> * @author Gina Haeussge <osd@foosel.net> + * @author James Walker <walkah@walkah.net> * @author Jeffery To <jeffery.to@gmail.com> * @author Mike Cochrane <mikec@mikenz.geek.nz> * @author Robin Millette <millette@controlyourself.ca> * @author Sarven Capadisli <csarven@controlyourself.ca> * @author Tom Adams <tom@holizz.com> + * @author Zach Copley <zach@status.net> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * * @license GNU Affero General Public License http://www.gnu.org/licenses/ */ diff --git a/install.php b/install.php index 08555d19b..158d51fa3 100644 --- a/install.php +++ b/install.php @@ -31,6 +31,7 @@ * @author Sarven Capadisli <csarven@status.net> * @author Tom Adams <tom@holizz.com> * @author Zach Copley <zach@status.net> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license GNU Affero General Public License http://www.gnu.org/licenses/ * @version 0.9.x * @link http://status.net diff --git a/js/util.js b/js/util.js index 1320d11b4..ad8a44c82 100644 --- a/js/util.js +++ b/js/util.js @@ -84,7 +84,7 @@ var SN = { // StatusNet form.find('#'+SN.C.S.NoticeTextCount).text(jQuery.data(form[0], 'ElementData').MaxLength); } - if ($('body')[0].id != 'conversation' && window.location.hash.length === 0) { + if ($('body')[0].id != 'conversation' && window.location.hash.length === 0 && $(window).scrollTop() == 0) { form.find('textarea').focus(); } }, @@ -110,7 +110,7 @@ var SN = { // StatusNet return; } - var remaining = MaxLength - form.find('#'+SN.C.S.NoticeDataText).val().length; + var remaining = MaxLength - SN.U.CharacterCount(form); var counter = form.find('#'+SN.C.S.NoticeTextCount); if (remaining.toString() != counter.text()) { @@ -134,6 +134,10 @@ var SN = { // StatusNet } }, + CharacterCount: function(form) { + return form.find('#'+SN.C.S.NoticeDataText).val().length; + }, + ClearCounterBlackout: function(form) { // Allow keyup events to poke the counter again SN.C.I.CounterBlackout = false; @@ -258,9 +262,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 +286,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 +714,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/action.php b/lib/action.php index 98e5ec2c9..2b3b707c5 100644 --- a/lib/action.php +++ b/lib/action.php @@ -235,6 +235,16 @@ class Action extends HTMLOutputter // lawsuit Event::handle('EndShowDesign', array($this)); } Event::handle('EndShowStyles', array($this)); + + if (common_config('custom_css', 'enabled')) { + $css = common_config('custom_css', 'css'); + if (Event::handle('StartShowCustomCss', array($this, &$css))) { + if (trim($css) != '') { + $this->style($css); + } + Event::handle('EndShowCustomCss', array($this)); + } + } } } diff --git a/lib/activitycontext.php b/lib/activitycontext.php index 2df7613f7..09a457924 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) @@ -70,16 +71,22 @@ class ActivityContext $links = $element->getElementsByTagNameNS(ActivityUtils::ATOM, ActivityUtils::LINK); + $attention = array(); for ($i = 0; $i < $links->length; $i++) { $link = $links->item($i); $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); + $attention[] = $link->getAttribute(self::HREF); + } elseif ($linkRel == self::MENTIONED) { + $attention[] = $link->getAttribute(self::HREF); } } + $this->attention = array_unique($attention); } /** 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/adminpanelaction.php b/lib/adminpanelaction.php index e22804fc8..41cfe5851 100644 --- a/lib/adminpanelaction.php +++ b/lib/adminpanelaction.php @@ -284,9 +284,10 @@ class AdminPanelAction extends Action $this->clientError(_("Unable to delete design setting.")); return null; } + return $result; } - return $result; + return null; } function canAdmin($name) diff --git a/lib/apiaction.php b/lib/apiaction.php index 80a8a08d1..cc98b9b6e 100644 --- a/lib/apiaction.php +++ b/lib/apiaction.php @@ -27,7 +27,8 @@ * @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/ */ @@ -125,6 +126,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 @@ -144,6 +146,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); @@ -270,11 +273,13 @@ class ApiAction extends Action // Is the requesting user following this user? $twitter_user['following'] = false; + $twitter_user['statusnet:blocking'] = false; $twitter_user['notifications'] = false; if (isset($this->auth_user)) { $twitter_user['following'] = $this->auth_user->isSubscribed($profile); + $twitter_user['statusnet:blocking'] = $this->auth_user->hasBlocked($profile); // Notifications on? $sub = Subscription::pkeyGet(array('subscriber' => @@ -294,6 +299,10 @@ class ApiAction extends Action } } + // StatusNet-specific + + $twitter_user['statusnet:profile_url'] = $profile->profileurl; + return $twitter_user; } @@ -395,25 +404,41 @@ class ApiAction extends Action $twitter_status['user'] = $twitter_user; } + // StatusNet-specific + + $twitter_status['statusnet:html'] = $notice->rendered; + return $twitter_status; } function twitterGroupArray($group) { - $twitter_group=array(); - $twitter_group['id']=$group->id; - $twitter_group['url']=$group->permalink(); - $twitter_group['nickname']=$group->nickname; - $twitter_group['fullname']=$group->fullname; - $twitter_group['original_logo']=$group->original_logo; - $twitter_group['homepage_logo']=$group->homepage_logo; - $twitter_group['stream_logo']=$group->stream_logo; - $twitter_group['mini_logo']=$group->mini_logo; - $twitter_group['homepage']=$group->homepage; - $twitter_group['description']=$group->description; - $twitter_group['location']=$group->location; - $twitter_group['created']=$this->dateTwitter($group->created); - $twitter_group['modified']=$this->dateTwitter($group->modified); + $twitter_group = array(); + + $twitter_group['id'] = $group->id; + $twitter_group['url'] = $group->permalink(); + $twitter_group['nickname'] = $group->nickname; + $twitter_group['fullname'] = $group->fullname; + + if (isset($this->auth_user)) { + $twitter_group['member'] = $this->auth_user->isMember($group); + $twitter_group['blocked'] = Group_block::isBlocked( + $group, + $this->auth_user->getProfile() + ); + } + + $twitter_group['member_count'] = $group->getMemberCount(); + $twitter_group['original_logo'] = $group->original_logo; + $twitter_group['homepage_logo'] = $group->homepage_logo; + $twitter_group['stream_logo'] = $group->stream_logo; + $twitter_group['mini_logo'] = $group->mini_logo; + $twitter_group['homepage'] = $group->homepage; + $twitter_group['description'] = $group->description; + $twitter_group['location'] = $group->location; + $twitter_group['created'] = $this->dateTwitter($group->created); + $twitter_group['modified'] = $this->dateTwitter($group->modified); + return $twitter_group; } @@ -437,65 +462,71 @@ class ApiAction extends Action function twitterRssEntryArray($notice) { - $profile = $notice->getProfile(); $entry = array(); - // We trim() to avoid extraneous whitespace in the output + if (Event::handle('StartRssEntryArray', array($notice, &$entry))) { - $entry['content'] = common_xml_safe_str(trim($notice->rendered)); - $entry['title'] = $profile->nickname . ': ' . common_xml_safe_str(trim($notice->content)); - $entry['link'] = common_local_url('shownotice', array('notice' => $notice->id)); - $entry['published'] = common_date_iso8601($notice->created); + $profile = $notice->getProfile(); - $taguribase = TagURI::base(); - $entry['id'] = "tag:$taguribase:$entry[link]"; + // We trim() to avoid extraneous whitespace in the output - $entry['updated'] = $entry['published']; - $entry['author'] = $profile->getBestName(); + $entry['content'] = common_xml_safe_str(trim($notice->rendered)); + $entry['title'] = $profile->nickname . ': ' . common_xml_safe_str(trim($notice->content)); + $entry['link'] = common_local_url('shownotice', array('notice' => $notice->id)); + $entry['published'] = common_date_iso8601($notice->created); - // Enclosures - $attachments = $notice->attachments(); - $enclosures = array(); - - foreach ($attachments as $attachment) { - $enclosure_o=$attachment->getEnclosure(); - if ($enclosure_o) { - $enclosure = array(); - $enclosure['url'] = $enclosure_o->url; - $enclosure['mimetype'] = $enclosure_o->mimetype; - $enclosure['size'] = $enclosure_o->size; - $enclosures[] = $enclosure; - } - } + $taguribase = TagURI::base(); + $entry['id'] = "tag:$taguribase:$entry[link]"; - if (!empty($enclosures)) { - $entry['enclosures'] = $enclosures; - } + $entry['updated'] = $entry['published']; + $entry['author'] = $profile->getBestName(); - // Tags/Categories - $tag = new Notice_tag(); - $tag->notice_id = $notice->id; - if ($tag->find()) { - $entry['tags']=array(); - while ($tag->fetch()) { - $entry['tags'][]=$tag->tag; + // Enclosures + $attachments = $notice->attachments(); + $enclosures = array(); + + foreach ($attachments as $attachment) { + $enclosure_o=$attachment->getEnclosure(); + if ($enclosure_o) { + $enclosure = array(); + $enclosure['url'] = $enclosure_o->url; + $enclosure['mimetype'] = $enclosure_o->mimetype; + $enclosure['size'] = $enclosure_o->size; + $enclosures[] = $enclosure; + } } - } - $tag->free(); - // RSS Item specific - $entry['description'] = $entry['content']; - $entry['pubDate'] = common_date_rfc2822($notice->created); - $entry['guid'] = $entry['link']; + if (!empty($enclosures)) { + $entry['enclosures'] = $enclosures; + } - if (isset($notice->lat) && isset($notice->lon)) { - // This is the format that GeoJSON expects stuff to be in. - // showGeoRSS() below uses it for XML output, so we reuse it - $entry['geo'] = array('type' => 'Point', - 'coordinates' => array((float) $notice->lat, - (float) $notice->lon)); - } else { - $entry['geo'] = null; + // Tags/Categories + $tag = new Notice_tag(); + $tag->notice_id = $notice->id; + if ($tag->find()) { + $entry['tags']=array(); + while ($tag->fetch()) { + $entry['tags'][]=$tag->tag; + } + } + $tag->free(); + + // RSS Item specific + $entry['description'] = $entry['content']; + $entry['pubDate'] = common_date_rfc2822($notice->created); + $entry['guid'] = $entry['link']; + + if (isset($notice->lat) && isset($notice->lon)) { + // This is the format that GeoJSON expects stuff to be in. + // showGeoRSS() below uses it for XML output, so we reuse it + $entry['geo'] = array('type' => 'Point', + 'coordinates' => array((float) $notice->lat, + (float) $notice->lon)); + } else { + $entry['geo'] = null; + } + + Event::handle('EndRssEntryArray', array($notice, &$entry)); } return $entry; @@ -562,9 +593,13 @@ class ApiAction extends Action } } - function showTwitterXmlStatus($twitter_status, $tag='status') + function showTwitterXmlStatus($twitter_status, $tag='status', $namespaces=false) { - $this->elementStart($tag); + $attrs = array(); + if ($namespaces) { + $attrs['xmlns:statusnet'] = 'http://status.net/schema/api/1/'; + } + $this->elementStart($tag, $attrs); foreach($twitter_status as $element => $value) { switch ($element) { case 'user': @@ -598,9 +633,13 @@ class ApiAction extends Action $this->elementEnd('group'); } - function showTwitterXmlUser($twitter_user, $role='user') + function showTwitterXmlUser($twitter_user, $role='user', $namespaces=false) { - $this->elementStart($role); + $attrs = array(); + if ($namespaces) { + $attrs['xmlns:statusnet'] = 'http://status.net/schema/api/1/'; + } + $this->elementStart($role, $attrs); foreach($twitter_user as $element => $value) { if ($element == 'status') { $this->showTwitterXmlStatus($twitter_user['status']); @@ -682,7 +721,7 @@ class ApiAction extends Action { $this->initDocument('xml'); $twitter_status = $this->twitterStatusArray($notice); - $this->showTwitterXmlStatus($twitter_status); + $this->showTwitterXmlStatus($twitter_status, 'status', true); $this->endDocument('xml'); } @@ -698,17 +737,20 @@ class ApiAction extends Action { $this->initDocument('xml'); - $this->elementStart('statuses', array('type' => 'array')); + $this->elementStart('statuses', array('type' => 'array', + '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; } } @@ -756,14 +798,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 } } @@ -799,12 +843,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; } } @@ -865,9 +912,13 @@ class ApiAction extends Action $this->elementEnd('entry'); } - function showXmlDirectMessage($dm) + function showXmlDirectMessage($dm, $namespaces=false) { - $this->elementStart('direct_message'); + $attrs = array(); + if ($namespaces) { + $attrs['xmlns:statusnet'] = 'http://status.net/schema/api/1/'; + } + $this->elementStart('direct_message', $attrs); foreach($dm as $element => $value) { switch ($element) { case 'sender': @@ -944,7 +995,7 @@ class ApiAction extends Action { $this->initDocument('xml'); $dmsg = $this->directMessageArray($message); - $this->showXmlDirectMessage($dmsg); + $this->showXmlDirectMessage($dmsg, true); $this->endDocument('xml'); } @@ -995,14 +1046,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; } } @@ -1061,7 +1114,8 @@ class ApiAction extends Action { $this->initDocument('xml'); - $this->elementStart('users', array('type' => 'array')); + $this->elementStart('users', array('type' => 'array', + 'xmlns:statusnet' => 'http://status.net/schema/api/1/')); if (is_array($user)) { foreach ($user as $u) { @@ -1138,9 +1192,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': @@ -1169,8 +1222,7 @@ class ApiAction extends Action case 'json': // Check for JSONP callback - $callback = $this->arg('callback'); - if ($callback) { + if (isset($this->callback)) { print ')'; } break; @@ -1200,7 +1252,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'); @@ -1233,7 +1288,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'); @@ -1337,6 +1395,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 9c68e2771..cf7a2692c 100644 --- a/lib/apiauth.php +++ b/lib/apiauth.php @@ -30,6 +30,7 @@ * @author Sarven Capadisli <csarven@status.net> * @author Zach Copley <zach@status.net> * @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/ */ @@ -226,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; } } @@ -264,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 { @@ -297,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; } } @@ -344,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/apibareauth.php b/lib/apibareauth.php index 2d29c1ddd..da7af1261 100644 --- a/lib/apibareauth.php +++ b/lib/apibareauth.php @@ -32,6 +32,7 @@ * @author Sarven Capadisli <csarven@status.net> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ @@ -106,4 +107,4 @@ class ApiBareAuthAction extends ApiAuthAction return false; } -}
\ No newline at end of file +} diff --git a/lib/apiprivateauth.php b/lib/apiprivateauth.php index 5d0033005..5e78c65a1 100644 --- a/lib/apiprivateauth.php +++ b/lib/apiprivateauth.php @@ -31,6 +31,7 @@ * @author Sarven Capadisli <csarven@status.net> * @author Zach Copley <zach@status.net> * @copyright 2009 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/ */ diff --git a/lib/atomgroupnoticefeed.php b/lib/atomgroupnoticefeed.php index b4810d04a..39a1fd456 100644 --- a/lib/atomgroupnoticefeed.php +++ b/lib/atomgroupnoticefeed.php @@ -50,12 +50,13 @@ class AtomGroupNoticeFeed extends AtomNoticeFeed * Constructor * * @param Group $group the group for the feed + * @param User $cur the current authenticated user, if any * @param boolean $indent flag to turn indenting on or off * * @return void */ - function __construct($group, $indent = true) { - parent::__construct($indent); + function __construct($group, $cur = null, $indent = true) { + parent::__construct($cur, $indent); $this->group = $group; // TRANS: Title in atom group notice feed. %s is a group name. @@ -95,4 +96,23 @@ class AtomGroupNoticeFeed extends AtomNoticeFeed return $this->group; } + function initFeed() + { + parent::initFeed(); + + $attrs = array(); + + if (!empty($this->cur)) { + $attrs['member'] = $this->cur->isMember($this->group) + ? 'true' : 'false'; + $attrs['blocked'] = Group_block::isBlocked( + $this->group, + $this->cur->getProfile() + ) ? 'true' : 'false'; + } + + $attrs['member_count'] = $this->group->getMemberCount(); + + $this->element('statusnet:group_info', $attrs, null); + } } diff --git a/lib/atomnoticefeed.php b/lib/atomnoticefeed.php index 35a45118c..b88217291 100644 --- a/lib/atomnoticefeed.php +++ b/lib/atomnoticefeed.php @@ -44,9 +44,22 @@ if (!defined('STATUSNET')) */ class AtomNoticeFeed extends Atom10Feed { - function __construct($indent = true) { + var $cur; + + /** + * Constructor - adds a bunch of XML namespaces we need in our + * notice-specific Atom feeds, and allows setting the current + * authenticated user (useful for API methods). + * + * @param User $cur the current authenticated user (optional) + * @param boolean $indent Whether to indent XML output + * + */ + function __construct($cur = null, $indent = true) { parent::__construct($indent); + $this->cur = $cur; + // Feeds containing notice info use these namespaces $this->addNamespace( @@ -82,7 +95,7 @@ class AtomNoticeFeed extends Atom10Feed $this->addNamespace( 'statusnet', - 'http://status.net/ont/' + 'http://status.net/schema/api/1/' ); } @@ -112,12 +125,17 @@ class AtomNoticeFeed extends Atom10Feed */ function addEntryFromNotice($notice) { - $source = $this->showSource(); - $author = $this->showAuthor(); + try { + $source = $this->showSource(); + $author = $this->showAuthor(); - $cur = common_current_user(); + $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/atomusernoticefeed.php b/lib/atomusernoticefeed.php index acfcbd75f..785db4915 100644 --- a/lib/atomusernoticefeed.php +++ b/lib/atomusernoticefeed.php @@ -50,13 +50,14 @@ class AtomUserNoticeFeed extends AtomNoticeFeed * Constructor * * @param User $user the user for the feed + * @param User $cur the current authenticated user, if any * @param boolean $indent flag to turn indenting on or off * * @return void */ - function __construct($user, $indent = true) { - parent::__construct($indent); + function __construct($user, $cur = null, $indent = true) { + parent::__construct($cur, $indent); $this->user = $user; if (!empty($user)) { $profile = $user->getProfile(); diff --git a/lib/authenticationplugin.php b/lib/authenticationplugin.php index 0a3763e2e..dbdf20629 100644 --- a/lib/authenticationplugin.php +++ b/lib/authenticationplugin.php @@ -22,6 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ diff --git a/lib/authorizationplugin.php b/lib/authorizationplugin.php index 3790bccf4..d71f77243 100644 --- a/lib/authorizationplugin.php +++ b/lib/authorizationplugin.php @@ -22,6 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ diff --git a/lib/avatarlink.php b/lib/avatarlink.php index e67799e2e..7d4256d6e 100644 --- a/lib/avatarlink.php +++ b/lib/avatarlink.php @@ -76,8 +76,8 @@ class AvatarLink $alink = new AvatarLink(); $alink->url = $filename; $alink->height = $size; + $alink->width = $size; if (!empty($filename)) { - $alink->width = $size; $alink->type = self::mediatype($filename); } else { $alink->url = User_group::defaultLogo($size); diff --git a/lib/common.php b/lib/common.php index 064f6f73a..897d08b77 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.4beta2'); define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility -define('STATUSNET_CODENAME', 'King of Birds'); +define('STATUSNET_CODENAME', 'Orange Crush'); define('AVATAR_PROFILE_SIZE', 96); define('AVATAR_STREAM_SIZE', 48); diff --git a/lib/dbqueuemanager.php b/lib/dbqueuemanager.php index 3032e4ec7..3dda9fd1a 100644 --- a/lib/dbqueuemanager.php +++ b/lib/dbqueuemanager.php @@ -135,9 +135,7 @@ class DBQueueManager extends QueueManager if (empty($qi->claimed)) { $this->_log(LOG_WARNING, "[$queue:item $qi->id] Ignoring failure for unclaimed queue item"); } else { - $orig = clone($qi); - $qi->claimed = null; - $qi->update($orig); + $qi->releaseClaim(); } $this->stats('error', $queue); diff --git a/lib/default.php b/lib/default.php index 950c6018d..45a4560ff 100644 --- a/lib/default.php +++ b/lib/default.php @@ -141,10 +141,17 @@ $default = 'dir' => null, 'path'=> null, 'ssl' => null), + 'theme_upload' => + array('enabled' => extension_loaded('zip')), 'javascript' => array('server' => null, 'path'=> null, 'ssl' => null), + 'local' => // To override path/server for themes in 'local' dir (not currently applied to local plugins) + array('server' => null, + 'dir' => null, + 'path' => null, + 'ssl' => null), 'throttle' => array('enabled' => false, // whether to throttle edits; false by default 'count' => 20, // number of allowed messages in timespan @@ -260,6 +267,9 @@ $default = 'linkcolor' => null, 'backgroundimage' => null, 'disposition' => null), + 'custom_css' => + array('enabled' => true, + 'css' => ''), 'notice' => array('contentlimit' => null), 'message' => @@ -305,6 +315,7 @@ $default = 'members' => true, 'peopletag' => true), 'http' => // HTTP client settings when contacting other sites - array('ssl_cafile' => false // To enable SSL cert validation, point to a CA bundle (eg '/usr/lib/ssl/certs/ca-certificates.crt') + array('ssl_cafile' => false, // To enable SSL cert validation, point to a CA bundle (eg '/usr/lib/ssl/certs/ca-certificates.crt') + 'curl' => false, // Use CURL backend for HTTP fetches if available. (If not, PHP's socket streams will be used.) ), ); diff --git a/lib/httpclient.php b/lib/httpclient.php index b69f718e5..514a5afeb 100644 --- a/lib/httpclient.php +++ b/lib/httpclient.php @@ -145,6 +145,10 @@ class HTTPClient extends HTTP_Request2 $this->config['ssl_verify_peer'] = false; } + if (common_config('http', 'curl') && extension_loaded('curl')) { + $this->config['adapter'] = 'HTTP_Request2_Adapter_Curl'; + } + parent::__construct($url, $method, $config); $this->setHeader('User-Agent', $this->userAgent()); } @@ -204,6 +208,15 @@ class HTTPClient extends HTTP_Request2 protected function doRequest($url, $method, $headers) { $this->setUrl($url); + + // Workaround for HTTP_Request2 not setting up SNI in socket contexts; + // This fixes cert validation for SSL virtual hosts using SNI. + // Requires PHP 5.3.2 or later and OpenSSL with SNI support. + if ($this->url->getScheme() == 'https' && defined('OPENSSL_TLSEXT_SERVER_NAME')) { + $this->config['ssl_SNI_enabled'] = true; + $this->config['ssl_SNI_server_name'] = $this->url->getHost(); + } + $this->setMethod($method); if ($headers) { foreach ($headers as $header) { diff --git a/lib/installer.php b/lib/installer.php index 58ffbfef7..ff2bed140 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -32,6 +32,7 @@ * @author Sarven Capadisli <csarven@status.net> * @author Tom Adams <tom@holizz.com> * @author Zach Copley <zach@status.net> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org * @license GNU Affero General Public License http://www.gnu.org/licenses/ * @version 0.9.x * @link http://status.net @@ -81,13 +82,16 @@ abstract class Installer { $pass = true; - if (file_exists(INSTALLDIR.'/config.php')) { - $this->warning('Config file "config.php" already exists.'); - $pass = false; + $config = INSTALLDIR.'/config.php'; + if (file_exists($config)) { + if (!is_writable($config) || filesize($config) > 0) { + $this->warning('Config file "config.php" already exists.'); + $pass = false; + } } 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; } @@ -443,7 +447,7 @@ abstract class Installer case 'mysqli': $res = $conn->query($stmt); if ($res === false) { - $error = $conn->error(); + $error = $conn->error; } break; case 'pgsql': diff --git a/lib/language.php b/lib/language.php index 8009adc9b..80d256807 100644 --- a/lib/language.php +++ b/lib/language.php @@ -61,7 +61,7 @@ if (!function_exists('dpgettext')) { * Not currently exposed in PHP's gettext module; implemented to be compat * with gettext.h's macros. * - * @param string $domain domain identifier, or null for default domain + * @param string $domain domain identifier * @param string $context context identifier, should be some key like "menu|file" * @param string $msgid English source text * @return string original or translated message @@ -106,7 +106,7 @@ if (!function_exists('dnpgettext')) { * Not currently exposed in PHP's gettext module; implemented to be compat * with gettext.h's macros. * - * @param string $domain domain identifier, or null for default domain + * @param string $domain domain identifier * @param string $context context identifier, should be some key like "menu|file" * @param string $msg singular English source text * @param string $plural plural English source text @@ -180,7 +180,11 @@ function _m($msg/*, ...*/) } /** - * Looks for which plugin we've been called from to set the gettext domain. + * Looks for which plugin we've been called from to set the gettext domain; + * if not in a plugin subdirectory, we'll use the default 'statusnet'. + * + * Note: we can't return null for default domain since most of the PHP gettext + * wrapper functions turn null into "" before passing to the backend library. * * @param array $backtrace debug_backtrace() output * @return string @@ -206,12 +210,19 @@ function _mdomain($backtrace) if (DIRECTORY_SEPARATOR !== '/') { $path = strtr($path, DIRECTORY_SEPARATOR, '/'); } - $cut = strpos($path, '/plugins/'); - if ($cut) { - $cut += strlen('/plugins/'); + $plug = strpos($path, '/plugins/'); + if ($plug === false) { + // We're not in a plugin; return default domain. + $final = 'statusnet'; + } else { + $cut = $plug + 9; $cut2 = strpos($path, '/', $cut); - if ($cut && $cut2) { + if ($cut2) { $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. + $final = 'statusnet'; } } $cached[$path] = $final; @@ -296,8 +307,10 @@ 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'), + 'eo' => array('q' => 0.8, 'lang' => 'eo', 'name' => 'Esperanto', 'direction' => 'ltr'), 'en-us' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'), 'en-gb' => array('q' => 1, 'lang' => 'en_GB', 'name' => 'English (British)', 'direction' => 'ltr'), 'en' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'), diff --git a/lib/liberalstomp.php b/lib/liberalstomp.php index 3d38953fd..70c22c17e 100644 --- a/lib/liberalstomp.php +++ b/lib/liberalstomp.php @@ -147,5 +147,30 @@ class LiberalStomp extends Stomp } return $frame; } -} + + /** + * Write frame to server + * + * @param StompFrame $stompFrame + */ + protected function _writeFrame (StompFrame $stompFrame) + { + if (!is_resource($this->_socket)) { + require_once 'Stomp/Exception.php'; + throw new StompException('Socket connection hasn\'t been established'); + } + + $data = $stompFrame->__toString(); + + // Make sure the socket's in a writable state; if not, wait a bit. + stream_set_blocking($this->_socket, 1); + + $r = fwrite($this->_socket, $data, strlen($data)); + stream_set_blocking($this->_socket, 0); + if ($r === false || $r == 0) { + $this->_reconnect(); + $this->_writeFrame($stompFrame); + } + } + } diff --git a/lib/mailbox.php b/lib/mailbox.php index 90a58b4c4..2b00f5ffd 100644 --- a/lib/mailbox.php +++ b/lib/mailbox.php @@ -224,6 +224,7 @@ class MailboxAction extends CurrentUserDesignAction if ($message->source) { $this->elementStart('span', 'source'); + // FIXME: bad i18n. Device should be a parameter (from %s). $this->text(_('from')); $this->element('span', 'device', $this->showSource($message->source)); $this->elementEnd('span'); diff --git a/lib/mediafile.php b/lib/mediafile.php index 1c96c42d7..c96c78ab5 100644 --- a/lib/mediafile.php +++ b/lib/mediafile.php @@ -180,7 +180,8 @@ class MediaFile return; } - $mimetype = MediaFile::getUploadedFileType($_FILES[$param]['tmp_name']); + $mimetype = MediaFile::getUploadedFileType($_FILES[$param]['tmp_name'], + $_FILES[$param]['name']); $filename = null; @@ -241,19 +242,41 @@ class MediaFile return new MediaFile($user, $filename, $mimetype); } - static function getUploadedFileType($f) { + /** + * Attempt to identify the content type of a given file. + * + * @param mixed $f file handle resource, or filesystem path as string + * @param string $originalFilename (optional) for extension-based detection + * @return string + * + * @fixme is this an internal or public method? It's called from GetFileAction + * @fixme this seems to tie a front-end error message in, kinda confusing + * @fixme this looks like it could return a PEAR_Error in some cases, if + * type can't be identified and $config['attachments']['supported'] is true + * + * @throws ClientException if type is known, but not supported for local uploads + */ + static function getUploadedFileType($f, $originalFilename=false) { require_once 'MIME/Type.php'; + require_once 'MIME/Type/Extension.php'; + $mte = new MIME_Type_Extension(); $cmd = &PEAR::getStaticProperty('MIME_Type', 'fileCmd'); $cmd = common_config('attachments', 'filecommand'); $filetype = null; + // If we couldn't get a clear type from the file extension, + // we'll go ahead and try checking the content. Content checks + // are unambiguous for most image files, but nearly useless + // for office document formats. + if (is_string($f)) { // assuming a filename $filetype = MIME_Type::autoDetect($f); + } else { // assuming a filehandle @@ -262,7 +285,32 @@ class MediaFile $filetype = MIME_Type::autoDetect($stream['uri']); } - if (common_config('attachments', 'supported') === true || in_array($filetype, common_config('attachments', 'supported'))) { + // The content-based sources for MIME_Type::autoDetect() + // are wildly unreliable for office-type documents. If we've + // gotten an unclear reponse back or just couldn't identify it, + // we'll try detecting a type from its extension... + $unclearTypes = array('application/octet-stream', + 'application/vnd.ms-office', + 'application/zip'); + + if ($originalFilename && (!$filetype || in_array($filetype, $unclearTypes))) { + $type = $mte->getMIMEType($originalFilename); + if (is_string($type)) { + $filetype = $type; + } + } + + $supported = common_config('attachments', 'supported'); + if (is_array($supported)) { + // Normalize extensions to mime types + foreach ($supported as $i => $entry) { + if (strpos($entry, '/') === false) { + common_log(LOG_INFO, "sample.$entry"); + $supported[$i] = $mte->getMIMEType("sample.$entry"); + } + } + } + if ($supported === true || in_array($filetype, $supported)) { return $filetype; } $media = MIME_Type::getMedia($filetype); diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php index 455695366..f9552c1dc 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 @@ -348,7 +333,7 @@ class MysqlSchema extends Schema } if (empty($name)) { - $name = "$table_".implode("_", $columnNames)."_idx"; + $name = "{$table}_".implode("_", $columnNames)."_idx"; } $res = $this->conn->query("ALTER TABLE $table ". diff --git a/lib/noticeform.php b/lib/noticeform.php index 84c20a5b3..514066356 100644 --- a/lib/noticeform.php +++ b/lib/noticeform.php @@ -169,7 +169,8 @@ class NoticeForm extends Form function formData() { if (Event::handle('StartShowNoticeFormData', array($this))) { - $this->out->element('label', array('for' => 'notice_data-text'), + $this->out->element('label', array('for' => 'notice_data-text', + 'id' => 'notice_data-text-label'), sprintf(_('What\'s up, %s?'), $this->user->nickname)); // XXX: vary by defined max size $this->out->element('textarea', array('id' => 'notice_data-text', diff --git a/lib/noticelist.php b/lib/noticelist.php index 432ea78d5..529d6a3f9 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); @@ -491,9 +499,10 @@ class NoticeListItem extends Widget $ns = $this->notice->getSource(); if ($ns) { - $source_name = _($ns->code); + $source_name = (empty($ns->name)) ? ($ns->code ? _($ns->code) : _('web')) : _($ns->name); $this->out->text(' '); $this->out->elementStart('span', 'source'); + // FIXME: probably i18n issue. If "from" is followed by text, that should be a parameter to "from" (from %s). $this->out->text(_('from')); $this->out->text(' '); diff --git a/lib/popularnoticesection.php b/lib/popularnoticesection.php index 3f0241790..f70a972ef 100644 --- a/lib/popularnoticesection.php +++ b/lib/popularnoticesection.php @@ -72,7 +72,7 @@ class PopularNoticeSection extends NoticeSection $qry .= ' GROUP BY notice.id,notice.profile_id,notice.content,notice.uri,' . 'notice.rendered,notice.url,notice.created,notice.modified,' . 'notice.reply_to,notice.is_local,notice.source,notice.conversation, ' . - 'notice.lat,notice.lon,location_id,location_ns,notice.repeat_of,notice.location' . + 'notice.lat,notice.lon,location_id,location_ns,notice.repeat_of' . ' ORDER BY weight DESC'; $offset = 0; diff --git a/lib/router.php b/lib/router.php index afe44f92a..7e1e6a2a4 100644 --- a/lib/router.php +++ b/lib/router.php @@ -263,7 +263,7 @@ class Router $m->connect('tag', array('action' => 'publictagcloud')); $m->connect('tag/:tag/rss', array('action' => 'tagrss'), - array('tag' => '[a-zA-Z0-9]+')); + array('tag' => '[\pL\pN_\-\.]{1,64}')); $m->connect('tag/:tag', array('action' => 'tag'), array('tag' => '[\pL\pN_\-\.]{1,64}')); @@ -540,7 +540,7 @@ class Router $m->connect('api/favorites/:id.:format', array('action' => 'ApiTimelineFavorites', 'id' => '[a-zA-Z0-9]+', - 'format' => '(xmljson|rss|atom)')); + 'format' => '(xml|json|rss|atom)')); $m->connect('api/favorites/create/:id.:format', array('action' => 'ApiFavoriteCreate', @@ -597,7 +597,7 @@ class Router $m->connect('api/statusnet/groups/timeline/:id.:format', array('action' => 'ApiTimelineGroup', 'id' => '[a-zA-Z0-9]+', - 'format' => '(xmljson|rss|atom)')); + 'format' => '(xml|json|rss|atom)')); $m->connect('api/statusnet/groups/show.:format', array('action' => 'ApiGroupShow', @@ -658,7 +658,7 @@ class Router // Tags $m->connect('api/statusnet/tags/timeline/:tag.:format', array('action' => 'ApiTimelineTag', - 'format' => '(xmljson|rss|atom)')); + 'format' => '(xml|json|rss|atom)')); // media related $m->connect( @@ -667,9 +667,9 @@ class Router ); // search - $m->connect('api/search.atom', array('action' => 'twitapisearchatom')); - $m->connect('api/search.json', array('action' => 'twitapisearchjson')); - $m->connect('api/trends.json', array('action' => 'twitapitrends')); + $m->connect('api/search.atom', array('action' => 'ApiSearchAtom')); + $m->connect('api/search.json', array('action' => 'ApiSearchJSON')); + $m->connect('api/trends.json', array('action' => 'ApiTrends')); $m->connect('api/oauth/request_token', array('action' => 'apioauthrequesttoken')); @@ -749,12 +749,12 @@ class Router $m->connect('tag/:tag/rss', array('action' => 'userrss', 'nickname' => $nickname), - array('tag' => '[a-zA-Z0-9]+')); + array('tag' => '[\pL\pN_\-\.]{1,64}')); $m->connect('tag/:tag', array('action' => 'showstream', 'nickname' => $nickname), - array('tag' => '[a-zA-Z0-9]+')); + array('tag' => '[\pL\pN_\-\.]{1,64}')); $m->connect('rsd.xml', array('action' => 'rsd', @@ -815,12 +815,12 @@ class Router $m->connect(':nickname/tag/:tag/rss', array('action' => 'userrss'), array('nickname' => '[a-zA-Z0-9]{1,64}'), - array('tag' => '[a-zA-Z0-9]+')); + array('tag' => '[\pL\pN_\-\.]{1,64}')); $m->connect(':nickname/tag/:tag', array('action' => 'showstream'), array('nickname' => '[a-zA-Z0-9]{1,64}'), - array('tag' => '[a-zA-Z0-9]+')); + array('tag' => '[\pL\pN_\-\.]{1,64}')); $m->connect(':nickname/rsd.xml', array('action' => 'rsd'), 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/statusnet.php b/lib/statusnet.php index 2aa73486e..7212a4a47 100644 --- a/lib/statusnet.php +++ b/lib/statusnet.php @@ -141,7 +141,7 @@ class StatusNet return true; } - $sn = Status_network::staticGet($nickname); + $sn = Status_network::staticGet('nickname', $nickname); if (empty($sn)) { return false; throw new Exception("No such site nickname '$nickname'"); diff --git a/lib/stompqueuemanager.php b/lib/stompqueuemanager.php index 5d5c7ccfb..fc98c77d4 100644 --- a/lib/stompqueuemanager.php +++ b/lib/stompqueuemanager.php @@ -115,14 +115,27 @@ class StompQueueManager extends QueueManager * * @param mixed $object * @param string $queue + * @param string $siteNickname optional override to drop into another site's queue * * @return boolean true on success * @throws StompException on connection or send error */ - public function enqueue($object, $queue) + public function enqueue($object, $queue, $siteNickname=null) { $this->_connect(); - return $this->_doEnqueue($object, $queue, $this->defaultIdx); + if (common_config('queue', 'stomp_enqueue_on')) { + // We're trying to force all writes to a single server. + // WARNING: this might do odd things if that server connection dies. + $idx = array_search(common_config('queue', 'stomp_enqueue_on'), + $this->servers); + if ($idx === false) { + common_log(LOG_ERR, 'queue stomp_enqueue_on setting does not match our server list.'); + $idx = $this->defaultIdx; + } + } else { + $idx = $this->defaultIdx; + } + return $this->_doEnqueue($object, $queue, $idx, $siteNickname); } /** @@ -132,10 +145,10 @@ class StompQueueManager extends QueueManager * @return boolean true on success * @throws StompException on connection or send error */ - protected function _doEnqueue($object, $queue, $idx) + protected function _doEnqueue($object, $queue, $idx, $siteNickname=null) { $rep = $this->logrep($object); - $envelope = array('site' => common_config('site', 'nickname'), + $envelope = array('site' => $siteNickname ? $siteNickname : common_config('site', 'nickname'), 'handler' => $queue, 'payload' => $this->encode($object)); $msg = serialize($envelope); @@ -636,7 +649,7 @@ class StompQueueManager extends QueueManager */ protected function updateSiteConfig($nickname) { - $sn = Status_network::staticGet($nickname); + $sn = Status_network::staticGet('nickname', $nickname); if ($sn) { $this->switchSite($nickname); if (!in_array($nickname, $this->sites)) { diff --git a/lib/theme.php b/lib/theme.php index 0be8c3b9d..a9d0cbc84 100644 --- a/lib/theme.php +++ b/lib/theme.php @@ -38,6 +38,9 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * Themes are directories with some expected sub-directories and files * in them. They're found in either local/theme (for locally-installed themes) * or theme/ subdir of installation dir. + * + * Note that the 'local' directory can be overridden as $config['local']['path'] + * and $config['local']['dir'] etc. * * This used to be a couple of functions, but for various reasons it's nice * to have a class instead. @@ -76,7 +79,7 @@ class Theme if (file_exists($fulldir) && is_dir($fulldir)) { $this->dir = $fulldir; - $this->path = common_path('local/theme/'.$name.'/'); + $this->path = $this->relativeThemePath('local', 'local', 'theme/' . $name); return; } @@ -89,42 +92,63 @@ class Theme if (file_exists($fulldir) && is_dir($fulldir)) { $this->dir = $fulldir; + $this->path = $this->relativeThemePath('theme', 'theme', $name); + } + } - $path = common_config('theme', 'path'); + /** + * Build a full URL to the given theme's base directory, possibly + * using an offsite theme server path. + * + * @param string $group configuration section name to pull paths from + * @param string $fallbackSubdir default subdirectory under INSTALLDIR + * @param string $name theme name + * + * @return string URL + * + * @todo consolidate code with that for other customizable paths + */ - if (empty($path)) { - $path = common_config('site', 'path') . '/theme/'; - } + protected function relativeThemePath($group, $fallbackSubdir, $name) + { + $path = common_config($group, 'path'); - if ($path[strlen($path)-1] != '/') { - $path .= '/'; + if (empty($path)) { + $path = common_config('site', 'path') . '/'; + if ($fallbackSubdir) { + $path .= $fallbackSubdir . '/'; } + } - if ($path[0] != '/') { - $path = '/'.$path; - } + if ($path[strlen($path)-1] != '/') { + $path .= '/'; + } - $server = common_config('theme', 'server'); + if ($path[0] != '/') { + $path = '/'.$path; + } - if (empty($server)) { - $server = common_config('site', 'server'); - } + $server = common_config($group, 'server'); - $ssl = common_config('theme', 'ssl'); + if (empty($server)) { + $server = common_config('site', 'server'); + } - if (is_null($ssl)) { // null -> guess - if (common_config('site', 'ssl') == 'always' && - !common_config('theme', 'server')) { - $ssl = true; - } else { - $ssl = false; - } + $ssl = common_config($group, 'ssl'); + + if (is_null($ssl)) { // null -> guess + if (common_config('site', 'ssl') == 'always' && + !common_config($group, 'server')) { + $ssl = true; + } else { + $ssl = false; } + } - $protocol = ($ssl) ? 'https' : 'http'; + $protocol = ($ssl) ? 'https' : 'http'; - $this->path = $protocol . '://'.$server.$path.$name; - } + $path = $protocol . '://'.$server.$path.$name; + return $path; } /** @@ -236,7 +260,13 @@ class Theme protected static function localRoot() { - return INSTALLDIR.'/local/theme'; + $basedir = common_config('local', 'dir'); + + if (empty($basedir)) { + $basedir = INSTALLDIR . '/local'; + } + + return $basedir . '/theme'; } /** diff --git a/lib/themeuploader.php b/lib/themeuploader.php new file mode 100644 index 000000000..370965db0 --- /dev/null +++ b/lib/themeuploader.php @@ -0,0 +1,311 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Utilities for theme files and paths + * + * 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 Paths + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +/** + * Encapsulation of the validation-and-save process when dealing with + * a user-uploaded StatusNet theme archive... + * + * @todo extract theme metadata from css/display.css + * @todo allow saving multiple themes + */ +class ThemeUploader +{ + protected $sourceFile; + protected $isUpload; + private $prevErrorReporting; + + public function __construct($filename) + { + if (!class_exists('ZipArchive')) { + throw new Exception(_("This server cannot handle theme uploads without ZIP support.")); + } + $this->sourceFile = $filename; + } + + public static function fromUpload($name) + { + if (!isset($_FILES[$name]['error'])) { + throw new ServerException(_("The theme file is missing or the upload failed.")); + } + if ($_FILES[$name]['error'] != UPLOAD_ERR_OK) { + throw new ServerException(_("The theme file is missing or the upload failed.")); + } + return new ThemeUploader($_FILES[$name]['tmp_name']); + } + + /** + * @param string $destDir + * @throws Exception on bogus files + */ + public function extract($destDir) + { + $zip = $this->openArchive(); + + // First pass: validate but don't save anything to disk. + // Any errors will trip an exception. + $this->traverseArchive($zip); + + // Second pass: now that we know we're good, actually extract! + $tmpDir = $destDir . '.tmp' . getmypid(); + $this->traverseArchive($zip, $tmpDir); + + $zip->close(); + + if (file_exists($destDir)) { + $killDir = $tmpDir . '.old'; + $this->quiet(); + $ok = rename($destDir, $killDir); + $this->loud(); + if (!$ok) { + common_log(LOG_ERR, "Could not move old custom theme from $destDir to $killDir"); + throw new ServerException(_("Failed saving theme.")); + } + } else { + $killDir = false; + } + + $this->quiet(); + $ok = rename($tmpDir, $destDir); + $this->loud(); + if (!$ok) { + common_log(LOG_ERR, "Could not move saved theme from $tmpDir to $destDir"); + throw new ServerException(_("Failed saving theme.")); + } + + if ($killDir) { + $this->recursiveRmdir($killDir); + } + } + + /** + * + */ + protected function traverseArchive($zip, $outdir=false) + { + $sizeLimit = 2 * 1024 * 1024; // 2 megabyte space limit? + $blockSize = 4096; // estimated; any entry probably takes this much space + + $totalSize = 0; + $hasMain = false; + $commonBaseDir = false; + + for ($i = 0; $i < $zip->numFiles; $i++) { + $data = $zip->statIndex($i); + $name = str_replace('\\', '/', $data['name']); + + if (substr($name, -1) == '/') { + // A raw directory... skip! + continue; + } + + // Check the directory structure... + $path = pathinfo($name); + $dirs = explode('/', $path['dirname']); + $baseDir = array_shift($dirs); + if ($commonBaseDir === false) { + $commonBaseDir = $baseDir; + } else { + if ($commonBaseDir != $baseDir) { + throw new ClientException(_("Invalid theme: bad directory structure.")); + } + } + + foreach ($dirs as $dir) { + $this->validateFileOrFolder($dir); + } + + // Is this a safe or skippable file? + if ($this->skippable($path['filename'], $path['extension'])) { + // Documentation and such... booooring + continue; + } else { + $this->validateFile($path['filename'], $path['extension']); + } + + $fullPath = $dirs; + $fullPath[] = $path['basename']; + $localFile = implode('/', $fullPath); + if ($localFile == 'css/display.css') { + $hasMain = true; + } + + $size = $data['size']; + $estSize = $blockSize * max(1, intval(ceil($size / $blockSize))); + $totalSize += $estSize; + if ($totalSize > $sizeLimit) { + $msg = sprintf(_("Uploaded theme is too large; " . + "must be less than %d bytes uncompressed."), + $sizeLimit); + throw new ClientException($msg); + } + + if ($outdir) { + $this->extractFile($zip, $data['name'], "$outdir/$localFile"); + } + } + + if (!$hasMain) { + throw new ClientException(_("Invalid theme archive: " . + "missing file css/display.css")); + } + } + + protected function skippable($filename, $ext) + { + $skip = array('txt', 'rtf', 'doc', 'docx', 'odt'); + if (strtolower($filename) == 'readme') { + return true; + } + if (in_array(strtolower($ext), $skip)) { + return true; + } + return false; + } + + protected function validateFile($filename, $ext) + { + $this->validateFileOrFolder($filename); + $this->validateExtension($ext); + // @fixme validate content + } + + protected function validateFileOrFolder($name) + { + if (!preg_match('/^[a-z0-9_-]+$/i', $name)) { + $msg = _("Theme contains invalid file or folder name. " . + "Stick with ASCII letters, digits, underscore, and minus sign."); + throw new ClientException($msg); + } + return true; + } + + protected function validateExtension($ext) + { + $allowed = array('css', 'png', 'gif', 'jpg', 'jpeg'); + if (!in_array(strtolower($ext), $allowed)) { + $msg = sprintf(_("Theme contains file of type '.%s', " . + "which is not allowed."), + $ext); + throw new ClientException($msg); + } + return true; + } + + /** + * @return ZipArchive + */ + protected function openArchive() + { + $zip = new ZipArchive; + $ok = $zip->open($this->sourceFile); + if ($ok !== true) { + common_log(LOG_ERR, "Error opening theme zip archive: " . + "{$this->sourceFile} code: {$ok}"); + throw new Exception(_("Error opening theme archive.")); + } + return $zip; + } + + /** + * @param ZipArchive $zip + * @param string $from original path inside ZIP archive + * @param string $to final destination path in filesystem + */ + protected function extractFile($zip, $from, $to) + { + $dir = dirname($to); + if (!file_exists($dir)) { + $this->quiet(); + $ok = mkdir($dir, 0755, true); + $this->loud(); + if (!$ok) { + common_log(LOG_ERR, "Failed to mkdir $dir while uploading theme"); + throw new ServerException(_("Failed saving theme.")); + } + } else if (!is_dir($dir)) { + common_log(LOG_ERR, "Output directory $dir not a directory while uploading theme"); + throw new ServerException(_("Failed saving theme.")); + } + + // ZipArchive::extractTo would be easier, but won't let us alter + // the directory structure. + $in = $zip->getStream($from); + if (!$in) { + common_log(LOG_ERR, "Couldn't open archived file $from while uploading theme"); + throw new ServerException(_("Failed saving theme.")); + } + $this->quiet(); + $out = fopen($to, "wb"); + $this->loud(); + if (!$out) { + common_log(LOG_ERR, "Couldn't open output file $to while uploading theme"); + throw new ServerException(_("Failed saving theme.")); + } + while (!feof($in)) { + $buffer = fread($in, 65536); + fwrite($out, $buffer); + } + fclose($in); + fclose($out); + } + + private function quiet() + { + $this->prevErrorReporting = error_reporting(); + error_reporting($this->prevErrorReporting & ~E_WARNING); + } + + private function loud() + { + error_reporting($this->prevErrorReporting); + } + + private function recursiveRmdir($dir) + { + $list = dir($dir); + while (($file = $list->read()) !== false) { + if ($file == '.' || $file == '..') { + continue; + } + $full = "$dir/$file"; + if (is_dir($full)) { + $this->recursiveRmdir($full); + } else { + unlink($full); + } + } + $list->close(); + rmdir($dir); + } + +} diff --git a/lib/util.php b/lib/util.php index 524ce0071..66600c766 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); } @@ -830,7 +830,10 @@ function common_linkify($url) { } elseif (is_string($longurl_data)) { $longurl = $longurl_data; } else { - throw new ServerException("Can't linkify url '$url'"); + // Unable to reach the server to verify contents, etc + // Just pass the link on through for now. + common_log(LOG_ERR, "Can't linkify url '$url'"); + $longurl = $url; } } $attrs = array('href' => $canon, 'title' => $longurl, 'rel' => 'external'); @@ -1249,9 +1252,8 @@ function common_enqueue_notice($notice) $transports[] = 'jabber'; } - // @fixme move these checks into QueueManager and/or individual handlers - if ($notice->is_local == Notice::LOCAL_PUBLIC || - $notice->is_local == Notice::LOCAL_NONPUBLIC) { + // We can skip these for gatewayed notices. + if ($notice->isLocal()) { $transports = array_merge($transports, $localTransports); if ($xmpp) { $transports[] = 'public'; diff --git a/lib/xrdsoutputter.php b/lib/xrdsoutputter.php index 4b77ed5a3..95dc73300 100644 --- a/lib/xrdsoutputter.php +++ b/lib/xrdsoutputter.php @@ -23,6 +23,7 @@ * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> * @copyright 2008 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/ */ diff --git a/locale/af/LC_MESSAGES/statusnet.po b/locale/af/LC_MESSAGES/statusnet.po index b9f82c0f8..cf8caed59 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:16+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:11:11+0000\n" "Language-Team: Afrikaans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -21,7 +21,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Toegang" @@ -83,25 +83,24 @@ msgid "Save" msgstr "Stoor" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Hierdie bladsy bestaan nie" +msgstr "Hierdie bladsy bestaan nie." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -114,7 +113,7 @@ msgid "No such user." msgstr "Onbekende gebruiker." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s en vriende, bladsy %2$d" @@ -122,33 +121,33 @@ msgstr "%1$s en vriende, bladsy %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 en vriende" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Voer vir vriende van %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Voer vir vriende van %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Voer vir vriende van %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -156,7 +155,7 @@ msgstr "" "Hierdie is die tydslyn vir %s en vriende, maar niemand het nog iets gepos " "nie." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -164,79 +163,79 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "U en vriende" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Opdaterings van %1$s en vriende op %2$s." -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Die API-funksie is nie gevind nie." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Hierdie metode benodig 'n POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Kon nie die gebruiker opdateer nie." @@ -256,7 +255,7 @@ msgstr "Kon nie die profiel stoor nie." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -332,30 +331,30 @@ msgstr "" "U kan nie direkte boodskappe aan gebruikers wat nie op u viendelys is stuur " "nie." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Geen status met die ID gevind nie." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Hierdie status is reeds 'n gunsteling." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Dit was nie moontlik om 'n gunsteling te skep nie." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Hierdie status is nie 'n gunsteling nie." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 msgid "Could not delete favorite." 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." +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,138 +372,145 @@ 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 +#, fuzzy msgid "Could not determine source user." -msgstr "" +msgstr "Kon nie die gebruiker opdateer nie." #: actions/apifriendshipsshow.php:142 +#, fuzzy msgid "Could not find target user." -msgstr "" +msgstr "Kon nie die gebruiker opdateer nie." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Die gebruikersnaam mag slegs uit kleinletters en syfers bestaan en mag geen " "spasies bevat nie." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Die gebruikersnaam is reeds in gebruik. Kies 'n ander een." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Nie 'n geldige gebruikersnaam nie." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Tuisblad is nie 'n geldige URL nie." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Volledige naam is te lang (maksimum 255 karakters)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Die beskrywing is te lank (die maksimum is %d karakters)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Ligging is te lank is (maksimum 255 karakters)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Te veel aliasse! Die maksimum aantal is %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Ongeldige alias: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Die alias \"%s\" word al reeds gebruik. Probeer 'n ander een." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Die alias kan nie dieselfde as die gebruikersnaam wees nie." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Groep nie gevind nie!" +msgstr "Nie gevind nie." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "U is reeds 'n lid van die groep." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, php-format +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 +#, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "" +msgstr "Dit was nie moontlik om die groep by te werk nie." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." -msgstr "" +msgstr "U is nie 'n lid van die groep nie." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 -#, php-format +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "" +msgstr "Kon nie die groep skep nie." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "%s se groepe" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Groepe op %1$s waar %2$s lid van is." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s groepe" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -515,15 +521,15 @@ msgstr "Ongeldige 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -536,8 +542,9 @@ msgid "Invalid nickname / password!" msgstr "Ongeldige gebruikersnaam of wagwoord!" #: actions/apioauthauthorize.php:159 +#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "" +msgstr "Moenie die applikasie verwyder nie" #: actions/apioauthauthorize.php:185 msgid "Database error inserting OAuth application user." @@ -584,12 +591,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Gebruiker" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -597,8 +604,8 @@ msgid "Nickname" msgstr "Bynaam" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Wagwoord" @@ -614,11 +621,11 @@ msgstr "Toestaan" msgid "Allow or deny access to your account information." msgstr "Laat toegang tot u gebruikersinligting toe of weier dit." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Hierdie metode vereis 'n POST of DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "U mag nie 'n ander gebruiker se status verwyder nie." @@ -635,59 +642,63 @@ msgstr "U kan nie u eie kennisgewings herhaal nie." msgid "Already repeated that notice." msgstr "U het reeds die kennisgewing herhaal." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Die status is verwyder." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Geen status met die ID gevind nie." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nie gevind nie." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Gunstelinge van %2$s" -#: actions/apitimelinefavorites.php:118 -#, php-format +#: actions/apitimelinefavorites.php:119 +#, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "" +msgstr "%1$s / Gunstelinge van %2$s" -#: actions/apitimelinementions.php:117 -#, php-format +#: actions/apitimelinementions.php:118 +#, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "" +msgstr "%1$s / Gunstelinge van %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 -#, php-format +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 +#, fuzzy, php-format msgid "%s public timeline" -msgstr "" +msgstr "%s tydlyn" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -702,15 +713,20 @@ msgstr "Na %s herhaal" msgid "Repeats of %s" msgstr "Herhalings van %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 -#, php-format +#: actions/apitimelinetag.php:105 actions/tag.php:67 +#, fuzzy, php-format msgid "Notices tagged with %s" -msgstr "" +msgstr "met die etiket %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 -#, php-format +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, fuzzy, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." + +#: actions/apitrends.php:87 +#, fuzzy +msgid "API method under construction." +msgstr "Die API-funksie is nie gevind nie." #: actions/attachment.php:73 msgid "No such attachment." @@ -745,8 +761,9 @@ msgstr "" #: actions/avatarsettings.php:106 actions/avatarsettings.php:185 #: actions/grouplogo.php:181 actions/remotesubscribe.php:191 #: actions/userauthorization.php:72 actions/userrss.php:108 +#, fuzzy msgid "User without matching profile." -msgstr "" +msgstr "Hierdie gebruiker het nie 'n profiel nie." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -764,7 +781,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:657 msgid "Delete" msgstr "Skrap" @@ -804,11 +821,11 @@ msgstr "Die avatar is verwyder." msgid "You already blocked that user." msgstr "U het reeds die gebruiker geblokkeer." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Blokkeer gebruiker" -#: actions/block.php:130 +#: 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 " @@ -820,17 +837,16 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 -#, fuzzy msgctxt "BUTTON" msgid "No" msgstr "Nee" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Moenie hierdie gebruiker blokkeer nie" @@ -839,20 +855,19 @@ msgstr "Moenie hierdie gebruiker blokkeer nie" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 -#, fuzzy msgctxt "BUTTON" msgid "Yes" msgstr "Ja" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Blokkeer hierdie gebruiker" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -871,18 +886,19 @@ msgid "No such group." msgstr "Die groep bestaan nie." #: actions/blockedfromgroup.php:97 -#, php-format +#, fuzzy, php-format msgid "%s blocked profiles" -msgstr "" +msgstr "%s geblokkeerde gebruikers" #: actions/blockedfromgroup.php:100 -#, php-format +#, fuzzy, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "" +msgstr "%1$s en vriende, bladsy %2$d" #: actions/blockedfromgroup.php:115 +#, fuzzy msgid "A list of the users blocked from joining this group." -msgstr "" +msgstr "Blok hierdie gebruiker van hierdie groep" #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" @@ -900,19 +916,21 @@ msgstr "Deblokkeer hierdie gebruiker" #: actions/bookmarklet.php:51 #, fuzzy, php-format msgid "Post to %s" -msgstr "Stuur aan " +msgstr "groepe op %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." msgstr "Geen bevestigingskode." #: actions/confirmaddress.php:80 +#, fuzzy msgid "Confirmation code not found." -msgstr "" +msgstr "Geen bevestigingskode." #: actions/confirmaddress.php:85 +#, fuzzy msgid "That confirmation code is not for you!" -msgstr "" +msgstr "Geen bevestigingskode." #. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. #: actions/confirmaddress.php:91 @@ -922,8 +940,9 @@ msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 +#, fuzzy msgid "That address has already been confirmed." -msgstr "" +msgstr "Die E-posadres bestaan reeds." #. TRANS: Server error thrown on database error updating e-mail preferences. #. TRANS: Server error thrown on database error removing a registered e-mail address. @@ -944,7 +963,7 @@ msgstr "Kon nie gebruiker opdateer nie." #: actions/confirmaddress.php:128 actions/emailsettings.php:433 #: actions/smssettings.php:422 msgid "Couldn't delete email confirmation." -msgstr "" +msgstr "Kon nie e-posbevestiging verwyder nie." #: actions/confirmaddress.php:146 msgid "Confirm address" @@ -966,7 +985,7 @@ msgstr "Kennisgewings" #: actions/deleteapplication.php:63 msgid "You must be logged in to delete an application." -msgstr "" +msgstr "U moet aangeteken alvorens u 'n aansoek kan skrap." #: actions/deleteapplication.php:71 msgid "Application not found." @@ -979,7 +998,7 @@ msgstr "U is nie die eienaar van hierdie applikasie nie." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1010,7 +1029,7 @@ msgstr "Skrap hierdie applikasie" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Nie aangeteken nie." @@ -1039,7 +1058,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:657 msgid "Delete this notice" msgstr "Verwyder hierdie kennisgewing" @@ -1077,45 +1096,54 @@ msgstr "Ontwerp" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Die logo-URL is ongeldig." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." -msgstr "Tema is nie beskikbaar nie: %s" +msgstr "IM is nie beskikbaar nie." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Verander logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Webwerf-logo" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Verander tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Werf se tema" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema vir die werf." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Werf se tema" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Verander die agtergrond-prent" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Agtergrond" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1123,57 +1151,68 @@ msgid "" msgstr "" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Aan" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Af" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 +#, fuzzy msgid "Turn background image on or off." -msgstr "" +msgstr "Verander die agtergrond-prent" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 +#, fuzzy msgid "Tile background image" -msgstr "" +msgstr "Verander die agtergrond-prent" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Verander kleure" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Inhoud" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Kantstrook" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Skakels" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Gevorderd" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Gebruik verstekwaardes" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 +#, fuzzy msgid "Restore default designs" -msgstr "" +msgstr "Gebruik verstekwaardes" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Stel terug na standaard" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1183,7 +1222,7 @@ msgstr "Stel terug na standaard" msgid "Save" msgstr "Stoor" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Stoor ontwerp" @@ -1297,7 +1336,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." @@ -1336,7 +1376,6 @@ msgstr "Huidige bevestigde e-posadres." #: 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 "Verwyder" @@ -1353,7 +1392,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 "Kanselleer" @@ -1368,7 +1406,6 @@ msgstr "E-posadres, soos \"UserName@example.org\"" #. 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 -#, fuzzy msgctxt "BUTTON" msgid "Add" msgstr "Voeg by" @@ -1394,7 +1431,6 @@ msgstr "" #. 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 -#, fuzzy msgctxt "BUTTON" msgid "New" msgstr "Nuut" @@ -1403,7 +1439,7 @@ msgstr "Nuut" #: actions/emailsettings.php:174 #, fuzzy msgid "Email preferences" -msgstr "Voorkeure" +msgstr "E-posadresse" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1437,8 +1473,9 @@ msgstr "" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 +#, fuzzy msgid "Publish a MicroID for my email address." -msgstr "" +msgstr "Dit is nie u e-posadres nie." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 @@ -1453,11 +1490,12 @@ msgstr "Geen e-posadres." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 +#, fuzzy msgid "Cannot normalize that email address" -msgstr "" +msgstr "Dit was nie moontlik om die Jabber-ID te normaliseer nie" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Nie 'n geldige e-posadres nie." @@ -1469,16 +1507,18 @@ msgstr "Dit is al reeds u e-posadres." #. TRANS: Message given saving e-mail address that is already set for another user. #: actions/emailsettings.php:374 +#, fuzzy msgid "That email address already belongs to another user." -msgstr "" +msgstr "Die Jabber-ID word reeds deur 'n ander gebruiker gebruik." #. 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 +#, fuzzy msgid "Couldn't insert confirmation code." -msgstr "" +msgstr "Geen bevestigingskode." #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1492,8 +1532,9 @@ msgstr "" #. TRANS: Message given canceling SMS phone number confirmation that is not pending. #: actions/emailsettings.php:419 actions/imsettings.php:383 #: actions/smssettings.php:408 +#, fuzzy msgid "No pending confirmation to cancel." -msgstr "" +msgstr "Geen bevestigingskode." #. TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address. #: actions/emailsettings.php:424 @@ -1505,7 +1546,7 @@ msgstr "Dit is die verkeerde IM-adres." #: actions/emailsettings.php:438 #, fuzzy msgid "Email confirmation cancelled." -msgstr "Bevestiging gekanselleer." +msgstr "Geen bevestigingskode." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1517,7 +1558,7 @@ msgstr "Dit is nie u e-posadres nie." #: actions/emailsettings.php:479 #, fuzzy msgid "The email address was removed." -msgstr "Die adres is verwyder." +msgstr "Inkomende e-posadres is verwyder." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1537,16 +1578,19 @@ msgstr "Inkomende e-posadres is verwyder." #. TRANS: Message given after successfully adding an incoming e-mail address. #: actions/emailsettings.php:532 actions/smssettings.php:605 +#, fuzzy msgid "New incoming email address added." -msgstr "" +msgstr "Geen inkomende e-posadres." #: actions/favor.php:79 +#, fuzzy msgid "This notice is already a favorite!" -msgstr "" +msgstr "Hierdie kennisgewing is nie 'n gunsteling nie!" #: actions/favor.php:92 lib/disfavorform.php:140 +#, fuzzy msgid "Disfavor favorite" -msgstr "" +msgstr "Voeg by gunstelinge" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 @@ -1586,9 +1630,9 @@ msgid "%s's favorite notices" msgstr "%s se gunsteling kennisgewings" #: actions/favoritesrss.php:115 -#, php-format +#, fuzzy, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1618,8 +1662,9 @@ msgid "No attachments." msgstr "Geen aanhangsels." #: actions/file.php:51 +#, fuzzy msgid "No uploaded attachments." -msgstr "" +msgstr "Geen aanhangsels." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" @@ -1630,8 +1675,9 @@ msgid "User being listened to does not exist." msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 +#, fuzzy msgid "You can use the local subscription!" -msgstr "" +msgstr "U kan slegs lokale gebruikers verwyder." #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." @@ -1671,22 +1717,24 @@ msgid "This role is reserved and cannot be set." msgstr "" #: actions/grantrole.php:75 +#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "" +msgstr "Jy kan nie gebruikers op hierdie webwerf stilmaak nie." #: actions/grantrole.php:82 +#, fuzzy msgid "User already has this role." -msgstr "" +msgstr "Hierdie gebruiker is reeds stilgemaak." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Geen profiel verskaf nie." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Daar is geen profiel met daardie ID nie." @@ -1700,12 +1748,14 @@ msgid "Only an admin can block group members." msgstr "" #: actions/groupblock.php:95 +#, fuzzy msgid "User is already blocked from group." -msgstr "" +msgstr "Hierdie gebruiker is reeds stilgemaak." #: actions/groupblock.php:100 +#, fuzzy msgid "User is not a member of group." -msgstr "" +msgstr "U is nie 'n lid van die groep nie." #: actions/groupblock.php:134 actions/groupmembers.php:360 msgid "Block user from group" @@ -1721,8 +1771,9 @@ msgstr "" #. TRANS: Submit button title for 'No' when blocking a user from a group. #: actions/groupblock.php:182 +#, fuzzy msgid "Do not block this user from this group" -msgstr "" +msgstr "Blok hierdie gebruiker van hierdie groep" #. TRANS: Submit button title for 'Yes' when blocking a user from a group. #: actions/groupblock.php:189 @@ -1730,20 +1781,23 @@ msgid "Block this user from this group" msgstr "Blok hierdie gebruiker van hierdie groep" #: actions/groupblock.php:206 +#, fuzzy msgid "Database error blocking user from group." -msgstr "" +msgstr "Gee gebruiker weer toegang tot die groep" #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." msgstr "Geen ID." #: actions/groupdesignsettings.php:68 +#, fuzzy msgid "You must be logged in to edit a group." -msgstr "" +msgstr "U moet aangeteken wees alvorens u 'n groep kan skep." #: actions/groupdesignsettings.php:144 +#, fuzzy msgid "Group design" -msgstr "" +msgstr "Groepe" #: actions/groupdesignsettings.php:155 msgid "" @@ -1753,12 +1807,14 @@ msgstr "" #: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 +#, fuzzy msgid "Couldn't update your design." -msgstr "" +msgstr "Dit was nie moontlik om u ontwerp by te werk nie." #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 +#, fuzzy msgid "Design preferences saved." -msgstr "" +msgstr "Voorkeure is gestoor." #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" @@ -1788,13 +1844,14 @@ msgid "%s group members" msgstr "lede van die groep %s" #: actions/groupmembers.php:103 -#, php-format +#, fuzzy, php-format msgid "%1$s group members, page %2$d" -msgstr "" +msgstr "%1$s groepe, bladsy %2$d" #: actions/groupmembers.php:118 +#, fuzzy msgid "A list of the users in this group." -msgstr "" +msgstr "Blok hierdie gebruiker van hierdie groep" #: actions/groupmembers.php:182 lib/groupnav.php:107 msgid "Admin" @@ -1805,8 +1862,9 @@ msgid "Block" msgstr "Blokkeer" #: actions/groupmembers.php:487 +#, fuzzy msgid "Make user an admin of the group" -msgstr "" +msgstr "U moet 'n administrateur wees alvorens u 'n groep kan wysig." #: actions/groupmembers.php:519 msgid "Make Admin" @@ -1820,16 +1878,16 @@ msgstr "Maak hierdie gebruiker 'n administrateur" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s tydlyn" #. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name. #: actions/grouprss.php:142 -#, php-format +#, fuzzy, php-format msgid "Updates from members of %1$s on %2$s!" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." #: actions/groups.php:62 lib/profileaction.php:223 lib/profileaction.php:249 #: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 @@ -1863,8 +1921,9 @@ msgid "" msgstr "" #: actions/groupsearch.php:58 +#, fuzzy msgid "Group search" -msgstr "" +msgstr "Soek gebruikers" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 @@ -1890,8 +1949,9 @@ msgid "Only an admin can unblock group members." msgstr "" #: actions/groupunblock.php:95 +#, fuzzy msgid "User is not blocked from group." -msgstr "" +msgstr "Gee gebruiker weer toegang tot die groep" #: actions/groupunblock.php:128 actions/unblock.php:86 msgid "Error removing the block." @@ -1924,8 +1984,9 @@ msgid "IM address" msgstr "IP-adres" #: actions/imsettings.php:113 +#, fuzzy msgid "Current confirmed Jabber/GTalk address." -msgstr "" +msgstr "Huidige bevestigde e-posadres." #. TRANS: Form note in IM settings form. #. TRANS: %s is the IM address set for the site. @@ -1949,7 +2010,7 @@ msgstr "" #: actions/imsettings.php:155 #, fuzzy msgid "IM preferences" -msgstr "Voorkeure" +msgstr "Voorkeure is gestoor." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2019,14 +2080,13 @@ msgstr "Dit is die verkeerde IM-adres." #: actions/imsettings.php:397 #, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "" -"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie." +msgstr "Kon nie e-posbevestiging verwyder nie." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 #, fuzzy msgid "IM confirmation cancelled." -msgstr "Bevestiging gekanselleer." +msgstr "Geen bevestigingskode." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2038,17 +2098,17 @@ msgstr "Dit is nie u Jabber-ID nie." #: actions/imsettings.php:447 #, fuzzy msgid "The IM address was removed." -msgstr "Die adres is verwyder." +msgstr "Inkomende e-posadres is verwyder." #: actions/inbox.php:59 -#, php-format +#, fuzzy, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "" +msgstr "%1$s, bladsy %2$d" #: actions/inbox.php:62 -#, php-format +#, fuzzy, php-format msgid "Inbox for %s" -msgstr "" +msgstr "Vriend van 'n vriend (FOAF) vir %s" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." @@ -2069,16 +2129,18 @@ msgid "Invalid email address: %s" msgstr "Ongeldige e-posadres: %s" #: actions/invite.php:110 +#, fuzzy msgid "Invitation(s) sent" -msgstr "" +msgstr "Uitnodigings" #: actions/invite.php:112 msgid "Invite new users" msgstr "Nooi nuwe gebruikers" #: actions/invite.php:128 +#, fuzzy msgid "You are already subscribed to these users:" -msgstr "" +msgstr "U volg hierdie gebruiker:" #. TRANS: Whois output. #. TRANS: %1$s nickname of the queried user, %2$s is their profile URL. @@ -2197,50 +2259,50 @@ msgstr "U is nie 'n lid van daardie groep nie." msgid "%1$s left group %2$s" msgstr "%1$s het die groep %2$s verlaat" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "U is reeds aangeteken." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Verkeerde gebruikersnaam of wagwoord." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Aanteken" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Teken aan" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Onthou my" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Wagwoord verloor of vergeet?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Verkeerde gebruikersnaam of wagwoord." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2251,9 +2313,9 @@ msgid "Only an admin can make another user an admin." msgstr "" #: actions/makeadmin.php:96 -#, php-format +#, fuzzy, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "" +msgstr "%1$s het die groep %2$s verlaat" #: actions/makeadmin.php:133 #, php-format @@ -2268,19 +2330,21 @@ msgstr "" #: actions/microsummary.php:69 #, fuzzy msgid "No current status." -msgstr "Geen huidige status" +msgstr "Geen resultate nie." #: actions/newapplication.php:52 msgid "New Application" msgstr "Nuwe appplikasie" #: actions/newapplication.php:64 +#, fuzzy msgid "You must be logged in to register an application." -msgstr "" +msgstr "U moet aangeteken wees alvorens u 'n applikasie kan wysig." #: actions/newapplication.php:143 +#, fuzzy msgid "Use this form to register a new application." -msgstr "" +msgstr "Gebruik die vorm om u applikasie te wysig." #: actions/newapplication.php:176 msgid "Source URL is required." @@ -2295,8 +2359,9 @@ msgid "New group" msgstr "Nuwe groep" #: actions/newgroup.php:110 +#, fuzzy msgid "Use this form to create a new group." -msgstr "" +msgstr "Gebruik hierdie vorm om die groep te wysig." #: actions/newmessage.php:71 actions/newmessage.php:231 msgid "New message" @@ -2325,21 +2390,23 @@ msgid "Message sent" msgstr "Boodskap is gestuur." #: actions/newmessage.php:185 -#, php-format +#, fuzzy, php-format msgid "Direct message to %s sent." -msgstr "" +msgstr "Direkte boodskappe aan %s" #: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax-fout" #: actions/newnotice.php:69 +#, fuzzy msgid "New notice" -msgstr "" +msgstr "Geen kennisgewing." #: actions/newnotice.php:217 +#, fuzzy msgid "Notice posted" -msgstr "" +msgstr "Hierdie kennisgewing is verwyder." #: actions/noticesearch.php:68 #, php-format @@ -2353,9 +2420,9 @@ msgid "Text search" msgstr "Teks soektog" #: actions/noticesearch.php:91 -#, php-format +#, fuzzy, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." #: actions/noticesearch.php:121 #, php-format @@ -2377,13 +2444,13 @@ msgid "Updates with \"%s\"" msgstr "Opdaterings met \"%s\"" #: actions/noticesearchrss.php:98 -#, php-format +#, fuzzy, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "" +msgstr "Opdaterings van %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 "" #: actions/nudge.php:94 @@ -2395,33 +2462,37 @@ msgid "Nudge sent!" msgstr "Die por is gestuur!" #: actions/oauthappssettings.php:59 +#, fuzzy msgid "You must be logged in to list your applications." -msgstr "" +msgstr "U moet aangeteken wees alvorens u 'n applikasie kan wysig." #: actions/oauthappssettings.php:74 +#, fuzzy msgid "OAuth applications" -msgstr "" +msgstr "Die applikasie bestaan nie." #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" #: actions/oauthappssettings.php:135 -#, php-format +#, fuzzy, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "Dit was nie moontlik om die applikasie te skep nie." #: actions/oauthconnectionssettings.php:72 +#, fuzzy msgid "Connected applications" -msgstr "" +msgstr "Skrap applikasie" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" #: actions/oauthconnectionssettings.php:175 +#, fuzzy msgid "You are not a user of that application." -msgstr "" +msgstr "U is nie die eienaar van hierdie applikasie nie." #: actions/oauthconnectionssettings.php:186 #, php-format @@ -2436,45 +2507,48 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Hierdie gebruiker het nie 'n profiel nie." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Status van %1$s op %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: 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:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 +#, fuzzy msgid "Not a supported data format." -msgstr "" +msgstr "Nie-ondersteunde formaat." #: actions/opensearch.php:64 msgid "People Search" msgstr "Mense soek" #: actions/opensearch.php:67 +#, fuzzy msgid "Notice Search" -msgstr "" +msgstr "Mense soek" #: actions/othersettings.php:60 +#, fuzzy msgid "Other settings" -msgstr "" +msgstr "Avatar-instellings" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2493,46 +2567,52 @@ msgid "Automatic shortening service to use." msgstr "" #: actions/othersettings.php:122 +#, fuzzy msgid "View profile designs" -msgstr "" +msgstr "Wysig profiel-instellings" #: actions/othersettings.php:123 msgid "Show or hide profile designs." msgstr "" #: actions/othersettings.php:153 +#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "" +msgstr "Ligging is te lank is (maksimum 255 karakters)." #: actions/otp.php:69 +#, fuzzy msgid "No user ID specified." -msgstr "" +msgstr "Geen groep verskaf nie." #: actions/otp.php:83 +#, fuzzy msgid "No login token specified." -msgstr "" +msgstr "Geen profiel verskaf nie." #: actions/otp.php:90 msgid "No login token requested." msgstr "" #: actions/otp.php:95 +#, fuzzy msgid "Invalid login token specified." -msgstr "" +msgstr "Ongeldige token." #: actions/otp.php:104 +#, fuzzy msgid "Login token expired." -msgstr "" +msgstr "Teken aan" #: actions/outbox.php:58 -#, php-format +#, fuzzy, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "" +msgstr "%1$s, bladsy %2$d" #: actions/outbox.php:61 -#, php-format +#, fuzzy, php-format msgid "Outbox for %s" -msgstr "" +msgstr "Vriend van 'n vriend (FOAF) vir %s" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." @@ -2563,7 +2643,7 @@ msgid "6 or more characters" msgstr "6 of meer karakters" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Bevestig" @@ -2575,11 +2655,11 @@ msgstr "Dieselfde as wagwoord hierbo" msgid "Change" msgstr "Wysig" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Wagwoord moet 6 of meer karakters bevat." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Wagwoorde is nie dieselfde nie." @@ -2600,7 +2680,7 @@ msgid "Password saved." msgstr "Wagwoord gestoor." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Paaie" @@ -2611,7 +2691,7 @@ msgstr "" #: actions/pathsadminpanel.php:157 #, fuzzy, php-format msgid "Theme directory not readable: %s." -msgstr "Tema is nie beskikbaar nie: %s" +msgstr "Tema-gids" #: actions/pathsadminpanel.php:163 #, fuzzy, php-format @@ -2649,8 +2729,9 @@ msgid "Path" msgstr "Pad" #: actions/pathsadminpanel.php:242 +#, fuzzy msgid "Site path" -msgstr "" +msgstr "Werf se tema" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2749,8 +2830,9 @@ msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 +#, fuzzy msgid "Save paths" -msgstr "" +msgstr "Tema-pad" #: actions/peoplesearch.php:52 #, php-format @@ -2784,8 +2866,9 @@ msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’. msgstr "" #: actions/profilesettings.php:60 +#, fuzzy msgid "Profile settings" -msgstr "" +msgstr "Wysig profiel-instellings" #: actions/profilesettings.php:71 msgid "" @@ -2797,46 +2880,49 @@ msgid "Profile information" msgstr "" #: actions/profilesettings.php:108 lib/groupeditform.php:154 +#, fuzzy msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" +"Die gebruikersnaam mag slegs uit kleinletters en syfers bestaan en mag geen " +"spasies bevat nie." -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Volledige naam" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Tuisblad" -#: actions/profilesettings.php:117 actions/register.php:455 +#: 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:461 +#: 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:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Bio" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Ligging" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "" @@ -2876,18 +2962,19 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 -#, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, fuzzy, php-format msgid "Bio is too long (max %d chars)." -msgstr "" +msgstr "Die beskrywing is te lank (die maksimum is %d karakters)." #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." msgstr "" #: actions/profilesettings.php:241 +#, fuzzy msgid "Language is too long (max 50 chars)." -msgstr "" +msgstr "Die naam is te lank (maksimum 255 karakters)." #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format @@ -2895,20 +2982,24 @@ msgid "Invalid tag: \"%s\"" msgstr "Ongeldige etiket: \"$s\"" #: actions/profilesettings.php:306 +#, fuzzy msgid "Couldn't update user for autosubscribe." -msgstr "" +msgstr "Kon nie gebruikersdata opdateer nie." #: actions/profilesettings.php:363 +#, fuzzy msgid "Couldn't save location prefs." -msgstr "" +msgstr "Dit was nie moontlik om die applikasie by te werk nie." #: actions/profilesettings.php:375 +#, fuzzy msgid "Couldn't save profile." -msgstr "" +msgstr "Kon nie die profiel stoor nie." #: actions/profilesettings.php:383 +#, fuzzy msgid "Couldn't save tags." -msgstr "" +msgstr "Kon nie gebruiker opdateer nie." #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 @@ -2921,17 +3012,19 @@ msgid "Beyond the page limit (%s)." msgstr "" #: actions/public.php:92 +#, fuzzy msgid "Could not retrieve public stream." -msgstr "" +msgstr "Dit was nie moontlik om die aliasse te skep nie." #: actions/public.php:130 -#, php-format +#, fuzzy, php-format msgid "Public timeline, page %d" -msgstr "" +msgstr "Populêre kennisgewings, bladsy %d" #: actions/public.php:132 lib/publicgroupnav.php:79 +#, fuzzy msgid "Public timeline" -msgstr "" +msgstr "%s tydlyn" #: actions/public.php:160 msgid "Public Stream Feed (RSS 1.0)" @@ -2946,11 +3039,13 @@ msgid "Public Stream Feed (Atom)" msgstr "" #: actions/public.php:188 -#, php-format +#, fuzzy, php-format msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"Hierdie is die tydslyn vir %s en vriende, maar niemand het nog iets gepos " +"nie." #: actions/public.php:191 msgid "Be the first to post!" @@ -2994,8 +3089,9 @@ msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." msgstr "" #: actions/publictagcloud.php:72 +#, fuzzy msgid "Be the first to post one!" -msgstr "" +msgstr "U kan die eerste een wees om 'n boodskap te plaas!" #: actions/publictagcloud.php:75 #, php-format @@ -3005,36 +3101,42 @@ msgid "" msgstr "" #: actions/publictagcloud.php:134 +#, fuzzy msgid "Tag cloud" -msgstr "" +msgstr "Verander kleure" #: actions/recoverpassword.php:36 +#, fuzzy msgid "You are already logged in!" -msgstr "" +msgstr "U is reeds aangeteken." #: actions/recoverpassword.php:62 +#, fuzzy msgid "No such recovery code." -msgstr "" +msgstr "Die kennisgewing bestaan nie." #: actions/recoverpassword.php:66 +#, fuzzy msgid "Not a recovery code." -msgstr "" +msgstr "Nie 'n geregistreerde gebruiker nie." #: actions/recoverpassword.php:73 msgid "Recovery code for unknown user." msgstr "" #: actions/recoverpassword.php:86 +#, fuzzy msgid "Error with confirmation code." -msgstr "" +msgstr "Geen bevestigingskode." #: actions/recoverpassword.php:97 msgid "This confirmation code is too old. Please start again." msgstr "" #: actions/recoverpassword.php:111 +#, fuzzy msgid "Could not update user with confirmed email address." -msgstr "" +msgstr "Huidige bevestigde e-posadres." #: actions/recoverpassword.php:152 msgid "" @@ -3047,28 +3149,33 @@ msgid "You have been identified. Enter a new password below. " msgstr "" #: actions/recoverpassword.php:188 +#, fuzzy msgid "Password recovery" -msgstr "" +msgstr "Verander wagwoord" #: actions/recoverpassword.php:191 +#, fuzzy msgid "Nickname or email address" -msgstr "" +msgstr "Geen e-posadres." #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." msgstr "" #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 +#, fuzzy msgid "Recover" -msgstr "" +msgstr "Verwyder" #: actions/recoverpassword.php:208 +#, fuzzy msgid "Reset password" -msgstr "" +msgstr "Nuwe wagwoord" #: actions/recoverpassword.php:209 +#, fuzzy msgid "Recover password" -msgstr "" +msgstr "Nuwe wagwoord" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" @@ -3079,16 +3186,18 @@ msgid "Unknown action" msgstr "Onbekende aksie" #: actions/recoverpassword.php:236 +#, fuzzy msgid "6 or more characters, and don't forget it!" -msgstr "" +msgstr "6 of meer karakters" #: actions/recoverpassword.php:243 msgid "Reset" msgstr "Herstel" #: actions/recoverpassword.php:252 +#, fuzzy msgid "Enter a nickname or email address." -msgstr "" +msgstr "Dit is nie u e-posadres nie." #: actions/recoverpassword.php:282 msgid "No user with that email address or username." @@ -3099,8 +3208,9 @@ msgid "No registered email address for that user." msgstr "" #: actions/recoverpassword.php:313 +#, fuzzy msgid "Error saving address confirmation." -msgstr "" +msgstr "Fout tydens stoor van gebruiker; ongeldig." #: actions/recoverpassword.php:338 msgid "" @@ -3109,119 +3219,125 @@ msgid "" msgstr "" #: actions/recoverpassword.php:357 +#, fuzzy msgid "Unexpected password reset." -msgstr "" +msgstr "Die vorm is onverwags ingestuur." #: actions/recoverpassword.php:365 +#, fuzzy msgid "Password must be 6 chars or more." -msgstr "" +msgstr "Wagwoord moet 6 of meer karakters bevat." #: actions/recoverpassword.php:369 +#, fuzzy msgid "Password and confirmation do not match." -msgstr "" +msgstr "Wagwoorde is nie dieselfde nie." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 +#, fuzzy msgid "Error setting user." -msgstr "" +msgstr "Fout tydens stoor van gebruiker; ongeldig." #: actions/recoverpassword.php:395 msgid "New password successfully saved. You are now logged in." msgstr "" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Die registrasie is voltooi" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registreer" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registrasie nie toegelaat nie." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Die E-posadres bestaan reeds." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ongeldige gebruikersnaam of wagwoord." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 +#, fuzzy msgid "6 or more characters. Required." -msgstr "" +msgstr "6 of meer karakters" -#: actions/register.php:434 +#: actions/register.php:441 +#, fuzzy msgid "Same as password above. Required." -msgstr "" +msgstr "Dieselfde as wagwoord hierbo" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-pos" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3240,7 +3356,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3263,16 +3379,18 @@ msgid "Subscribe to a remote user" msgstr "" #: actions/remotesubscribe.php:129 +#, fuzzy msgid "User nickname" -msgstr "" +msgstr "Geen gebruikersnaam nie." #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" msgstr "" #: actions/remotesubscribe.php:133 +#, fuzzy msgid "Profile URL" -msgstr "" +msgstr "Profiel" #: actions/remotesubscribe.php:134 msgid "URL of your profile on another compatible microblogging service" @@ -3304,18 +3422,21 @@ msgid "Only logged-in users can repeat notices." msgstr "" #: actions/repeat.php:64 actions/repeat.php:71 +#, fuzzy msgid "No notice specified." -msgstr "" +msgstr "Geen profiel verskaf nie." #: actions/repeat.php:76 +#, fuzzy msgid "You can't repeat your own notice." -msgstr "" +msgstr "U kan nie u eie kennisgewings herhaal nie." #: actions/repeat.php:90 +#, fuzzy msgid "You already repeated that notice." -msgstr "" +msgstr "U het reeds die kennisgewing herhaal." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Herhalend" @@ -3325,36 +3446,38 @@ msgstr "Herhaal!" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 -#, php-format +#, fuzzy, php-format msgid "Replies to %s" -msgstr "" +msgstr "Herhalings van %s" #: actions/replies.php:128 -#, php-format +#, fuzzy, php-format msgid "Replies to %1$s, page %2$d" -msgstr "" +msgstr "%1$s, bladsy %2$d" #: actions/replies.php:145 -#, php-format +#, fuzzy, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 1.0)" #: actions/replies.php:152 -#, php-format +#, fuzzy, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 2.0)" #: actions/replies.php:159 -#, php-format +#, fuzzy, php-format msgid "Replies feed for %s (Atom)" -msgstr "" +msgstr "Voer vir vriende van %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 "" +"Hierdie is die tydslyn vir %s en vriende, maar niemand het nog iets gepos " +"nie." #: actions/replies.php:204 #, php-format @@ -3366,38 +3489,41 @@ 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 -#, php-format +#, fuzzy, php-format msgid "Replies to %1$s on %2$s!" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." #: actions/revokerole.php:75 +#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "" +msgstr "Jy kan nie gebruikers op hierdie webwerf stilmaak nie." #: actions/revokerole.php:82 msgid "User doesn't have this role." msgstr "" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 +#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "" +msgstr "Jy kan nie gebruikers op hierdie webwerf stilmaak nie." #: actions/sandbox.php:72 +#, fuzzy msgid "User is already sandboxed." -msgstr "" +msgstr "Hierdie gebruiker is reeds stilgemaak." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessies" @@ -3406,8 +3532,9 @@ msgid "Session settings for this StatusNet site." msgstr "" #: actions/sessionsadminpanel.php:175 +#, fuzzy msgid "Handle sessions" -msgstr "" +msgstr "Sessies" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." @@ -3423,16 +3550,19 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 +#, fuzzy msgid "Save site settings" -msgstr "" +msgstr "Stoor toegangsinstellings" #: actions/showapplication.php:82 +#, fuzzy msgid "You must be logged in to view an application." -msgstr "" +msgstr "U moet aangeteken wees alvorens u 'n applikasie kan wysig." #: actions/showapplication.php:157 +#, fuzzy msgid "Application profile" -msgstr "" +msgstr "Die applikasie is nie gevind nie." #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 @@ -3440,7 +3570,7 @@ msgid "Icon" msgstr "Ikoon" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Naam" @@ -3451,12 +3581,12 @@ msgid "Organization" msgstr "Organisasie" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3467,16 +3597,18 @@ msgid "Created by %1$s - %2$s access by default - %3$d users" msgstr "" #: actions/showapplication.php:213 +#, fuzzy msgid "Application actions" -msgstr "" +msgstr "Die applikasie is nie gevind nie." #: actions/showapplication.php:236 msgid "Reset key & secret" msgstr "" #: actions/showapplication.php:261 +#, fuzzy msgid "Application info" -msgstr "" +msgstr "Die applikasie is nie gevind nie." #: actions/showapplication.php:263 msgid "Consumer key" @@ -3495,8 +3627,9 @@ msgid "Access token URL" msgstr "" #: actions/showapplication.php:283 +#, fuzzy msgid "Authorize URL" -msgstr "" +msgstr "Outeur" #: actions/showapplication.php:288 msgid "" @@ -3505,32 +3638,34 @@ msgid "" msgstr "" #: actions/showapplication.php:309 +#, fuzzy msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "" +msgstr "Is u seker u wil hierdie kennisgewing verwyder?" #: actions/showfavorites.php:79 -#, php-format +#, fuzzy, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "" +msgstr "%s se gunsteling kennisgewings" #: actions/showfavorites.php:132 +#, fuzzy msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "Dit was nie moontlik om 'n gunsteling te skep nie." #: actions/showfavorites.php:171 -#, php-format +#, fuzzy, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 1.0)" #: actions/showfavorites.php:178 -#, php-format +#, fuzzy, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 2.0)" #: actions/showfavorites.php:185 -#, php-format +#, fuzzy, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "" +msgstr "Voer vir vriende van %s (Atom)" #: actions/showfavorites.php:206 msgid "" @@ -3541,16 +3676,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 @@ -3590,26 +3725,26 @@ msgid "Group actions" msgstr "Groepsaksies" #: actions/showgroup.php:338 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 1.0)" #: actions/showgroup.php:344 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 2.0)" #: actions/showgroup.php:350 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %s group (Atom)" -msgstr "" +msgstr "Voer vir vriende van %s (Atom)" #: actions/showgroup.php:355 #, php-format 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" @@ -3623,11 +3758,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." @@ -3637,7 +3772,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." @@ -3646,7 +3781,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administrateurs" @@ -3659,14 +3794,14 @@ msgid "Only the sender and recipient may read this message." msgstr "" #: actions/showmessage.php:108 -#, php-format +#, fuzzy, php-format msgid "Message to %1$s on %2$s" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." #: actions/showmessage.php:113 -#, php-format +#, fuzzy, php-format msgid "Message from %1$s on %2$s" -msgstr "" +msgstr "Opdaterings van %1$s op %2$s." #: actions/shownotice.php:90 msgid "Notice deleted." @@ -3683,24 +3818,24 @@ msgid "%1$s, page %2$d" msgstr "%1$s, bladsy %2$d" #: actions/showstream.php:122 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 1.0)" #: actions/showstream.php:129 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 1.0)" #: actions/showstream.php:136 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 2.0)" #: actions/showstream.php:143 -#, php-format +#, fuzzy, php-format msgid "Notice feed for %s (Atom)" -msgstr "" +msgstr "Voer vir vriende van %s (Atom)" #: actions/showstream.php:148 #, php-format @@ -3708,9 +3843,11 @@ msgid "FOAF for %s" msgstr "Vriend van 'n vriend (FOAF) vir %s" #: actions/showstream.php:200 -#, php-format +#, fuzzy, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." msgstr "" +"Hierdie is die tydslyn vir %s en vriende, maar niemand het nog iets gepos " +"nie." #: actions/showstream.php:205 msgid "" @@ -3721,8 +3858,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 @@ -3764,8 +3901,9 @@ msgid "Site name must have non-zero length." msgstr "" #: actions/siteadminpanel.php:141 +#, fuzzy msgid "You must have a valid contact email address." -msgstr "" +msgstr "Nie 'n geldige e-posadres nie." #: actions/siteadminpanel.php:159 #, php-format @@ -3785,8 +3923,9 @@ msgid "General" msgstr "Algemeen" #: actions/siteadminpanel.php:224 +#, fuzzy msgid "Site name" -msgstr "" +msgstr "Werf se tema" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" @@ -3809,8 +3948,9 @@ msgid "URL used for credits link in footer of each page" msgstr "" #: actions/siteadminpanel.php:239 +#, fuzzy msgid "Contact email address for your site" -msgstr "" +msgstr "Inkomende e-posadres is verwyder." #: actions/siteadminpanel.php:245 msgid "Local" @@ -3825,8 +3965,9 @@ msgid "Default timezone for the site; usually UTC." msgstr "" #: actions/siteadminpanel.php:262 +#, fuzzy msgid "Default language" -msgstr "" +msgstr "Standaardtydsone" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" @@ -3853,32 +3994,37 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 +#, fuzzy msgid "Site Notice" -msgstr "" +msgstr "Kennisgewings" #: actions/sitenoticeadminpanel.php:67 +#, fuzzy msgid "Edit site-wide message" -msgstr "" +msgstr "Nuwe boodskap" #: actions/sitenoticeadminpanel.php:103 +#, fuzzy msgid "Unable to save site notice." -msgstr "" +msgstr "Dit was nie moontlik om u ontwerp-instellings te stoor nie." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." msgstr "" #: actions/sitenoticeadminpanel.php:176 +#, fuzzy msgid "Site notice text" -msgstr "" +msgstr "Verwyder kennisgewing" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" msgstr "" #: actions/sitenoticeadminpanel.php:198 +#, fuzzy msgid "Save site notice" -msgstr "" +msgstr "Verwyder kennisgewing" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 @@ -3894,8 +4040,9 @@ msgstr "" #. TRANS: Message given in the SMS settings if SMS is not enabled on the site. #: actions/smssettings.php:97 +#, fuzzy msgid "SMS is not available." -msgstr "" +msgstr "IM is nie beskikbaar nie." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 @@ -3905,8 +4052,9 @@ msgstr "IP-adres" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 +#, fuzzy msgid "Current confirmed SMS-enabled phone number." -msgstr "" +msgstr "Huidige bevestigde e-posadres." #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 @@ -3915,8 +4063,9 @@ msgstr "" #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 +#, fuzzy msgid "Confirmation code" -msgstr "" +msgstr "Geen bevestigingskode." #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 @@ -3944,7 +4093,7 @@ msgstr "" #: actions/smssettings.php:195 #, fuzzy msgid "SMS preferences" -msgstr "Voorkeure" +msgstr "Voorkeure is gestoor." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -3966,18 +4115,21 @@ msgstr "Geen telefoonnommer." #. TRANS: Message given saving SMS phone number without having selected a carrier. #: actions/smssettings.php:344 +#, fuzzy msgid "No carrier selected." -msgstr "" +msgstr "Hierdie kennisgewing is verwyder." #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 +#, fuzzy msgid "That is already your phone number." -msgstr "" +msgstr "Dit is al reeds u Jabber-ID." #. TRANS: Message given saving SMS phone number that is already set for another user. #: actions/smssettings.php:356 +#, fuzzy msgid "That phone number already belongs to another user." -msgstr "" +msgstr "Die Jabber-ID word reeds deur 'n ander gebruiker gebruik." #. TRANS: Message given saving valid SMS phone number that is to be confirmed. #: actions/smssettings.php:384 @@ -3988,20 +4140,22 @@ msgstr "" #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 +#, fuzzy msgid "That is the wrong confirmation number." -msgstr "" +msgstr "Dit is die verkeerde IM-adres." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 #, fuzzy msgid "SMS confirmation cancelled." -msgstr "Bevestiging gekanselleer." +msgstr "SMS-bevestiging" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. #: actions/smssettings.php:448 +#, fuzzy msgid "That is not your phone number." -msgstr "" +msgstr "Dit is nie u Jabber-ID nie." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 @@ -4030,12 +4184,13 @@ msgstr "" #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 +#, fuzzy msgid "No code entered" -msgstr "" +msgstr "Geen inhoud nie!" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4044,16 +4199,18 @@ msgid "Manage snapshot configuration" msgstr "" #: actions/snapshotadminpanel.php:127 +#, fuzzy msgid "Invalid snapshot run value." -msgstr "" +msgstr "Ongeldige rol." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." msgstr "" #: actions/snapshotadminpanel.php:144 +#, fuzzy msgid "Invalid snapshot report URL." -msgstr "" +msgstr "Die logo-URL is ongeldig." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" @@ -4088,24 +4245,29 @@ msgid "Snapshots will be sent to this URL" msgstr "" #: actions/snapshotadminpanel.php:248 +#, fuzzy msgid "Save snapshot settings" -msgstr "" +msgstr "Stoor toegangsinstellings" #: actions/subedit.php:70 +#, fuzzy msgid "You are not subscribed to that profile." -msgstr "" +msgstr "U volg hierdie gebruiker:" -#: 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 "" +msgstr "Kon nie die profiel stoor nie." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." msgstr "" #: actions/subscribe.php:107 +#, fuzzy msgid "No such profile." -msgstr "" +msgstr "Die lêer bestaan nie." #: actions/subscribe.php:117 msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." @@ -4121,9 +4283,9 @@ msgid "%s subscribers" msgstr "" #: actions/subscribers.php:52 -#, php-format +#, fuzzy, php-format msgid "%1$s subscribers, page %2$d" -msgstr "" +msgstr "%1$s en vriende, bladsy %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4153,14 +4315,14 @@ msgid "" msgstr "" #: actions/subscriptions.php:52 -#, php-format +#, fuzzy, php-format msgid "%s subscriptions" -msgstr "" +msgstr "Beskrywing" #: actions/subscriptions.php:54 -#, php-format +#, fuzzy, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "" +msgstr "%1$s groepe, bladsy %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4195,24 +4357,24 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, php-format +#, fuzzy, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "" +msgstr "%1$s, bladsy %2$d" #: actions/tag.php:87 -#, php-format +#, fuzzy, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 1.0)" #: actions/tag.php:93 -#, php-format +#, fuzzy, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "" +msgstr "Voer vir vriende van %s (RSS 2.0)" #: actions/tag.php:99 -#, php-format +#, fuzzy, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "" +msgstr "Voer vir vriende van %s (Atom)" #: actions/tagother.php:39 msgid "No ID argument." @@ -4248,32 +4410,33 @@ msgid "" msgstr "" #: actions/tagother.php:200 +#, fuzzy msgid "Could not save tags." -msgstr "" +msgstr "Kon nie die profiel stoor nie." #: actions/tagother.php:236 +#, fuzzy msgid "Use this form to add tags to your subscribers or subscriptions." -msgstr "" +msgstr "Gebruik die vorm om u applikasie te wysig." #: actions/tagrss.php:35 msgid "No such tag." msgstr "Onbekende etiket." -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 +#, fuzzy msgid "You haven't blocked that user." -msgstr "" +msgstr "U het reeds die gebruiker geblokkeer." #: actions/unsandbox.php:72 +#, fuzzy msgid "User is not sandboxed." -msgstr "" +msgstr "Hierdie gebruiker het nie 'n profiel nie." #: actions/unsilence.php:72 +#, fuzzy msgid "User is not silenced." -msgstr "" +msgstr "Hierdie gebruiker is reeds stilgemaak." #: actions/unsubscribe.php:77 #, fuzzy @@ -4332,36 +4495,42 @@ msgid "New users" msgstr "Nuwe gebruikers" #: actions/useradminpanel.php:235 +#, fuzzy msgid "New user welcome" -msgstr "" +msgstr "Nuwe gebruikers" #: actions/useradminpanel.php:236 +#, fuzzy msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Die naam is te lank (maksimum 255 karakters)." #: actions/useradminpanel.php:241 +#, fuzzy msgid "Default subscription" -msgstr "" +msgstr "Beskrywing" #: actions/useradminpanel.php:242 +#, fuzzy msgid "Automatically subscribe new users to this user." -msgstr "" +msgstr "Jy kan nie gebruikers op hierdie webwerf stilmaak nie." #: actions/useradminpanel.php:251 msgid "Invitations" msgstr "Uitnodigings" #: actions/useradminpanel.php:256 +#, fuzzy msgid "Invitations enabled" -msgstr "" +msgstr "Uitnodigings" #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" #: actions/userauthorization.php:105 +#, fuzzy msgid "Authorize subscription" -msgstr "" +msgstr "Beskrywing" #: actions/userauthorization.php:110 msgid "" @@ -4370,7 +4539,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Lisensie" @@ -4380,16 +4549,18 @@ msgstr "Aanvaar" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 +#, fuzzy msgid "Subscribe to this user" -msgstr "" +msgstr "U volg hierdie gebruiker:" #: actions/userauthorization.php:219 msgid "Reject" msgstr "Verwerp" #: actions/userauthorization.php:220 +#, fuzzy msgid "Reject this subscription" -msgstr "" +msgstr "Verwyder die gebruiker" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4407,8 +4578,9 @@ msgid "" msgstr "" #: actions/userauthorization.php:266 +#, fuzzy msgid "Subscription rejected" -msgstr "" +msgstr "Beskrywing word vereis." #: actions/userauthorization.php:268 msgid "" @@ -4438,9 +4610,9 @@ msgid "Profile URL ‘%s’ is for a local user." msgstr "" #: actions/userauthorization.php:345 -#, php-format +#, fuzzy, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "Die \"callback\"-URL is nie geldig nie." #: actions/userauthorization.php:350 #, php-format @@ -4448,13 +4620,14 @@ msgid "Can’t read avatar URL ‘%s’." msgstr "Kan nie die avatar-URL \"%s\" lees nie." #: actions/userauthorization.php:355 -#, php-format +#, fuzzy, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "" +msgstr "Kan nie die avatar-URL \"%s\" lees nie." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 +#, fuzzy msgid "Profile design" -msgstr "" +msgstr "Profiel" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4477,9 +4650,9 @@ msgid "Search for more groups" msgstr "Soek vir meer groepe" #: actions/usergroups.php:159 -#, php-format +#, fuzzy, php-format msgid "%s is not a member of any group." -msgstr "" +msgstr "U is nie 'n lid van enige groep nie." #: actions/usergroups.php:164 #, php-format @@ -4491,29 +4664,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Opdaterings van %1$s op %2$s." -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Medewerkers" -#: actions/version.php:168 +#: 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 " @@ -4521,7 +4694,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4529,168 +4702,281 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Weergawe" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Outeur(s)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 +#, fuzzy msgid "Group join failed." -msgstr "" +msgstr "Groepsprofiel" -#: 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 +#, fuzzy msgid "Group leave failed." -msgstr "" +msgstr "Groepsprofiel" -#: 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 "" +msgstr "Dit was nie moontlik om die groep by te werk nie." -#: classes/Login_token.php:76 -#, php-format +#. 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 "Dit was nie moontlik om die aliasse te skep nie." + +#. 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 "" -#: classes/Message.php:45 +#. 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 "" +msgstr "U inkomende boodskappe" -#: 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 "" +msgstr "Kan nie boodskap verwerk nie." -#: 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 "Kan nie boodskap verwerk nie." + +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 +#, fuzzy msgid "You are banned from posting notices on this site." -msgstr "" +msgstr "Jy kan nie gebruikers op hierdie webwerf stilmaak nie." -#: classes/Notice.php:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 +#, fuzzy msgid "User has blocked you." -msgstr "" +msgstr "Hierdie gebruiker het nie 'n profiel nie." -#: 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 +#, fuzzy msgid "Could not set group URI." -msgstr "" +msgstr "Kon nie die groep skep nie." -#: 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 "" +msgstr "Kon nie die groep skep nie." -#: 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 "" +msgstr "Kon nie die profiel stoor nie." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 @@ -4699,8 +4985,9 @@ msgstr "Verander u profiel gegewens" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 +#, fuzzy msgid "Upload an avatar" -msgstr "" +msgstr "Die opdatering van die avatar het gefaal." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 @@ -4739,188 +5026,194 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Persoonlik" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 +#, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "" +msgstr "Verander u wagwoord" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "Konnekteer" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Beheer" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Uitnodig" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 +#, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "" +msgstr "Meld by die webwerf aan" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Teken uit" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Skep 'n gebruiker" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registreer" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Meld by die webwerf aan" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Teken in" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Help my!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Help" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Soek na mense of teks" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Soek" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 +#, fuzzy msgid "Site notice" -msgstr "" +msgstr "Verwyder kennisgewing" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 +#, fuzzy msgid "Local views" -msgstr "" +msgstr "Lokaal" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 +#, fuzzy msgid "Page notice" -msgstr "" +msgstr "Populêre kennisgewings" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Help" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Aangaande" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Gewilde vrae" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Gebruiksvoorwaardes" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privaatheid" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Bron" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontak" -#: lib/action.php:784 +#: lib/action.php:794 +#, fuzzy msgid "Badge" -msgstr "" +msgstr "Aanpor" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4928,13 +5221,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: 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:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4943,49 +5236,50 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: lib/action.php:1192 +#, fuzzy msgid "Pagination" -msgstr "" +msgstr "Registratie" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Na" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Voor" @@ -5008,13 +5302,15 @@ msgstr "" #. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights. #: lib/adminpanelaction.php:98 +#, fuzzy msgid "You cannot make changes to this site." -msgstr "" +msgstr "Jy kan nie gebruikers op hierdie webwerf stilmaak nie." #. TRANS: Client error message throw when a certain panel's settings cannot be changed. #: lib/adminpanelaction.php:110 +#, fuzzy msgid "Changes to that panel are not allowed." -msgstr "" +msgstr "Registrasie nie toegelaat nie." #. TRANS: Client error message. #: lib/adminpanelaction.php:229 @@ -5029,80 +5325,91 @@ msgstr "" #. TRANS: Client error message thrown if design settings could not be deleted in #. TRANS: the admin panel Design. #: lib/adminpanelaction.php:284 +#, fuzzy msgid "Unable to delete design setting." -msgstr "" +msgstr "Dit was nie moontlik om u ontwerp-instellings te stoor nie." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 +#, fuzzy msgid "Basic site configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Webtuiste" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 +#, fuzzy msgid "Design configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Ontwerp" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 +#, fuzzy msgid "User configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Gebruiker" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 +#, fuzzy msgid "Access configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 +#, fuzzy msgid "Paths configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 +#, fuzzy msgid "Sessions configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 +#, fuzzy msgid "Edit site notice" -msgstr "" +msgstr "Verwyder kennisgewing" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 +#, fuzzy msgid "Snapshots configuration" -msgstr "" +msgstr "SMS-bevestiging" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: 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 +#, fuzzy msgid "Edit application" -msgstr "" +msgstr "Wysig applikasie" #. TRANS: Form guide. #: lib/applicationeditform.php:187 +#, fuzzy msgid "Icon for this application" -msgstr "" +msgstr "Moenie die applikasie verwyder nie" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 @@ -5112,23 +5419,27 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 +#, fuzzy msgid "Describe your application" -msgstr "" +msgstr "Skrap applikasie" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 +#, fuzzy msgid "URL of the homepage of this application" -msgstr "" +msgstr "U is nie die eienaar van hierdie applikasie nie." #. TRANS: Form input field label. #: lib/applicationeditform.php:226 +#, fuzzy msgid "Source URL" -msgstr "" +msgstr "Bron" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 +#, fuzzy msgid "Organization responsible for this application" -msgstr "" +msgstr "U is nie die eienaar van hierdie applikasie nie." #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 @@ -5198,7 +5509,7 @@ msgstr "" #, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Herroep" +msgstr "Verwyder" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5216,18 +5527,19 @@ msgid "Provider" msgstr "Verskaffer" #: lib/attachmentnoticesection.php:67 +#, fuzzy msgid "Notices where this attachment appears" -msgstr "" +msgstr "Etikette vir hierdie aanhangsel" #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" msgstr "Etikette vir hierdie aanhangsel" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Wagwoord wysiging het misluk" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Wagwoord verandering word nie toegelaat nie" @@ -5240,16 +5552,18 @@ msgid "Command complete" msgstr "Opdrag voltooi" #: lib/channel.php:240 +#, fuzzy msgid "Command failed" -msgstr "" +msgstr "Opdrag voltooi" #: 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 +#, fuzzy msgid "User has no last notice" -msgstr "" +msgstr "Hierdie gebruiker het nie 'n profiel nie." #. 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. @@ -5276,9 +5590,9 @@ 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 +#, fuzzy, php-format msgid "Nudge sent to %s" -msgstr "" +msgstr "Die por is gestuur" #: lib/command.php:260 #, php-format @@ -5293,22 +5607,23 @@ msgid "Notice marked as fave." msgstr "" #: lib/command.php:323 +#, fuzzy msgid "You are already a member of that group" -msgstr "" +msgstr "U is reeds 'n lid van die groep." #. 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 -#, fuzzy, php-format +#, php-format msgid "Could not join user %1$s to group %2$s" -msgstr "U kan nie die gebruiker volg nie: die gebruiker bestaan nie." +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 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %1$s from group %2$s" -msgstr "Kon nie die groep skep nie." +msgstr "" #. TRANS: Whois output. %s is the full name of the queried user. #: lib/command.php:418 @@ -5318,14 +5633,14 @@ msgstr "Volle naam: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Ligging: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Tuisblad: %s" @@ -5355,46 +5670,52 @@ 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 +#, fuzzy, php-format msgid "Direct message to %s sent" -msgstr "" +msgstr "Direkte boodskappe aan %s" #: lib/command.php:494 msgid "Error sending direct message." msgstr "" #: lib/command.php:514 +#, fuzzy msgid "Cannot repeat your own notice" -msgstr "" +msgstr "U kan nie u eie kennisgewings herhaal nie." #: lib/command.php:519 +#, fuzzy msgid "Already repeated that notice" -msgstr "" +msgstr "U het reeds die kennisgewing herhaal." #. 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 +#, fuzzy, php-format msgid "Notice from %s repeated" -msgstr "" +msgstr "Hierdie kennisgewing is verwyder." #: lib/command.php:531 +#, fuzzy msgid "Error repeating notice." -msgstr "" +msgstr "U kan nie u eie kennisgewings herhaal nie." #: lib/command.php:562 -#, php-format +#, fuzzy, php-format msgid "Notice too long - maximum is %d characters, you sent %d" msgstr "" +"Boodskap is te lank. Die maksimum is %1$d karakters. U het %2$d karakters " +"gestuur." #: lib/command.php:571 -#, php-format +#, fuzzy, php-format msgid "Reply to %s sent" -msgstr "" +msgstr "Na %s herhaal" #: lib/command.php:573 +#, fuzzy msgid "Error saving notice." -msgstr "" +msgstr "Fout tydens stoor van gebruiker; ongeldig." #: lib/command.php:620 msgid "Specify the name of the user to subscribe to" @@ -5419,24 +5740,28 @@ msgid "Unsubscribed from %s" msgstr "" #: lib/command.php:682 lib/command.php:705 +#, fuzzy msgid "Command not yet implemented." -msgstr "" +msgstr "Opdrag voltooi" #: lib/command.php:685 +#, fuzzy msgid "Notification off." -msgstr "" +msgstr "Geen bevestigingskode." #: lib/command.php:687 msgid "Can't turn off notification." msgstr "" #: lib/command.php:708 +#, fuzzy msgid "Notification on." -msgstr "" +msgstr "Geen bevestigingskode." #: lib/command.php:710 +#, fuzzy msgid "Can't turn on notification." -msgstr "" +msgstr "U kan nie u eie kennisgewings herhaal nie." #: lib/command.php:723 msgid "Login command is disabled" @@ -5453,8 +5778,9 @@ msgid "Unsubscribed %s" msgstr "" #: lib/command.php:778 +#, fuzzy msgid "You are not subscribed to anyone." -msgstr "" +msgstr "U volg hierdie gebruiker:" #: lib/command.php:780 msgid "You are subscribed to this person:" @@ -5463,8 +5789,9 @@ msgstr[0] "U volg hierdie gebruiker:" msgstr[1] "U volg hierdie gebruikers:" #: lib/command.php:800 +#, fuzzy msgid "No one is subscribed to you." -msgstr "" +msgstr "Hierdie gebruiker volg u:" #: lib/command.php:802 msgid "This person is subscribed to you:" @@ -5525,8 +5852,9 @@ msgid "" msgstr "" #: lib/common.php:135 +#, fuzzy msgid "No configuration file found. " -msgstr "" +msgstr "Geen bevestigingskode." #: lib/common.php:136 msgid "I looked for configuration files in the following places: " @@ -5553,20 +5881,23 @@ msgid "Updates by SMS" msgstr "" #: lib/connectsettingsaction.php:120 +#, fuzzy msgid "Connections" -msgstr "" +msgstr "Konnekteer" #: lib/connectsettingsaction.php:121 +#, fuzzy msgid "Authorized connected applications" -msgstr "" +msgstr "Skrap applikasie" #: lib/dberroraction.php:60 msgid "Database error" msgstr "Databasisfout" #: lib/designsettings.php:105 +#, fuzzy msgid "Upload file" -msgstr "" +msgstr "Oplaai" #: lib/designsettings.php:109 msgid "" @@ -5578,16 +5909,19 @@ msgid "Design defaults restored." msgstr "" #: lib/disfavorform.php:114 lib/disfavorform.php:140 +#, fuzzy msgid "Disfavor this notice" -msgstr "" +msgstr "Verwyder hierdie kennisgewing" #: lib/favorform.php:114 lib/favorform.php:140 +#, fuzzy msgid "Favor this notice" -msgstr "" +msgstr "Verwyder hierdie kennisgewing" #: lib/favorform.php:140 +#, fuzzy msgid "Favor" -msgstr "" +msgstr "Gunstelinge" #: lib/feed.php:85 msgid "RSS 1.0" @@ -5675,9 +6009,9 @@ msgid "%s blocked users" msgstr "%s geblokkeerde gebruikers" #: lib/groupnav.php:108 -#, php-format +#, fuzzy, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Groep %s wysig" #: lib/groupnav.php:113 msgid "Logo" @@ -5694,8 +6028,9 @@ msgid "Add or edit %s design" msgstr "" #: lib/groupsbymemberssection.php:71 +#, fuzzy msgid "Groups with most members" -msgstr "" +msgstr "Groepe waarvan %s lid is" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" @@ -5712,17 +6047,19 @@ msgid "This page is not available in a media type you accept" msgstr "" #: lib/imagefile.php:72 +#, fuzzy msgid "Unsupported image file format." -msgstr "" +msgstr "Nie-ondersteunde formaat." #: lib/imagefile.php:88 -#, php-format +#, fuzzy, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" +msgstr "Die kennisgewing is te lank. Gebruik maksimum %d karakters." #: lib/imagefile.php:93 +#, fuzzy msgid "Partial upload." -msgstr "" +msgstr "Geen lêer opgelaai nie." #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." @@ -5733,8 +6070,9 @@ msgid "Not an image or corrupt file." msgstr "" #: lib/imagefile.php:122 +#, fuzzy msgid "Lost our file." -msgstr "" +msgstr "Die lêer bestaan nie." #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" @@ -5754,9 +6092,9 @@ msgid "[%s]" msgstr "[%s]" #: lib/jabber.php:567 -#, php-format +#, fuzzy, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "Onbekende taal \"%s\"." #: lib/joinform.php:114 msgid "Join" @@ -5767,8 +6105,9 @@ msgid "Leave" msgstr "Verlaat" #: lib/logingroupnav.php:80 +#, fuzzy msgid "Login with a username and password" -msgstr "" +msgstr "Ongeldige gebruikersnaam of wagwoord." #: lib/logingroupnav.php:86 msgid "Sign up for a new account" @@ -5776,8 +6115,9 @@ msgstr "" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 +#, fuzzy msgid "Email address confirmation" -msgstr "" +msgstr "E-posadres" #. TRANS: Body for address confirmation email. #: lib/mail.php:177 @@ -5799,12 +6139,19 @@ msgstr "" #. TRANS: Subject of new-subscriber notification e-mail #: lib/mail.php:243 -#, php-format +#, fuzzy, php-format msgid "%1$s is now listening to your notices on %2$s." +msgstr "%s volg niemand nie." + +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5820,19 +6167,19 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Beskrywing: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -5846,30 +6193,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS-bevestiging" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -5886,13 +6233,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nuwe privaat boodskap vanaf %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -5912,13 +6259,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 -#, php-format +#: lib/mail.php:589 +#, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "" +msgstr "Hierdie kennisgewing is nie 'n gunsteling nie!" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -5940,7 +6287,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -5948,13 +6295,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -5991,7 +6338,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:228 lib/noticelist.php:506 msgid "from" msgstr "van" @@ -6012,9 +6359,9 @@ msgid "Sorry, no incoming email allowed." msgstr "Jammer, inkomende e-pos word nie toegelaat nie." #: lib/mailhandler.php:228 -#, php-format +#, fuzzy, php-format msgid "Unsupported message type: %s" -msgstr "" +msgstr "Nie-ondersteunde formaat." #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." @@ -6046,31 +6393,34 @@ 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 "" +"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie." -#: 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 "" #: lib/messageform.php:120 +#, fuzzy msgid "Send a direct notice" -msgstr "" +msgstr "Stuur 'n direkte boodskap aan hierdie gebruiker" #: lib/messageform.php:146 msgid "To" @@ -6086,8 +6436,9 @@ msgid "Send" msgstr "Stuur" #: lib/noticeform.php:160 +#, fuzzy msgid "Send a notice" -msgstr "" +msgstr "Verwyder kennisgewing" #: lib/noticeform.php:173 #, php-format @@ -6107,8 +6458,9 @@ msgid "Share my location" msgstr "" #: lib/noticeform.php:215 +#, fuzzy msgid "Do not share my location" -msgstr "" +msgstr "Moenie die applikasie verwyder nie" #: lib/noticeform.php:216 msgid "" @@ -6117,73 +6469,78 @@ 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:568 msgid "in context" msgstr "in konteks" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Herhaal deur" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 +#, fuzzy msgid "Reply to this notice" -msgstr "" +msgstr "Verwyder hierdie kennisgewing" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Antwoord" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 +#, fuzzy msgid "Notice repeated" -msgstr "" +msgstr "Hierdie kennisgewing is verwyder." #: lib/nudgeform.php:116 +#, fuzzy msgid "Nudge this user" -msgstr "" +msgstr "Verwyder die gebruiker" #: lib/nudgeform.php:128 msgid "Nudge" msgstr "Aanpor" #: lib/nudgeform.php:128 +#, fuzzy msgid "Send a nudge to this user" -msgstr "" +msgstr "Stuur 'n direkte boodskap aan hierdie gebruiker" #: lib/oauthstore.php:283 msgid "Error inserting new profile" msgstr "" #: lib/oauthstore.php:291 +#, fuzzy msgid "Error inserting avatar" -msgstr "" +msgstr "Fout tydens stoor van gebruiker; ongeldig." #: lib/oauthstore.php:306 msgid "Error updating remote profile" @@ -6194,12 +6551,14 @@ msgid "Error inserting remote profile" msgstr "" #: lib/oauthstore.php:345 +#, fuzzy msgid "Duplicate notice" -msgstr "" +msgstr "Verwyder kennisgewing" #: lib/oauthstore.php:490 +#, fuzzy msgid "Couldn't insert new subscription." -msgstr "" +msgstr "Kon nie e-posbevestiging verwyder nie." #: lib/personalgroupnav.php:99 msgid "Personal" @@ -6226,8 +6585,9 @@ msgid "Outbox" msgstr "" #: lib/personalgroupnav.php:131 +#, fuzzy msgid "Your sent messages" -msgstr "" +msgstr "U inkomende boodskappe" #: lib/personaltagcloudsection.php:56 #, php-format @@ -6239,20 +6599,23 @@ msgid "Unknown" msgstr "Onbekend" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 +#, fuzzy msgid "Subscriptions" -msgstr "" +msgstr "Beskrywing" #: lib/profileaction.php:126 +#, fuzzy msgid "All subscriptions" -msgstr "" +msgstr "Beskrywing" #: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90 msgid "Subscribers" msgstr "" #: lib/profileaction.php:161 +#, fuzzy msgid "All subscribers" -msgstr "" +msgstr "Alle lede" #: lib/profileaction.php:191 msgid "User ID" @@ -6271,7 +6634,7 @@ msgstr "Daaglikse gemiddelde" msgid "All groups" msgstr "Alle groepe" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6295,28 +6658,31 @@ msgstr "Uitgelig" msgid "Popular" msgstr "Gewild" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 +#, fuzzy msgid "No return-to arguments." -msgstr "" +msgstr "Geen ID-argument." #: lib/repeatform.php:107 +#, fuzzy msgid "Repeat this notice?" -msgstr "" +msgstr "Verwyder hierdie kennisgewing" #: lib/repeatform.php:132 msgid "Yes" msgstr "Ja" #: lib/repeatform.php:132 +#, fuzzy msgid "Repeat this notice" -msgstr "" +msgstr "Verwyder hierdie kennisgewing" #: lib/revokeroleform.php:91 -#, php-format +#, fuzzy, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "" +msgstr "Blok hierdie gebruiker van hierdie groep" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6325,12 +6691,14 @@ msgid "Sandbox" msgstr "" #: lib/sandboxform.php:78 +#, fuzzy msgid "Sandbox this user" -msgstr "" +msgstr "Deblokkeer hierdie gebruiker" #: lib/searchaction.php:120 +#, fuzzy msgid "Search site" -msgstr "" +msgstr "Soek" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6341,8 +6709,9 @@ msgid "Search" msgstr "Soek" #: lib/searchaction.php:162 +#, fuzzy msgid "Search help" -msgstr "" +msgstr "Soek" #: lib/searchgroupnav.php:80 msgid "People" @@ -6357,8 +6726,9 @@ msgid "Find content of notices" msgstr "" #: lib/searchgroupnav.php:85 +#, fuzzy msgid "Find groups on this site" -msgstr "" +msgstr "groepe op %s" #: lib/section.php:89 msgid "Untitled section" @@ -6377,14 +6747,14 @@ msgid "Silence this user" msgstr "Maak die gebruikers stil" #: lib/subgroupnav.php:83 -#, php-format +#, fuzzy, php-format msgid "People %s subscribes to" -msgstr "" +msgstr "Hierdie gebruiker volg u:" #: lib/subgroupnav.php:91 -#, php-format +#, fuzzy, php-format msgid "People subscribed to %s" -msgstr "" +msgstr "U volg hierdie gebruiker:" #: lib/subgroupnav.php:99 #, php-format @@ -6414,6 +6784,49 @@ msgstr "" msgid "None" msgstr "Geen" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Die opdatering van die avatar het gefaal." + +#: 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 "Mees aktiewe gebruikers" @@ -6423,29 +6836,33 @@ msgid "Unsandbox" msgstr "" #: lib/unsandboxform.php:80 +#, fuzzy msgid "Unsandbox this user" -msgstr "" +msgstr "Deblokkeer hierdie gebruiker" #: lib/unsilenceform.php:67 +#, fuzzy msgid "Unsilence" -msgstr "" +msgstr "Maak stil" #: lib/unsilenceform.php:78 +#, fuzzy msgid "Unsilence this user" -msgstr "" +msgstr "Maak die gebruikers stil" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 +#, fuzzy msgid "Unsubscribe from this user" -msgstr "" +msgstr "Deblokkeer hierdie gebruiker" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" msgstr "" #: lib/usernoprofileexception.php:58 -#, php-format +#, fuzzy, php-format msgid "User %s (%d) has no profile record." -msgstr "" +msgstr "Hierdie gebruiker het nie 'n profiel nie." #: lib/userprofile.php:117 msgid "Edit Avatar" @@ -6494,56 +6911,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "'n paar sekondes gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "ongeveer 'n minuut gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "ongeveer %d minute gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "ongeveer 'n uur gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "ongeveer %d uur gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "ongeveer een dag gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "ongeveer %d dae gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "ongeveer een maand gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "ongeveer %d maande gelede" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "ongeveer een jaar gelede" diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po index 24253a970..e0d4701a3 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:19+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:01+0000\n" "Language-Team: Arabic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Ù†Ùاذ" @@ -85,24 +86,24 @@ msgid "Save" msgstr "اØÙظ" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "لا صÙØØ© كهذه." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -115,7 +116,7 @@ msgid "No such user." msgstr "لا مستخدم كهذا." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s والأصدقاء, الصÙØØ© %2$d" @@ -123,39 +124,39 @@ msgstr "%1$s والأصدقاء, الصÙØØ© %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 والأصدقاء" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -163,79 +164,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 his or her attention." +"post a notice to them." msgstr "" +"%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل Øسابًا](%%%%action." +"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "لم يتم العثور على وسيلة API." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "تتطلب هذه الطريقة POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "تعذّر تØديث المستخدم." @@ -255,7 +258,7 @@ msgstr "لم يمكن ØÙظ الملÙ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -329,30 +332,31 @@ msgstr "لم ÙŠÙعثر على المستخدم المستلم." msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "هذه الØالة Ù…Ùضلة بالÙعل." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "تعذّر إنشاء Ù…Ùضلة." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "تلك الØالة ليست Ù…Ùضلة." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -379,123 +383,128 @@ msgstr "تعذّر تØديد المستخدم المصدر." msgid "Could not find target user." msgstr "تعذّر إيجاد المستخدم الهدÙ." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "الاسم المستعار مستخدم بالÙعل. جرّب اسمًا آخرًا." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "ليس اسمًا مستعارًا صØÙŠØًا." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "الصÙØØ© الرئيسية ليست عنونًا صالØًا." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "الاسم الكامل طويل جدا (الأقصى 255 ØرÙًا)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "كنيات كيرة! العدد الأقصى هو %d." -#: actions/apigroupcreate.php:266 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "كنية غير صالØØ©: \"%s\"" +msgstr "كنية غير صالØØ©: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "المجموعة غير موجودة." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "لم يمكن ضم المستخدم %1$s إلى المجموعة %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "لست عضوًا ÙÙŠ هذه المجموعة" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "لم يمكن إزالة المستخدم %1$s من المجموعة %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, 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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "مجموعات %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -507,15 +516,15 @@ msgstr "Øجم غير صالØ." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -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 @@ -578,12 +586,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "الØساب" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -591,8 +599,8 @@ msgid "Nickname" msgstr "الاسم المستعار" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "كلمة السر" @@ -608,11 +616,11 @@ msgstr "اسمØ" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -629,59 +637,63 @@ msgstr "لا يمكنك تكرار ملØوظتك الخاصة." msgid "Already repeated that notice." msgstr "كرر بالÙعل هذه الملاØظة." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "ØÙØ°ÙÙت الØالة." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "لا Øالة ÙˆÙجدت بهذه الهوية." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "لم يوجد." -#: actions/apistatusesupdate.php:304 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 "نسق غير مدعوم." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "مسار %s الزمني العام" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -696,16 +708,20 @@ msgstr "كرر إلى %s" msgid "Repeats of %s" msgstr "تكرارات %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "الإشعارات الموسومة ب%s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "اØØ°Ù" @@ -798,11 +814,11 @@ msgstr "ØÙذ٠الأÙتار." msgid "You already blocked that user." msgstr "لقد منعت مسبقا هذا المستخدم." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "امنع المستخدم" -#: actions/block.php:130 +#: 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 " @@ -814,7 +830,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -823,7 +839,7 @@ msgstr "لا" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "لا تمنع هذا المستخدم" @@ -832,7 +848,7 @@ msgstr "لا تمنع هذا المستخدم" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -840,11 +856,11 @@ msgid "Yes" msgstr "نعم" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "امنع هذا المستخدم" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Ùشل ØÙظ معلومات المنع." @@ -971,7 +987,7 @@ msgstr "أنت لست مالك هذا التطبيق." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1002,7 +1018,7 @@ msgstr "اØذ٠هذا التطبيق" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "اØذ٠هذا الإشعار" @@ -1069,45 +1085,53 @@ msgstr "التصميم" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "مسار شعار غير صالØ." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "السمة غير متوÙرة: %s" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "غيّر الشعار" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "شعار الموقع" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "غيّر السمة" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "سمة الموقع" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "سمة الموقع." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "سمة مخصصة" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "تغيير صورة الخلÙية" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "الخلÙية" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1115,57 +1139,65 @@ msgid "" msgstr "بإمكانك رÙع صورة خلÙية للموقع. أقصى Øجم للمل٠هو %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "مكّن" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "عطّل" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "مكّن صورة الخلÙية أو عطّلها." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "تغيير الألوان" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "المØتوى" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "الشريط الجانبي" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "النص" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "وصلات" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "متقدم" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS مخصصة" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "استخدم المبدئيات" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "استعد التصميمات المبدئية" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "ارجع إلى المبدئي" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1175,7 +1207,7 @@ msgstr "ارجع إلى المبدئي" msgid "Save" msgstr "أرسل" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "اØÙظ التصميم" @@ -1289,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 "تعذّر إنشاء الكنى." @@ -1443,7 +1476,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "ليس عنوان بريد صالØ." @@ -1633,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." @@ -1660,19 +1692,18 @@ 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 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "لا مل٠شخصي Ù…ÙØدّد." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "لا مل٠شخصي بهذه الهوية." @@ -1806,7 +1837,7 @@ msgstr "اجعل هذا المستخدم إداريًا" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "مسار %s الزمني" @@ -2185,51 +2216,51 @@ msgstr "لست عضوا ÙÙŠ تلك المجموعة." msgid "%1$s left group %2$s" msgstr "%1$s ترك المجموعة %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "والج بالÙعل." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "اسم المستخدم أو كلمة السر غير صØÙŠØان." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "خطأ أثناء ضبط المستخدم. لست Ù…ÙصرØًا على الأرجØ." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Ù„Ùج" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Ù„Ùج إلى الموقع" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "تذكّرني" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Ù„Ùج تلقائيًا ÙÙŠ المستقبل؛ هذا الخيار ليس Ù…Ùعدًا للØواسيب المشتركة!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "أنسيت كلمة السر؟" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" "لأسباب أمنية، من Ùضلك أعد إدخال اسم مستخدمك وكلمة سرك قبل تغيير إعداداتك." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Ù„Ùج باسم مستخدم وكلمة سر" -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2373,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 @@ -2426,31 +2457,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "ليس للمستخدم مل٠شخصي." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Øالة %1$s ÙÙŠ يوم %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "نوع المØتوى " #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "ليس نسق بيانات مدعوم." @@ -2553,7 +2584,7 @@ msgid "6 or more characters" msgstr "6 Ø£Øر٠أو أكثر" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "أكّد" @@ -2565,11 +2596,11 @@ msgstr "Ù†Ùس كلمة السر أعلاه" msgid "Change" msgstr "غيّر" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "يجب أن تكون كلمة السر 6 Øرو٠أو أكثر." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "كلمتا السر غير متطابقتين." @@ -2590,7 +2621,7 @@ msgid "Password saved." msgstr "ØÙÙظت كلمة السر." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "المسارات" @@ -2791,43 +2822,43 @@ msgstr "معلومات المل٠الشخصي" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 ØرÙًا إنجليزيًا أو رقمًا بدون نقاط أو مساÙات" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "تكلم عن Ù†Ùسك واهتمامتك ÙÙŠ %d ØرÙ" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "صÙÙ Ù†Ùسك واهتماماتك" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "السيرة" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "مكان تواجدك، على سبيل المثال \"المدينة، الولاية (أو المنطقة)ØŒ الدولة\"" @@ -2868,7 +2899,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "اشترك تلقائيًا بأي شخص يشترك بي (ÙŠÙضل أن يستخدم لغير البشر)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "" @@ -3118,7 +3149,7 @@ msgstr "يجب أن تكون كلمة السر 6 Ù…Øار٠أو أكثر." msgid "Password and confirmation do not match." msgstr "" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "خطأ أثناء ضبط المستخدم." @@ -3126,100 +3157,100 @@ msgstr "خطأ أثناء ضبط المستخدم." msgid "New password successfully saved. You are now logged in." msgstr "" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "عذرًا، الأشخاص المدعوون ÙˆØدهم يستطيعون التسجيل." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "عذرا، رمز دعوة غير صالØ." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Ù†Ø¬Ø Ø§Ù„ØªØ³Ø¬ÙŠÙ„" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "سجّل" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "لا ÙŠÙØ³Ù…Ø Ø¨Ø§Ù„ØªØ³Ø¬ÙŠÙ„." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "عنوان البريد الإلكتروني موجود مسبقًا." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "اسم مستخدم أو كلمة سر غير صالØØ©." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 Øرو٠أو أكثر. مطلوب." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Ù†Ùس كلمة السر أعلاه. مطلوب." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "البريد الإلكتروني" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: 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:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3238,7 +3269,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3291,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." @@ -3313,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 "مكرر" @@ -3351,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 @@ -3364,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 @@ -3374,16 +3405,14 @@ 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:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "ستاتس نت" @@ -3397,7 +3426,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "الجلسات" @@ -3440,7 +3469,7 @@ msgid "Icon" msgstr "أيقونة" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "الاسم" @@ -3451,12 +3480,12 @@ msgid "Organization" msgstr "المنظمة" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Ø¥Øصاءات" @@ -3539,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%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" @@ -3569,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" @@ -3613,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 "الأعضاء" @@ -3627,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." @@ -3646,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." @@ -3658,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 "الإداريون" @@ -3733,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 @@ -4049,7 +4078,7 @@ msgstr "لم تدخل رمزًا" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4111,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 "تعذّر ØÙظ الاشتراك." @@ -4275,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 "لم تمنع هذا المستخدم." @@ -4386,7 +4412,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "الرخصة" @@ -4507,18 +4533,18 @@ msgstr "جرّب [البØØ« عن مجموعات](%%action.groupsearch%%) وال #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "ستاتس نت %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4527,11 +4553,11 @@ msgstr "" "هذا الموقع يشغله %1$s النسخة %2$sØŒ Øقوق النشر 2008-2010 StatusNet, Inc " "ومساهموها." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "المساهمون" -#: actions/version.php:168 +#: 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 " @@ -4539,7 +4565,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4547,169 +4573,267 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "الملØقات" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "النسخة" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "المؤلÙ(ون)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "تعذّر ØÙظ الاشتراك." @@ -4761,189 +4885,188 @@ msgid "Untitled page" msgstr "صÙØØ© غير Ù…Ùعنونة" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "الصÙØØ© الشخصية" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "غير بريدك الإلكتروني وكلمة سرّك وأÙتارك وملÙÙƒ الشخصي" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:452 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "اتصل" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "إداري" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "ادع٠أصدقائك وزملائك للانضمام إليك ÙÙŠ %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "ادعÙ" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "اخرج" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "سجّل" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ù„Ùج إلى الموقع" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Ù„Ùج" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "ساعدني!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "مساعدة" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ابØØ« عن أشخاص أو نصوص" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "المشاهدات المØلية" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "إشعار الصÙØØ©" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "مساعدة" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "عن" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "الأسئلة المكررة" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "الشروط" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "خصوصية" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "المصدر" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "اتصل" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "الجسر" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "رخصة برنامج StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4953,13 +5076,13 @@ msgstr "" "broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: 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:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4971,49 +5094,49 @@ msgstr "" "agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "قبل" @@ -5061,65 +5184,65 @@ msgid "Unable to delete design setting." msgstr "تعذّر Øذ٠إعدادات التصميم." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "ضبط الموقع الأساسي" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "الموقع" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "ضبط التصميم" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "التصميم" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "ضبط المستخدم" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "المستخدم" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "ضبط الØساب" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "ضبط المسارات" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "ضبط الجلسات" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "عدّل إشعار الموقع" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "ضبط المسارات" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5250,11 +5373,11 @@ msgstr "" msgid "Tags for this attachment" msgstr "وسوم هذا المرÙÙ‚" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "تغيير كلمة السر Ùشل" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "تغيير كلمة السر غير Ù…Ø³Ù…ÙˆØ Ø¨Ù‡" @@ -5348,14 +5471,14 @@ msgstr "الاسم الكامل: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "الموقع: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "الصÙØØ© الرئيسية: %s" @@ -5893,8 +6016,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s يستمع الآن إلى إشعاراتك على %2$s." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5920,19 +6050,19 @@ msgstr "" "غيّر خيارات البريد الإلكتروني والإشعار ÙÙŠ %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "السيرة: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "عنوان بريد إلكتروني جديد للإرسال إلى %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -5946,30 +6076,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Øالة %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "تأكيد الرسالة القصيرة" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "لقد نبهك %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -5986,13 +6116,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "رسالة خاصة جديدة من %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6012,13 +6142,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "لقد أضا٠%s (@%s) إشعارك إلى Ù…Ùضلاته" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6040,7 +6170,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6048,13 +6178,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "لقد أرسل %s (@%s) إشعارًا إليك" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6091,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 "من" @@ -6144,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 "" @@ -6217,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 "الإشعار مكرر" @@ -6371,7 +6501,7 @@ msgstr "المÙعدّل اليومي" msgid "All groups" msgstr "كل المجموعات" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6395,7 +6525,7 @@ msgstr "Ù…Ùختارون" msgid "Popular" msgstr "Ù…Øبوبة" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "لا مدخلات رجوع إلى." @@ -6416,7 +6546,7 @@ msgstr "كرّر هذا الإشعار" msgid "Revoke the \"%s\" role from this user" msgstr "امنع هذا المستخدم من هذه المجموعة" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6514,6 +6644,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "خطأ أثناء تØديث المل٠الشخصي البعيد" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "أعلى المرسلين" @@ -6580,9 +6754,8 @@ msgid "Moderate" msgstr "راقب" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "مل٠المستخدم الشخصي" +msgstr "دور المستخدم" #: lib/userprofile.php:366 msgctxt "role" @@ -6595,56 +6768,56 @@ msgid "Moderator" msgstr "مراقب" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: 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:1093 +#: 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:1097 +#: 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:1100 +#: 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:1104 +#: 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:1107 +#: 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:1111 +#: 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:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "قبل سنة تقريبًا" diff --git a/locale/arz/LC_MESSAGES/statusnet.po b/locale/arz/LC_MESSAGES/statusnet.po index 12f575846..0b06f2817 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:22+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:02+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -24,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Ù†Ùاذ" @@ -91,25 +91,25 @@ msgid "Save" msgstr "أرسل" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "لا صÙØÙ‡ كهذه" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -122,7 +122,7 @@ msgid "No such user." msgstr "لا مستخدم كهذا." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s Ùˆ الصØاب, صÙØÙ‡ %2$d" @@ -130,39 +130,39 @@ msgstr "%1$s Ùˆ الصØاب, صÙØÙ‡ %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 والأصدقاء" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -170,79 +170,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 his or her attention." +"post a notice to them." msgstr "" +"%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل Øسابًا](%%%%action." +"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "الـ API method مش موجوده." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "تتطلب هذه الطريقه POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "تعذّر تØديث المستخدم." @@ -262,7 +264,7 @@ msgstr "لم يمكن ØÙظ الملÙ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -336,30 +338,31 @@ msgstr "لم ÙŠÙعثر على المستخدم المستلم." msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "الØاله دى موجوده Ùعلا ÙÙ‰ التÙضيلات." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "تعذّر إنشاء Ù…Ùضله." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "الØاله دى مش Ù…Øطوطه ÙÙ‰ التÙضيلات." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -386,124 +389,129 @@ msgstr "" msgid "Could not find target user." msgstr "تعذّر إيجاد المستخدم الهدÙ." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "" -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "ليس اسمًا مستعارًا صØÙŠØًا." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "الصÙØÙ‡ الرئيسيه ليست عنونًا صالØًا." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "الاسم الكامل طويل جدا (الأقصى 255 ØرÙًا)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "كنيه غير صالØØ©: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "لم توجد المجموعة!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "ما Ù†Ùعش يضم %1$s للجروپ %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "ما Ù†Ùعش يتشال اليوزر %1$s من الجروپ %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "المجموعات التى %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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "مجموعات %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -515,15 +523,15 @@ msgstr "Øجم غير صالØ." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -586,12 +594,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "الØساب" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -599,8 +607,8 @@ msgid "Nickname" msgstr "الاسم المستعار" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "كلمه السر" @@ -616,11 +624,11 @@ msgstr "اسمØ" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -637,59 +645,63 @@ msgstr "مش ناÙعه تتكرر الملاØظتك بتاعتك." msgid "Already repeated that notice." msgstr "الملاØظه اتكررت Ùعلا." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "ØÙØ°ÙÙت الØاله." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "لم يوجد." -#: actions/apistatusesupdate.php:304 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 "نسق غير مدعوم." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "مسار %s الزمنى العام" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -704,16 +716,20 @@ msgstr "كرر إلى %s" msgid "Repeats of %s" msgstr "تكرارات %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "الإشعارات الموسومه ب%s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "اØØ°Ù" @@ -807,11 +823,11 @@ msgstr "ØÙذ٠الأÙتار." msgid "You already blocked that user." msgstr "لقد منعت مسبقا هذا المستخدم." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "امنع المستخدم" -#: actions/block.php:130 +#: 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 " @@ -823,7 +839,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -833,7 +849,7 @@ msgstr "لا" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "لا تمنع هذا المستخدم" @@ -842,7 +858,7 @@ msgstr "لا تمنع هذا المستخدم" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -851,11 +867,11 @@ msgid "Yes" msgstr "نعم" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "امنع هذا المستخدم" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Ùشل ØÙظ معلومات المنع." @@ -984,7 +1000,7 @@ msgstr "انت مش بتملك الapplication دى." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1018,7 +1034,7 @@ msgstr "اØذ٠هذا الإشعار" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "اØذ٠هذا الإشعار" @@ -1085,45 +1101,54 @@ msgstr "التصميم" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "مسار شعار غير صالØ." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "السمه غير متوÙرة: %s" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "غيّر الشعار" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "شعار الموقع" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "غيّر السمة" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "سمه الموقع" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "سمه الموقع." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "سمه الموقع" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "تغيير صوره الخلÙية" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "الخلÙية" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1131,57 +1156,65 @@ msgid "" msgstr "" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "مكّن" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "عطّل" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "مكّن صوره الخلÙيه أو عطّلها." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "تغيير الألوان" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "المØتوى" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "الشريط الجانبي" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "النص" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "وصلات" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "استخدم المبدئيات" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "استعد التصميمات المبدئية" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "ارجع إلى المبدئي" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1191,7 +1224,7 @@ msgstr "ارجع إلى المبدئي" msgid "Save" msgstr "أرسل" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "اØÙظ التصميم" @@ -1306,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 "تعذّر إنشاء الكنى." @@ -1466,7 +1500,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "ليس عنوان بريد صالØ." @@ -1692,13 +1726,13 @@ msgstr "المستخدم مسكت من قبل." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "لا مل٠شخصى Ù…ÙØدّد." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "لا مل٠شخصى بهذه الهويه." @@ -1832,7 +1866,7 @@ msgstr "اجعل هذا المستخدم إداريًا" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "مسار %s الزمني" @@ -2210,50 +2244,50 @@ msgstr "لست عضوا ÙÙ‰ تلك المجموعه." msgid "%1$s left group %2$s" msgstr "%1$s ساب جروپ %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "والج بالÙعل." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "اسم المستخدم أو كلمه السر غير صØÙŠØان." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "خطأ أثناء ضبط المستخدم. لست Ù…ÙصرØًا على الأرجØ." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Ù„Ùج" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Ù„Ùج إلى الموقع" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "تذكّرني" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "أنسيت كلمه السر؟" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "اسم المستخدم أو كلمه السر غير صØÙŠØان." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2397,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 @@ -2450,31 +2484,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "ليس للمستخدم مل٠شخصى." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: 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:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "نوع المØتوى " #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 " مش نظام بيانات مدعوم." @@ -2577,7 +2611,7 @@ msgid "6 or more characters" msgstr "" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "أكّد" @@ -2589,11 +2623,11 @@ msgstr "Ù†Ùس كلمه السر أعلاه" msgid "Change" msgstr "غيّر" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "يجب أن تكون كلمه السر 6 Øرو٠أو أكثر." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "كلمتا السر غير متطابقتين." @@ -2614,7 +2648,7 @@ msgid "Password saved." msgstr "ØÙÙظت كلمه السر." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "المسارات" @@ -2814,43 +2848,43 @@ msgstr "معلومات المل٠الشخصي" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: 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:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "صÙÙ Ù†Ùسك واهتماماتك" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "السيرة" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "" @@ -2890,7 +2924,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "" @@ -3140,7 +3174,7 @@ msgstr "يجب أن تكون كلمه السر 6 Ù…Øار٠أو أكثر." msgid "Password and confirmation do not match." msgstr "" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "خطأ أثناء ضبط المستخدم." @@ -3148,100 +3182,100 @@ msgstr "خطأ أثناء ضبط المستخدم." msgid "New password successfully saved. You are now logged in." msgstr "" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "عذرًا، الأشخاص المدعوون ÙˆØدهم يستطيعون التسجيل." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "عذرا، رمز دعوه غير صالØ." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Ù†Ø¬Ø Ø§Ù„ØªØ³Ø¬ÙŠÙ„" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "سجّل" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "لا ÙŠÙØ³Ù…Ø Ø¨Ø§Ù„ØªØ³Ø¬ÙŠÙ„." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "عنوان البريد الإلكترونى موجود مسبقًا." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "اسم مستخدم أو كلمه سر غير صالØÙ‡." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 Øرو٠أو أكثر. مطلوب." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Ù†Ùس كلمه السر أعلاه. مطلوب." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "البريد الإلكتروني" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3260,7 +3294,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3335,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 "مكرر" @@ -3373,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 @@ -3386,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 @@ -3405,7 +3439,7 @@ msgstr "لا يمكنك إسكات المستخدمين على هذا الموق msgid "User doesn't have this role." msgstr "يوزر من-غير پروÙايل زيّه." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3419,7 +3453,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "الجلسات" @@ -3463,7 +3497,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "الاسم" @@ -3474,12 +3508,12 @@ msgid "Organization" msgstr "المنظمه" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Ø¥Øصاءات" @@ -3563,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%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" @@ -3637,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 "الأعضاء" @@ -3651,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." @@ -3665,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." @@ -3674,7 +3708,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "الإداريون" @@ -3749,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 @@ -4071,7 +4105,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4133,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 "تعذّر ØÙظ الاشتراك." @@ -4298,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 "لم تمنع هذا المستخدم." @@ -4410,7 +4441,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "الرخصة" @@ -4531,29 +4562,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4561,7 +4592,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4569,170 +4600,268 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "النسخه" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "المؤلÙ/ين" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "تعذّر ØÙظ الاشتراك." @@ -4784,133 +4913,133 @@ msgid "Untitled page" msgstr "صÙØÙ‡ غير Ù…Ùعنونة" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 #, fuzzy 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "شخصية" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "غير كلمه سرّك" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "كونيكشونات (Connections)" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "اتصل" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy 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:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "إداري" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "ادعÙ" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 #, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "اخرج من الموقع" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "اخرج" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "أنشئ Øسابًا" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "سجّل" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 #, fuzzy msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ù„Ùج إلى الموقع" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "Ù„Ùج" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "ساعدني!" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "مساعدة" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 #, fuzzy msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ابØØ« عن أشخاص أو نص" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -4918,71 +5047,71 @@ msgstr "ابØØ«" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "المشاهدات المØلية" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "إشعار الصÙØØ©" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "مساعدة" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "عن" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "الأسئله المكررة" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "الشروط" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "خصوصية" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "المصدر" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "اتصل" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4992,13 +5121,13 @@ msgstr "" "broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: 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:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5010,49 +5139,49 @@ msgstr "" "agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "قبل" @@ -5100,71 +5229,71 @@ msgid "Unable to delete design setting." msgstr "تعذّر Øذ٠إعدادات التصميم." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "ضبط الموقع الأساسي" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "الموقع" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "ضبط التصميم" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "التصميم" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "ضبط المسارات" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "المستخدم" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "ضبط التصميم" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "ضبط المسارات" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "ضبط التصميم" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "إشعار الموقع" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "ضبط المسارات" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5295,11 +5424,11 @@ msgstr "" msgid "Tags for this attachment" msgstr "وسوم هذا المرÙÙ‚" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "تغيير الپاسوورد Ùشل" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "تغيير الپاسوورد مش مسموØ" @@ -5393,14 +5522,14 @@ msgstr "الاسم الكامل: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "الموقع: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "الصÙØÙ‡ الرئيسية: %s" @@ -5888,8 +6017,15 @@ msgstr "" 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5905,19 +6041,19 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "عن Ù†Ùسك: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -5931,30 +6067,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Øاله %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -5971,13 +6107,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "رساله خاصه جديده من %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -5997,13 +6133,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: 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:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6025,7 +6161,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6033,13 +6169,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6076,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 "من" @@ -6131,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 "" @@ -6203,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 "الإشعار مكرر" @@ -6357,7 +6493,7 @@ msgstr "" msgid "All groups" msgstr "كل المجموعات" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6381,7 +6517,7 @@ msgstr "Ù…Ùختارون" msgid "Popular" msgstr "مشهورة" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "لا مدخلات رجوع إلى." @@ -6402,7 +6538,7 @@ msgstr "كرر هذا الإشعار" msgid "Revoke the \"%s\" role from this user" msgstr "امنع هذا المستخدم من هذه المجموعة" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6500,6 +6636,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "خطأ أثناء تØديث المل٠الشخصى البعيد" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "أعلى المرسلين" @@ -6582,56 +6762,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: 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:1093 +#: 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:1097 +#: 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:1100 +#: 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:1104 +#: 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:1107 +#: 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:1111 +#: 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:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "قبل سنه تقريبًا" diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po index 10f4fc66e..3b78847b5 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:25+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:08+0000\n" "Language-Team: Bulgarian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "ДоÑтъп" @@ -85,25 +85,24 @@ msgid "Save" msgstr "Запазване" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "ÐÑма такака Ñтраница." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -116,7 +115,7 @@ msgid "No such user." msgstr "ÐÑма такъв потребител" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s и приÑтели, Ñтраница %2$d" @@ -124,39 +123,39 @@ msgstr "%1$s и приÑтели, Ñтраница %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 и приÑтели" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "ЕмиÑÐ¸Ñ Ñ Ð¿Ñ€Ð¸Ñтелите на %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "ЕмиÑÐ¸Ñ Ñ Ð¿Ñ€Ð¸Ñтелите на %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "ЕмиÑÐ¸Ñ Ñ Ð¿Ñ€Ð¸Ñтелите на %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -164,79 +163,79 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "Бележки от %1$s и приÑтели в %2$s." -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Ðе е открит методът в API." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Този метод изиÑква заÑвка POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Грешка при обновÑване на потребителÑ." @@ -256,7 +255,7 @@ msgstr "Грешка при запазване на профила." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -334,29 +333,30 @@ msgstr "" "Ðе може да изпращате преки ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾ хора, които не Ñа в ÑпиÑъка ви Ñ " "приÑтели." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Ðе е открита бележка Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Тази бележка вече е отбелÑзана като любима." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Грешка при отбелÑзване като любима." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Тази бележка не е отбелÑзана като любима." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -385,125 +386,130 @@ msgstr "Грешка при изтеглÑне на Ð¾Ð±Ñ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ðº" msgid "Could not find target user." msgstr "ЦелевиÑÑ‚ потребител не беше открит." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "ПÑевдонимът може да Ñъдържа Ñамо малки букви, чиÑла и никакво разÑтоÑние " "между Ñ‚ÑÑ…." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Опитайте друг пÑевдоним, този вече е зает." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ðеправилен пÑевдоним." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "ÐдреÑÑŠÑ‚ на личната Ñтраница не е правилен URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Пълното име е твърде дълго (макÑ. 255 знака)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "ОпиÑанието е твърде дълго (до %d Ñимвола)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Името на меÑтоположението е твърде дълго (макÑ. 255 знака)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." msgstr "Ðеправилен пÑевдоним: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "ПÑевдонимът \"%s\" вече е зает. Опитайте друг." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Групата не е открита." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Вече членувате в тази група." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Грешка при проÑледÑване — потребителÑÑ‚ не е намерен." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Ðе членувате в тази група." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Грешка при проÑледÑване — потребителÑÑ‚ не е намерен." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Групи, в които учаÑтва %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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Групи на %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -515,15 +521,15 @@ msgstr "Ðеправилен размер." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -575,7 +581,7 @@ msgstr "" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "Разрешение или забрана на доÑтъпа" #: actions/apioauthauthorize.php:292 #, php-format @@ -586,12 +592,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Сметка" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -599,29 +605,28 @@ msgid "Nickname" msgstr "ПÑевдоним" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" 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." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Този метод изиÑква заÑвка POST или DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Ðе може да изтривате бележки на друг потребител." @@ -638,59 +643,63 @@ msgstr "Ðе можете да повтарÑте ÑобÑтвени бележРmsgid "Already repeated that notice." msgstr "Вече Ñте повторили тази бележка." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Бележката е изтрита." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Ðе е открита бележка Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе е открито." -#: actions/apistatusesupdate.php:304 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 "Ðеподдържан формат." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%s / ОтбелÑзани като любими от %s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%s бележки отбелÑзани като любими от %s / %s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Реплики на %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s реплики на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Общ поток на %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -705,16 +714,20 @@ msgstr "Повторено за %s" msgid "Repeats of %s" msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Бележки Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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 "Изтриване" @@ -810,11 +823,11 @@ msgstr "Ðватарът е изтрит." msgid "You already blocked that user." msgstr "Вече Ñте блокирали този потребител." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Блокиране на потребителÑ" -#: actions/block.php:130 +#: 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 " @@ -826,7 +839,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -835,7 +848,7 @@ msgstr "Ðе" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Да не Ñе блокира този потребител" @@ -844,7 +857,7 @@ msgstr "Да не Ñе блокира този потребител" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -852,11 +865,11 @@ msgid "Yes" msgstr "Да" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Блокиране на потребителÑ" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Грешка при запиÑване данните за блокирането." @@ -984,7 +997,7 @@ msgstr "Ðе Ñте ÑобÑтвеник на това приложение." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Имаше проблем ÑÑŠÑ ÑеÑиÑта ви в Ñайта." @@ -1015,7 +1028,7 @@ msgstr "Изтриване на това приложение" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "Изтриване на бележката" @@ -1082,49 +1095,58 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Ðеправилен размер." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Страницата не е доÑтъпна във вида медиÑ, който приемате" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "СмÑна на логото" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Лого на Ñайта" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "ПромÑна" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Ðова бележка" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 #, fuzzy msgid "Theme for the site." msgstr "Излизане от Ñайта" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Ðова бележка" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "СмÑна на изображението за фон" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Фон" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1132,58 +1154,66 @@ msgid "" msgstr "Може да качите лого за групата ви." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Вкл." #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Изкл." -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "СмÑна на цветовете" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Съдържание" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Страничен панел" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "ТекÑÑ‚" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "СпиÑък" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1193,7 +1223,7 @@ msgstr "" msgid "Save" msgstr "Запазване" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1313,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 "Грешка при отбелÑзване като любима." @@ -1371,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 "Отказ" @@ -1418,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 @@ -1460,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 @@ -1475,7 +1503,7 @@ msgid "Cannot normalize that email address" msgstr "Грешка при нормализиране адреÑа на е-пощата" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ðеправилен Ð°Ð´Ñ€ÐµÑ Ð½Ð° е-поща." @@ -1710,13 +1738,13 @@ msgstr "ПотребителÑÑ‚ вече е заглушен." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Ðе е указан профил." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ðе е открит профил Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор." @@ -1858,7 +1886,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Поток на %s" @@ -2281,40 +2309,40 @@ msgstr "Ðе членувате в тази група." msgid "%1$s left group %2$s" msgstr "%1$s напуÑна групата %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Вече Ñте влезли." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Грешно име или парола." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "Забранено." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Вход" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Вход в Ñайта" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Запомни ме" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Ðвтоматично влизане занапред. Да не Ñе ползва на общи компютри!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Загубена или забравена парола" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2322,12 +2350,12 @@ msgstr "" "За по-голÑма ÑигурноÑÑ‚, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ отново потребителÑкото Ñи име и парола " "при промÑна на наÑтройките." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Вход Ñ Ð¸Ð¼Ðµ и парола" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2479,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 @@ -2535,31 +2563,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Бележката нÑма профил" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Бележка на %1$s от %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "вид Ñъдържание " #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "Ðеподдържан формат на данните" @@ -2669,7 +2697,7 @@ msgid "6 or more characters" msgstr "6 или повече знака" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Потвърждаване" @@ -2681,11 +2709,11 @@ msgstr "Също като паролата по-горе" msgid "Change" msgstr "ПромÑна" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Паролата Ñ‚Ñ€Ñбва да е 6 или повече знака." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Паролите не Ñъвпадат." @@ -2706,7 +2734,7 @@ msgid "Password saved." msgstr "Паролата е запиÑана." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Пътища" @@ -2908,43 +2936,43 @@ msgstr "Данни на профила" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "От 1 до 64 малки букви или цифри, без Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð°Ñ†Ð¸Ñ Ð¸ интервали" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Опишете Ñебе Ñи и интереÑите Ñи в до %d букви" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Опишете Ñебе Ñи и интереÑите Ñи" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "За мен" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Къде Ñе намирате (град, община, държава и Ñ‚.н.)" @@ -2986,7 +3014,7 @@ msgstr "" "Ðвтоматично абониране за вÑеки, който Ñе абонира за мен (подходÑщо за " "ботове)." -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "БиографиÑта е твърде дълга (до %d Ñимвола)." @@ -3234,7 +3262,7 @@ msgstr "Паролата Ñ‚Ñ€Ñбва да е от поне 6 знака." msgid "Password and confirmation do not match." msgstr "Паролата и потвърждението й не Ñъвпадат." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Грешка в наÑтройките на потребителÑ." @@ -3242,103 +3270,103 @@ msgstr "Грешка в наÑтройките на потребителÑ." msgid "New password successfully saved. You are now logged in." msgstr "Ðовата парола е запазена. ВлÑзохте уÑпешно." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "Грешка в кода за потвърждение." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "ЗапиÑването е уÑпешно." -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "РегиÑтриране" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "ЗапиÑването не е позволено." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Ðе можете да Ñе региÑтрате, ако не Ñте ÑъглаÑни Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð°." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "ÐдреÑÑŠÑ‚ на е-поща вече Ñе използва." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ðеправилно име или парола." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "От 1 до 64 малки букви или цифри, без Ð¿ÑƒÐ½ÐºÑ‚Ð¾Ð°Ñ†Ð¸Ñ Ð¸ интервали. Задължително " "поле." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 или повече знака. Задължително поле." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Същото като паролата по-горе. Задължително поле." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Е-поща" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Използва Ñе Ñамо за промени, обÑви или възÑтановÑване на паролата" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "По-дълго име, за предпочитане \"иÑтинÑкото\" ви име." -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3371,7 +3399,7 @@ msgstr "" "Благодарим, че Ñе включихте в Ñайта и дано ползването на уÑлугата ви ноÑи " "Ñамо приÑтни мигове!" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3454,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 "Повторено" @@ -3492,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 @@ -3505,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 @@ -3524,7 +3552,7 @@ msgstr "Ðе можете да заглушавате потребители нРmsgid "User doesn't have this role." msgstr "Потребител без ÑъответÑтващ профил" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3540,7 +3568,7 @@ msgstr "ПотребителÑÑ‚ ви е блокирал." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "СеÑии" @@ -3584,7 +3612,7 @@ msgid "Icon" msgstr "Икона" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Име" @@ -3595,12 +3623,12 @@ msgid "Organization" msgstr "ОрганизациÑ" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтики" @@ -3687,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 @@ -3755,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 "Членове" @@ -3763,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." @@ -3783,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." @@ -3792,7 +3820,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтратори" @@ -3867,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 @@ -4199,7 +4227,7 @@ msgstr "Ðе е въведен код." #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4261,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 "Грешка при Ñъздаване на нов абонамент." @@ -4430,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 "Ðе Ñте блокирали този потребител." @@ -4550,7 +4575,7 @@ msgstr "" "Проверете тези детайли и Ñе уверете, че иÑкате да Ñе абонирате за бележките " "на този потребител. Ðко не иÑкате абонамента, натиÑнете \"Cancel\" (Отказ)." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Лиценз" @@ -4679,29 +4704,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Бележки от %1$s в %2$s." -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4709,7 +4734,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4717,104 +4742,152 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "ПриÑтавки" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "ВерÑиÑ" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Ðвтор(и)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Грешка в базата от данни — отговор при вмъкването: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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 " @@ -4823,78 +4896,127 @@ msgstr "" "Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте " "отново Ñлед нÑколко минути." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "Грешка при Ñъздаване на нов абонамент." @@ -4947,195 +5069,194 @@ msgid "Untitled page" msgstr "Ðеозаглавена Ñтраница" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Лично" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "ПромÑна на поща, аватар, парола, профил" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "Свързване" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "ÐаÑтройки" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Поканете приÑтели и колеги да Ñе приÑъединÑÑ‚ към Ð²Ð°Ñ Ð² %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Покани" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Изход" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "РегиÑтриране" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Влизане в Ñайта" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Вход" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Помощ" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Помощ" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ТърÑене за хора или бележки" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "Ðова бележка" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "Ðова бележка" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" msgstr "Ðбонаменти" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Помощ" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "ОтноÑно" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "ВъпроÑи" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "УÑловиÑ" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "ПоверителноÑÑ‚" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Изходен код" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Контакт" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Табелка" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Лиценз на програмата StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5145,13 +5266,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** е уÑлуга за микроблогване." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5163,49 +5284,49 @@ msgstr "" "licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Преди" @@ -5257,70 +5378,70 @@ msgid "Unable to delete design setting." msgstr "Грешка при запиÑване наÑтройките за Twitter" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "ОÑновна наÑтройка на Ñайта" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Сайт" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "ÐаÑтройка на оформлението" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "ВерÑиÑ" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "ÐаÑтройка на пътищата" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Потребител" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "ÐаÑтройка на оформлението" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "ÐаÑтройка на пътищата" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "ÐаÑтройка на оформлението" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Ðова бележка" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "ÐаÑтройка на пътищата" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5455,12 +5576,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Паролата е запиÑана." -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Паролата е запиÑана." @@ -5556,14 +5677,14 @@ msgstr "Пълно име: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "МеÑтоположение: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Домашна Ñтраница: %s" @@ -6050,8 +6171,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s вече получава бележките ви в %2$s." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6077,19 +6205,19 @@ msgstr "" "Може да Ñмените адреÑа и наÑтройките за уведомÑване по е-поща на %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "БиографиÑ: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ðов Ð°Ð´Ñ€ÐµÑ Ð½Ð° е-поща за публикщуване в %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6103,30 +6231,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "СъÑтоÑние на %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Потвърждение за SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "Очаква Ñе потвърждение за този телефонен номер." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Побутнати Ñте от %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6143,13 +6271,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ðово лично Ñъобщение от %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6169,13 +6297,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) отбелÑза бележката ви като любима" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6197,7 +6325,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6205,13 +6333,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6248,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 "от" @@ -6303,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 "" @@ -6376,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 "Бележката е повторена." @@ -6495,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" @@ -6533,7 +6660,7 @@ msgstr "" msgid "All groups" msgstr "Ð’Ñички групи" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6557,7 +6684,7 @@ msgstr "Избрано" msgid "Popular" msgstr "ПопулÑрно" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "ЛипÑват аргументи return-to." @@ -6578,7 +6705,7 @@ msgstr "ПовтарÑне на тази бележка" msgid "Revoke the \"%s\" role from this user" msgstr "СпиÑък Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ð¸Ñ‚Ðµ в тази група." -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6593,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)" @@ -6679,6 +6805,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Грешка при обновÑване на отдалечен профил" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Ðай-чеÑто пишещи" @@ -6761,56 +6931,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "преди около %d минути" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "преди около %d чаÑа" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "преди около %d дни" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "преди около %d меÑеца" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "преди около година" diff --git a/locale/br/LC_MESSAGES/statusnet.po b/locale/br/LC_MESSAGES/statusnet.po index 0c64a7aa0..e4eb8d854 100644 --- a/locale/br/LC_MESSAGES/statusnet.po +++ b/locale/br/LC_MESSAGES/statusnet.po @@ -1,6 +1,7 @@ # Translation of StatusNet to Breton # # Author@translatewiki.net: Fulup +# Author@translatewiki.net: Gwendal # Author@translatewiki.net: Y-M D # -- # 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:28+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:11:33+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -22,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Moned" @@ -84,24 +85,24 @@ msgid "Save" msgstr "Enrollañ" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "N'eus ket eus ar bajenn-se." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -114,7 +115,7 @@ msgid "No such user." msgstr "N'eus ket eus an implijer-se." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s hag e vignoned, pajenn %2$d" @@ -122,39 +123,40 @@ msgstr "%1$s hag e vignoned, pajenn %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 hag e vignoned" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Gwazh evit mignoned %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Gwazh evit mignoned %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Gwazh evit mignoned %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 -#, php-format +#: actions/all.php:138 +#, fuzzy, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" +"Kronologiezh foran %%site.name%% eo, met den n'en deus skrivet tra ebet." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -162,79 +164,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "C'hwi hag o mignoned" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Hizivadennoù %1$s ha mignoned e %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "N'eo ket bet kavet an hentenn API !" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Ezhomm en deus an argerzh-mañ eus ur POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Diposubl eo hizivaat an implijer." @@ -254,7 +258,7 @@ msgstr "Diposubl eo enrollañ ar profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -330,30 +334,30 @@ msgstr "" "Ne c'helloc'h ket kas kemennadennoù personel d'an implijerien n'int ket ho " "mignoned." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "N'eo bet kavet statud ebet gant an ID-mañ." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Ur pennroll eo dija an ali-mañ." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Diposupl eo krouiñ ar pennroll-mañ." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "N'eo ket ar statud-mañ ur pennroll." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 msgid "Could not delete favorite." msgstr "Diposupl eo dilemel ar pennroll-mañ." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Diposupl eo heuliañ an implijer : N'eo ket bet kavet an implijer." +msgid "Could not follow user: profile not found." +msgstr "Dibosupl eo heuliañ an implijer : n'eo ket bet kavet ar profil." #: actions/apifriendshipscreate.php:118 #, php-format @@ -369,9 +373,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." -msgstr "Rankout a reoc'h reiñ daou id pe lesanv." +#: 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." @@ -381,123 +385,128 @@ msgstr "Diposubl eo termeniñ an implijer mammenn." msgid "Could not find target user." msgstr "Diposubl eo kavout an implijer pal." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 +#, fuzzy msgid "Nickname must have only lowercase letters and numbers and no spaces." -msgstr "" +msgstr "1 da 64 lizherenn vihan pe sifr, hep poentaouiñ nag esaouenn" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Implijet eo dija al lesanv-se. Klaskit unan all." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "N'eo ket ul lesanv mat." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "N'eo ket chomlec'h al lec'hienn personel un URL reizh." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Re hir eo an anv klok (255 arouezenn d'ar muiañ)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Re hir eo an deskrivadur (%d arouezenn d'ar muiañ)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Re hir eo al lec'hiadur (255 arouezenn d'ar muiañ)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Re a aliasoù ! %d d'ar muiañ." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Alias fall : \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Implijet e vez an alias \"%s\" dija. Klaskit gant unan all." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Ne c'hell ket an alias bezañ ar memes hini eget al lesanv." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "N'eo ket bet kavet ar strollad." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Un ezel eus ar strollad-mañ eo dija." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Stanket oc'h bet eus ar strollad-mañ gant ur merour." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Diposubl eo stagañ an implijer %1$s d'ar strollad %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "N'oc'h ket ezel eus ar strollad-mañ." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Diposubl eo dilemel an implijer %1$s deus ar strollad %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Strollad %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Strolladoù %1s m'eo ezel %2s." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Strolladoù %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "strolladoù war %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Enporzhiadenn c'hwitet." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Arventenn oauth_token nann-roet." @@ -508,15 +517,15 @@ msgstr "Fichenn direizh." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -529,8 +538,9 @@ msgid "Invalid nickname / password!" msgstr "Lesanv / ger tremen direizh !" #: actions/apioauthauthorize.php:159 +#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "" +msgstr "Arabat eo dilemel ar poellad-mañ" #: actions/apioauthauthorize.php:185 msgid "Database error inserting OAuth application user." @@ -577,12 +587,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Kont" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -590,8 +600,8 @@ msgid "Nickname" msgstr "Lesanv" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Ger-tremen" @@ -607,11 +617,11 @@ msgstr "Aotreañ" msgid "Allow or deny access to your account information." msgstr "Aotreañ pe nac'hañ ar moned da ditouroù ho kont." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Ezhomm en deus an argerzh-mañ ur POST pe un DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Ne c'helloc'h ket dilemel statud un implijer all." @@ -628,59 +638,63 @@ msgstr "Ne c'helloc'h ket adlavar ho alioù." msgid "Already repeated that notice." msgstr "Adlavaret o peus dija an ali-mañ." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Statud diverket." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "N'eo ket bet kavet a statud evit an ID-mañ" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "N'eo ket bet kavet." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Pennroll %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s statud pennroll da %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Hizivadennoù a veneg %2$s" -#: actions/apitimelinementions.php:130 -#, php-format +#: actions/apitimelinementions.php:131 +#, fuzzy, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." -msgstr "" +msgstr "%1$s statud pennroll da %2$s / %2$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Oberezhioù publik %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s statud an holl !" @@ -695,16 +709,20 @@ msgstr "Adkemeret evit %s" msgid "Repeats of %s" msgstr "Adkemeret eus %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Alioù merket gant %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "Hentenn API war sevel." + #: actions/attachment.php:73 msgid "No such attachment." msgstr "N'eo ket bet kavet ar restr stag." @@ -739,7 +757,7 @@ msgstr "" #: actions/grouplogo.php:181 actions/remotesubscribe.php:191 #: actions/userauthorization.php:72 actions/userrss.php:108 msgid "User without matching profile." -msgstr "" +msgstr "Implijer hep profil klotus." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -757,7 +775,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:657 msgid "Delete" msgstr "Diverkañ" @@ -797,11 +815,11 @@ msgstr "Dilammet eo bet an Avatar." msgid "You already blocked that user." msgstr "Stanket o peus dija an implijer-mañ." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Stankañ an implijer-mañ" -#: actions/block.php:130 +#: 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 " @@ -813,7 +831,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -822,7 +840,7 @@ msgstr "Nann" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Arabat stankañ an implijer-mañ" @@ -831,7 +849,7 @@ msgstr "Arabat stankañ an implijer-mañ" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -839,11 +857,11 @@ msgid "Yes" msgstr "Ya" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Stankañ an implijer-mañ" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Diposubl eo enrollañ an titouroù stankañ." @@ -971,7 +989,7 @@ msgstr "N'oc'h ket perc'henn ar poellad-se." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Ur gudenn 'zo bet gant ho jedaouer dalc'h." @@ -1002,7 +1020,7 @@ msgstr "Dilemel ar poelad-se" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Nann-luget." @@ -1031,7 +1049,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:657 msgid "Delete this notice" msgstr "Dilemel an ali-mañ" @@ -1069,45 +1087,53 @@ msgstr "Design" msgid "Design settings for this StatusNet site." msgstr "Arventennoù design evit al lec'hienn StatusNet-mañ." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL fall evit al logo." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "N'eus ket eus ar gaoz-se : %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Cheñch al logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo al lec'hienn" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Lakaat un dodenn all" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Dodenn al lec'hienn" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Dodenn evit al lec'hienn." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Dodenn personelaet" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Kemmañ ar skeudenn foñs" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Background" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1115,57 +1141,65 @@ msgid "" msgstr "" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Gweredekaet" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Diweredekaet" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Gweredekaat pe diweredekaat ar skeudenn foñs." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Adober gant ar skeudenn drekleur" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Kemmañ al livioù" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Endalc'h" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barenn kostez" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Testenn" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Liammoù" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Araokaet" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personelaet" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Implijout an talvoudoù dre ziouer" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Adlakaat an neuz dre ziouer." -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Adlakaat an arventennoù dre ziouer" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1175,7 +1209,7 @@ msgstr "Adlakaat an arventennoù dre ziouer" msgid "Save" msgstr "Enrollañ" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Enrollañ an design" @@ -1289,7 +1323,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ù." @@ -1371,14 +1406,16 @@ msgstr "Postel o tont" #. 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 +#, fuzzy msgid "Send email to this address to post new notices." -msgstr "" +msgstr "Chomlec'h postel nevez evit embann e %s" #. 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 +#, fuzzy msgid "Make a new email address for posting to; cancels the old one." -msgstr "" +msgstr "Chomlec'h postel nevez evit embann e %s" #. 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. @@ -1394,8 +1431,9 @@ msgstr "Penndibaboù ar posteloù" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 +#, fuzzy msgid "Send me notices of new subscriptions through email." -msgstr "" +msgstr "Kas din an alioù dre Jabber/GTalk." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:186 @@ -1439,11 +1477,12 @@ msgstr "Chomlec'h postel ebet." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 +#, fuzzy msgid "Cannot normalize that email address" -msgstr "" +msgstr "Diposubl eo implijout an ID Jabber-mañ" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "N'eo ket ur chomlec'h postel reizh." @@ -1455,8 +1494,9 @@ msgstr "Ho postel eo dija." #. TRANS: Message given saving e-mail address that is already set for another user. #: actions/emailsettings.php:374 +#, fuzzy msgid "That email address already belongs to another user." -msgstr "" +msgstr "D'un implijer all eo an niverenn-mañ dija." #. TRANS: Server error thrown on database error adding e-mail confirmation code. #. TRANS: Server error thrown on database error adding IM confirmation code. @@ -1478,8 +1518,9 @@ msgstr "" #. TRANS: Message given canceling SMS phone number confirmation that is not pending. #: actions/emailsettings.php:419 actions/imsettings.php:383 #: actions/smssettings.php:408 +#, fuzzy msgid "No pending confirmation to cancel." -msgstr "" +msgstr "Nullet eo bet kadarnadenn ar bostelerezh prim." #. TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address. #: actions/emailsettings.php:424 @@ -1515,13 +1556,15 @@ msgstr "Dibosupl eo hizivaat doser an implijer." #. TRANS: Message given after successfully removing an incoming e-mail address. #: actions/emailsettings.php:508 actions/smssettings.php:581 +#, fuzzy msgid "Incoming email address removed." -msgstr "" +msgstr "Chomlec'h postel ebet o tont." #. TRANS: Message given after successfully adding an incoming e-mail address. #: actions/emailsettings.php:532 actions/smssettings.php:605 +#, fuzzy msgid "New incoming email address added." -msgstr "" +msgstr "Chomlec'h postel ebet o tont." #: actions/favor.php:79 msgid "This notice is already a favorite!" @@ -1556,11 +1599,13 @@ msgid "" msgstr "" #: actions/favorited.php:156 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 @@ -1575,13 +1620,14 @@ msgstr "Hizivadennoù brientek gant %1$s war %2$s !" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 +#, fuzzy msgid "Featured users" -msgstr "" +msgstr "Diverkañ an implijer" #: actions/featured.php:71 -#, php-format +#, fuzzy, php-format msgid "Featured users, page %d" -msgstr "" +msgstr "Strollad, pajenn %d" #: actions/featured.php:99 #, php-format @@ -1601,8 +1647,9 @@ msgid "No attachments." msgstr "N'eus restr stag ebet." #: actions/file.php:51 +#, fuzzy msgid "No uploaded attachments." -msgstr "" +msgstr "N'eus restr stag ebet." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" @@ -1613,8 +1660,9 @@ msgid "User being listened to does not exist." msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 +#, fuzzy msgid "You can use the local subscription!" -msgstr "" +msgstr "Dibosupl eo dilemel ar c'houmanant." #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." @@ -1625,17 +1673,17 @@ msgid "You are not authorized." msgstr "N'oc'h ket aotreet." #: actions/finishremotesubscribe.php:113 +#, fuzzy msgid "Could not convert request token to access token." -msgstr "" +msgstr "Dibosupl eo kaout ur jedaouer reked." #: actions/finishremotesubscribe.php:118 msgid "Remote service uses unknown version of OMB protocol." msgstr "" #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Diposubl eo enrollañ ar profil." +msgstr "Fazi en ur hizivaat ar profil a-bell." #: actions/getfile.php:79 msgid "No such file." @@ -1663,13 +1711,13 @@ msgstr "An implijer-mañ en deus dija ar roll-mañ." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "N'eo bet resisaet profil ebet" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "N'eus profil ebet gant an ID-mañ." @@ -1713,16 +1761,18 @@ msgid "Block this user from this group" msgstr "Stankañ an implijer-mañ eus ar strollad-se" #: actions/groupblock.php:206 +#, fuzzy msgid "Database error blocking user from group." -msgstr "" +msgstr "Distankañ implijer ar strollad" #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." msgstr "ID ebet" #: actions/groupdesignsettings.php:68 +#, fuzzy msgid "You must be logged in to edit a group." -msgstr "" +msgstr "Rankout a reoc'h bezañ luget evit krouiñ ur strollad." #: actions/groupdesignsettings.php:144 msgid "Group design" @@ -1754,8 +1804,9 @@ msgid "" msgstr "" #: actions/grouplogo.php:365 +#, fuzzy msgid "Pick a square area of the image to be the logo." -msgstr "" +msgstr "Diuzit ur zonenn gant ur stumm karrez evit tremeniñ ho avatar" #: actions/grouplogo.php:399 msgid "Logo updated." @@ -1803,7 +1854,7 @@ msgstr "Lakaat an implijer-mañ da verour" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Oberezhioù %s" @@ -1839,11 +1890,14 @@ msgid "Create a new group" msgstr "Krouiñ ur strollad nevez" #: actions/groupsearch.php:52 -#, php-format +#, fuzzy, 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 "" +"Klask tud e %%site.name%% dre o anv, o lec'hiadur pe o diduadennoù. " +"Dispartiañ termenoù ar c'hlask gant esaouennoù. Ret eo e vefe da nebeutañ 3 " +"arouezenn." #: actions/groupsearch.php:58 msgid "Group search" @@ -1864,11 +1918,13 @@ msgstr "" "anezhañ](%%action.newgroup%%)." #: actions/groupsearch.php:85 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." @@ -1942,13 +1998,15 @@ msgstr "Kas din an alioù dre Jabber/GTalk." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:166 +#, fuzzy msgid "Post a notice when my Jabber/GTalk status changes." -msgstr "" +msgstr "Embann ur MicroID evit ma chomlec'h Jabber/GTalk." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:172 +#, fuzzy msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." -msgstr "" +msgstr "Kas din an alioù dre Jabber/GTalk." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:179 @@ -2018,9 +2076,8 @@ msgstr "N'eo ket ho ID Jabber." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Dilamet eo bet ar chomlec'h." +msgstr "Ar chomlec'h IM zo bet dilamet." #: actions/inbox.php:59 #, php-format @@ -2087,9 +2144,10 @@ msgid "" msgstr "" #: actions/invite.php:162 +#, fuzzy msgid "" "Use this form to invite your friends and colleagues to use this service." -msgstr "" +msgstr "Pediñ mignoned hag kenseurted da zont ganeoc'h war %s" #: actions/invite.php:187 msgid "Email addresses" @@ -2181,43 +2239,43 @@ msgstr "N'oc'h ket un ezel eus ar strollad-mañ." msgid "%1$s left group %2$s" msgstr "%1$s en deus kuitaet ar strollad %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Kevreet oc'h dija." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Anv implijer pe ger-tremen direizh." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Ur fazi 'zo bet e-pad hizivadenn an implijer. Moarvat n'oc'h ket aotreet " "evit en ober." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Kevreañ" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Kevreañ d'al lec'hienn" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Kaout soñj" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Digeriñ va dalc'h war-eeun ar wechoù o tont ; arabat en ober war " "urzhiataeroù rannet pe publik !" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Ha kollet o peus ho ker-tremen ?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2225,11 +2283,11 @@ msgstr "" "Evit abegoù a surentezh, mar plij adlakait hoc'h anv implijer hag ho ker-" "tremen a-benn enrollañ ho penndibaboù." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Kevreit gant ho anv implijer hag ho ker-tremen." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2247,9 +2305,9 @@ msgid "%1$s is already an admin for group \"%2$s\"." msgstr "%1$s a zo dija merour ar strollad \"%2$s\"." #: actions/makeadmin.php:133 -#, php-format +#, fuzzy, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "" +msgstr "Diposubl eo lakaat %1$s da merour ar strollad %2$s." #: actions/makeadmin.php:146 #, php-format @@ -2334,11 +2392,14 @@ msgid "Notice posted" msgstr "Ali embannet" #: actions/noticesearch.php:68 -#, php-format +#, fuzzy, 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 "" +"Klask tud e %%site.name%% dre o anv, o lec'hiadur pe o diduadennoù. " +"Dispartiañ termenoù ar c'hlask gant esaouennoù. Ret eo e vefe da nebeutañ 3 " +"arouezenn." #: actions/noticesearch.php:78 msgid "Text search" @@ -2357,11 +2418,13 @@ msgid "" msgstr "" #: actions/noticesearch.php:124 -#, php-format +#, fuzzy, 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 "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #: actions/noticesearchrss.php:96 #, php-format @@ -2369,13 +2432,13 @@ msgid "Updates with \"%s\"" msgstr "Hizivadenn gant \"%s\"" #: actions/noticesearchrss.php:98 -#, php-format +#, fuzzy, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "" +msgstr "Hizivadennoù merket gant %1$s e %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 @@ -2416,44 +2479,46 @@ msgid "You are not a user of that application." msgstr "N'oc'h ket un implijer eus ar poellad-mañ." #: actions/oauthconnectionssettings.php:186 -#, fuzzy, php-format +#, php-format msgid "Unable to revoke access for app: %s." -msgstr "Dibosupl eo nullañ moned ar poellad : " +msgstr "" #: actions/oauthconnectionssettings.php:198 +#, fuzzy msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "N'o peus enrollet poellad ebet evit poent." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "N'en deus ket an ali a profil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Statud %1$s war %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "seurt an danvez " +msgstr "" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204 +#: lib/apiaction.php:1232 lib/apiaction.php:1355 +#, fuzzy msgid "Not a supported data format." -msgstr "" +msgstr "Diembreget eo ar furmad-se." #: actions/opensearch.php:64 msgid "People Search" @@ -2484,36 +2549,42 @@ msgid "Automatic shortening service to use." msgstr "" #: actions/othersettings.php:122 +#, fuzzy msgid "View profile designs" -msgstr "" +msgstr "Design ar profil" #: actions/othersettings.php:123 msgid "Show or hide profile designs." msgstr "Diskouez pe kuzhat designoù ar profil." #: actions/othersettings.php:153 +#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "" +msgstr "Re hir eo ar yezh (255 arouezenn d'ar muiañ)." #: actions/otp.php:69 msgid "No user ID specified." msgstr "N'eus bet diferet ID implijer ebet." #: actions/otp.php:83 +#, fuzzy msgid "No login token specified." -msgstr "" +msgstr "N'eus bet diferet ali ebet." #: actions/otp.php:90 +#, fuzzy msgid "No login token requested." -msgstr "" +msgstr "N'eus profil ID ebet er reked." #: actions/otp.php:95 +#, fuzzy msgid "Invalid login token specified." -msgstr "" +msgstr "Fichenn direizh." #: actions/otp.php:104 +#, fuzzy msgid "Login token expired." -msgstr "" +msgstr "Kevreañ d'al lec'hienn" #: actions/outbox.php:58 #, php-format @@ -2554,7 +2625,7 @@ msgid "6 or more characters" msgstr "6 arouezenn pe muioc'h" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Kadarnaat" @@ -2566,11 +2637,11 @@ msgstr "Memestra eget ar ger tremen a-us" msgid "Change" msgstr "Kemmañ" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Rankout a ra ar ger-tremen bezañ gant 6 arouezenn d'an nebeutañ." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Ne glot ket ar gerioù-tremen." @@ -2591,18 +2662,19 @@ msgid "Password saved." msgstr "Ger-tremen enrollet." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Hentoù" #: actions/pathsadminpanel.php:70 +#, fuzzy msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "Arventennoù diazez evit al lec'hienn StatusNet-mañ." #: actions/pathsadminpanel.php:157 #, fuzzy, php-format msgid "Theme directory not readable: %s." -msgstr "N'eus ket tu kaout an dodenn : %s" +msgstr "N'eus ket eus ar gaoz-se : %s." #: actions/pathsadminpanel.php:163 #, fuzzy, php-format @@ -2700,12 +2772,14 @@ msgid "Background server" msgstr "Servijer ar backgroundoù" #: actions/pathsadminpanel.php:309 +#, fuzzy msgid "Background path" -msgstr "" +msgstr "Background" #: actions/pathsadminpanel.php:313 +#, fuzzy msgid "Background directory" -msgstr "" +msgstr "Servijer ar backgroundoù" #: actions/pathsadminpanel.php:320 msgid "SSL" @@ -2749,6 +2823,9 @@ 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 "" +"Klask tud e %%site.name%% dre o anv, o lec'hiadur pe o diduadennoù. " +"Dispartiañ termenoù ar c'hlask gant esaouennoù. Ret eo e vefe da nebeutañ 3 " +"arouezenn." #: actions/peoplesearch.php:58 msgid "People search" @@ -2794,43 +2871,43 @@ msgstr "Titouroù ar profil" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1 da 64 lizherenn vihan pe sifr, hep poentaouiñ nag esaouenn" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Anv klok" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Pajenn degemer" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL ho pajenn degemer, ho blog, pe ho profil en ul lec'hienn all" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Deskrivit ac'hanoc'h hag ho interestoù, gant %d arouezenn" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Deskrivit hoc'h-unan hag ar pezh a zedenn ac'hanoc'h" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Buhezskrid" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Lec'hiadur" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "El lec'h m'emaoc'h, da skouer \"Kêr, Stad (pe Rannvro), Bro\"" @@ -2874,7 +2951,7 @@ msgstr "" "En em enskrivañ ez emgefre d'an holl re hag en em goumanant din (erbedet " "evit an implijerien nann-denel)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Re hir eo ar bio (%d arouezenn d'ar muiañ)." @@ -2964,13 +3041,15 @@ msgstr "" "gentañ da embann un dra !" #: actions/public.php:242 -#, php-format +#, fuzzy, 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 "" +"%%site.name%% a zo ur servij [micro-blogging](http://br.wikipedia.org/wiki/" +"Microblog) diazezet war ar meziant frank [StatusNet](http://status.net/)." #: actions/public.php:247 #, php-format @@ -3129,7 +3208,7 @@ msgstr "Rankout a ra ar ger-tremen bezañ 6 arouezenn d'an nebeutañ." msgid "Password and confirmation do not match." msgstr "Ne glot ket ar ger-tremen gant ar c'hadarnadur." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Ur fazi 'zo bet e-pad kefluniadur an implijer." @@ -3137,104 +3216,107 @@ msgstr "Ur fazi 'zo bet e-pad kefluniadur an implijer." msgid "New password successfully saved. You are now logged in." msgstr "Krouet eo bet ar ger-tremen nevez. Kevreet oc'h bremañ." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" "Digarezit, met n'eus nemet an implijerien bet pedet hag a c'hell en em " "enskrivañ." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Digarezit, kod pedadenn direizh." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Krouet eo bet ar gont." -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Krouiñ ur gont" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "N'eo ket aotreet krouiñ kontoù." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" "Rankout a reoc'h bezañ a-du gant termenoù an aotre-implijout evit krouiñ ur " "gont." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Implijet eo dija ar chomlec'h postel-se." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Anv implijer pe ger-tremen direizh." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 +#, fuzzy msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -msgstr "" +msgstr "1 da 64 lizherenn vihan pe sifr, hep poentaouiñ nag esaouenn" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 arouezenn pe muioc'h. Rekis." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Memestra hag ar ger-tremen a-us. Rekis." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Postel" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" +"Implijet hepken evit an hizivadennoù, ar c'hemennoù, pe adtapout gerioù-" +"tremen" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Anv hiroc'h, ho anv \"gwir\" a zo gwelloc'h" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "" +msgstr "Kompren a ran ez eo prevez danvez ha roadennoù %1$s." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Ma zestenn ha ma restroù a zo gwarezet dre copyright gant %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Ma zestenn ha ma restroù a chom dindan ma gwirioù oberour." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Holl gwrioù miret strizh." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3253,7 +3335,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3330,7 +3412,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:676 msgid "Repeated" msgstr "Adlavaret" @@ -3368,7 +3450,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 @@ -3381,8 +3463,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 @@ -3393,19 +3475,20 @@ msgstr "Respontoù da %1$s war %2$s !" #: actions/revokerole.php:75 #, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Ne c'helloc'h ket kas kemennadennoù d'an implijer-mañ." +msgstr "Ne c'helloc'h ket reiñ rolloù d'an implijerien eus al lec'hienn-mañ." #: actions/revokerole.php:82 msgid "User doesn't have this role." msgstr "n'en deus ket an implijer-mañ ar rol-se." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 +#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "" +msgstr "Ne c'helloc'h ket reiñ rolloù d'an implijerien eus al lec'hienn-mañ." #: actions/sandbox.php:72 msgid "User is already sandboxed." @@ -3413,7 +3496,7 @@ msgstr "Er poull-traezh emañ dija an implijer." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Dalc'hoù" @@ -3456,7 +3539,7 @@ msgid "Icon" msgstr "Arlun" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Anv" @@ -3467,12 +3550,12 @@ msgid "Organization" msgstr "Aozadur" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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ù" @@ -3531,8 +3614,9 @@ msgid "%1$s's favorite notices, page %2$d" msgstr "Alioù karetañ %1$s, pajenn %2$d" #: actions/showfavorites.php:132 +#, fuzzy msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "Diposupl eo krouiñ ar pennroll-mañ." #: actions/showfavorites.php:171 #, php-format @@ -3558,16 +3642,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 +3710,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" @@ -3640,12 +3724,12 @@ 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 -#, php-format +#: actions/showgroup.php:455 +#, fuzzy, 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 " @@ -3653,17 +3737,21 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"%%site.name%% a zo ur servij [micro-blogging](http://br.wikipedia.org/wiki/" +"Microblog) diazezet war ar meziant frank [StatusNet](http://status.net/)." -#: actions/showgroup.php:469 -#, php-format +#: actions/showgroup.php:461 +#, fuzzy, 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 "" +"%%site.name%% a zo ur servij [micro-blogging](http://br.wikipedia.org/wiki/" +"Microblog) diazezet war ar meziant frank [StatusNet](http://status.net/)." -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Merourien" @@ -3727,9 +3815,10 @@ msgid "FOAF for %s" msgstr "mignon ur mignon evit %s" #: actions/showstream.php:200 -#, php-format +#, fuzzy, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." msgstr "" +"Kronologiezh foran %%site.name%% eo, met den n'en deus skrivet tra ebet." #: actions/showstream.php:205 msgid "" @@ -3740,26 +3829,30 @@ 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 -#, php-format +#, fuzzy, 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 "" +"%%site.name%% a zo ur servij [micro-blogging](http://br.wikipedia.org/wiki/" +"Microblog) diazezet war ar meziant frank [StatusNet](http://status.net/)." #: actions/showstream.php:248 -#, php-format +#, fuzzy, 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 "" +"%%site.name%% a zo ur servij [micro-blogging](http://br.wikipedia.org/wiki/" +"Microblog) diazezet war ar meziant frank [StatusNet](http://status.net/)." #: actions/showstream.php:305 #, php-format @@ -3767,8 +3860,9 @@ msgid "Repeat of %s" msgstr "Adkemeret eus %s" #: actions/silence.php:65 actions/unsilence.php:65 +#, fuzzy msgid "You cannot silence users on this site." -msgstr "" +msgstr "Ne c'helloc'h ket reiñ rolloù d'an implijerien eus al lec'hienn-mañ." #: actions/silence.php:72 msgid "User is already silenced." @@ -3783,8 +3877,9 @@ msgid "Site name must have non-zero length." msgstr "Ne c'hell ket bezañ goullo anv al lec'hienn." #: actions/siteadminpanel.php:141 +#, fuzzy msgid "You must have a valid contact email address." -msgstr "" +msgstr "N'eo ket ur chomlec'h postel reizh." #: actions/siteadminpanel.php:159 #, php-format @@ -3836,8 +3931,9 @@ msgid "Local" msgstr "Lec'hel" #: actions/siteadminpanel.php:256 +#, fuzzy msgid "Default timezone" -msgstr "" +msgstr "Koumanantoù dre ziouer" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." @@ -3958,8 +4054,9 @@ msgstr "Niverenn bellgomz evit an SMS" #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 +#, fuzzy msgid "Phone number, no punctuation or spaces, with area code" -msgstr "" +msgstr "1 da 64 lizherenn vihan pe sifr, hep poentaouiñ nag esaouenn" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 @@ -3985,8 +4082,9 @@ msgstr "Niverenn bellgomz ebet." #. TRANS: Message given saving SMS phone number without having selected a carrier. #: actions/smssettings.php:344 +#, fuzzy msgid "No carrier selected." -msgstr "" +msgstr "Ali dilammet." #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 @@ -4052,25 +4150,28 @@ msgstr "N'eo bet lakaet kod ebet" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Prim" #: actions/snapshotadminpanel.php:65 +#, fuzzy msgid "Manage snapshot configuration" -msgstr "" +msgstr "Kefluniadur ar primoù" #: actions/snapshotadminpanel.php:127 +#, fuzzy msgid "Invalid snapshot run value." -msgstr "" +msgstr "Roll direizh." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." msgstr "" #: actions/snapshotadminpanel.php:144 +#, fuzzy msgid "Invalid snapshot report URL." -msgstr "" +msgstr "URL fall evit al logo." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" @@ -4081,8 +4182,9 @@ msgid "In a scheduled job" msgstr "" #: actions/snapshotadminpanel.php:206 +#, fuzzy msgid "Data snapshots" -msgstr "" +msgstr "Prim" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" @@ -4107,15 +4209,18 @@ msgstr "" #: actions/snapshotadminpanel.php:248 #, fuzzy msgid "Save snapshot settings" -msgstr "Enrollañ an arventennoù moned" +msgstr "Enrollañ arventennoù al lec'hienn" #: actions/subedit.php:70 +#, fuzzy msgid "You are not subscribed to that profile." -msgstr "" +msgstr "N'hoc'h ket koumanantet da zen ebet." -#: 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 "" +msgstr "Dibosupl eo dilemel ar c'houmanant." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." @@ -4144,13 +4249,14 @@ msgid "%1$s subscribers, page %2$d" msgstr "Koumanantet da %1$s, pajenn %2$d" #: actions/subscribers.php:63 +#, fuzzy msgid "These are the people who listen to your notices." -msgstr "" +msgstr "Heuliañ a reoc'h alioù an dud-se." #: actions/subscribers.php:67 -#, php-format +#, fuzzy, php-format msgid "These are the people who listen to %s's notices." -msgstr "" +msgstr "Heuliet eo alioù an den-mañ gant %s." #: actions/subscribers.php:108 msgid "" @@ -4165,11 +4271,13 @@ msgstr "" "n'ez eus den ebet koumanantet da %s. Ha c'hoant o peus bezañ an hini gentañ ?" #: actions/subscribers.php:114 -#, php-format +#, fuzzy, php-format msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #: actions/subscriptions.php:52 #, php-format @@ -4273,28 +4381,28 @@ msgid "Could not save tags." msgstr "Dibosupl eo enrollañ ar merkoù." #: actions/tagother.php:236 +#, fuzzy msgid "Use this form to add tags to your subscribers or subscriptions." -msgstr "" +msgstr "Implijit ar furmskrid-mañ evit kemmañ ho poellad." #: actions/tagrss.php:35 +#, fuzzy msgid "No such tag." -msgstr "" - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" +msgstr "N'eus ket eus ar bajenn-se." #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "N'o peus ket stanket an implijer-mañ." #: actions/unsandbox.php:72 +#, fuzzy msgid "User is not sandboxed." -msgstr "" +msgstr "Er poull-traezh emañ dija an implijer." #: actions/unsilence.php:72 +#, fuzzy msgid "User is not silenced." -msgstr "" +msgstr "Lakaet eo bet da mut an implijer-mañ dija." #: actions/unsubscribe.php:77 msgid "No profile ID in request." @@ -4305,10 +4413,12 @@ msgid "Unsubscribed" msgstr "Digoumanantet" #: actions/updateprofile.php:64 actions/userauthorization.php:337 -#, php-format +#, fuzzy, php-format msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" +"Aotre-implijout ar menegoù \"%1$s\" ne ya ket gant aotre-implijout al " +"lec'hienn \"%2$s\"." #. TRANS: User admin panel title #: actions/useradminpanel.php:59 @@ -4317,8 +4427,9 @@ msgid "User" msgstr "Implijer" #: actions/useradminpanel.php:70 +#, fuzzy msgid "User settings for this StatusNet site." -msgstr "" +msgstr "Arventennoù design evit al lec'hienn StatusNet-mañ." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4356,16 +4467,20 @@ msgid "New user welcome" msgstr "Degemer an implijerien nevez" #: actions/useradminpanel.php:236 +#, fuzzy msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Re hir eo an anv (255 arouezenn d'ar muiañ)." #: actions/useradminpanel.php:241 msgid "Default subscription" msgstr "Koumanantoù dre ziouer" #: actions/useradminpanel.php:242 +#, fuzzy msgid "Automatically subscribe new users to this user." msgstr "" +"En em enskrivañ ez emgefre d'an holl re hag en em goumanant din (erbedet " +"evit an implijerien nann-denel)" #: actions/useradminpanel.php:251 msgid "Invitations" @@ -4376,8 +4491,9 @@ msgid "Invitations enabled" msgstr "Pedadennoù gweredekaet" #: actions/useradminpanel.php:258 +#, fuzzy msgid "Whether to allow users to invite new users." -msgstr "" +msgstr "Ma rankomp merañ an dalc'hoù hon unan." #: actions/userauthorization.php:105 msgid "Authorize subscription" @@ -4390,7 +4506,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Aotre implijout" @@ -4511,29 +4627,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Hizivadennoù eus %1$s e %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Aozerien" -#: actions/version.php:168 +#: 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 " @@ -4541,7 +4657,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4549,167 +4665,265 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Pluginoù" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Stumm" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Aozer(ien)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 +#, fuzzy msgid "Could not update local group." -msgstr "" +msgstr "Diposubl eo hizivaat ar strollad." -#: classes/Login_token.php:76 -#, php-format +#. 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 "Diposubl eo krouiñ an aliasoù." + +#. 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 "" -#: classes/Message.php:45 +#. 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 "" +msgstr "Ur gudenn 'zo bet pa veze kaset ho kemennadenn." -#: 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. %s are the error details. -#: classes/Notice.php:176 +#. 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 "Database error inserting hashtag: %s" +msgid "No such profile (%1$d) for notice (%2$d)." msgstr "" -#: classes/Notice.php:245 +#. TRANS: Server exception. %s are the error details. +#: classes/Notice.php:190 +#, fuzzy, php-format +msgid "Database error inserting hashtag: %s" +msgstr "Ur fazi 'zo bet en ur ensoc'hañ an avatar" + +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:260 msgid "Problem saving notice. Too long." -msgstr "" +msgstr "Ur gudenn a zo bet e-pad enrolladenn ar c'hemenn. Re hir." -#: classes/Notice.php:249 +#. 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 "" +msgstr "Ur gudenn a zo bet e-pad enrolladenn ar c'hemenn. Implijer dianav." -#: classes/Notice.php:254 +#. 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:260 +#. 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:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:286 +#, fuzzy msgid "You are banned from posting notices on this site." -msgstr "" +msgstr "Ne c'helloc'h ket reiñ rolloù d'an implijerien eus al lec'hienn-mañ." -#: classes/Notice.php:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 "Mankout a ra ar profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Dibosupl eo enrollañ an tikedenn." + +#. 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 dilemel 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." -msgstr "Diposubl eo dilemel ar postel kadarnadur." +msgid "Could not delete subscription OMB token." +msgstr "Dibosupl eo dilemel ar c'houmanant." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Dibosupl eo paouez gant ar c'houmanant." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Dibosupl eo dilemel 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." @@ -4760,188 +4974,190 @@ msgid "Untitled page" msgstr "Pajenn hep anv" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 +#, fuzzy msgid "Primary site navigation" -msgstr "" +msgstr "Arventennoù diazez al lec'hienn" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personel" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Kemmañ ho chomlec'h postel, hoc'h avatar, ho ger-tremen, ho profil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Liammañ d'ar servijoù" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Kevreañ" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Kemmañ arventennoù al lec'hienn" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Merañ" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Pediñ mignoned hag kenseurted da zont ganeoc'h war %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Pediñ" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Digevreañ diouzh al lec'hienn" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Digevreañ" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Krouiñ ur gont" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "En em enskrivañ" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Kevreañ d'al lec'hienn" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Kevreañ" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Sikour din !" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Skoazell" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Klask tud pe un tamm testenn" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Klask" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Ali al lec'hienn" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Selloù lec'hel" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Ali ar bajenn" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 +#, fuzzy msgid "Secondary site navigation" -msgstr "" +msgstr "Arventennoù diazez al lec'hienn" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Skoazell" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Diwar-benn" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAG" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "AIH" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Prevezded" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Mammenn" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Darempred" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Badj" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Aotre-implijout ar meziant StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4949,13 +5165,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** a zo ur servij microblogging." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4964,49 +5180,49 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Aotre-implijout diwar-benn danvez al lec'hienn" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 -#, php-format +#: lib/action.php:857 +#, fuzzy, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +msgstr "Kompren a ran ez eo prevez danvez ha roadennoù %1$s." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Pajennadur" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "War-lerc'h" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Kent" @@ -5029,8 +5245,9 @@ msgstr "" #. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights. #: lib/adminpanelaction.php:98 +#, fuzzy msgid "You cannot make changes to this site." -msgstr "" +msgstr "Ne c'helloc'h ket reiñ rolloù d'an implijerien eus al lec'hienn-mañ." #. TRANS: Client error message throw when a certain panel's settings cannot be changed. #: lib/adminpanelaction.php:110 @@ -5054,64 +5271,64 @@ msgid "Unable to delete design setting." msgstr "Dibosupl eo dilemel an arventennoù krouiñ." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Arventennoù diazez al lec'hienn" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Lec'hienn" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Kefluniadur ar c'hrouiñ" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Design" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Kefluniadur an implijer" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Implijer" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Kefluniadur ar moned" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Kefluniadur an hentoù" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Kefluniadur an dalc'hoù" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Kemmañ ali al lec'hienn" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Kefluniadur ar primoù" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5239,14 +5456,15 @@ msgid "Notices where this attachment appears" msgstr "" #: lib/attachmenttagcloudsection.php:48 +#, fuzzy msgid "Tags for this attachment" -msgstr "" +msgstr "N'eo ket bet kavet ar restr stag." -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "N'eo ket aet betek penn kemmañ ar ger-tremen" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "N'eo ket aotreet kemmañ ar ger-tremen" @@ -5341,14 +5559,14 @@ msgstr "Anv klok : %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Lec'hiadur : %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Lec'hienn Web : %s" @@ -5397,18 +5615,21 @@ msgstr "Ali bet adkemeret dija" #. 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 +#, fuzzy, php-format msgid "Notice from %s repeated" -msgstr "" +msgstr "Ali adkemeret" #: lib/command.php:531 +#, fuzzy msgid "Error repeating notice." -msgstr "" +msgstr "Fazi en ur hizivaat ar profil a-bell." #: lib/command.php:562 -#, php-format +#, fuzzy, php-format msgid "Notice too long - maximum is %d characters, you sent %d" msgstr "" +"Re hir eo ar gemennadenn - ar ment brasañ a zo %1$d arouezenn, %2$d " +"arouezenn o peus lakaet" #: lib/command.php:571 #, php-format @@ -5416,8 +5637,9 @@ msgid "Reply to %s sent" msgstr "Respont kaset da %s" #: lib/command.php:573 +#, fuzzy msgid "Error saving notice." -msgstr "" +msgstr "Ur gudenn 'zo bet pa veze enrollet an ali." #: lib/command.php:620 msgid "Specify the name of the user to subscribe to" @@ -5430,7 +5652,7 @@ msgstr "" #: lib/command.php:634 #, php-format msgid "Subscribed to %s" -msgstr "" +msgstr "Koumanantet da %s" #: lib/command.php:655 lib/command.php:754 msgid "Specify the name of the user to unsubscribe from" @@ -5439,11 +5661,12 @@ msgstr "" #: lib/command.php:664 #, php-format msgid "Unsubscribed from %s" -msgstr "" +msgstr "Digoumanantiñ da %s" #: lib/command.php:682 lib/command.php:705 +#, fuzzy msgid "Command not yet implemented." -msgstr "" +msgstr "Digarezit, n'eo ket bet emplementet an urzhiad-mañ c'hoazh." #: lib/command.php:685 msgid "Notification off." @@ -5451,7 +5674,7 @@ msgstr "Kemennoù diweredekaet." #: lib/command.php:687 msgid "Can't turn off notification." -msgstr "" +msgstr "Dibosupl eo diweredekaat ar c'hemennoù." #: lib/command.php:708 msgid "Notification on." @@ -5459,7 +5682,7 @@ msgstr "Kemennoù gweredekaet" #: lib/command.php:710 msgid "Can't turn on notification." -msgstr "" +msgstr "Dibosupl eo gweredekaat ar c'hemennoù." #: lib/command.php:723 msgid "Login command is disabled" @@ -5468,7 +5691,7 @@ msgstr "Diweredekaet eo an urzhiad evit digeriñ un dalc'h" #: lib/command.php:734 #, php-format msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "" +msgstr "Implijadus eo al liamm-se ur wech hepken, hag e-pad 2 vunutenn : %s" #: lib/command.php:761 #, php-format @@ -5477,25 +5700,25 @@ msgstr "Digoumanantet eus %s" #: lib/command.php:778 msgid "You are not subscribed to anyone." -msgstr "" +msgstr "N'hoc'h ket koumanantet da zen ebet." #: 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:" +msgstr[0] "Koumanantet oc'h dija d'an implijerien-mañ :" +msgstr[1] "Koumanantet oc'h dija d'an implijerien-mañ :" #: lib/command.php:800 msgid "No one is subscribed to you." -msgstr "" +msgstr "Den n'eo koumanantet deoc'h." #: 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:" +msgstr[0] "Den n'eo koumanantet deoc'h." +msgstr[1] "Den n'eo koumanantet deoc'h." #: lib/command.php:822 msgid "You are not a member of any groups." @@ -5505,8 +5728,8 @@ msgstr "N'oc'h ezel eus strollad ebet." #, 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:" +msgstr[0] "N'oc'h ket ezel eus ar strollad-mañ." +msgstr[1] "N'oc'h ket ezel eus ar strollad-mañ." #: lib/command.php:838 msgid "" @@ -5552,7 +5775,7 @@ msgstr "" #: lib/common.php:135 msgid "No configuration file found. " -msgstr "" +msgstr "N'eo bet kavet restr kefluniadur ebet. " #: lib/common.php:136 msgid "I looked for configuration files in the following places: " @@ -5583,16 +5806,17 @@ msgid "Connections" msgstr "Kevreadennoù" #: lib/connectsettingsaction.php:121 +#, fuzzy msgid "Authorized connected applications" -msgstr "" +msgstr "Poeladoù kevreet." #: lib/dberroraction.php:60 msgid "Database error" -msgstr "" +msgstr "Fazi bank roadennoù" #: lib/designsettings.php:105 msgid "Upload file" -msgstr "" +msgstr "Enporzhiañ ar restr" #: lib/designsettings.php:109 msgid "" @@ -5600,20 +5824,21 @@ msgid "" msgstr "" #: lib/designsettings.php:418 +#, fuzzy msgid "Design defaults restored." -msgstr "" +msgstr "Enrollet eo bet an arventennoù design." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" -msgstr "" +msgstr "Tennañ eus ar pennrolloù" #: lib/favorform.php:114 lib/favorform.php:140 msgid "Favor this notice" -msgstr "" +msgstr "Ouzhpennañ d'ar pennrolloù" #: lib/favorform.php:140 msgid "Favor" -msgstr "" +msgstr "Pennrolloù" #: lib/feed.php:85 msgid "RSS 1.0" @@ -5644,8 +5869,9 @@ msgid "All" msgstr "An holl" #: lib/galleryaction.php:139 +#, fuzzy msgid "Select tag to filter" -msgstr "" +msgstr "Dibab un douger" #: lib/galleryaction.php:140 msgid "Tag" @@ -5665,22 +5891,25 @@ msgid "Grant this user the \"%s\" role" msgstr "" #: lib/groupeditform.php:163 +#, fuzzy msgid "URL of the homepage or blog of the group or topic" -msgstr "" +msgstr "URL pajenn degemer ar poellad-mañ" #: lib/groupeditform.php:168 +#, fuzzy msgid "Describe the group or topic" -msgstr "" +msgstr "Deskrivit ho poellad" #: lib/groupeditform.php:170 -#, php-format +#, fuzzy, php-format msgid "Describe the group or topic in %d characters" -msgstr "" +msgstr "Diskrivit ho poellad gant %d arouezenn" #: lib/groupeditform.php:179 +#, fuzzy msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "" +msgstr "El lec'h m'emaoc'h, da skouer \"Kêr, Stad (pe Rannvro), Bro\"" #: lib/groupeditform.php:187 #, php-format @@ -5701,9 +5930,9 @@ msgid "%s blocked users" msgstr "%s implijer stanket" #: lib/groupnav.php:108 -#, php-format +#, fuzzy, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Kemmañ ar strollad %s" #: lib/groupnav.php:113 msgid "Logo" @@ -5715,13 +5944,14 @@ msgid "Add or edit %s logo" msgstr "Ouzhpennañ pe kemmañ logo %s" #: lib/groupnav.php:120 -#, php-format +#, fuzzy, php-format msgid "Add or edit %s design" -msgstr "" +msgstr "Ouzhpennañ pe kemmañ logo %s" #: lib/groupsbymemberssection.php:71 +#, fuzzy msgid "Groups with most members" -msgstr "" +msgstr "Ezel eo %s eus ar strolladoù" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" @@ -5738,17 +5968,19 @@ msgid "This page is not available in a media type you accept" msgstr "" #: lib/imagefile.php:72 +#, fuzzy msgid "Unsupported image file format." -msgstr "" +msgstr "Diembreget eo ar furmad-se." #: lib/imagefile.php:88 -#, php-format +#, fuzzy, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" +msgstr "Re hir eo ! Ment hirañ an ali a zo a %d arouezenn." #: lib/imagefile.php:93 +#, fuzzy msgid "Partial upload." -msgstr "" +msgstr "N'eus bet enporzhiet restr ebet." #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." @@ -5780,9 +6012,9 @@ msgid "[%s]" msgstr "[%s]" #: lib/jabber.php:567 -#, php-format +#, fuzzy, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "Yezh \"%s\" dizanv." #: lib/joinform.php:114 msgid "Join" @@ -5793,8 +6025,9 @@ msgid "Leave" msgstr "Kuitaat" #: lib/logingroupnav.php:80 +#, fuzzy msgid "Login with a username and password" -msgstr "" +msgstr "Kevreit gant ho anv implijer hag ho ker-tremen." #: lib/logingroupnav.php:86 msgid "Sign up for a new account" @@ -5825,12 +6058,19 @@ msgstr "" #. TRANS: Subject of new-subscriber notification e-mail #: lib/mail.php:243 -#, php-format +#, fuzzy, php-format msgid "%1$s is now listening to your notices on %2$s." +msgstr "Ne heuilh %s den ebet." + +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5846,19 +6086,19 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 -#, php-format +#: lib/mail.php:274 +#, fuzzy, php-format msgid "Bio: %s" -msgstr "" +msgstr "Lec'hiadur : %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Chomlec'h postel nevez evit embann e %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -5872,30 +6112,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Statud %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Kadarnadur SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 -#, php-format +#: lib/mail.php:463 +#, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "" +msgstr "Niverenn pellgomz o c'hortoz bezañ kadarnaet." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -5912,13 +6152,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Kemenadenn personel nevez a-berzh %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -5938,13 +6178,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 -#, php-format +#: lib/mail.php:589 +#, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "" +msgstr "Kas din ur postel pa lak unan bennak unan eus va alioù evel pennroll." #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -5966,7 +6206,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -5977,13 +6217,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) en deus kaset deoc'h ur c'hemenn" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6011,8 +6251,9 @@ msgid "" msgstr "" #: lib/mailbox.php:89 +#, fuzzy msgid "Only the user can read their own mailboxes." -msgstr "" +msgstr "N'eus nemet an implijerien kevreet hag a c'hell adkemer alioù." #: lib/mailbox.php:139 msgid "" @@ -6020,30 +6261,33 @@ 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:228 lib/noticelist.php:506 msgid "from" msgstr "eus" #: lib/mailhandler.php:37 +#, fuzzy msgid "Could not parse message." -msgstr "" +msgstr "Diposubl eo ensoc'hañ ur gemenadenn" #: lib/mailhandler.php:42 msgid "Not a registered user." msgstr "N'eo ket un implijer enrollet." #: lib/mailhandler.php:46 +#, fuzzy msgid "Sorry, that is not your incoming email address." -msgstr "" +msgstr "N'eo ket ho postel." #: lib/mailhandler.php:50 +#, fuzzy msgid "Sorry, no incoming email allowed." -msgstr "" +msgstr "Chomlec'h postel ebet o tont." #: lib/mailhandler.php:228 -#, php-format +#, fuzzy, php-format msgid "Unsupported message type: %s" -msgstr "" +msgstr "Diembreget eo ar furmad-se." #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." @@ -6075,24 +6319,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 "" +msgstr "Diposubl eo termeniñ an implijer mammenn." -#: 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 "" @@ -6106,8 +6351,9 @@ msgid "To" msgstr "Da" #: lib/messageform.php:159 lib/noticeform.php:185 +#, fuzzy msgid "Available characters" -msgstr "" +msgstr "6 arouezenn pe muioc'h" #: lib/messageform.php:178 lib/noticeform.php:236 msgctxt "Send button for sending notice" @@ -6146,51 +6392,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:568 msgid "in context" msgstr "en amdro" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Adkemeret gant" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Respont d'an ali-mañ" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Respont" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Ali adkemeret" @@ -6215,20 +6461,23 @@ msgid "Error inserting avatar" msgstr "Ur fazi 'zo bet en ur ensoc'hañ an avatar" #: lib/oauthstore.php:306 +#, fuzzy msgid "Error updating remote profile" -msgstr "" +msgstr "Fazi en ur hizivaat ar profil a-bell." #: lib/oauthstore.php:311 +#, fuzzy msgid "Error inserting remote profile" -msgstr "" +msgstr "Ur fazi 'zo bet en ur ensoc'hañ ar profil nevez" #: lib/oauthstore.php:345 msgid "Duplicate notice" msgstr "Eilañ an ali" #: lib/oauthstore.php:490 +#, fuzzy msgid "Couldn't insert new subscription." -msgstr "" +msgstr "Dibosupl eo dilemel ar c'houmanant." #: lib/personalgroupnav.php:99 msgid "Personal" @@ -6259,9 +6508,9 @@ msgid "Your sent messages" msgstr "Ar c'hemenadennoù kaset ganeoc'h" #: lib/personaltagcloudsection.php:56 -#, php-format +#, fuzzy, php-format msgid "Tags in %s's notices" -msgstr "" +msgstr "N'eus ali nevez evit an implijer-mañ" #: lib/plugin.php:115 msgid "Unknown" @@ -6300,7 +6549,7 @@ msgstr "Keidenn pemdeziek" msgid "All groups" msgstr "An holl strolladoù" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6317,16 +6566,18 @@ msgid "Recent tags" msgstr "Merkoù nevez" #: lib/publicgroupnav.php:88 +#, fuzzy msgid "Featured" -msgstr "" +msgstr "Krouet" #: lib/publicgroupnav.php:92 msgid "Popular" msgstr "Poblek" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 +#, fuzzy msgid "No return-to arguments." -msgstr "" +msgstr "Arguzenn ID ebet." #: lib/repeatform.php:107 msgid "Repeat this notice?" @@ -6345,7 +6596,7 @@ msgstr "Adkregiñ gant an ali-mañ" msgid "Revoke the \"%s\" role from this user" msgstr "Stankañ an implijer-mañ eus ar strollad-se" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6354,8 +6605,9 @@ msgid "Sandbox" msgstr "Poull-traezh" #: lib/sandboxform.php:78 +#, fuzzy msgid "Sandbox this user" -msgstr "" +msgstr "Distankañ an implijer-mañ" #: lib/searchaction.php:120 msgid "Search site" @@ -6402,18 +6654,19 @@ msgid "Silence" msgstr "Didrouz" #: lib/silenceform.php:78 +#, fuzzy msgid "Silence this user" -msgstr "" +msgstr "Diverkañ an implijer-mañ" #: lib/subgroupnav.php:83 -#, php-format +#, fuzzy, php-format msgid "People %s subscribes to" -msgstr "" +msgstr "Koumanantet da %s" #: lib/subgroupnav.php:91 -#, php-format +#, fuzzy, php-format msgid "People subscribed to %s" -msgstr "" +msgstr "Koumanantet da %s" #: lib/subgroupnav.php:99 #, php-format @@ -6425,9 +6678,9 @@ msgid "Invite" msgstr "Pediñ" #: lib/subgroupnav.php:106 -#, php-format +#, fuzzy, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "" +msgstr "Pediñ mignoned hag kenseurted da zont ganeoc'h war %s" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 @@ -6443,25 +6696,73 @@ msgstr "" msgid "None" msgstr "Hini ebet" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Ur gudenn 'zo bet e-pad hizivadenn an avatar." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Fazi en ur hizivaat ar profil a-bell." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "An implijerien an efedusañ" #: lib/unsandboxform.php:69 +#, fuzzy msgid "Unsandbox" -msgstr "" +msgstr "Poull-traezh" #: lib/unsandboxform.php:80 +#, fuzzy msgid "Unsandbox this user" -msgstr "" +msgstr "Distankañ an implijer-mañ" #: lib/unsilenceform.php:67 +#, fuzzy msgid "Unsilence" -msgstr "" +msgstr "Didrouz" #: lib/unsilenceform.php:78 +#, fuzzy msgid "Unsilence this user" -msgstr "" +msgstr "Distankañ an implijer-mañ" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" @@ -6523,56 +6824,56 @@ msgid "Moderator" msgstr "Habasker" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "un nebeud eilennoù zo" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "1 vunutenn zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "%d munutenn zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "1 eurvezh zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "%d eurvezh zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "1 devezh zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "%d devezh zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "miz zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "%d miz zo well-wazh" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "bloaz zo well-wazh" diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po index d2bb7867a..d7de3b4d6 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:32+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:12+0000\n" "Language-Team: Catalan\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Accés" @@ -87,24 +88,24 @@ msgid "Save" msgstr "Desa" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "No existeix la pà gina." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -117,7 +118,7 @@ msgid "No such user." msgstr "No existeix l'usuari." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s i amics, pà gina %2$d" @@ -125,33 +126,33 @@ msgstr "%1$s i amics, pà gina %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 i amics" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Canal dels amics de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Canal dels amics de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Canal dels amics de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -159,7 +160,7 @@ msgstr "" "Aquesta és la lÃnia temporal de %s i amics, però ningú hi ha publicat res " "encara." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -169,78 +170,78 @@ msgstr "" "publiqueu quelcom personal." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" "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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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ó." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Un mateix i amics" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Actualitzacions de %1$s i amics a %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "No s'ha trobat el mètode API!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Aquest mètode requereix POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -248,7 +249,7 @@ msgstr "" "Heu d'especificar un parà metre anomenat 'device' (dispositiu) amb un valor " "dels següents: sms, im, none (cap)" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "No s'ha pogut actualitzar l'usuari." @@ -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:210 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 @@ -346,29 +347,30 @@ msgstr "" "No es pot enviar missatges directes a usuaris que no siguin els vostres " "amics." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "No s'ha trobat cap estat amb aquest ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Aquest estat ja és un preferit." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "No es pot crear el preferit." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "L'estat no és un preferit." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -396,125 +399,130 @@ msgstr "No s'ha pogut determinar l'usuari d'origen." msgid "Could not find target user." msgstr "No s'ha pogut trobar l'usuari de destinació." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "El sobrenom ha de tenir només lletres minúscules i números i no pot tenir " "espais." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Aquest sobrenom ja existeix. Prova un altre. " -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Sobrenom no và lid." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "La pà gina personal no és un URL và lid." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "El vostre nom sencer és massa llarg (mà x. 255 carà cters)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "La descripció és massa llarga (mà x. %d carà cters)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "La ubicació és massa llarga (mà x. 255 carà cters)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Hi ha massa à lies! Mà xim %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "L'à lies no és và lid: «%s»." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "L'à lies «%s» ja està en ús. Proveu-ne un altre." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "L'à lies no pot ser el mateix que el sobrenom." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "No s'ha trobat el grup." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Ja sou membre del grup." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "L'administrador us ha blocat del grup." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "No s'ha pogut afegir l'usuari %1$s al grup %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "No sou un membre del grup." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "No s'ha pogut eliminar l'usuari %1$s del grup %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Grups de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1$s grups dels que %2$s és membre." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s grups" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -525,15 +533,15 @@ msgstr "El testimoni no és và lid." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -601,12 +609,12 @@ msgstr "" "haurÃeu de donar accés al compte %4$s a terceres parts en què confieu." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Compte" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -614,8 +622,8 @@ msgid "Nickname" msgstr "Sobrenom" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Contrasenya" @@ -631,11 +639,11 @@ msgstr "Permet" msgid "Allow or deny access to your account information." msgstr "Permet o denega l'accés a la informació del vostre compte." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Aquest mètode requereix POST o DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "No podeu eliminar l'estat d'un altre usuari." @@ -652,59 +660,63 @@ msgstr "No podeu repetir els vostres propis avisos." msgid "Already repeated that notice." msgstr "AvÃs duplicat." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "S'ha eliminat l'estat." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "No s'ha trobat cap estatus amb la ID trobada." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "No s'ha trobat." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Preferits de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s actualitzacions preferides per %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Actualitzacions que mencionen %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s actualitzacions que responen a avisos de %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s lÃnia temporal pública" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s actualitzacions de tothom!" @@ -719,16 +731,20 @@ msgstr "Repetit a %s" msgid "Repeats of %s" msgstr "Repeticions de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: 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:106 actions/tagrss.php:65 +#: 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" @@ -824,11 +840,11 @@ msgstr "S'ha eliminat l'avatar." msgid "You already blocked that user." msgstr "Ja heu blocat l'usuari." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloca l'usuari" -#: actions/block.php:130 +#: 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 " @@ -843,7 +859,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -852,7 +868,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "No bloquis l'usuari" @@ -861,7 +877,7 @@ msgstr "No bloquis l'usuari" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -869,11 +885,11 @@ msgid "Yes" msgstr "SÃ" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Bloca aquest usuari" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "No s'ha pogut desar la informació del bloc." @@ -1000,7 +1016,7 @@ msgstr "No sou el propietari d'aquesta aplicació." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "S'ha produït un problema amb el testimoni de la vostra sessió." @@ -1034,7 +1050,7 @@ msgstr "Elimina aquesta aplicació" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "No heu iniciat una sessió." @@ -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" @@ -1105,45 +1121,53 @@ msgstr "Disseny" msgid "Design settings for this StatusNet site." msgstr "Parà metres de disseny d'aquest lloc StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "L'URL del logotip no és và lid." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema no disponible: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Canvia el logotip" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logotip del lloc" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Canvia el tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Tema del lloc" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema del lloc." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Tema personalitzat" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Podeu pujar un tema personalitzat de l'StatusNet amb un arxiu ZIP." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Canvia la imatge de fons" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Fons" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1152,57 +1176,65 @@ msgstr "" "Podeu pujar una imatge de fons per al lloc. La mida mà xima de fitxer és %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Activada" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Desactivada" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Activa o desactiva la imatge de fons." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Posa en mosaic la imatge de fons" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Canvia els colors" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Contingut" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra lateral" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Enllaços" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avançat" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personalitzat" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Utilitza els parà metres per defecte" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaura els dissenys per defecte" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Torna a restaurar al valor per defecte" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1210,9 +1242,9 @@ 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:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Desa el disseny" @@ -1326,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." @@ -1455,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 @@ -1483,7 +1517,7 @@ msgid "Cannot normalize that email address" msgstr "No es pot normalitzar l'adreça electrònica." #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Adreça de correu electrònic no và lida." @@ -1711,13 +1745,13 @@ msgstr "L'usuari ja té aquest rol." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "No s'ha especificat cap perfil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "No hi ha cap perfil amb aquesta ID." @@ -1857,7 +1891,7 @@ msgstr "Fes l'usuari administrador" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s lÃnia temporal" @@ -2148,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:" @@ -2160,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 "" @@ -2286,43 +2319,43 @@ msgstr "No ets membre d'aquest grup." msgid "%1$s left group %2$s" msgstr "%1$s ha abandonat el grup %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: 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:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nom d'usuari o contrasenya incorrectes." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "S'ha produït un error en definir l'usuari. Probablement no hi esteu " "autoritzat." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Inici de sessió" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Accedir al lloc" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Recorda'm" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Inicia la sessió automà ticament en el futur; no ho activeu en ordinadors " "compartits!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Contrasenya oblidada o perduda?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2330,11 +2363,11 @@ msgstr "" "Per raons de seguretat, torneu a escriure el vostre nom d'usuari i " "contrasenya abans de canviar la vostra configuració." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Inicieu una sessió amb nom d'usuari i contrasenya" -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2484,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." @@ -2542,30 +2576,30 @@ msgstr "" "Els desenvolupadors poden editar els parà metres de registre de llurs " "aplicacions " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "L'avÃs no té cap perfil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "estat de %1$s a %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "El tipus de contingut %s no està permès." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2671,9 +2705,9 @@ msgid "6 or more characters" msgstr "6 o més carà cters" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" -msgstr "Confirmar" +msgstr "Confirma" #: actions/passwordsettings.php:113 actions/recoverpassword.php:240 msgid "Same as password above" @@ -2681,13 +2715,13 @@ msgstr "Igual a la contrasenya de dalt" #: actions/passwordsettings.php:117 msgid "Change" -msgstr "Canviar" +msgstr "Canvia" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "La contrasenya hauria de ser d'entre 6 a més carà cters." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Les contrasenyes no coincideixen." @@ -2708,7 +2742,7 @@ msgid "Password saved." msgstr "Contrasenya guardada." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Camins" @@ -2914,43 +2948,43 @@ msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" "1-64 lletres en minúscula o números, sense signes de puntuació o espais" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nom complet" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Pà gina personal" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL del teu web, blog o perfil en un altre lloc" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Descriviu qui sou i els vostres interessos en %d carà cters" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Feu una descripció personal i interessos" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Biografia" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Ubicació" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "On us trobeu, per exemple «ciutat, comarca (o illa), paÃs»" @@ -2994,18 +3028,18 @@ msgstr "" "Subscripció automà tica a qualsevol qui em tingui subscrit (ideal per no-" "humans)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "La biografia és massa llarga (mà x. %d carà cters)." #: actions/profilesettings.php:235 actions/siteadminpanel.php: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 @@ -3031,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 @@ -3142,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." @@ -3191,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 @@ -3220,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." @@ -3236,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 "" @@ -3258,7 +3292,7 @@ msgstr "La contrasenya ha de tenir 6 o més carà cters." msgid "Password and confirmation do not match." msgstr "La contrasenya i la confirmació no coincideixen." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Error en configurar l'usuari." @@ -3266,39 +3300,39 @@ msgstr "Error en configurar l'usuari." msgid "New password successfully saved. You are now logged in." msgstr "Nova contrasenya guardada correctament. Has iniciat una sessió." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Ho sentim, però només la gent convidada pot registrar-s'hi." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "El codi d'invitació no és và lid." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registre satisfactori" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registre" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registre no permès." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "No pots registrar-te si no està s d'acord amb la llicència." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "L'adreça de correu electrònic ja existeix." -#: actions/register.php:243 actions/register.php:265 +#: 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:343 +#: 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. " @@ -3306,57 +3340,58 @@ msgstr "" "Amb aquest formulari, podeu crear un compte nou. Podeu enviar avisos i " "enllaçar a amics i col·legues. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 lletres en minúscula o números, sense puntuacions ni espais. Requerit." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 o més carà cters. Requerit." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Igual a la contrasenya de dalt. Requerit." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Correu electrònic" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Utilitzat només per a actualitzacions, anuncis i recuperació de contrasenya" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nom llarg, preferiblement el vostre nom «real»" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "El contingut i les dades de %1$s són privades i confidencials." +msgstr "" +"Entenc que el contingut i les dades de %1$s són privades i confidencials." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "El meu text i els meus fitxers són copyright de %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "El meu text i els meus fitxers es troben sota el meu propi copyright." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Tots els drets reservats." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3366,7 +3401,7 @@ msgstr "" "les dades privades: contrasenya, adreça de correu electrònic, adreça de " "missatgeria instantà nia i número de telèfon." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3399,7 +3434,7 @@ msgstr "" "\n" "Grà cies per registrar-vos-hi i esperem que en gaudiu." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3446,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)" @@ -3482,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" @@ -3517,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ó." @@ -3535,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 @@ -3556,7 +3591,7 @@ msgstr "No podeu revocar els rols d'usuari en aquest lloc." msgid "User doesn't have this role." msgstr "L'usuari no té aquest rol." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3570,7 +3605,7 @@ msgstr "L'usuari ja es troba en un entorn de proves." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessions" @@ -3613,7 +3648,7 @@ msgid "Icon" msgstr "Icona" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nom" @@ -3624,12 +3659,12 @@ msgid "Organization" msgstr "Organització" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3717,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 " @@ -3792,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" @@ -3806,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." @@ -3826,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." @@ -3839,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" @@ -3915,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 @@ -4102,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 @@ -4162,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. @@ -4183,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 @@ -4250,7 +4285,7 @@ msgstr "No s'ha introduït cap codi" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Instantà nies" @@ -4310,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ó." @@ -4490,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." @@ -4594,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 "" @@ -4606,7 +4638,7 @@ msgstr "" "us als avisos d'aquest usuari. Si no heu demanat subscriure-us als avisos de " "ningú, feu clic a «Rebutja»." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Llicència" @@ -4735,18 +4767,18 @@ msgstr "Proveu de [cercar grups](%%action.groupsearch%%) i unir-vos-hi." #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Actualitzacions de %1$s a %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4755,11 +4787,11 @@ msgstr "" "El lloc funciona grà cies a %1$s versió %2$s. Copyright 2008-2010 StatusNet, " "Inc. i col·laboradors." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Col·laboració" -#: actions/version.php:168 +#: 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 " @@ -4771,7 +4803,7 @@ msgstr "" "i com la publica la Free Software Foundation; tant per a la versió 3 de la " "llicència, com (a la vostra discreció) per a una versió posterior. " -#: actions/version.php:174 +#: 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 " @@ -4783,7 +4815,7 @@ msgstr "" "comercialització o idoneïtat per a cap propòsit en particular. Consulteu la " "llicència GNU Affero General Public License per a més detalls. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4792,96 +4824,144 @@ msgstr "" "HaurÃeu d'haver rebut una còpia de la llicència GNU Affero General Public " "License juntament amb el programa. Si no és aixÃ, consulteu %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Connectors" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versió" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autoria" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4889,71 +4969,122 @@ msgstr "" "Massa missatges duplicats en massa poc temps; preneu un respir i torneu a " "enviar en uns minuts." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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." -#: classes/Notice.php:967 +#. 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 "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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5004,188 +5135,188 @@ msgid "Untitled page" msgstr "Pà gina sense titol" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navegació primà ria del lloc" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Perfil personal i lÃnia temporal dels amics" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Canvia l'adreça electrònica, l'avatar, la contrasenya o el perfil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Connecta als serveis" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Connexió" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Canvia la configuració del lloc" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrador" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Convida amics i coneguts perquè participin a %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Convida" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Finalitza la sessió del lloc" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Finalitza la sessió" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Crea un compte" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registre" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Inicia una sessió al lloc" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Inici de sessió" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ajuda'm!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Ajuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Cerca gent o text" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Cerca" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "AvÃs del lloc" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Vistes locals" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "AvÃs de pà gina" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navegació del lloc secundà ria" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Ajuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Quant a" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Preguntes més freqüents" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Termes del servei" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privadesa" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Font" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contacte" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "InsÃgnia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Llicència del programari StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5195,13 +5326,13 @@ msgstr "" "site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** és un servei de microblogging." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5213,34 +5344,34 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Llicència de contingut del lloc" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "El contingut i les dades de %1$s són privades i confidencials." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" "El contingut i les dades són copyright de %1$s. Tots els drets reservats." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "El contingut i les dades són copyright dels col·laboradors. Tots els drets " "reservats." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5248,19 +5379,19 @@ msgstr "" "llicència %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginació" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Posteriors" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Anteriors" @@ -5310,64 +5441,64 @@ msgid "Unable to delete design setting." msgstr "No s'ha pogut eliminar el parà metre de disseny." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuració bà sica del lloc" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Lloc" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuració del disseny" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Disseny" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuració de l'usuari" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Usuari" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuració de l'accés" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuració dels camins" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuració de les sessions" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Edita l'avÃs del lloc" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configuració de les instantà nies" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "El recurs API requereix accés de lectura i d'escriptura, però només en teniu " @@ -5500,11 +5631,11 @@ msgstr "Avisos on apareix l'adjunt" msgid "Tags for this attachment" msgstr "Etiquetes de l'adjunció" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "El canvi de contrasenya ha fallat" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "No es permet el canvi de contrasenya" @@ -5555,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 @@ -5598,14 +5729,14 @@ msgstr "Nom complet: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Localització: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Pà gina web: %s" @@ -6140,8 +6271,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s ara està escoltant els teus avisos a %2$s." +#: 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 "" +"Si creieu que el compte s'està fent servir de forma abusiva, podeu blocar-lo " +"de la llista dels vostres subscriptors i notificar-lo com a brossa als " +"administradors del lloc a %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6167,19 +6308,19 @@ msgstr "" "Canvieu la vostra adreça electrònica o les opcions d'avÃs a %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Biografia: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nou correu electrònic per publicar a %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6201,30 +6342,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s estat" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmació SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: confirmeu-ho si teniu aquest número de telèfon amb aquest codi:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: 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:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6251,13 +6392,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nou missatge privat de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6291,13 +6432,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) ha afegit el vostre avÃs com a preferit" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6335,7 +6476,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6346,13 +6487,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) us ha enviat un avÃs a la vostra atenció" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6378,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" @@ -6415,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" @@ -6476,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." @@ -6549,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" @@ -6703,7 +6844,7 @@ msgstr "Mitjana dià ria" msgid "All groups" msgstr "Tots els grups" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Mètode no implementat" @@ -6727,7 +6868,7 @@ msgstr "Destacat" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "No hi ha arguments de retorn." @@ -6748,7 +6889,7 @@ msgstr "Repeteix l'avÃs" msgid "Revoke the \"%s\" role from this user" msgstr "Revoca el rol «%s» de l'usuari" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "No s'ha definit cap usuari únic per al mode d'usuari únic." @@ -6846,6 +6987,51 @@ msgstr "Núvol d'etiquetes personals" msgid "None" msgstr "Cap" +#: lib/themeuploader.php:50 +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 "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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Ha fallat el desament del tema." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "El tema no és và lid: l'estructura del directori no és correcta" + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"El tema pujat és massa gran; ha de tenir menys de %d bytes descomprimit." + +#: 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 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 "" +"El tema conté un fitxer o un nom de carpeta que no és và lida. Feu servir " +"només lletres ASCII, dÃgits, carà cters de subratllat i el sÃmbol de menys." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "El tema conté un tipus de fitxer «.%s», que no està permès." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "S'ha produït un error en obrir l'arxiu del tema." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Qui més publica" @@ -6926,56 +7112,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "fa pocs segons" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "fa un minut" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "fa %d minuts" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "fa una hora" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "fa %d hores" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "fa un dia" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "fa %d dies" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "fa un mes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "fa %d mesos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "fa un any" diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po index 81489316b..8df43a789 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:35+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:14+0000\n" "Language-Team: Czech\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "PÅ™ijmout" @@ -91,25 +91,25 @@ msgid "Save" msgstr "Uložit" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Žádné takové oznámenÃ." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -122,7 +122,7 @@ msgid "No such user." msgstr "Žádný takový uživatel." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s a přátelé" @@ -130,39 +130,39 @@ msgstr "%s a přátelé" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 a přátelé" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Feed pÅ™Ãtel uživatele: %s" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Feed pÅ™Ãtel uživatele: %s" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, fuzzy, php-format msgid "Feed for friends of %s (Atom)" msgstr "Feed pÅ™Ãtel uživatele: %s" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -170,81 +170,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 #, fuzzy msgid "You and friends" msgstr "%s a přátelé" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "PotvrzujÃcà kód nebyl nalezen" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Nelze aktualizovat uživatele" @@ -266,7 +266,7 @@ msgstr "Nelze uložit profil" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -342,31 +342,32 @@ msgstr "" msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Toto je již vaÅ¡e Jabber" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -397,126 +398,131 @@ msgstr "Nelze aktualizovat uživatele" msgid "Could not find target user." msgstr "Nelze aktualizovat uživatele" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "PÅ™ezdÃvka může obsahovat pouze malá pÃsmena a ÄÃsla bez mezer" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "PÅ™ezdÃvku již nÄ›kdo použÃvá. Zkuste jinou" -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Nenà platnou pÅ™ezdÃvkou." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Stránka nenà platnou URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Jméno je moc dlouhé (maximálnà délka je 255 znaků)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "Text je pÅ™ÃliÅ¡ dlouhý (maximálnà délka je 140 zanků)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "UmÃstÄ›nà pÅ™ÃliÅ¡ dlouhé (maximálnÄ› 255 znaků)" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Neplatná adresa '%s'" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "PÅ™ezdÃvku již nÄ›kdo použÃvá. Zkuste jinou" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Žádný požadavek nebyl nalezen!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "Již jste pÅ™ihlášen" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Nelze pÅ™esmÄ›rovat na server: %s" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "Neodeslal jste nám profil" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Nelze vytvoÅ™it OpenID z: %s" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "Profil" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Neodeslal jste nám profil" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -528,15 +534,15 @@ msgstr "Neplatná velikost" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -600,13 +606,13 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 #, fuzzy msgid "Account" msgstr "O nás" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -614,8 +620,8 @@ msgid "Nickname" msgstr "PÅ™ezdÃvka" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Heslo" @@ -632,11 +638,11 @@ msgstr "" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -655,62 +661,66 @@ msgstr "Nemůžete se registrovat, pokud nesouhlasÃte s licencÃ." msgid "Already repeated that notice." msgstr "Odstranit toto oznámenÃ" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 #, fuzzy msgid "Status deleted." msgstr "Obrázek nahrán" -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 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:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1 statusů na %2" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "Mikroblog od %s" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1 statusů na %2" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -725,16 +735,20 @@ msgstr "OdpovÄ›di na %s" msgid "Repeats of %s" msgstr "OdpovÄ›di na %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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" @@ -832,12 +846,12 @@ msgstr "Avatar smazán." msgid "You already blocked that user." msgstr "Již jste pÅ™ihlášen" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 #, fuzzy msgid "Block user" msgstr "Žádný takový uživatel." -#: actions/block.php:130 +#: 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 " @@ -849,7 +863,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -859,7 +873,7 @@ msgstr "Ne" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "Žádný takový uživatel." @@ -869,7 +883,7 @@ msgstr "Žádný takový uživatel." #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -878,11 +892,11 @@ msgid "Yes" msgstr "Ano" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Zablokovat tohoto uživatele" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -1017,7 +1031,7 @@ msgstr "Neodeslal jste nám profil" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1051,7 +1065,7 @@ msgstr "Odstranit toto oznámenÃ" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "NepÅ™ihlášen" @@ -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Ã" @@ -1121,50 +1135,59 @@ msgstr "Vzhled" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Neplatná velikost" -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Tato stránka nenà k dispozici v typu média která pÅ™ijÃmáte." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "ZmÄ›nit heslo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "Nové sdÄ›lenÃ" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "ZmÄ›nit" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Nové sdÄ›lenÃ" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Nové sdÄ›lenÃ" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "PozadÃ" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1172,58 +1195,66 @@ msgid "" msgstr "Je to pÅ™ÃliÅ¡ dlouhé. Maximálnà sdÄ›lenà délka je 140 znaků" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "ZmÄ›nit barvy" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Obsah" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Hledat" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Odkazy" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1233,7 +1264,7 @@ msgstr "" msgid "Save" msgstr "Uložit" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1356,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" @@ -1519,7 +1551,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Nenà platnou mailovou adresou." @@ -1756,13 +1788,13 @@ msgstr "Uživatel nemá profil." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1906,7 +1938,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "" @@ -2303,51 +2335,51 @@ msgstr "Neodeslal jste nám profil" msgid "%1$s left group %2$s" msgstr "%1 statusů na %2" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Již pÅ™ihlášen" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Neplatné jméno nebo heslo" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "Neautorizován." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "PÅ™ihlásit" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Zapamatuj si mÄ›" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "PÅ™ÃÅ¡tÄ› automaticky pÅ™ihlásit; ne pro poÄÃtaÄe, které použÃvá " -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Ztracené nebo zapomenuté heslo?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "Z bezpeÄnostnÃch důvodů, prosÃm zadejte znovu své jméno a heslo." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Neplatné jméno nebo heslo" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2498,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 @@ -2552,31 +2584,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "SdÄ›lenà nemá profil" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1 statusů na %2" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "PÅ™ipojit" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2688,7 +2720,7 @@ msgid "6 or more characters" msgstr "6 a vÃce znaků" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Heslo znovu" @@ -2700,11 +2732,11 @@ msgstr "Stejné jako heslo výše" msgid "Change" msgstr "ZmÄ›nit" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Hesla nesouhlasÃ" @@ -2725,7 +2757,7 @@ msgid "Password saved." msgstr "Heslo uloženo" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2940,43 +2972,43 @@ msgstr "Neznámý profil" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 znaků nebo ÄÃsel, bez teÄek, Äárek a mezer" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Celé jméno" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Moje stránky" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "Adresa vaÅ¡ich stránek, blogu nebo profilu na jiných stránkách." -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "PopiÅ¡ sebe a své zájmy ve 140 znacÃch" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "PopiÅ¡te sebe a své zájmy" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "O mÄ›" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "UmÃstÄ›nÃ" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "MÃsto. MÄ›sto, stát." @@ -3016,7 +3048,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "Text je pÅ™ÃliÅ¡ dlouhý (maximálnà délka je 140 zanků)" @@ -3268,7 +3300,7 @@ msgstr "Heslo musà být alespoň 6 znaků dlouhé" msgid "Password and confirmation do not match." msgstr "Heslo a potvrzenà nesouhlasÃ" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Chyba nastavenà uživatele" @@ -3276,94 +3308,94 @@ msgstr "Chyba nastavenà uživatele" msgid "New password successfully saved. You are now logged in." msgstr "Nové heslo bylo uloženo. Nynà jste pÅ™ihlášen." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "Chyba v ověřovacÃm kódu" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registrace úspěšná" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrovat" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Nemůžete se registrovat, pokud nesouhlasÃte s licencÃ." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Emailová adresa již existuje" -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Neplatné jméno nebo heslo" -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Email" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Použije se pouze pro aktualizace, oznámenà a obnovu hesla." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3372,7 +3404,7 @@ msgstr "" " až na tyto privátnà data: heslo, emailová adresa, IM adresa, telefonnà " "ÄÃslo." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3391,7 +3423,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3475,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" @@ -3515,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 @@ -3528,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 @@ -3547,7 +3579,7 @@ msgstr "Neodeslal jste nám profil" msgid "User doesn't have this role." msgstr "Uživatel nemá profil." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Obrázek nahrán" @@ -3564,7 +3596,7 @@ msgstr "Uživatel nemá profil." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3609,7 +3641,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3622,13 +3654,13 @@ msgid "Organization" msgstr "UmÃstÄ›nÃ" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 #, fuzzy 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" @@ -3713,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 @@ -3782,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" @@ -3797,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." @@ -3812,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." @@ -3821,7 +3853,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3897,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 @@ -4224,7 +4256,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4287,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" @@ -4460,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." @@ -4582,7 +4611,7 @@ msgstr "" "sdÄ›lenà tohoto uživatele. Pokud ne, ask to subscribe to somone's notices, " "kliknÄ›te na \"ZruÅ¡it\"" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licence" @@ -4713,29 +4742,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "Statistiky" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4743,7 +4772,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4751,181 +4780,278 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "OsobnÃ" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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" @@ -4979,128 +5105,128 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "OsobnÃ" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "ZmÄ›nit heslo" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Nelze pÅ™esmÄ›rovat na server: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "PÅ™ipojit" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "OdbÄ›ry" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Neplatná velikost" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Odhlásit" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "VytvoÅ™it nový úÄet" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Registrovat" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "PÅ™ihlásit" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Pomoci mi!" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "NápovÄ›da" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5108,74 +5234,74 @@ msgstr "Hledat" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "Nové sdÄ›lenÃ" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "Nové sdÄ›lenÃ" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" msgstr "OdbÄ›ry" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "NápovÄ›da" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "O nás" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "SoukromÃ" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Zdroj" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5185,13 +5311,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** je služba mikroblogů." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5203,51 +5329,51 @@ msgstr "" "licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "Nové sdÄ›lenÃ" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 #, fuzzy msgid "After" msgstr "« NovÄ›jÅ¡Ã" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 #, fuzzy msgid "Before" msgstr "Staršà »" @@ -5296,74 +5422,74 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "Nové sdÄ›lenÃ" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Vzhled" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Nové sdÄ›lenÃ" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "Potvrzenà emailové adresy" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5498,12 +5624,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Heslo uloženo" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Heslo uloženo" @@ -5598,14 +5724,14 @@ msgstr "Celé jméno" #. 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:263 +#: 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "" @@ -6105,8 +6231,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1 od teÄ naslouchá tvým sdÄ›lenÃm v %2" +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6128,19 +6261,19 @@ msgstr "" "%4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "O mÄ›" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6154,30 +6287,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6194,13 +6327,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6220,13 +6353,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%1 od teÄ naslouchá tvým sdÄ›lenÃm v %2" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6248,7 +6381,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6256,13 +6389,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6299,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 " @@ -6355,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 "" @@ -6432,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Ã" @@ -6591,7 +6724,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6616,7 +6749,7 @@ msgstr "" msgid "Popular" msgstr "Hledánà lidÃ" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Žádný takový dokument." @@ -6640,7 +6773,7 @@ msgstr "Odstranit toto oznámenÃ" msgid "Revoke the \"%s\" role from this user" msgstr "Žádný takový uživatel." -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6743,6 +6876,50 @@ msgstr "" 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Nahrávánà obrázku selhalo." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Chyba pÅ™i aktualizaci vzdáleného profilu" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6827,56 +7004,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "pÅ™ed pár sekundami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "asi pÅ™ed minutou" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "asi pÅ™ed %d minutami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "asi pÅ™ed hodinou" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "asi pÅ™ed %d hodinami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "asi pÅ™ede dnem" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "pÅ™ed %d dny" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "asi pÅ™ed mÄ›sÃcem" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "asi pÅ™ed %d mesÃci" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "asi pÅ™ed rokem" diff --git a/locale/da/LC_MESSAGES/statusnet.po b/locale/da/LC_MESSAGES/statusnet.po new file mode 100644 index 000000000..f68253d22 --- /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-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:15+0000\n" +"Language-Team: Danish\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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:1745 +#, 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:737 +#, 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:746 +#, 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 b221c99ba..5a52a7c0c 100644 --- a/locale/de/LC_MESSAGES/statusnet.po +++ b/locale/de/LC_MESSAGES/statusnet.po @@ -1,12 +1,13 @@ # Translation of StatusNet to German # # Author@translatewiki.net: Bavatar +# Author@translatewiki.net: Brion # Author@translatewiki.net: Lutzgh # Author@translatewiki.net: March # 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 # -- # This file is distributed under the same license as the StatusNet package. @@ -15,12 +16,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:38+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:17+0000\n" "Language-Team: German\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -28,7 +29,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Zugang" @@ -91,24 +92,24 @@ msgid "Save" msgstr "Speichern" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Seite nicht vorhanden" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -121,7 +122,7 @@ msgid "No such user." msgstr "Unbekannter Benutzer." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s und Freunde, Seite% 2$d" @@ -129,33 +130,33 @@ msgstr "%1$s und Freunde, Seite% 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 und Freunde" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Feed der Freunde von %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Feed der Freunde von %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Feed der Freunde von %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -163,7 +164,7 @@ msgstr "" "Dies ist die Zeitleiste für %s und Freunde aber bisher hat niemand etwas " "gepostet." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -173,79 +174,77 @@ msgstr "" "poste selber etwas." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Du und Freunde" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Aktualisierungen von %1$s und Freunden auf %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API-Methode nicht gefunden." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Diese Methode benötigt ein POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -253,7 +252,7 @@ msgstr "" "Du musst einen Parameter mit Namen 'device' übergeben. Mögliche Werte sind: " "sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Konnte Benutzerdaten nicht aktualisieren." @@ -273,7 +272,7 @@ msgstr "Konnte Profil nicht speichern." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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,30 +351,30 @@ msgstr "" "Es können keine direkten Nachrichten an Benutzer geschickt werden mit denen " "du nicht befreundet bist." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Keine Nachricht mit dieser ID gefunden." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Diese Nachricht ist bereits ein Favorit!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Konnte keinen Favoriten erstellen." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Diese Nachricht ist kein Favorit!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -390,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." @@ -402,126 +401,130 @@ msgstr "Konnte öffentlichen Stream nicht abrufen." msgid "Could not find target user." msgstr "Konnte keine Statusmeldungen finden." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Der Nutzername darf nur aus Kleinbuchstaben und Ziffern bestehen. " "Leerzeichen sind nicht erlaubt." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Nutzername wird bereits verwendet. Suche dir einen anderen aus." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ungültiger Nutzername." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "" "Homepage ist keine gültige URL. URL’s müssen ein Präfix wie http enthalten." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Die Beschreibung ist zu lang (max. %d Zeichen)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Der eingegebene Aufenthaltsort ist zu lang (maximal 255 Zeichen)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Zu viele Pseudonyme! Maximale Anzahl ist %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Ungültiges Alias: „%s“" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Nutzername „%s“ wird bereits verwendet. Suche dir einen anderen aus." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Alias kann nicht das gleiche wie der Spitznamen sein." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Gruppe nicht gefunden!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Du bist bereits Mitglied dieser Gruppe" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Der Admin dieser Gruppe hat dich gesperrt." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Konnte Benutzer %s nicht der Gruppe %s hinzufügen." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Du bist kein Mitglied dieser Gruppe." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Konnte Benutzer %1$s nicht aus der Gruppe %2$s entfernen." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "%s’s Gruppen" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1$s Gruppen in denen %2$s Mitglied ist" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s Gruppen" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -532,15 +535,15 @@ msgstr "Ungültiges 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -606,12 +609,12 @@ msgstr "" "vertrauenswürdigen Quellen Erlaubnis zu deinem %4$s Zugang geben." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Profil" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -619,8 +622,8 @@ msgid "Nickname" msgstr "Nutzername" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Passwort" @@ -636,11 +639,11 @@ msgstr "Erlauben" msgid "Allow or deny access to your account information." msgstr "Zugang zu deinem Konto erlauben oder ablehnen" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Diese Methode benötigt ein POST oder DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Du kannst den Status eines anderen Benutzers nicht löschen." @@ -657,62 +660,68 @@ msgstr "Du kannst deine eigenen Nachrichten nicht wiederholen." msgid "Already repeated that notice." msgstr "Nachricht bereits wiederholt" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Status gelöscht." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Keine Nachricht mit dieser ID gefunden." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nicht gefunden." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoriten von %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s Aktualisierung in den Favoriten von %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Aktualisierungen erwähnen %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." -msgstr "Nachrichten von %1$, die auf Nachrichten von %2$ / %3$ antworten." +msgstr "Nachrichten von %1$s, die auf Nachrichten von %2$s / %3$s antworten." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s öffentliche Zeitleiste" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s Nachrichten von allen!" @@ -727,16 +736,20 @@ msgstr "Antworten an %s" msgid "Repeats of %s" msgstr "Antworten von %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Nachrichten, die mit %s getagt sind" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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." @@ -790,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" @@ -831,11 +844,11 @@ msgstr "Avatar gelöscht." msgid "You already blocked that user." msgstr "Du hast diesen Benutzer bereits blockiert." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Benutzer blockieren" -#: actions/block.php:130 +#: 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 " @@ -850,7 +863,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -859,7 +872,7 @@ msgstr "Nein" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Diesen Benutzer freigeben" @@ -868,7 +881,7 @@ msgstr "Diesen Benutzer freigeben" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -876,11 +889,11 @@ msgid "Yes" msgstr "Ja" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Diesen Benutzer blockieren" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Konnte Blockierungsdaten nicht speichern." @@ -1007,7 +1020,7 @@ msgstr "Du bist Besitzer dieses Programms" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Es gab ein Problem mit deinem Sessiontoken." @@ -1040,7 +1053,7 @@ msgstr "Programm löschen" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Nicht angemeldet." @@ -1071,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" @@ -1111,45 +1124,53 @@ msgstr "Design" msgid "Design settings for this StatusNet site." msgstr "Design-Einstellungen für diese StatusNet-Website." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Ungültige URL für das Logo" -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Theme nicht verfügbar: %s" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Logo ändern" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Seitenlogo" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Theme ändern" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Seitentheme" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Theme dieser Seite." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Angepasster Skin" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Du kannst ein angepasstes StatusNet-Theme als .ZIP-Archiv hochladen." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Hintergrundbild ändern" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Hintergrund" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1159,57 +1180,65 @@ msgstr "" "Dateigröße beträgt %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "An" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Aus" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Hintergrundbild ein- oder ausschalten." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Hintergrundbild kacheln" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Farben ändern" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Inhalt" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Seitenleiste" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Links" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Erweitert" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Eigene CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Standardeinstellungen benutzen" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Standard-Design wiederherstellen" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Standard wiederherstellen" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1219,7 +1248,7 @@ msgstr "Standard wiederherstellen" msgid "Save" msgstr "Speichern" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Design speichern" @@ -1334,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." @@ -1494,7 +1524,7 @@ msgid "Cannot normalize that email address" msgstr "Konnte diese E-Mail-Adresse nicht normalisieren" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ungültige E-Mail-Adresse." @@ -1722,13 +1752,13 @@ msgstr "Nutzer hat diese Aufgabe bereits" #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Kein Profil angegeben." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Kein Benutzer-Profil mit dieser ID." @@ -1870,7 +1900,7 @@ msgstr "Diesen Benutzer zu einem Admin ernennen" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s Zeitleiste" @@ -2302,40 +2332,40 @@ msgstr "Du bist kein Mitglied dieser Gruppe." msgid "%1$s left group %2$s" msgstr "%1$s hat die Gruppe %2$s verlassen" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Bereits angemeldet." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Falscher Benutzername oder Passwort." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Fehler beim setzen des Benutzers. Du bist vermutlich nicht autorisiert." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Anmelden" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "An Seite anmelden" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Anmeldedaten merken" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Automatisch anmelden; nicht bei gemeinsam genutzten PCs einsetzen!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Passwort vergessen?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2343,11 +2373,11 @@ msgstr "" "Bitte gebe aus Sicherheitsgründen deinen Benutzernamen und dein Passwort " "ein, bevor die Änderungen an deinen Einstellungen übernommen werden." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Mit Nutzernamen und Passwort anmelden." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2500,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" @@ -2559,30 +2589,30 @@ msgid "Developers can edit the registration settings for their applications " msgstr "" "Entwickler können die Registrierungseinstellungen ihrer Programme ändern " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Nachricht hat kein Profil" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s Status auf %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Content-Typ %s wird nicht untersützt." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2620,7 +2650,7 @@ msgstr "Profil-Einstellungen ansehen" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "Prifil-Designs anzeigen oder verstecken." +msgstr "Profil-Designs anzeigen oder verstecken." #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." @@ -2686,7 +2716,7 @@ msgid "6 or more characters" msgstr "6 oder mehr Zeichen" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Bestätigen" @@ -2698,11 +2728,11 @@ msgstr "Gleiches Passwort wie zuvor" msgid "Change" msgstr "Ändern" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Das Passwort muss aus 6 oder mehr Zeichen bestehen." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Passwörter stimmen nicht überein." @@ -2723,7 +2753,7 @@ msgid "Password saved." msgstr "Passwort gespeichert." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Pfad" @@ -2929,44 +2959,44 @@ msgstr "Profilinformation" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 Kleinbuchstaben oder Ziffern, keine Sonder- oder Leerzeichen" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Vollständiger Name" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Homepage" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "" "URL deiner Homepage, deines Blogs, oder deines Profils auf einer anderen Site" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Beschreibe dich selbst und deine Interessen in %d Zeichen" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Beschreibe dich selbst und deine Interessen" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Biografie" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Aufenthaltsort" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Wo du bist, beispielsweise „Stadt, Gebiet, Land“" @@ -3010,7 +3040,7 @@ msgstr "" "Abonniere automatisch alle Kontakte, die mich abonnieren (sinnvoll für Nicht-" "Menschen)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Die Biografie ist zu lang (max. %d Zeichen)" @@ -3274,7 +3304,7 @@ msgstr "Passwort muss mehr als 6 Zeichen enthalten" msgid "Password and confirmation do not match." msgstr "Passwort und seine Bestätigung stimmen nicht überein." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Fehler bei den Nutzereinstellungen." @@ -3282,40 +3312,40 @@ msgstr "Fehler bei den Nutzereinstellungen." msgid "New password successfully saved. You are now logged in." msgstr "Neues Passwort erfolgreich gespeichert. Du bist jetzt angemeldet." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Es tut uns leid, zum Registrieren benötigst du eine Einladung." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Entschuldigung, ungültiger Bestätigungscode." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registrierung erfolgreich" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrieren" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registrierung nicht gestattet" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" "Du kannst dich nicht registrieren, wenn du die Lizenz nicht akzeptierst." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Diese E-Mail-Adresse existiert bereits." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Benutzername oder Passwort falsch." -#: actions/register.php:343 +#: 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. " @@ -3323,59 +3353,60 @@ msgstr "" "Hier kannst du einen neuen Zugang einrichten. Anschließend kannst du " "Nachrichten und Links mit deinen Freunden und Kollegen teilen. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 kleingeschriebene Buchstaben oder Zahlen, keine Satz- oder Leerzeichen. " "Pflicht." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 oder mehr Buchstaben. Pflicht." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Gleiches Passwort wie zuvor. Pflichteingabe." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-Mail" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Wird nur für Updates, wichtige Mitteilungen und zur " "Passwortwiederherstellung verwendet" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Längerer Name, bevorzugt dein „echter“ Name" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Inhalte und Daten von %1$s sind privat und vertraulich." +msgstr "" +"Mir ist bewusst, dass Inhalte und Daten von %1$s privat und vertraulich sind." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Meine Texte und Dateien sind urheberrechtlich geschützt durch %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Meine Texte und Dateien verbleiben unter meinem eigenen Urheberrecht." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Alle Rechte vorbehalten." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3384,7 +3415,7 @@ msgstr "" "Abgesehen von folgenden Daten: Passwort, Email Adresse, IM Adresse und " "Telefonnummer, sind all meine Texte und Dateien unter %s verfügbar." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3417,7 +3448,7 @@ msgstr "" "\n" "Danke für deine Anmeldung, wir hoffen das dir der Service gefällt." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3499,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" @@ -3537,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 @@ -3554,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 @@ -3574,7 +3604,7 @@ msgstr "Du kannst die Rollen von Nutzern dieser Seite nicht widerrufen." msgid "User doesn't have this role." msgstr "Benutzer verfügt nicht über diese Rolle." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3588,7 +3618,7 @@ msgstr "Benutzer ist schon blockiert." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sitzung" @@ -3631,7 +3661,7 @@ msgid "Icon" msgstr "Symbol" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Name" @@ -3642,12 +3672,12 @@ msgid "Organization" msgstr "Organisation" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3737,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 :)" @@ -3746,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." @@ -3810,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" @@ -3824,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." @@ -3843,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." @@ -3856,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" @@ -3935,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 @@ -4267,7 +4297,7 @@ msgstr "Kein Code eingegeben" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Snapshots" @@ -4327,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." @@ -4506,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." @@ -4621,7 +4648,7 @@ msgstr "" "dieses Nutzers abonnieren möchtest. Wenn du das nicht wolltest, klicke auf " "„Abbrechen“." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Lizenz" @@ -4751,18 +4778,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Aktualisierungen von %1$s auf %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4771,11 +4798,11 @@ msgstr "" "Die Seite wird mit %1$s Version %2$s betrieben. Copyright 2008-2010 " "StatusNet, Inc. und Mitarbeiter" -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Mitarbeiter" -#: actions/version.php:168 +#: 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 " @@ -4787,7 +4814,7 @@ msgstr "" "wie veröffentlicht durch die Free Software Foundation, entweder Version 3 " "der Lizenz, oder jede höhere Version." -#: actions/version.php:174 +#: 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 " @@ -4799,7 +4826,7 @@ msgstr "" "MARKTREIFE oder der EIGNUNG FÃœR EINEN BESTIMMTEN ZWECK. Lesen Sie die GNU " "Affero General Public License für weitere Details. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4808,95 +4835,142 @@ msgstr "" "Du hast eine Kopie der GNU Affero General Public License zusammen mit diesem " "Programm erhalten. Wenn nicht, siehe %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Erweiterungen" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Version" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autor(en)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Datenbankfehler beim Einfügen des Hashtags: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4904,73 +4978,124 @@ 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5021,188 +5146,188 @@ msgid "Untitled page" msgstr "Seite ohne Titel" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Hauptnavigation" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Persönliches Profil und Freundes-Zeitleiste" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Eigene" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Ändere deine E-Mail, Avatar, Passwort und Profil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Zum Dienst verbinden" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Verbinden" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Seiteneinstellung ändern" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Lade Freunde und Kollegen ein dir auf %s zu folgen" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Einladen" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Von der Seite abmelden" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Abmelden" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Neues Konto erstellen" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrieren" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Auf der Seite anmelden" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Anmelden" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hilf mir!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Hilfe" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Suche nach Leuten oder Text" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Suchen" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Seitennachricht" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Lokale Ansichten" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Neue Nachricht" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Unternavigation" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Hilfe" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Ãœber" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "AGB" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privatsphäre" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Quellcode" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Plakette" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet-Software-Lizenz" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5212,13 +5337,13 @@ msgstr "" "site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** ist ein Microbloggingdienst." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5230,20 +5355,20 @@ msgstr "" "(http://www.fsf.org/licensing/licenses/agpl-3.0.html) erhältlich ist." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "StatusNet-Software-Lizenz" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Inhalte und Daten von %1$s sind privat und vertraulich." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5251,32 +5376,32 @@ msgstr "" "vorbehalten." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Urheberrecht von Inhalt und Daten liegt bei den Beteiligten. Alle Rechte " "vorbehalten." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "Alle Inhalte und Daten von %1$s sind unter der %2$s Lizenz verfügbar." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Seitenerstellung" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Später" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Vorher" @@ -5324,64 +5449,64 @@ msgid "Unable to delete design setting." msgstr "Konnte die Design Einstellungen nicht löschen." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Basis Seiteneinstellungen" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Seite" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Motiv-Konfiguration" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Design" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Benutzereinstellung" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Benutzer" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Zugangskonfiguration" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Pfadkonfiguration" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Sitzungseinstellungen" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Seitennachricht bearbeiten" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Snapshot Konfiguration" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "API-Ressource erfordert lesen/schreib Zugriff; du hast nur Leserechte." @@ -5513,11 +5638,11 @@ msgstr "Nachrichten in denen dieser Anhang erscheint" msgid "Tags for this attachment" msgstr "Stichworte für diesen Anhang" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Passwort konnte nicht geändert werden" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Passwort kann nicht geändert werden" @@ -5611,14 +5736,14 @@ msgstr "Vollständiger Name: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Standort: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Homepage: %s" @@ -6153,8 +6278,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s hat deine Nachrichten auf %2$s abonniert." +#: 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 "" +"Wenn du dir sicher bist, das dieses Benutzerkonto missbräuchlich benutzt " +"wurde, kannst du das Benutzerkonto von deiner Liste der Abonnenten sperren " +"und es den Seitenadministratoren unter %s als Spam melden." + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6181,19 +6316,19 @@ msgstr "" "$s ändern.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Biografie: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Neue E-Mail-Adresse um auf %s zu schreiben" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6215,18 +6350,18 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s Status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS-Konfiguration" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "" @@ -6234,13 +6369,13 @@ msgstr "" "handelt:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Du wurdest von %s angestupst" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6268,13 +6403,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Neue private Nachricht von %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6308,13 +6443,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) hat deine Nachricht als Favorit gespeichert" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6346,7 +6481,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6357,14 +6492,14 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "" "%s (@%s) hat dir eine Nachricht gesendet um deine Aufmerksamkeit zu erlangen" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6427,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" @@ -6488,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." @@ -6561,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" @@ -6715,7 +6850,7 @@ msgstr "Tagesdurchschnitt" msgid "All groups" msgstr "Alle Gruppen" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Nicht unterstützte Methode." @@ -6739,7 +6874,7 @@ msgstr "Beliebte Benutzer" msgid "Popular" msgstr "Beliebte Beiträge" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Kein Rückkehr Argument." @@ -6760,7 +6895,7 @@ msgstr "Diese Nachricht wiederholen" msgid "Revoke the \"%s\" role from this user" msgstr "Widerrufe die \"%s\" Rolle von diesem Benutzer" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Kein einzelner Nutzer für den Ein-Benutzer-Modus ausgewählt." @@ -6858,6 +6993,50 @@ msgstr "Personen-Tag, wie markiert wurde" msgid "None" msgstr "Nichts" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "Dieser Server kann nicht mit Theme-Uploads ohne ZIP-Support umgehen." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +msgid "Failed saving theme." +msgstr "Speicherung des Themes fehlgeschlagen." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +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 "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 "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 "Das Theme enthält Dateien des Types „.%s“, die nicht erlaubt sind." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Fehler beim Öffnen des Theme-Archives." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Top-Schreiber" @@ -6938,56 +7117,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "vor wenigen Sekunden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "vor einer Minute" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "vor %d Minuten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "vor einer Stunde" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "vor %d Stunden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "vor einem Tag" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "vor %d Tagen" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "vor einem Monat" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "vor %d Monaten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "vor einem Jahr" diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po index 4e8f62afe..841e3172c 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:41+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:18+0000\n" "Language-Team: Greek\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Î Ïόσβαση" @@ -86,25 +86,25 @@ msgid "Save" msgstr "Αποθήκευση" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Δεν υπάÏχει Ï„Îτοια σελίδα" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -117,7 +117,7 @@ msgid "No such user." msgstr "ΚανÎνας Ï„Îτοιος χÏήστης." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s και φίλοι, σελίδα 2%$d" @@ -125,33 +125,33 @@ msgstr "%1$s και φίλοι, σελίδα 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 και οι φίλοι του/της" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Ροή φίλων του/της %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Ροή φίλων του/της %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Ροή φίλων του/της %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -159,7 +159,7 @@ msgstr "" "Αυτό είναι το χÏονοδιάγÏαμμα για %s και φίλους, αλλά κανείς δεν Îχει κάνει " "καμία αποστολή ακόμα." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -169,80 +169,80 @@ msgstr "" "(%%action.groups%%) ή αποστείλετε κάτι ο ίδιος." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "Η μÎθοδος του ΑΡΙ δε βÏÎθηκε!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "ΑπÎτυχε η ενημÎÏωση του χÏήστη." @@ -264,7 +264,7 @@ msgstr "ΑπÎτυχε η αποθήκευση του Ï€Ïοφίλ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -339,29 +339,30 @@ msgstr "" msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -394,124 +395,129 @@ msgstr "ΑπÎτυχε η ενημÎÏωση του χÏήστη." msgid "Could not find target user." msgstr "ΑπÎτυχε η εÏÏεση οποιασδήποτε κατάστασης." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Το ψευδώνυμο Ï€ÏÎπει να Îχει μόνο πεζοÏÏ‚ χαÏακτήÏες και χωÏίς κενά." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Το ψευδώνυμο είναι ήδη σε χÏήση. Δοκιμάστε κάποιο άλλο." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Η αÏχική σελίδα δεν είναι ÎγκυÏο URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Το ονοματεπώνυμο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ (μÎγιστο 255 χαÏακτ.)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Η πεÏιγÏαφή είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· (μÎγιστο %d χαÏακτ.)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Η τοποθεσία είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· (μÎγιστο 255 χαÏακτ.)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Μήνυμα" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Το ψευδώνυμο είναι ήδη σε χÏήση. Δοκιμάστε κάποιο άλλο." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Η ομάδα δεν βÏÎθηκε!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Δεν είστε μÎλος καμίας ομάδας." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -523,15 +529,15 @@ msgstr "Μήνυμα" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -594,12 +600,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "ΛογαÏιασμός" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -607,8 +613,8 @@ msgid "Nickname" msgstr "Ψευδώνυμο" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Κωδικός" @@ -624,11 +630,11 @@ msgstr "Îα επιτÏαπεί" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -647,59 +653,63 @@ msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος msgid "Already repeated that notice." msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Η κατάσταση διεγÏάφη." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "" -#: actions/apistatusesupdate.php:304 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 "" -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -714,16 +724,20 @@ msgstr "" msgid "Repeats of %s" msgstr "" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "ΔιαγÏαφή" @@ -818,11 +832,11 @@ msgstr "Ρυθμίσεις OpenID" msgid "You already blocked that user." msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "" -#: actions/block.php:130 +#: 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 " @@ -834,7 +848,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -844,7 +858,7 @@ msgstr "Όχι" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." @@ -854,7 +868,7 @@ msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -863,11 +877,11 @@ msgid "Yes" msgstr "Îαι" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -999,7 +1013,7 @@ msgstr "Ομάδες με τα πεÏισσότεÏα μÎλη" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1033,7 +1047,7 @@ msgstr "ΠεÏιγÏάψτε την ομάδα ή το θÎμα" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "" @@ -1103,48 +1117,57 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "" -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Η αÏχική σελίδα δεν είναι ÎγκυÏο URL." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Αλλάξτε τον κωδικό σας" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "Αλλαγή" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Αλλαγή" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Αλλαγή" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1152,57 +1175,65 @@ msgid "" msgstr "" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Αλλαγή χÏωμάτων" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "ΠεÏιεχόμενο" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "ΣÏνδεσμοι" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1212,7 +1243,7 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1335,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 "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." @@ -1499,7 +1531,7 @@ msgid "Cannot normalize that email address" msgstr "Αδυναμία κανονικοποίησης αυτής της email διεÏθυνσης" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "" @@ -1732,13 +1764,13 @@ msgstr "" #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1876,7 +1908,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "χÏονοδιάγÏαμμα του χÏήστη %s" @@ -2262,39 +2294,39 @@ msgstr "" msgid "%1$s left group %2$s" msgstr "" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Ήδη συνδεδεμÎνος." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Λάθος όνομα χÏήστη ή κωδικός" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "ΣÏνδεση" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Αυτόματη σÏνδεση στο μÎλλον. ΟΧΙ για κοινόχÏηστους υπολογιστÎÏ‚!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Χάσατε ή ξεχάσατε τον κωδικό σας;" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2302,12 +2334,12 @@ msgstr "" "Για λόγους ασφαλείας, παÏακαλώ εισάγετε ξανά το όνομα χÏήστη και τον κωδικό " "σας, Ï€Ïιν αλλάξετε τις Ïυθμίσεις σας." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "ΣÏνδεση με όνομα χÏήστη και κωδικό" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2454,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 @@ -2508,31 +2540,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: 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:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "ΣÏνδεση" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2642,7 +2674,7 @@ msgid "6 or more characters" msgstr "6 ή πεÏισσότεÏοι χαÏακτήÏες" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Επιβεβαίωση" @@ -2654,11 +2686,11 @@ msgstr "" msgid "Change" msgstr "Αλλαγή" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Οι κωδικοί δεν ταυτίζονται." @@ -2679,7 +2711,7 @@ msgid "Password saved." msgstr "Ο κωδικός αποθηκεÏτηκε." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2886,44 +2918,44 @@ msgstr "" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 μικÏά γÏάμματα ή αÏιθμοί, χωÏίς σημεία στίξης ή κενά" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "ΠεÏιÎγÏαψε τον εαυτό σου και τα ενδιαφÎÏοντά σου σε 140 χαÏακτήÏες" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "ΠεÏιÎγÏαψε τον εαυτό σου και τα ενδιαφÎÏοντά σου σε 140 χαÏακτήÏες" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "ΒιογÏαφικό" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "" @@ -2966,7 +2998,7 @@ msgstr "" "Αυτόματα γίνε συνδÏομητής σε όσους γίνονται συνδÏομητÎÏ‚ σε μÎνα (χÏήση " "κυÏίως από λογισμικό και όχι ανθÏώπους)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "Το βιογÏαφικό είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ (μÎγιστο 140 χαÏακτ.)." @@ -3215,7 +3247,7 @@ msgstr "Ο κωδικός Ï€ÏÎπει να είναι 6 χαÏακτήÏες ή msgid "Password and confirmation do not match." msgstr "Ο κωδικός και η επιβεβαίωση του δεν ταυτίζονται." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "" @@ -3223,93 +3255,93 @@ msgstr "" msgid "New password successfully saved. You are now logged in." msgstr "" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Η διεÏθυνση email υπάÏχει ήδη." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "" -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "1-64 μικÏά γÏάμματα ή αÏιθμοί, χωÏίς σημεία στίξης ή κενά. ΑπαÏαίτητο." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 ή πεÏισσότεÏοι χαÏακτήÏες. ΑπαÏαίτητο." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Email" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3318,7 +3350,7 @@ msgstr "" "εκτός από τα εξής Ï€Ïοσωπικά δεδομÎνα: κωδικός Ï€Ïόσβασης, διεÏθυνση email, " "διεÏθυνση IM, τηλεφωνικό νοÏμεÏο." -#: actions/register.php:576 +#: actions/register.php:583 #, fuzzy, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3352,7 +3384,7 @@ msgstr "" "ΕυχαÏιστοÏμε που εγγÏάφηκες και ευχόμαστε να πεÏάσεις καλά με την υπηÏεσία " "μας." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3433,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 "ΔημιουÏγία" @@ -3470,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 @@ -3486,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 @@ -3504,7 +3538,7 @@ msgstr "ΑπÎτυχε η ενημÎÏωση του χÏήστη." msgid "User doesn't have this role." msgstr "" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Η κατάσταση διαγÏάφεται." @@ -3519,7 +3553,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3563,7 +3597,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3576,12 +3610,12 @@ msgid "Organization" msgstr "Î Ïοσκλήσεις" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "" @@ -3667,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 @@ -3736,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 "ÎœÎλη" @@ -3750,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." @@ -3764,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." @@ -3773,7 +3807,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ΔιαχειÏιστÎÏ‚" @@ -3849,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 @@ -4173,7 +4207,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4235,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 "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" @@ -4402,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." @@ -4517,7 +4548,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4639,29 +4670,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4669,7 +4700,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4677,176 +4708,273 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "Î Ïοσωπικά" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Σφάλμα στη βάση δεδομÎνων κατά την εισαγωγή hashtag: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "ΑδÏνατη η αποθήκευση των νÎων πληÏοφοÏιών του Ï€Ïοφίλ" @@ -4898,200 +5026,200 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "Î Ïοσωπικά" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Αλλάξτε τον κωδικό σας" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Αδυναμία ανακατεÏθηνσης στο διακομιστή: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "ΣÏνδεση" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "ΔιαχειÏιστής" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Î Ïοσκάλεσε φίλους και συναδÎλφους σου να γίνουν μÎλη στο %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Μήνυμα" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "ΑποσÏνδεση" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "ΔημιουÏγία ενός λογαÏιασμοÏ" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "ΠεÏιγÏαφή" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "ΣÏνδεση" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Βοηθήστε με!" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "Βοήθεια" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Βοήθεια" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "ΠεÏί" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "ΣυχνÎÏ‚ εÏωτήσεις" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Επικοινωνία" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5101,14 +5229,14 @@ msgstr "" "ÎφεÏε κοντά σας το [%%site.broughtby%%](%%site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "" "Το **%%site.name%%** είναι μία υπηÏεσία microblogging (μικÏο-ιστολογίου)." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5117,49 +5245,49 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "" @@ -5207,73 +5335,73 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Î Ïοσωπικά" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "ΔιαγÏαφή μηνÏματος" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5404,12 +5532,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Ο κωδικός αποθηκεÏτηκε." -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Ο κωδικός αποθηκεÏτηκε." @@ -5502,14 +5630,14 @@ 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:263 +#: 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "" @@ -5993,8 +6121,15 @@ msgstr "" 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6010,7 +6145,7 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "" @@ -6018,13 +6153,13 @@ msgstr "" "\n" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6038,30 +6173,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Κατάσταση του/της %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "ΑναμÎνωντας επιβεβαίωση σ' αυτό το νοÏμεÏο τηλεφώνου." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6078,13 +6213,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6104,13 +6239,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: 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:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6132,7 +6267,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6140,13 +6275,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6183,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 "από" @@ -6238,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 "" @@ -6312,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" @@ -6468,7 +6603,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6492,7 +6627,7 @@ msgstr "Î Ïοτεινόμενα" msgid "Popular" msgstr "Δημοφιλή" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "" @@ -6515,7 +6650,7 @@ msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος msgid "Revoke the \"%s\" role from this user" msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6615,6 +6750,49 @@ msgstr "" 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "ΑπÎτυχε η αποθήκευση του Ï€Ïοφίλ." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "ΚοÏυφαίοι δημοσιευτÎÏ‚" @@ -6698,56 +6876,56 @@ msgid "Moderator" msgstr "Συντονιστής" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: 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:1093 +#: 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:1097 +#: 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:1100 +#: 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:1104 +#: 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:1107 +#: 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:1111 +#: 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:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "" diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po index a3c1605ee..a8a11e4ba 100644 --- a/locale/en_GB/LC_MESSAGES/statusnet.po +++ b/locale/en_GB/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to British English # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Bruce89 # Author@translatewiki.net: CiaranG # Author@translatewiki.net: Reedy @@ -10,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:44+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:11:54+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Access" @@ -85,24 +86,24 @@ msgid "Save" msgstr "Save" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "No such page." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -115,7 +116,7 @@ msgid "No such user." msgstr "No such user." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s and friends, page %2$d" @@ -123,40 +124,40 @@ msgstr "%1$s and friends, page %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 and friends" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Feed for friends of %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Feed for friends of %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Feed for friends of %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" "This is the timeline for %s and friends but no one has posted anything yet." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -166,77 +167,77 @@ msgstr "" "something yourself." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" -"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)." +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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." +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favourites!" #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "You and friends" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Updates from %1$s and friends on %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API method not found." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "This method requires a POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -244,7 +245,7 @@ msgstr "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Couldn't update user." @@ -266,7 +267,7 @@ msgstr "Couldn't save profile." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -342,30 +343,31 @@ msgstr "Recipient user not found." msgid "Can't send direct messages to users who aren't your friend." msgstr "Can't send direct messages to users who aren't your friend." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "No status found with that ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "This status is already a favourite." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Could not create favourite." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "That status is not a favourite." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 msgid "Could not delete favorite." msgstr "Could not delete favourite." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "Could not follow user: User not found." +#, fuzzy +msgid "Could not follow user: profile not found." +msgstr "Could not unfollow user: User not found." #: actions/apifriendshipscreate.php:118 #, php-format @@ -380,9 +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." -msgstr "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 msgid "Could not determine source user." @@ -392,123 +394,128 @@ msgstr "Could not determine source user." msgid "Could not find target user." msgstr "Could not find target user." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Nickname must have only lowercase letters and numbers, and no spaces." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Nickname already in use. Try another one." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Not a valid nickname." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Homepage is not a valid URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Full name is too long (max 255 chars)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Description is too long (max %d chars)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Location is too long (max 255 chars)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Too many aliases! Maximum %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Invalid alias: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: 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\" already in use. Try another one." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Alias can't be the same as nickname." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Group not found." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "You are already a member of that group." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "You have been blocked from that group by the admin." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Could not join user %1$s to group %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "You are not a member of this group." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Could not remove user %1$s to group %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "%s's groups" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1$s groups %2$s is a member of." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s groups" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -519,15 +526,15 @@ msgstr "Invalid 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -593,12 +600,12 @@ msgstr "" "give access to your %4$s account to third parties you trust." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Account" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -606,8 +613,8 @@ msgid "Nickname" msgstr "Nickname" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Password" @@ -623,11 +630,11 @@ msgstr "Allow" msgid "Allow or deny access to your account information." msgstr "Allow or deny access to your account information." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "This method requires a POST or DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "You may not delete another user's status." @@ -644,59 +651,63 @@ msgstr "Cannot repeat your own notice." msgid "Already repeated that notice." msgstr "Already repeated that notice." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Status deleted." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "No status with that ID found." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Not found." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favourites from %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s updates favourited by %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Updates mentioning %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s updates that reply to updates from %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s public timeline" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s updates from everyone!" @@ -711,16 +722,20 @@ msgstr "Repeated to %s" msgid "Repeats of %s" msgstr "Repeats of %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notices tagged with %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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." @@ -773,7 +788,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:657 msgid "Delete" msgstr "Delete" @@ -813,11 +828,11 @@ msgstr "Avatar deleted." msgid "You already blocked that user." msgstr "You already blocked that user." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Block user" -#: actions/block.php:130 +#: 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 " @@ -832,7 +847,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -841,7 +856,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Do not block this user" @@ -850,7 +865,7 @@ msgstr "Do not block this user" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -858,11 +873,11 @@ msgid "Yes" msgstr "Yes" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Block this user" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Failed to save block information." @@ -989,7 +1004,7 @@ msgstr "You are not the owner of this application." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "There was a problem with your session token." @@ -1023,7 +1038,7 @@ msgstr "Delete this application" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Not logged in." @@ -1054,7 +1069,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:657 msgid "Delete this notice" msgstr "Delete this notice" @@ -1094,45 +1109,54 @@ msgstr "Design" msgid "Design settings for this StatusNet site." msgstr "Design settings for this StausNet site." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "nvalid logo URL." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Theme not available: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Change logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Site logo" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Change theme" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Site theme" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Theme for the site." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Site theme" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Change background image" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Background" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1142,57 +1166,65 @@ msgstr "" "$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "On" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Off" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Turn background image on or off." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Tile background image" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Change colours" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Content" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Sidebar" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Links" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Use defaults" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restore default designs" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Reset back to default" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1202,7 +1234,7 @@ msgstr "Reset back to default" msgid "Save" msgstr "Save" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Save design" @@ -1316,7 +1348,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" @@ -1472,7 +1505,7 @@ msgid "Cannot normalize that email address" msgstr "Cannot normalise that e-mail address" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Not a valid e-mail address." @@ -1698,13 +1731,13 @@ msgstr "User already has this role." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "No profile specified." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "No profile with that ID." @@ -1844,7 +1877,7 @@ msgstr "Make this user an admin" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s timeline" @@ -2094,8 +2127,9 @@ msgid "This is your inbox, which lists your incoming private messages." msgstr "This is your inbox, which lists your incoming private messages." #: actions/invite.php:39 +#, fuzzy msgid "Invites have been disabled." -msgstr "" +msgstr "Invitations enabled" #: actions/invite.php:41 #, php-format @@ -2266,39 +2300,39 @@ msgstr "You are not a member of that group." msgid "%1$s left group %2$s" msgstr "%1$s left group %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Already logged in." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Incorrect username or password." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Error setting user. You are probably not authorised." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Login" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Login to site" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Remember me" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Automatically login in the future; not for shared computers!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Lost or forgotten password?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2306,11 +2340,11 @@ msgstr "" "For security reasons, please re-enter your user name and password before " "changing your settings." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Login with your username and password." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2460,9 +2494,8 @@ msgstr "Updates matching search term \"%1$s\" on %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 "" -"This user doesn't allow nudges or hasn't confirmed or set his e-mail yet." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2494,8 +2527,9 @@ msgid "Connected applications" msgstr "Connected applications" #: actions/oauthconnectionssettings.php:83 +#, fuzzy msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "You have not authorised any applications to use your account." #: actions/oauthconnectionssettings.php:175 msgid "You are not a user of that application." @@ -2514,30 +2548,30 @@ msgstr "You have not authorised any applications to use your account." msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Notice has no profile." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s's status on %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Content type %s not supported." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2574,8 +2608,9 @@ msgid "View profile designs" msgstr "View profile designs" #: actions/othersettings.php:123 +#, fuzzy msgid "Show or hide profile designs." -msgstr "" +msgstr "View profile designs" #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." @@ -2640,7 +2675,7 @@ msgid "6 or more characters" msgstr "6 or more characters" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirm" @@ -2652,11 +2687,11 @@ msgstr "Same as password above" msgid "Change" msgstr "Change" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Password must be 6 or more characters." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Passwords don't match." @@ -2677,13 +2712,14 @@ msgid "Password saved." msgstr "Password saved." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" #: actions/pathsadminpanel.php:70 +#, fuzzy msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "Basic settings for this StatusNet site" #: actions/pathsadminpanel.php:157 #, php-format @@ -2750,16 +2786,19 @@ msgid "Theme" msgstr "" #: actions/pathsadminpanel.php:264 +#, fuzzy msgid "Theme server" -msgstr "" +msgstr "SSL server" #: actions/pathsadminpanel.php:268 +#, fuzzy msgid "Theme path" -msgstr "" +msgstr "Site path" #: actions/pathsadminpanel.php:272 +#, fuzzy msgid "Theme directory" -msgstr "" +msgstr "Avatar directory" #: actions/pathsadminpanel.php:279 msgid "Avatars" @@ -2778,20 +2817,24 @@ msgid "Avatar directory" msgstr "Avatar directory" #: actions/pathsadminpanel.php:301 +#, fuzzy msgid "Backgrounds" -msgstr "" +msgstr "Background" #: actions/pathsadminpanel.php:305 +#, fuzzy msgid "Background server" -msgstr "" +msgstr "Background" #: actions/pathsadminpanel.php:309 +#, fuzzy msgid "Background path" -msgstr "" +msgstr "Background" #: actions/pathsadminpanel.php:313 +#, fuzzy msgid "Background directory" -msgstr "" +msgstr "Background directory not writable: %s." #: actions/pathsadminpanel.php:320 msgid "SSL" @@ -2810,8 +2853,9 @@ msgid "Always" msgstr "" #: actions/pathsadminpanel.php:329 +#, fuzzy msgid "Use SSL" -msgstr "" +msgstr "SSL" #: actions/pathsadminpanel.php:330 msgid "When to use SSL" @@ -2879,43 +2923,43 @@ msgstr "Profile information" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 lowercase letters or numbers, no punctuation or spaces" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Full name" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Homepage" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL of your homepage, blog, or profile on another site" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Describe yourself and your interests in %d chars" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Describe yourself and your interests" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Bio" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Location" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Where you are, like \"City, State (or Region), Country\"" @@ -2957,7 +3001,7 @@ msgid "" msgstr "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Bio is too long (max %d chars)." @@ -3027,21 +3071,24 @@ msgid "Public Stream Feed (Atom)" msgstr "Public Stream Feed (Atom)" #: actions/public.php:188 -#, php-format +#, fuzzy, php-format msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"This is the timeline for %s and friends but no one has posted anything yet." #: actions/public.php:191 msgid "Be the first to post!" msgstr "" #: actions/public.php:195 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to post!" msgstr "" +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favourites!" #: actions/public.php:242 #, php-format @@ -3086,11 +3133,13 @@ msgid "Be the first to post one!" msgstr "" #: actions/publictagcloud.php:75 -#, php-format +#, fuzzy, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favourites!" #: actions/publictagcloud.php:134 msgid "Tag cloud" @@ -3137,8 +3186,9 @@ msgid "You have been identified. Enter a new password below. " msgstr "" #: actions/recoverpassword.php:188 +#, fuzzy msgid "Password recovery" -msgstr "" +msgstr "Password recovery requested" #: actions/recoverpassword.php:191 msgid "Nickname or email address" @@ -3212,7 +3262,7 @@ msgstr "Password must be 6 chars or more." msgid "Password and confirmation do not match." msgstr "Password and confirmation do not match." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Error setting user." @@ -3220,93 +3270,93 @@ msgstr "Error setting user." msgid "New password successfully saved. You are now logged in." msgstr "New password successfully saved. You are now logged in." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Sorry, only invited people can register." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Sorry, invalid invitation code." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registration successful" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Register" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registration not allowed." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "You can't register if you don't agree to the licence." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "E-mail address already exists." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Invalid username or password." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 or more characters. Required." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Same as password above. Required." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-mail" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Used only for updates, announcements, and password recovery" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Longer name, preferably your \"real\" name" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3315,7 +3365,7 @@ msgstr "" "My text and files are available under %s except this private data: password, " "email address, IM address, and phone number." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3348,7 +3398,7 @@ msgstr "" "\n" "Thanks for signing up and we hope you enjoy using this service." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3428,7 +3478,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:676 msgid "Repeated" msgstr "Repeated" @@ -3463,13 +3513,11 @@ 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." -msgstr "" -"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 for %1$s but %2$s hasn't posted anything yet." #: actions/replies.php:204 #, php-format @@ -3479,13 +3527,13 @@ 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)." +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/repliesrss.php:72 #, php-format @@ -3500,7 +3548,7 @@ msgstr "You cannot revoke user roles on this site." msgid "User doesn't have this role." msgstr "User doesn't have this role." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3514,9 +3562,10 @@ msgstr "User is already sandboxed." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 +#, fuzzy msgid "Sessions" -msgstr "" +msgstr "Version" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." @@ -3557,7 +3606,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Name" @@ -3568,12 +3617,12 @@ msgid "Organization" msgstr "Organization" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3584,16 +3633,18 @@ msgid "Created by %1$s - %2$s access by default - %3$d users" msgstr "" #: actions/showapplication.php:213 +#, fuzzy msgid "Application actions" -msgstr "" +msgstr "Application not found." #: actions/showapplication.php:236 msgid "Reset key & secret" msgstr "" #: actions/showapplication.php:261 +#, fuzzy msgid "Application info" -msgstr "" +msgstr "Application not found." #: actions/showapplication.php:263 msgid "Consumer key" @@ -3660,22 +3711,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 "" -"%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 " -"would add to their favourites :)" +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favourites!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3733,7 +3781,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" @@ -3747,11 +3795,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." @@ -3766,7 +3814,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." @@ -3779,7 +3827,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" @@ -3852,22 +3900,26 @@ 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)." +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/showstream.php:243 -#, php-format +#, fuzzy, 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 "" +"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%%))" #: actions/showstream.php:248 #, php-format @@ -3955,8 +4007,9 @@ msgid "Local" msgstr "Local" #: actions/siteadminpanel.php:256 +#, fuzzy msgid "Default timezone" -msgstr "" +msgstr "Default subscription" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." @@ -4173,7 +4226,7 @@ msgstr "No code entered" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4182,16 +4235,18 @@ msgid "Manage snapshot configuration" msgstr "Manage snapshot configuration" #: actions/snapshotadminpanel.php:127 +#, fuzzy msgid "Invalid snapshot run value." -msgstr "" +msgstr "Invalid role." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." msgstr "" #: actions/snapshotadminpanel.php:144 +#, fuzzy msgid "Invalid snapshot report URL." -msgstr "" +msgstr "nvalid logo URL." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" @@ -4202,8 +4257,9 @@ msgid "In a scheduled job" msgstr "" #: actions/snapshotadminpanel.php:206 +#, fuzzy msgid "Data snapshots" -msgstr "" +msgstr "Save snapshot settings" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" @@ -4218,8 +4274,9 @@ msgid "Snapshots will be sent once every N web hits" msgstr "" #: actions/snapshotadminpanel.php:226 +#, fuzzy msgid "Report URL" -msgstr "" +msgstr "Source URL" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" @@ -4233,7 +4290,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." @@ -4286,11 +4344,13 @@ msgid "%s has no subscribers. Want to be the first?" msgstr "" #: actions/subscribers.php:114 -#, php-format +#, fuzzy, php-format msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favourites!" #: actions/subscriptions.php:52 #, php-format @@ -4402,10 +4462,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." @@ -4440,8 +4496,9 @@ msgid "User" msgstr "User" #: actions/useradminpanel.php:70 +#, fuzzy msgid "User settings for this StatusNet site." -msgstr "" +msgstr "Design settings for this StausNet site." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4475,12 +4532,14 @@ msgid "New users" msgstr "New users" #: actions/useradminpanel.php:235 +#, fuzzy msgid "New user welcome" -msgstr "" +msgstr "New users" #: actions/useradminpanel.php:236 +#, fuzzy msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Name is too long (max 255 chars)." #: actions/useradminpanel.php:241 msgid "Default subscription" @@ -4516,7 +4575,7 @@ msgstr "" "user’s notices. If you didn’t just ask to subscribe to someone’s notices, " "click “Rejectâ€." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "License" @@ -4590,9 +4649,9 @@ msgid "Profile URL ‘%s’ is for a local user." msgstr "" #: actions/userauthorization.php:345 -#, php-format +#, fuzzy, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "Callback URL is not valid." #: actions/userauthorization.php:350 #, php-format @@ -4645,29 +4704,30 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Updates from %1$s on %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 +#, fuzzy msgid "Contributors" -msgstr "" +msgstr "Connections" -#: actions/version.php:168 +#: 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 " @@ -4679,7 +4739,7 @@ msgstr "" "Software Foundation, either version 3 of the Licence, or (at your option) " "any later version. " -#: actions/version.php:174 +#: 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 " @@ -4691,7 +4751,7 @@ msgstr "" "FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public Licence " "for more details. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4700,90 +4760,138 @@ msgstr "" "You should have received a copy of the GNU Affero General Public Licence " "along with this program. If not, see %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Version" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Database error inserting hashtag: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4791,72 +4899,124 @@ msgstr "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 +#, fuzzy msgid "Already subscribed!" -msgstr "" +msgstr "Not subscribed!" -#: 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." -msgstr "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 "Could not save subscription." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "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 "Could not save subscription." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "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 "Could not save 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." @@ -4907,188 +5067,188 @@ msgid "Untitled page" msgstr "Untitled page" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Primary site navigation" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Personal profile and friends timeline" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Change your email, avatar, password, profile" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Connect to services" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Connect" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Change site configuration" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Invite friends and colleagues to join you on %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Invite" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Logout from the site" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Logout" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Create an account" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Register" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Login to the site" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Login" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Help me!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Help" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Search for people or text" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Search" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Site notice" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Local views" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Page notice" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Secondary site navigation" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Help" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "About" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "F.A.Q." #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacy" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Source" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contact" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Badge" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet software licence" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5098,13 +5258,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** is a microblogging service." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5116,49 +5276,49 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Site content license" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "All %1$s content and data are available under the %2$s licence." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Pagination" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "After" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Before" @@ -5206,76 +5366,78 @@ msgid "Unable to delete design setting." msgstr "Unable to delete design setting." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Basic site configuration" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Design configuration" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Design" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "User configuration" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "User" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Access configuration" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Paths configuration" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Sessions configuration" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Edit site notice" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Snapshots configuration" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: 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 +#, fuzzy msgid "Edit application" -msgstr "" +msgstr "Edit Application" #. TRANS: Form guide. #: lib/applicationeditform.php:187 +#, fuzzy msgid "Icon for this application" -msgstr "" +msgstr "Do not delete this application" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 @@ -5372,13 +5534,15 @@ msgstr "Revoke" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 +#, fuzzy msgid "Attachments" -msgstr "" +msgstr "No attachments." #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 +#, fuzzy msgid "Author" -msgstr "" +msgstr "Authorise URL" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 @@ -5390,14 +5554,15 @@ msgid "Notices where this attachment appears" msgstr "" #: lib/attachmenttagcloudsection.php:48 +#, fuzzy msgid "Tags for this attachment" -msgstr "" +msgstr "No such attachment." -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Password changing failed" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Password changing is not allowed" @@ -5488,14 +5653,14 @@ msgstr "Fullname: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Location: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Homepage: %s" @@ -5781,8 +5946,9 @@ msgstr "" "You can upload your personal background image. The maximum file size is 2MB." #: lib/designsettings.php:418 +#, fuzzy msgid "Design defaults restored." -msgstr "" +msgstr "Design preferences saved." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" @@ -6011,8 +6177,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s is now listening to your notices on %2$s." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6038,19 +6211,19 @@ msgstr "" "Change your email address or notification options at %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Bio: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "New e-mail address for posting to %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6072,30 +6245,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS confirmation" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: confirm you own this phone number with this code:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "You've been nudged by %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6112,13 +6285,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "New private message from %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6138,13 +6311,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) added your notice as a favorite" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6166,7 +6339,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6174,13 +6347,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, php-format +#: lib/mail.php:657 +#, fuzzy, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +msgstr "%s (@%s) added your notice as a favorite" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6217,7 +6390,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:228 lib/noticelist.php:506 msgid "from" msgstr "from" @@ -6272,24 +6445,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 "" @@ -6343,51 +6516,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:568 msgid "in context" msgstr "in context" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repeated by" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Reply to this notice" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Reply" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Notice repeated" @@ -6497,7 +6670,7 @@ msgstr "" msgid "All groups" msgstr "All groups" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6521,7 +6694,7 @@ msgstr "Featured" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "No return-to arguments." @@ -6542,7 +6715,7 @@ msgstr "Repeat this notice" msgid "Revoke the \"%s\" role from this user" msgstr "Revoke the \"%s\" role from this user" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6640,21 +6813,67 @@ msgstr "" msgid "None" msgstr "None" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Failed updating avatar." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Error updating remote profile." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Top posters" #: lib/unsandboxform.php:69 +#, fuzzy msgid "Unsandbox" -msgstr "" +msgstr "Sandbox" #: lib/unsandboxform.php:80 msgid "Unsandbox this user" msgstr "Unsandbox this user" #: lib/unsilenceform.php:67 +#, fuzzy msgid "Unsilence" -msgstr "" +msgstr "Silence" #: lib/unsilenceform.php:78 msgid "Unsilence this user" @@ -6720,56 +6939,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "a few seconds ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "about a minute ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "about %d minutes ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "about an hour ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "about %d hours ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "about a day ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "about %d days ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "about a month ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "about %d months ago" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "about a year ago" diff --git a/locale/eo/LC_MESSAGES/statusnet.po b/locale/eo/LC_MESSAGES/statusnet.po new file mode 100644 index 000000000..5835365c9 --- /dev/null +++ b/locale/eo/LC_MESSAGES/statusnet.po @@ -0,0 +1,7093 @@ +# Translation of StatusNet to Esperanto +# +# Author@translatewiki.net: AVRS +# Author@translatewiki.net: Brion +# Author@translatewiki.net: Ianmcorvidae +# Author@translatewiki.net: Kris10 +# Author@translatewiki.net: LyzTyphone +# -- +# 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-11 10:48+0000\n" +"PO-Revision-Date: 2010-08-11 10:49:34+0000\n" +"Language-Team: Esperanto\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MediaWiki 1.17alpha (r70848); Translate extension (2010-07-21)\n" +"X-Translation-Project: translatewiki.net at http://translatewiki.net\n" +"X-Language-Code: eo\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 "Atingo" + +#. TRANS: Page notice +#: actions/accessadminpanel.php:67 +msgid "Site access settings" +msgstr "Retejo-atinga agordo" + +#. TRANS: Form legend for registration form. +#: actions/accessadminpanel.php:161 +msgid "Registration" +msgstr "Registrado" + +#. TRANS: Checkbox instructions for admin setting "Private" +#: actions/accessadminpanel.php:165 +msgid "Prohibit anonymous users (not logged in) from viewing site?" +msgstr "Ĉu malpermesi al anonimaj uzantoj (ne ensalutintaj) vidi retejon?" + +#. TRANS: Checkbox label for prohibiting anonymous users from viewing site. +#: actions/accessadminpanel.php:167 +msgctxt "LABEL" +msgid "Private" +msgstr "Nepublika" + +#. TRANS: Checkbox instructions for admin setting "Invite only" +#: actions/accessadminpanel.php:174 +msgid "Make registration invitation only." +msgstr "Permesi registriÄon nur perinvitan." + +#. TRANS: Checkbox label for configuring site as invite only. +#: actions/accessadminpanel.php:176 +msgid "Invite only" +msgstr "Nur per invito" + +#. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) +#: actions/accessadminpanel.php:183 +msgid "Disable new registrations." +msgstr "Malpermesi novan registriÄon." + +#. TRANS: Checkbox label for disabling new user registrations. +#: actions/accessadminpanel.php:185 +msgid "Closed" +msgstr "Fermita" + +#. TRANS: Title / tooltip for button to save access settings in site admin panel +#: actions/accessadminpanel.php:202 +msgid "Save access settings" +msgstr "Konservu atingan agordon" + +#. 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 "Konservu" + +#. 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 "Ne estas tiu paÄo." + +#: 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 "Ne ekzistas tiu uzanto." + +#. 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 kaj amikoj, paÄo %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 kaj amikoj" + +#. TRANS: %1$s is user nickname +#: actions/all.php:107 +#, php-format +msgid "Feed for friends of %s (RSS 1.0)" +msgstr "Fluo por amikoj de %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 "Fluo por amikoj de %s (RSS 2.0)" + +#. TRANS: %1$s is user nickname +#: actions/all.php:125 +#, php-format +msgid "Feed for friends of %s (Atom)" +msgstr "Fluo por amikoj de %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 "" +"Tie ĉi estas la tempstrio de %s kaj amikoj sed ankoraÅ neniu afiÅis ion ajn." + +#: actions/all.php:143 +#, php-format +msgid "" +"Try subscribing to more people, [join a group](%%action.groups%%) or post " +"something yourself." +msgstr "" +"Provu aboni pli da homoj, [aniÄu al grupo] (%%action.groups%%) aÅ afiÅu ion " +"vi mem." + +#. 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 "" +"Vi povas provi [puÅeti %1$s](../%2$s) de lia profilo aÅ [afiÅi ion al li](%%" +"%%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 them." +msgstr "" +"Kial ne [krei konton]](%%%%action.register%%%%) kaj poste puÅeti %s aÅ afiÅi " +"avizon al li?" + +#. TRANS: H1 text +#: actions/all.php:182 +msgid "You and friends" +msgstr "Vi kaj amikoj" + +#. 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 "ÄœisdatiÄoj de %1$s kaj amikoj ĉe %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 "Metodo de API ne troviÄas." + +#: 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 "Ĉi tiu metodo bezonas POST-on." + +#: actions/apiaccountupdatedeliverydevice.php:106 +msgid "" +"You must specify a parameter named 'device' with a value of one of: sms, im, " +"none." +msgstr "" +"Vi devas specifi parametron nomitan 'device' kun valoro de interalie: 'sms', " +"'im', 'none'." + +#: actions/apiaccountupdatedeliverydevice.php:133 +msgid "Could not update user." +msgstr "Malsukcesis Äisdatigi uzanton" + +#: 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 "La uzanto ne havas profilon." + +#: actions/apiaccountupdateprofile.php:147 +msgid "Could not save profile." +msgstr "Malsukcesis konservi la profilon." + +#: 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 "" +"La servilo ne povis trakti tiom da POST-datumo (% bajtoj) pro Äia nuna " +"agordo." + +#: 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 "Malsukcesis konservi vian desegnan agordon" + +#: actions/apiaccountupdateprofilebackgroundimage.php:187 +#: actions/apiaccountupdateprofilecolors.php:142 +msgid "Could not update your design." +msgstr "Malsukcesis Äisdatigi vian desegnon." + +#: actions/apiblockcreate.php:105 +msgid "You cannot block yourself!" +msgstr "Vi ne povas bloki vin mem!" + +#: actions/apiblockcreate.php:126 +msgid "Block user failed." +msgstr "Ne sukcesis bloki uzanton." + +#: actions/apiblockdestroy.php:114 +msgid "Unblock user failed." +msgstr "Ne sukcesis malbloki uzanton." + +#: actions/apidirectmessage.php:89 +#, php-format +msgid "Direct messages from %s" +msgstr "Rektaj mesaÄoj de %s" + +#: actions/apidirectmessage.php:93 +#, php-format +msgid "All the direct messages sent from %s" +msgstr "Ĉiuj rektaj mesaÄoj senditaj de %s" + +#: actions/apidirectmessage.php:101 +#, php-format +msgid "Direct messages to %s" +msgstr "Rektaj mesaÄoj al %s" + +#: actions/apidirectmessage.php:105 +#, php-format +msgid "All the direct messages sent to %s" +msgstr "Ĉiuj rektaj mesaÄoj senditaj al %s" + +#: actions/apidirectmessagenew.php:118 +msgid "No message text!" +msgstr "Sen mesaÄteksto!" + +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format +msgid "That's too long. Max message size is %d chars." +msgstr "Tro longas. MesaÄa longlimo estas %d signoj." + +#: actions/apidirectmessagenew.php:138 +msgid "Recipient user not found." +msgstr "Ricevonta uzanto ne troviÄas." + +#: actions/apidirectmessagenew.php:142 +msgid "Can't send direct messages to users who aren't your friend." +msgstr "Vi ne povas sendi rektan mesaÄon al uzanto kiu ne estas via amiko." + +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 +msgid "No status found with that ID." +msgstr "Stato kun tiu ID ne trovitas." + +#: actions/apifavoritecreate.php:120 +msgid "This status is already a favorite." +msgstr "Ĉi tiu stato jam estas Åatata." + +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 +msgid "Could not create favorite." +msgstr "Malsukcesis krei Åataton." + +#: actions/apifavoritedestroy.php:123 +msgid "That status is not a favorite." +msgstr "La stato ne estas Åatata." + +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 +msgid "Could not delete favorite." +msgstr "Malsukcesis forigi Åataton." + +#: actions/apifriendshipscreate.php:109 +msgid "Could not follow user: profile not found." +msgstr "Malsukcesis aboni uzanton: profilo ne troviÄas." + +#: actions/apifriendshipscreate.php:118 +#, php-format +msgid "Could not follow user: %s is already on your list." +msgstr "Ne povas aboni uzanton: %s estas jam en via listo." + +#: actions/apifriendshipsdestroy.php:109 +msgid "Could not unfollow user: User not found." +msgstr "Ne povas malaboni uzanton. Uzanto ne troviÄas." + +#: actions/apifriendshipsdestroy.php:120 +msgid "You cannot unfollow yourself." +msgstr "Vi ne povas malaboni vin mem." + +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Du uzantajn IDojn aÅ montronomojn vi devas specifi." + +#: actions/apifriendshipsshow.php:134 +msgid "Could not determine source user." +msgstr " Malsukcesis certigi fontan uzanton." + +#: actions/apifriendshipsshow.php:142 +msgid "Could not find target user." +msgstr "Malsukcesis trovi celan uzanton." + +#: 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 "" +"Kromnomo devas havi nur minuskulajn literojn kaj numerojn sed neniun spacon." + +#: 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 "La uzantnomo jam uziÄis. Provu ion alian." + +#: 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 "Ne valida kromnomo." + +#: 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 "ĈefpaÄo ne estas valida URL." + +#: 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 "Plennomo estas tro longa (maksimume 255 literoj)" + +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 +#: actions/newapplication.php:172 +#, php-format +msgid "Description is too long (max %d chars)." +msgstr "Priskribo estas tro longa (maksimume %d signoj)." + +#: 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 "lokonomo estas tro longa (maksimume 255 literoj)" + +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 +#: actions/newgroup.php:159 +#, php-format +msgid "Too many aliases! Maximum %d." +msgstr "Tro da alinomoj! Maksimume %d." + +#: actions/apigroupcreate.php:267 +#, php-format +msgid "Invalid alias: \"%s\"." +msgstr "La alinomo estas nevalida: \"%*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 "La alinomo \"%s\" estas jam okupita. Provu ion alian." + +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 +#: actions/newgroup.php:178 +msgid "Alias can't be the same as nickname." +msgstr "La alinomo devas ne esti sama al la kromnomo." + +#: 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 "Grupo ne troviÄas." + +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 +msgid "You are already a member of that group." +msgstr "Vi estas jam grupano." + +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 +msgid "You have been blocked from that group by the admin." +msgstr "La administranto blokis vin de tiu grupo." + +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 +#, php-format +msgid "Could not join user %1$s to group %2$s." +msgstr "La uzanto %1$*s ne povas aliÄi al la grupo %2$*s." + +#: actions/apigroupleave.php:115 +msgid "You are not a member of this group." +msgstr "Vi ne estas grupano." + +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#, php-format +msgid "Could not remove user %1$s from group %2$s." +msgstr "Malsukcesis forigi uzanton %1$s de grupo %2$s." + +#. TRANS: %s is a user name +#: actions/apigrouplist.php:98 +#, php-format +msgid "%s's groups" +msgstr "Grupoj de %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 +#, php-format +msgid "%1$s groups %2$s is a member of." +msgstr "Grupoj de %2$s ĉe %1$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. +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 +#, php-format +msgid "%s groups" +msgstr "Grupoj de %s" + +#: actions/apigrouplistall.php:96 +#, php-format +msgid "groups on %s" +msgstr "grupoj ĉe %s" + +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Malsukcesis alÅuti" + +#: actions/apioauthauthorize.php:101 +msgid "No oauth_token parameter provided." +msgstr "Ne oauth_token parametro provizita." + +#: actions/apioauthauthorize.php:106 +msgid "Invalid token." +msgstr "Nevalida ĵetono" + +#: 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 "Estis problemo pri via seanco. Bonvolu provi refoje." + +#: actions/apioauthauthorize.php:135 +msgid "Invalid nickname / password!" +msgstr "Nevalida kromnomo / pasvorto!" + +#: actions/apioauthauthorize.php:159 +msgid "Database error deleting OAuth application user." +msgstr "Datumbaza eraro forigi la uzanton de *OAuth-aplikaĵo." + +#: actions/apioauthauthorize.php:185 +msgid "Database error inserting OAuth application user." +msgstr "Datumbaza eraro enigi la uzanton de *OAuth-aplikaĵo." + +#: actions/apioauthauthorize.php:214 +#, php-format +msgid "" +"The request token %s has been authorized. Please exchange it for an access " +"token." +msgstr "" +"La demanda ĵetono %s estis rajtigita. Bonvolu interÅanÄi Äin por atinga " +"ĵetono." + +#: actions/apioauthauthorize.php:227 +#, php-format +msgid "The request token %s has been denied and revoked." +msgstr "La demanda token %s estis neita kaj revokita." + +#. 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 "Neatendita formo-sendo." + +#: actions/apioauthauthorize.php:259 +msgid "An application would like to connect to your account" +msgstr "Aplikaĵo volas konekti al via konto" + +#: actions/apioauthauthorize.php:276 +msgid "Allow or deny access" +msgstr "Permesi aÅ malpermesi atingon" + +#: actions/apioauthauthorize.php:292 +#, php-format +msgid "" +"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like " +"the ability to <strong>%3$s</strong> your %4$s account data. You should only " +"give access to your %4$s account to third parties you trust." +msgstr "" +"La aplikaĵo <strong>%1$s</strong> de <strong>%2$s</strong> volas la kapablon " +"<strong>%3$s</strong> vian %4$s kontdatumon. Vi devas doni atingon nur al " +"via %4$s konto al triaj partioj, kiujn vi fidas." + +#. 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 "Kromnomo" + +#. 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 "Pasvorto" + +#: actions/apioauthauthorize.php:328 +msgid "Deny" +msgstr "Malpermesi" + +#: actions/apioauthauthorize.php:334 +msgid "Allow" +msgstr "Permesi" + +#: actions/apioauthauthorize.php:351 +msgid "Allow or deny access to your account information." +msgstr "Permesi aÅ malpermesi atingon al via kontdatumo." + +#: actions/apistatusesdestroy.php:112 +msgid "This method requires a POST or DELETE." +msgstr "Ĉi tiu metodo bezonas POST aÇ” DELETE." + +#: actions/apistatusesdestroy.php:135 +msgid "You may not delete another user's status." +msgstr "Vi ne povas forigi la staton de alia uzanto." + +#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 +#: actions/deletenotice.php:52 actions/shownotice.php:92 +msgid "No such notice." +msgstr "Ne estas tiu avizo." + +#: actions/apistatusesretweet.php:83 +msgid "Cannot repeat your own notice." +msgstr "Vi ne povas ripeti vian propran avizon." + +#: actions/apistatusesretweet.php:91 +msgid "Already repeated that notice." +msgstr "La avizo jam ripetiÄis." + +#: actions/apistatusesshow.php:139 +msgid "Status deleted." +msgstr "Stato forigita." + +#: actions/apistatusesshow.php:145 +msgid "No status with that ID found." +msgstr "Neniu stato kun tiu ID troviÄas." + +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Kliento devas providi al \"stato\"-parametro valoron." + +#: 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 "Tro longas. Aviza longlimo estas %*d signoj." + +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 +msgid "Not found." +msgstr "Ne troviÄas." + +#: actions/apistatusesupdate.php:306 actions/newnotice.php:178 +#, php-format +msgid "Max notice size is %d chars, including attachment URL." +msgstr "Aviza longlimo estas %d signoj, enkalkulante ankaÅ la retadresojn." + +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 +msgid "Unsupported format." +msgstr "Formato ne subtenata." + +#: actions/apitimelinefavorites.php:110 +#, php-format +msgid "%1$s / Favorites from %2$s" +msgstr "%1$*s / Åœatato de %2$*s" + +#: actions/apitimelinefavorites.php:119 +#, php-format +msgid "%1$s updates favorited by %2$s / %2$s." +msgstr "%1$*s Äisdatigoj Åatataj de %2$*s / %2$*s." + +#: actions/apitimelinementions.php:118 +#, php-format +msgid "%1$s / Updates mentioning %2$s" +msgstr "%1$s / Äœisdatigoj kiuj mencias %2$s" + +#: actions/apitimelinementions.php:131 +#, php-format +msgid "%1$s updates that reply to updates from %2$s / %3$s." +msgstr "%1$s Äisdatigoj kiuj respondas al Äisdatigoj de %2$s / %3$s." + +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 +#, php-format +msgid "%s public timeline" +msgstr "%s publika tempstrio" + +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 +#, php-format +msgid "%s updates from everyone!" +msgstr "%s Äisdatigoj de ĉiuj!" + +#: actions/apitimelineretweetedtome.php:111 +#, php-format +msgid "Repeated to %s" +msgstr "Ripetita al %s" + +#: actions/apitimelineretweetsofme.php:114 +#, php-format +msgid "Repeats of %s" +msgstr "Ripetoj de %s" + +#: actions/apitimelinetag.php:105 actions/tag.php:67 +#, php-format +msgid "Notices tagged with %s" +msgstr "Avizoj etikeditaj %s" + +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, php-format +msgid "Updates tagged with %1$s on %2$s!" +msgstr "Äœisdatigoj etikeditaj %1$s ĉe %2$s!" + +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API-metodo farata." + +#: actions/attachment.php:73 +msgid "No such attachment." +msgstr "Ne estas tiu aldonaĵo." + +#: 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 "Neniu kromnomo." + +#: actions/avatarbynickname.php:64 +msgid "No size." +msgstr " Neniu grando." + +#: actions/avatarbynickname.php:69 +msgid "Invalid size." +msgstr "Grando nevalida." + +#. TRANS: Link description in user account settings menu. +#: actions/avatarsettings.php:67 actions/showgroup.php:230 +#: lib/accountsettingsaction.php:118 +msgid "Avatar" +msgstr "VizaÄbildo" + +#: actions/avatarsettings.php:78 +#, php-format +msgid "You can upload your personal avatar. The maximum file size is %s." +msgstr "Vi povas alÅuti vian personan vizaÄbildon. Dosiero-grandlimo estas %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 "Uzanto sen egala profilo." + +#: actions/avatarsettings.php:119 actions/avatarsettings.php:197 +#: actions/grouplogo.php:254 +msgid "Avatar settings" +msgstr "VizaÄbilda agordo" + +#: actions/avatarsettings.php:127 actions/avatarsettings.php:205 +#: actions/grouplogo.php:202 actions/grouplogo.php:262 +msgid "Original" +msgstr "Originala" + +#: actions/avatarsettings.php:142 actions/avatarsettings.php:217 +#: actions/grouplogo.php:213 actions/grouplogo.php:274 +msgid "Preview" +msgstr "AntaÅrigardo" + +#: actions/avatarsettings.php:149 actions/showapplication.php:252 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 +msgid "Delete" +msgstr "Forigi" + +#: actions/avatarsettings.php:166 actions/grouplogo.php:236 +msgid "Upload" +msgstr "AlÅuti" + +#: actions/avatarsettings.php:231 actions/grouplogo.php:289 +msgid "Crop" +msgstr "Tranĉi" + +#: actions/avatarsettings.php:305 +msgid "No file uploaded." +msgstr "Neniu dosiero alÅutiÄas." + +#: actions/avatarsettings.php:332 +msgid "Pick a square area of the image to be your avatar" +msgstr "Elektu kvadratan parton de la bildo kiel via vizaÄbildo" + +#: actions/avatarsettings.php:347 actions/grouplogo.php:380 +msgid "Lost our file data." +msgstr "PerdiÄis nia dosiera datumo." + +#: actions/avatarsettings.php:370 +msgid "Avatar updated." +msgstr "VizaÄbildo Äisdatigita." + +#: actions/avatarsettings.php:373 +msgid "Failed updating avatar." +msgstr "Eraris Äisdatigi vizaÄbildon." + +#: actions/avatarsettings.php:397 +msgid "Avatar deleted." +msgstr "VizaÄbildo forigita." + +#: actions/block.php:69 +msgid "You already blocked that user." +msgstr "Vi jam blokis la uzanton." + +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 +msgid "Block user" +msgstr "Bloki uzanton" + +#: 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 "" +"Ĉu vi certe volas bloki la uzanton? Poste, ili malaboniÄos de vi, ne povos " +"aboni vin kaj vi ne ricevos avizon pro ilia ajna @-respondo." + +#. 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 "Ne" + +#. 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 "Ne bloki la uzanton" + +#. 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 "Jes" + +#. 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 "Bloki la uzanton" + +#: actions/block.php:187 +msgid "Failed to save block information." +msgstr "Eraris konservi blokado-informon." + +#: 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 "Ne estas tiu grupo." + +#: actions/blockedfromgroup.php:97 +#, php-format +msgid "%s blocked profiles" +msgstr "%s profiloj blokitaj" + +#: actions/blockedfromgroup.php:100 +#, php-format +msgid "%1$s blocked profiles, page %2$d" +msgstr "%1$s profiloj blokitaj, paÄo %2$d" + +#: actions/blockedfromgroup.php:115 +msgid "A list of the users blocked from joining this group." +msgstr "Listo de uzantoj blokita de aniÄi al ĉi tiun grupo." + +#: actions/blockedfromgroup.php:288 +msgid "Unblock user from group" +msgstr "Malbloki uzanton de grupo" + +#: actions/blockedfromgroup.php:320 lib/unblockform.php:69 +msgid "Unblock" +msgstr "Malbloki" + +#: actions/blockedfromgroup.php:320 lib/unblockform.php:80 +msgid "Unblock this user" +msgstr "Malbloki ĉi tiun uzanton" + +#. TRANS: Title for mini-posting window loaded from bookmarklet. +#: actions/bookmarklet.php:51 +#, php-format +msgid "Post to %s" +msgstr "Sendi al %s" + +#: actions/confirmaddress.php:75 +msgid "No confirmation code." +msgstr "Neniu konfirma kodo." + +#: actions/confirmaddress.php:80 +msgid "Confirmation code not found." +msgstr "Konfirma kodo ne trovitas." + +#: actions/confirmaddress.php:85 +msgid "That confirmation code is not for you!" +msgstr "Tiu komfirmnumero ne estas por vi!" + +#. 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 "Nerekonata adrestipo %s." + +#. TRANS: Client error for an already confirmed email/jabbel/sms address. +#: actions/confirmaddress.php:96 +msgid "That address has already been confirmed." +msgstr "La adreso jam estis konfirmita." + +#. 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 "Ne povus Äisdatigi uzanton." + +#. 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 "Ne povas forigi retpoÅtan konfirmon." + +#: actions/confirmaddress.php:146 +msgid "Confirm address" +msgstr "Konfirmi retadreson" + +#: actions/confirmaddress.php:161 +#, php-format +msgid "The address \"%s\" has been confirmed for your account." +msgstr "Adreso \"%s\" nun konfirmitas je via konto." + +#: actions/conversation.php:99 +msgid "Conversation" +msgstr "Konversacio" + +#: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 +#: lib/profileaction.php:229 lib/searchgroupnav.php:82 +msgid "Notices" +msgstr "Avizoj" + +#: actions/deleteapplication.php:63 +msgid "You must be logged in to delete an application." +msgstr "Ensalutu por forigi la aplikaĵon." + +#: actions/deleteapplication.php:71 +msgid "Application not found." +msgstr "Aplikaĵo ne trovita." + +#: actions/deleteapplication.php:78 actions/editapplication.php:77 +#: actions/showapplication.php:94 +msgid "You are not the owner of this application." +msgstr "Vi ne estas la posedanto de ĉi tiu aplikaĵo." + +#: 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 "Problemo okazas pri via seancĵetono." + +#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 +msgid "Delete application" +msgstr "Forigi aplikaĵon" + +#: 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 "" +"Ĉu vi certe volas forigi la aplikaĵon? Ĉiu datumo pri la aplikaĵo viÅiÄos de " +"la datumbazo, inkluzive de ĉiu ekzistanta uzanto-konekto." + +#. TRANS: Submit button title for 'No' when deleting an application. +#: actions/deleteapplication.php:158 +msgid "Do not delete this application" +msgstr "Ne forigu ĉi tiun aplikaĵon." + +#. TRANS: Submit button title for 'Yes' when deleting an application. +#: actions/deleteapplication.php:164 +msgid "Delete this application" +msgstr "ViÅi ĉi tiun aplikon" + +#. 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 "Ne konektita." + +#: actions/deletenotice.php:71 +msgid "Can't delete this notice." +msgstr "Ne povas forigi ĉi tiun avizon." + +#: actions/deletenotice.php:103 +msgid "" +"You are about to permanently delete a notice. Once this is done, it cannot " +"be undone." +msgstr "" +"Vi nun por ĉiam forigos avizon. Kiam tio fariÄos, ne plu eblos malfari tion." + +#: actions/deletenotice.php:109 actions/deletenotice.php:141 +msgid "Delete notice" +msgstr "Forigi avizon" + +#: actions/deletenotice.php:144 +msgid "Are you sure you want to delete this notice?" +msgstr "Ĉu vi certe volas forigi la avizon?" + +#. TRANS: Submit button title for 'No' when deleting a notice. +#: actions/deletenotice.php:151 +msgid "Do not delete this notice" +msgstr "Ne forigi la avizon" + +#. TRANS: Submit button title for 'Yes' when deleting a notice. +#: actions/deletenotice.php:158 lib/noticelist.php:657 +msgid "Delete this notice" +msgstr "Forigi la avizon" + +#: actions/deleteuser.php:67 +msgid "You cannot delete users." +msgstr "Vi ne povas forigi uzantojn." + +#: actions/deleteuser.php:74 +msgid "You can only delete local users." +msgstr "Vi povas forigi nur lokan uzanton." + +#: actions/deleteuser.php:110 actions/deleteuser.php:133 +msgid "Delete user" +msgstr "Forigi uzanton" + +#: 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 "" +"Ĉu vi certe volas forigi la uzanton? Ĉiu datumo pri la uzanto viÅiÄos de la " +"datumbazo sen sekurkopio." + +#. TRANS: Submit button title for 'Yes' when deleting a user. +#: actions/deleteuser.php:163 lib/deleteuserform.php:77 +msgid "Delete this user" +msgstr "Forigi la uzanton" + +#. 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 "Aspekto" + +#: actions/designadminpanel.php:74 +msgid "Design settings for this StatusNet site." +msgstr "Aspektaj agordoj por ĉi tiu StatusNet-retejo." + +#: actions/designadminpanel.php:318 +msgid "Invalid logo URL." +msgstr "URL por la emblemo nevalida." + +#: actions/designadminpanel.php:322 +#, php-format +msgid "Theme not available: %s." +msgstr "Desegno ne havebla: %s." + +#: actions/designadminpanel.php:426 +msgid "Change logo" +msgstr "ÅœanÄi emblemon" + +#: actions/designadminpanel.php:431 +msgid "Site logo" +msgstr "Reteja emblemo" + +#: actions/designadminpanel.php:443 +msgid "Change theme" +msgstr "ÅœanÄi desegnon" + +#: actions/designadminpanel.php:460 +msgid "Site theme" +msgstr "Reteja desegno" + +#: actions/designadminpanel.php:461 +msgid "Theme for the site." +msgstr "Desegno por la retejo" + +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Propra desegno" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Vi povas alÅuti propran StatusNet-desegnon kiel .zip-dosiero" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 +msgid "Change background image" +msgstr "ÅœanÄi fonbildon" + +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 +#: lib/designsettings.php:178 +msgid "Background" +msgstr "Fono" + +#: actions/designadminpanel.php:496 +#, php-format +msgid "" +"You can upload a background image for the site. The maximum file size is %1" +"$s." +msgstr "Vi povas alÅuti fonbildon por la retejo. Dosiero-grandlimo estas %1$s." + +#. TRANS: Used as radio button label to add a background image. +#: actions/designadminpanel.php:527 lib/designsettings.php:139 +msgid "On" +msgstr "En" + +#. TRANS: Used as radio button label to not add a background image. +#: actions/designadminpanel.php:544 lib/designsettings.php:155 +msgid "Off" +msgstr "For" + +#: actions/designadminpanel.php:545 lib/designsettings.php:156 +msgid "Turn background image on or off." +msgstr "Aktivigi aÅ senaktivigi fonbildon" + +#: actions/designadminpanel.php:550 lib/designsettings.php:161 +msgid "Tile background image" +msgstr "Ripeti la fonbildon" + +#: actions/designadminpanel.php:564 lib/designsettings.php:170 +msgid "Change colours" +msgstr "ÅœanÄi kolorojn" + +#: actions/designadminpanel.php:587 lib/designsettings.php:191 +msgid "Content" +msgstr "Enhavo" + +#: actions/designadminpanel.php:600 lib/designsettings.php:204 +msgid "Sidebar" +msgstr "Flanka strio" + +#: actions/designadminpanel.php:613 lib/designsettings.php:217 +msgid "Text" +msgstr "Teksto" + +#: actions/designadminpanel.php:626 lib/designsettings.php:230 +msgid "Links" +msgstr "Ligiloj" + +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Speciala" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Propra CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 +msgid "Use defaults" +msgstr "Uzu defaÅlton" + +#: actions/designadminpanel.php:677 lib/designsettings.php:248 +msgid "Restore default designs" +msgstr "RestaÅri defaÅltajn desegnojn" + +#: actions/designadminpanel.php:683 lib/designsettings.php:254 +msgid "Reset back to default" +msgstr "RedefaÅltiÄi" + +#. 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 "Konservi" + +#: actions/designadminpanel.php:686 lib/designsettings.php:257 +msgid "Save design" +msgstr "Savi desegnon" + +#: actions/disfavor.php:81 +msgid "This notice is not a favorite!" +msgstr "Ĉi tiu avizo ne estas preferita" + +#: actions/disfavor.php:94 +msgid "Add to favorites" +msgstr "Aldoni al Åatolisto" + +#: actions/doc.php:158 +#, php-format +msgid "No such document \"%s\"" +msgstr "Ne estas tia dokumento \"%s\"" + +#: actions/editapplication.php:54 +msgid "Edit Application" +msgstr "Redakti Aplikon" + +#: actions/editapplication.php:66 +msgid "You must be logged in to edit an application." +msgstr "Ensalutu por redakti la aplikaĵon." + +#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 +#: actions/showapplication.php:87 +msgid "No such application." +msgstr "Ne estas tia aplikaĵo." + +#: actions/editapplication.php:161 +msgid "Use this form to edit your application." +msgstr "Uzu ĉi tiun formularon por redakti vian aplikaĵon." + +#: actions/editapplication.php:177 actions/newapplication.php:159 +msgid "Name is required." +msgstr "Nomo necesas." + +#: actions/editapplication.php:180 actions/newapplication.php:165 +msgid "Name is too long (max 255 chars)." +msgstr "La nomo estas tro longa (maksimume 255 literoj)" + +#: actions/editapplication.php:183 actions/newapplication.php:162 +msgid "Name already in use. Try another one." +msgstr "La nomo jam uziÄis. Provu ion alian." + +#: actions/editapplication.php:186 actions/newapplication.php:168 +msgid "Description is required." +msgstr "Priskribo necesas." + +#: actions/editapplication.php:194 +msgid "Source URL is too long." +msgstr "Fonta URL estas tro longa." + +#: actions/editapplication.php:200 actions/newapplication.php:185 +msgid "Source URL is not valid." +msgstr "Fonta URL estas nevalida." + +#: actions/editapplication.php:203 actions/newapplication.php:188 +msgid "Organization is required." +msgstr "Organizo necesas." + +#: actions/editapplication.php:206 actions/newapplication.php:191 +msgid "Organization is too long (max 255 chars)." +msgstr "Organizonomo estas tro longa (maksimume 255 literoj)." + +#: actions/editapplication.php:209 actions/newapplication.php:194 +msgid "Organization homepage is required." +msgstr "Organiza ĉefpaÄo bezoniÄas." + +#: actions/editapplication.php:218 actions/newapplication.php:206 +msgid "Callback is too long." +msgstr "Revokfunkcio estas tro longa." + +#: actions/editapplication.php:225 actions/newapplication.php:215 +msgid "Callback URL is not valid." +msgstr "Revokfunkcia URL estas nevalida." + +#: actions/editapplication.php:258 +msgid "Could not update application." +msgstr "Malsukcesis Äisdatigi la aplikaĵon." + +#: actions/editgroup.php:56 +#, php-format +msgid "Edit %s group" +msgstr "Redakti %s grupon" + +#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 +msgid "You must be logged in to create a group." +msgstr "Ensalutu por krei grupon." + +#: 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 "Vi devas esti administranto por redakti la grupon." + +#: actions/editgroup.php:158 +msgid "Use this form to edit the group." +msgstr "Uzas ĉi tiun formularon por redakti la grupon." + +#: actions/editgroup.php:205 actions/newgroup.php:145 +#, php-format +msgid "description is too long (max %d chars)." +msgstr "Priskribo estas tro longa (maksimume %d signoj)." + +#: actions/editgroup.php:228 actions/newgroup.php:168 +#, php-format +msgid "Invalid alias: \"%s\"" +msgstr "Nevalida alinomo: \"%s\"" + +#: actions/editgroup.php:258 +msgid "Could not update group." +msgstr "Malsukcesis Äisdatigi grupon." + +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 +msgid "Could not create aliases." +msgstr "Malsukcesis krei alinomon." + +#: actions/editgroup.php:280 +msgid "Options saved." +msgstr "Elektoj konserviÄis." + +#. TRANS: Title for e-mail settings. +#: actions/emailsettings.php:61 +msgid "Email settings" +msgstr "RetpoÅta agordo" + +#. 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 "Administri kiel ricevi mesaÄon de %%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 "RetpoÅtadreso" + +#. TRANS: Form note in e-mail settings form. +#: actions/emailsettings.php:112 +msgid "Current confirmed email address." +msgstr "Nuna konfirmita retpoÅtadreso." + +#. 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 "Forigi" + +#: actions/emailsettings.php:122 +msgid "" +"Awaiting confirmation on this address. Check your inbox (and spam box!) for " +"a message with further instructions." +msgstr "" +"Atendanta konfirmon pri ĉi tiu adreso. Kontrolu vian alvenkeston (kaj " +"spamkeston!) pri mesaÄo kun plua instrukcio." + +#. 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 "Nuligi" + +#. TRANS: Instructions for e-mail address input form. +#: actions/emailsettings.php:135 +msgid "Email address, like \"UserName@example.org\"" +msgstr "RetpoÅtadreso, ekzemple \"ViaNomo@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 "Aldoni" + +#. 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 "Alveninta poÅto" + +#. 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 "Sendu mesaÄon al la adreso por afiÅi novan avizon." + +#. 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 "Krei novan retpoÅtadreson por afiÅado kaj nuligi la antaÅan." + +#. 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 "Nova" + +#. TRANS: Form legend for e-mail preferences form. +#: actions/emailsettings.php:174 +msgid "Email preferences" +msgstr "RetpoÅta agordo." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:180 +msgid "Send me notices of new subscriptions through email." +msgstr "Sendu al mi avizon pri nova abonado per retpoÅto." + +#. 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 "Sendu al mi mesaÄon tiam, kiam iu Åatas mian avizon ." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:193 +msgid "Send me email when someone sends me a private message." +msgstr "Sendu al mi mesaÄon tiam, kiam iu sendas al mi privatan mesaÄon." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:199 +msgid "Send me email when someone sends me an \"@-reply\"." +msgstr "Sendu al mi mesaÄon tiam, kiam iu sendas al mi \"@-respondon\"." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:205 +msgid "Allow friends to nudge me and send me an email." +msgstr "Permesi al amikoj puÅeti min kaj sendi al mi retpoÅtan mesaÄon." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:212 +msgid "I want to post notices by email." +msgstr "Mi volas afiÅi avizon per retpoÅto." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:219 +msgid "Publish a MicroID for my email address." +msgstr "Publikigi MikroID por mia retpoÅtadreso." + +#. TRANS: Confirmation message for successful e-mail preferences save. +#: actions/emailsettings.php:334 +msgid "Email preferences saved." +msgstr "RetpoÅta prefero konserviÄis." + +#. TRANS: Message given saving e-mail address without having provided one. +#: actions/emailsettings.php:353 +msgid "No email address." +msgstr "Neniu retpoÅta adreso." + +#. TRANS: Message given saving e-mail address that cannot be normalised. +#: actions/emailsettings.php:361 +msgid "Cannot normalize that email address" +msgstr "Malsukcesis normigi tiun retpoÅtadreson" + +#. 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 "RetpoÅta adreso ne valida" + +#. TRANS: Message given saving e-mail address that is already set. +#: actions/emailsettings.php:370 +msgid "That is already your email address." +msgstr "Tiu jam estas via retpoÅtadreso." + +#. 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 "Tiu retpoÅtadreso jam apartenas al alia uzanto." + +#. 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 "Malsukcesis enmeti konfirmkodon." + +#. 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 "" +"Konfirmkodo jam senditas al la aldonita retpoÅtadreso. Kontrolu vian " +"alvenkeston (kaj spamkeston!) pri la kodo kaj instrukcio pri kiel uzi Äin." + +#. 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 "Ne estas peto-konfirmo por nuligi." + +#. 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 "Tiu retpoÅtadreso estas malÄusta." + +#. TRANS: Message given after successfully canceling e-mail address confirmation. +#: actions/emailsettings.php:438 +msgid "Email confirmation cancelled." +msgstr "RetpoÅta konfirmo nuligita." + +#. 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 "Tiu ne estas via retpoÅtadreso." + +#. TRANS: Message given after successfully removing a registered e-mail address. +#: actions/emailsettings.php:479 +msgid "The email address was removed." +msgstr "La retpoÅtadreso estas forigita." + +#: actions/emailsettings.php:493 actions/smssettings.php:568 +msgid "No incoming email address." +msgstr "Ne estas alvena retpoÅtadreso" + +#. 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 "Malsukcesis Äisdatigi uzantan informon." + +#. 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 "Alvena retpoÅtadreso forigita." + +#. 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 "Nova alvena retpoÅtadreso aldonita." + +#: actions/favor.php:79 +msgid "This notice is already a favorite!" +msgstr "Ĉi tiu avizo jam estas Åatata." + +#: actions/favor.php:92 lib/disfavorform.php:140 +msgid "Disfavor favorite" +msgstr "MalÅati Åataton." + +#: actions/favorited.php:65 lib/popularnoticesection.php:91 +#: lib/publicgroupnav.php:93 +msgid "Popular notices" +msgstr "Populara avizo" + +#: actions/favorited.php:67 +#, php-format +msgid "Popular notices, page %d" +msgstr "Populara avizo, paÄo %d" + +#: actions/favorited.php:79 +msgid "The most popular notices on the site right now." +msgstr "Nunaj plej popularaj avizoj ĉe ĉi tiu retejo." + +#: actions/favorited.php:150 +msgid "Favorite notices appear on this page but no one has favorited one yet." +msgstr "Åœatataj avizoj aperos ĉi-paÄe sed ankoraÅ nenio ÅatiÄas." + +#: 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 "" +"FariÄu la unua, kiu aldonis avizon al sia Åatolisto, per alklako de la Åato-" +"klavo apud iu ajn avizo, kiun vi Åatas." + +#: 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 "" +"[Kreu konton](%%action.register%%) kaj estu la unua, kiu aldonos avizon al " +"sia Åatolisto!" + +#: actions/favoritesrss.php:111 actions/showfavorites.php:77 +#: lib/personalgroupnav.php:115 +#, php-format +msgid "%s's favorite notices" +msgstr "Åœatataj avizoj de %s" + +#: actions/favoritesrss.php:115 +#, php-format +msgid "Updates favored by %1$s on %2$s!" +msgstr "Åœatataj ÄœisdatiÄoj de %1$s ĉe %2$s!" + +#: actions/featured.php:69 lib/featureduserssection.php:87 +#: lib/publicgroupnav.php:89 +msgid "Featured users" +msgstr "Elstaraj uzantoj" + +#: actions/featured.php:71 +#, php-format +msgid "Featured users, page %d" +msgstr "Elstaraj uzantoj, paÄo %d" + +#: actions/featured.php:99 +#, php-format +msgid "A selection of some great users on %s" +msgstr "Elekto de kelke da elstaraj uzantoj ĉe %s" + +#: actions/file.php:34 +msgid "No notice ID." +msgstr "Ne estas avizo-ID" + +#: actions/file.php:38 +msgid "No notice." +msgstr "Ne estas avizo." + +#: actions/file.php:42 +msgid "No attachments." +msgstr "Ne estas aldonaĵo." + +#: actions/file.php:51 +msgid "No uploaded attachments." +msgstr "Ne estas alÅutita aldonaĵo." + +#: actions/finishremotesubscribe.php:69 +msgid "Not expecting this response!" +msgstr "Neatendita respondo!" + +#: actions/finishremotesubscribe.php:80 +msgid "User being listened to does not exist." +msgstr "Vizitata uzanto ne ekzistas." + +#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 +msgid "You can use the local subscription!" +msgstr "Vi povas aboni loke!" + +#: actions/finishremotesubscribe.php:99 +msgid "That user has blocked you from subscribing." +msgstr "Tiu uzanto abonblokis vin." + +#: actions/finishremotesubscribe.php:110 +msgid "You are not authorized." +msgstr "Vi ne estas rajtigita." + +#: actions/finishremotesubscribe.php:113 +msgid "Could not convert request token to access token." +msgstr "Malsukcesis interÅanÄi petĵetonon al atingoĵetono." + +#: actions/finishremotesubscribe.php:118 +msgid "Remote service uses unknown version of OMB protocol." +msgstr "Fora servo uzas nekonatan version de OMB-protokolo." + +#: actions/finishremotesubscribe.php:138 +msgid "Error updating remote profile." +msgstr "Eraro je Äisdatigo de fora profilo." + +#: actions/getfile.php:79 +msgid "No such file." +msgstr "Ne ekzistas tia dosiero." + +#: actions/getfile.php:83 +msgid "Cannot read file." +msgstr "Malsukcesis legi dosieron." + +#: actions/grantrole.php:62 actions/revokerole.php:62 +msgid "Invalid role." +msgstr "Rolo nevalida." + +#: actions/grantrole.php:66 actions/revokerole.php:66 +msgid "This role is reserved and cannot be set." +msgstr "Tiu ĉi rolo estas rezervita, do ne povas esti asignita." + +#: actions/grantrole.php:75 +msgid "You cannot grant user roles on this site." +msgstr "Vi ne rajtas doni al uzanto rolon ĉe ĉi tiu retejo." + +#: actions/grantrole.php:82 +msgid "User already has this role." +msgstr "Uzanto jam havas la rolon." + +#: 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 "Neniu profilo elektita." + +#: 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 "Ne estas profilo kun tiu ID." + +#: actions/groupblock.php:81 actions/groupunblock.php:81 +#: actions/makeadmin.php:81 +msgid "No group specified." +msgstr "Neniu grupo elektita." + +#: actions/groupblock.php:91 +msgid "Only an admin can block group members." +msgstr "Nur administranto rajtas bloki grupanon." + +#: actions/groupblock.php:95 +msgid "User is already blocked from group." +msgstr "La uzanto jam de grupo blokiÄas." + +#: actions/groupblock.php:100 +msgid "User is not a member of group." +msgstr "La uzanto ne estas grupano." + +#: actions/groupblock.php:134 actions/groupmembers.php:360 +msgid "Block user from group" +msgstr "Bloki uzanton de grupo" + +#: 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 "" +"Ĉu vi certe volas forbari uzanton \"%1$s\" de la grupo \"%2$s\"? Li estos " +"forigita de la grupo, ne povos afiÅi, kaj ne povos aboni la grupon." + +#. 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 "Ne bloki la uzanton de la grupo" + +#. 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 "Bloki la uzanton de la grupo" + +#: actions/groupblock.php:206 +msgid "Database error blocking user from group." +msgstr "Malsukcesis forbari uzanton de la grupo pro datumbaza eraro." + +#: actions/groupbyid.php:74 actions/userbyid.php:70 +msgid "No ID." +msgstr "Neniu ID." + +#: actions/groupdesignsettings.php:68 +msgid "You must be logged in to edit a group." +msgstr "Ensalutu por redakti grupon." + +#: actions/groupdesignsettings.php:144 +msgid "Group design" +msgstr "Grupa desegno" + +#: actions/groupdesignsettings.php:155 +msgid "" +"Customize the way your group looks with a background image and a colour " +"palette of your choice." +msgstr "Agordi kiel aspektu via grupo, kun elekto de fonbildo kaj koloraro." + +#: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 +msgid "Couldn't update your design." +msgstr "Malsukcesis Äisdatigi vian desegnon." + +#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 +msgid "Design preferences saved." +msgstr "Desegna agordo konservita." + +#: actions/grouplogo.php:142 actions/grouplogo.php:195 +msgid "Group logo" +msgstr "Grupa emblemo" + +#: actions/grouplogo.php:153 +#, php-format +msgid "" +"You can upload a logo image for your group. The maximum file size is %s." +msgstr "" +"Vi povas alÅuti emblemo-bildon por via grupo. Dosiero-grandlimo estas $s." + +#: actions/grouplogo.php:365 +msgid "Pick a square area of the image to be the logo." +msgstr "Elektu kvadratan parton de la bildo kiel la emblemo." + +#: actions/grouplogo.php:399 +msgid "Logo updated." +msgstr "Emblemo Äisdatigita." + +#: actions/grouplogo.php:401 +msgid "Failed updating logo." +msgstr "Malsukcesis Äisdatigi emblemon." + +#: actions/groupmembers.php:100 lib/groupnav.php:92 +#, php-format +msgid "%s group members" +msgstr "%s grupanoj" + +#: actions/groupmembers.php:103 +#, php-format +msgid "%1$s group members, page %2$d" +msgstr "%1$s grupanoj, paÄo %2$d" + +#: actions/groupmembers.php:118 +msgid "A list of the users in this group." +msgstr "Listo de uzantoj en tiu ĉi grupo" + +#: actions/groupmembers.php:182 lib/groupnav.php:107 +msgid "Admin" +msgstr "Administranto" + +#: actions/groupmembers.php:392 lib/blockform.php:69 +msgid "Block" +msgstr "Bloki" + +#: actions/groupmembers.php:487 +msgid "Make user an admin of the group" +msgstr "Elekti uzanton grupestro." + +#: actions/groupmembers.php:519 +msgid "Make Admin" +msgstr "Estrigi" + +#: actions/groupmembers.php:519 +msgid "Make this user an admin" +msgstr "Estrigi la uzanton" + +#. 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 "Tempstrio de %s" + +#. 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 "Äœisdatigoj de grupano de %1$s ĉe %2$s!" + +#: 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 "Grupoj" + +#: actions/groups.php:64 +#, php-format +msgid "Groups, page %d" +msgstr "Grupoj, paÄo %d" + +#: 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 "" +"En %%%%site.name%%%% grupoj povas vi babili kun personoj kun similaj " +"interesoj. Post kiam vi aliÄas al grupo vi povos sendi mesaÄon per sintakso" +"\"!groupname\" al ĉiu alia ano. Ĉu vi ne vidas Åatindan grupon? Provu [serĉi]" +"(%%%%action.groupsearch%%%%) aÅ [kreu vian propran grupon!](%%%%action." +"newgroup%%%%)" + +#: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 +msgid "Create a new group" +msgstr "Krei novan grupon" + +#: 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 "" +"Serĉi grupon ĉe %%site.name%% per Äia nomo, loko, aÅ priskribo. Dividu " +"serĉvortojn per spaco; ili estu almenaÅ 3 literojn longaj." + +#: actions/groupsearch.php:58 +msgid "Group search" +msgstr "Grup-serĉo" + +#: actions/groupsearch.php:79 actions/noticesearch.php:117 +#: actions/peoplesearch.php:83 +msgid "No results." +msgstr "Neniu rezulto." + +#: 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 "" +"Se vi ne trovas grupon, kiun vi serĉas, vi povas mem [krei Äin](%%action." +"newgroup%%)." + +#: actions/groupsearch.php:85 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and [create the group](%%" +"action.newgroup%%) yourself!" +msgstr "" +"Kial ne [krei konton](%%action.register%%) kaj mem [krei la grupon](%%action." +"newgroup%%)!" + +#: actions/groupunblock.php:91 +msgid "Only an admin can unblock group members." +msgstr "Nur grupestro rajtas malbloki grupanon." + +#: actions/groupunblock.php:95 +msgid "User is not blocked from group." +msgstr "La uzanto ne estas blokita de grupo." + +#: actions/groupunblock.php:128 actions/unblock.php:86 +msgid "Error removing the block." +msgstr "Eraro ĉe provo malbloki." + +#. TRANS: Title for instance messaging settings. +#: actions/imsettings.php:60 +msgid "IM settings" +msgstr "TujmesaÄila agordo." + +#. 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 "" +"Vi povas sendi kaj ricevi avizojn per Jabber/GTalk-[tujmesaÄiloj](%%doc.im%" +"%). Jen agordu vian adreson kaj ceteron." + +#. 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 "TujmesaÄilo ne estas disponebla." + +#. 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 "TujmesaÄila adreso" + +#: actions/imsettings.php:113 +msgid "Current confirmed Jabber/GTalk address." +msgstr "Nuna konfirmita Jabber/GTalk-adreso." + +#. 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 "" +"Atendante konfirmon por la adreso. Kontrolu vian Jabber/GTalk-konton por " +"mesaÄo kun pli da gvido. (Ĉu vi aldonis %s al via amikolisto?)" + +#. 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 "" +"Jabber/GTalk-adreso, ekzemple \"UserName@example.org\". Unue, certe aldonu %" +"s al via amikolisto je via tujmesaÄilo-kliento aÅ je GTalk." + +#. TRANS: Form legend for IM preferences form. +#: actions/imsettings.php:155 +msgid "IM preferences" +msgstr "TujmesaÄilaj preferoj" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:160 +msgid "Send me notices through Jabber/GTalk." +msgstr "Sendu al mi avizojn per Jabber/GTalk." + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:166 +msgid "Post a notice when my Jabber/GTalk status changes." +msgstr "AfiÅu avizon tiam, kiam mia Jabber/GTalk-stato ÅanÄiÄas." + +#. 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 "" +"Sendu al mi per Jabber/GTalk respondojn de personoj, kiujn mi ne abonas." + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:179 +msgid "Publish a MicroID for my Jabber/GTalk address." +msgstr "Publikigu MikroID por mia Jabber/GTalk-adreso." + +#. TRANS: Confirmation message for successful IM preferences save. +#: actions/imsettings.php:287 actions/othersettings.php:180 +msgid "Preferences saved." +msgstr "Prefero konservita." + +#. TRANS: Message given saving IM address without having provided one. +#: actions/imsettings.php:309 +msgid "No Jabber ID." +msgstr "Mankas Jabber-ID." + +#. TRANS: Message given saving IM address that cannot be normalised. +#: actions/imsettings.php:317 +msgid "Cannot normalize that Jabber ID" +msgstr "Malsukcesis normigi la Jabber-ID" + +#. TRANS: Message given saving IM address that not valid. +#: actions/imsettings.php:322 +msgid "Not a valid Jabber ID" +msgstr "Tio ne estas valida Jabber-ID" + +#. TRANS: Message given saving IM address that is already set. +#: actions/imsettings.php:326 +msgid "That is already your Jabber ID." +msgstr "Tio estas jam via Jabber-ID." + +#. 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 "Jabber-ID jam apartenas al alia uzanto." + +#. 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 "" +"Konfirmo-kodo senditas al la tujmesaÄila adreso aldonita. Vi devas permesi " +"al %s sendi mesaÄojn al vi." + +#. TRANS: Message given canceling IM address confirmation for the wrong IM address. +#: actions/imsettings.php:388 +msgid "That is the wrong IM address." +msgstr "Tiu tujmesaÄila adreso estas malÄusta." + +#. TRANS: Server error thrown on database error canceling IM address confirmation. +#: actions/imsettings.php:397 +msgid "Couldn't delete IM confirmation." +msgstr "Malsukcesis forigi tujmesaÄila agordo." + +#. TRANS: Message given after successfully canceling IM address confirmation. +#: actions/imsettings.php:402 +msgid "IM confirmation cancelled." +msgstr "TujmesaÄila konfirmo nuligita." + +#. 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 "Tio ne estas via Jabber-ID." + +#. TRANS: Message given after successfully removing a registered IM address. +#: actions/imsettings.php:447 +msgid "The IM address was removed." +msgstr "La tujmesaÄila adreso estas forigita." + +#: actions/inbox.php:59 +#, php-format +msgid "Inbox for %1$s - page %2$d" +msgstr "Alvenkesto de %1$s - paÄo %2$d" + +#: actions/inbox.php:62 +#, php-format +msgid "Inbox for %s" +msgstr "Alvenkesto de %s" + +#: actions/inbox.php:115 +msgid "This is your inbox, which lists your incoming private messages." +msgstr "" +"Tio ĉi estas via alvenkesto, kie listiÄas viaj alvenaj privataj mesaÄoj." + +#: actions/invite.php:39 +msgid "Invites have been disabled." +msgstr "Invito estas malebligita." + +#: actions/invite.php:41 +#, php-format +msgid "You must be logged in to invite other users to use %s." +msgstr "Ensalutu por inviti aliajn uzantojn al %s." + +#: actions/invite.php:72 +#, php-format +msgid "Invalid email address: %s" +msgstr "Nevalida retpoÅtadreso: %s" + +#: actions/invite.php:110 +msgid "Invitation(s) sent" +msgstr "Invito(j) senditas" + +#: actions/invite.php:112 +msgid "Invite new users" +msgstr "Inviti novajn uzantojn" + +#: actions/invite.php:128 +msgid "You are already subscribed to these users:" +msgstr "Vi jam abonas jenajn uzantojn:" + +#. 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 "%1$s (%2$s)" + +#: actions/invite.php:136 +msgid "" +"These people are already users and you were automatically subscribed to them:" +msgstr "Jenaj personoj estas jam uzantoj kaj vin aÅtomate abonigis al ili." + +#: actions/invite.php:144 +msgid "Invitation(s) sent to the following people:" +msgstr "Invito(j) sendiÄis al jenaj personoj:" + +#: 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 "" +"Vi sciiÄos, kiam viaj invititoj akceptos la inviton kaj registriÄos ĉe la " +"retejo. Dankon por kreskigi la komunumon!" + +#: actions/invite.php:162 +msgid "" +"Use this form to invite your friends and colleagues to use this service." +msgstr "" +"Uzu la formularon por inviti viajn amikojn kaj kolegojn al ĉi tiu servo." + +#: actions/invite.php:187 +msgid "Email addresses" +msgstr "RetpoÅtadresoj" + +#: actions/invite.php:189 +msgid "Addresses of friends to invite (one per line)" +msgstr "Adresoj de invitataj amikoj (unu por linio)" + +#: actions/invite.php:192 +msgid "Personal message" +msgstr "Persona mesaÄo" + +#: actions/invite.php:194 +msgid "Optionally add a personal message to the invitation." +msgstr "Vi povas aldoni personan mesaÄon al la invito." + +#. TRANS: Send button for inviting friends +#: actions/invite.php:198 +msgctxt "BUTTON" +msgid "Send" +msgstr "Sendi" + +#. 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 "%1$s invitis vin kunaliÄi ĉe %2$s" + +#. 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 "" +"%1$s invitas vin al %2$s (%3$s).\n" +"\n" +"%2$s estas mikrobloga servo, kiu ebligas al vi Äisdate komuniki kun konatojn " +"kaj la interesajn.\n" +"\n" +"Vi povas ankaÅ konigi novaĵon pri vi mem, vian penson, aÅ vian vivon enretan " +"kun persono, kiu komprenas vin. Vi ankaÅ povas per Äi koniÄi kun novan " +"saminteresannon.\n" +"\n" +"%1$s diras:\n" +"\n" +"%4$s\n" +"\n" +"Vi povas vidi profilo de %1$s ĉe %2$s ĉi tie:\n" +"\n" +"%5$s\n" +"\n" +"Se vi volas provi la servon, alklaku jenan ligilon por akcepti la inviton.\n" +"\n" +"%6$s\n" +"\n" +"AÅ, vi povas ingnori la mesaÄon. Dankon por via pacienco kaj tempo.\n" +"\n" +"via sincere, %2$s\n" + +#: actions/joingroup.php:60 +msgid "You must be logged in to join a group." +msgstr "Ensalutu por aniÄi al grupo." + +#: actions/joingroup.php:88 actions/leavegroup.php:88 +msgid "No nickname or ID." +msgstr "Ne estas alinomo aÅ ID." + +#. 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 "%1$s aniÄis al grupo %2$s" + +#: actions/leavegroup.php:60 +msgid "You must be logged in to leave a group." +msgstr "Ensalutu por eksaniÄi." + +#: actions/leavegroup.php:100 lib/command.php:373 +msgid "You are not a member of that group." +msgstr "Vi ne estas grupano." + +#. 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 "%1$s eksaniÄis de grupo %2$s" + +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 +msgid "Already logged in." +msgstr "Vi jam ensalutis." + +#: actions/login.php:148 +msgid "Incorrect username or password." +msgstr "MalÄusta uzantnomo aÅ pasvorto." + +#: actions/login.php:154 actions/otp.php:120 +msgid "Error setting user. You are probably not authorized." +msgstr "Eraras agordi uzanton. Vi verÅajne ne rajtiÄas." + +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 +msgid "Login" +msgstr "Ensaluti" + +#: actions/login.php:249 +msgid "Login to site" +msgstr "Ensaluti al la retejo" + +#: actions/login.php:258 actions/register.php:485 +msgid "Remember me" +msgstr "Memoru min" + +#: actions/login.php:259 actions/register.php:487 +msgid "Automatically login in the future; not for shared computers!" +msgstr "AÅtomate ensaluti estonte; ne taÅge por komuna komputilo!" + +#: actions/login.php:269 +msgid "Lost or forgotten password?" +msgstr "Ĉi via pasvorto perdiÄas?" + +#: actions/login.php:288 +msgid "" +"For security reasons, please re-enter your user name and password before " +"changing your settings." +msgstr "" +"Por sekureca kialo, bonvole re-entajpi vian uzantnomon kaj pasvorton antaÅ " +"ÅanÄi vian agordon." + +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Ensaluti per via uzantnomo kaj pasvorto." + +#: actions/login.php:295 +#, php-format +msgid "" +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "Ĉu sen uzantnomo? [Kreu](%%action.register%%) novan konton." + +#: actions/makeadmin.php:92 +msgid "Only an admin can make another user an admin." +msgstr "Nur administranto rajtas administrantigi uzanton." + +#: actions/makeadmin.php:96 +#, php-format +msgid "%1$s is already an admin for group \"%2$s\"." +msgstr "%1$s estas jam grupestro de \"%2$s\"." + +#: actions/makeadmin.php:133 +#, php-format +msgid "Can't get membership record for %1$s in group %2$s." +msgstr "Malsukcesis kolekti ano-historio de %1$s en grupo %2$s." + +#: actions/makeadmin.php:146 +#, php-format +msgid "Can't make %1$s an admin for group %2$s." +msgstr "Malsukcesis estrigi %1$s por grupo %2$s." + +#: actions/microsummary.php:69 +msgid "No current status." +msgstr "Ne estas kuranta stato." + +#: actions/newapplication.php:52 +msgid "New Application" +msgstr "Nova Apliko" + +#: actions/newapplication.php:64 +msgid "You must be logged in to register an application." +msgstr "Ensalutu por registri aplikaĵon." + +#: actions/newapplication.php:143 +msgid "Use this form to register a new application." +msgstr "Uzu ĉi tiun formularon por registri novan aplikaĵon." + +#: actions/newapplication.php:176 +msgid "Source URL is required." +msgstr "Fonta URL bezonata." + +#: actions/newapplication.php:258 actions/newapplication.php:267 +msgid "Could not create application." +msgstr "Malsukcesis krei aplikaĵon." + +#: actions/newgroup.php:53 +msgid "New group" +msgstr "Nova grupo" + +#: actions/newgroup.php:110 +msgid "Use this form to create a new group." +msgstr "Uzas ĉi tiun formularon por krei novan grupon." + +#: actions/newmessage.php:71 actions/newmessage.php:231 +msgid "New message" +msgstr "Nova mesaÄo" + +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +msgid "You can't send a message to this user." +msgstr "Vi ne povas sendi mesaÄon al la uzanto." + +#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 +#: lib/command.php:555 +msgid "No content!" +msgstr "Neniu enhavo!" + +#: actions/newmessage.php:158 +msgid "No recipient specified." +msgstr "Neniu ricevonto speifiÄas." + +#: actions/newmessage.php:164 lib/command.php:484 +msgid "" +"Don't send a message to yourself; just say it to yourself quietly instead." +msgstr "Ne sendu mesaÄon al vi mem! Simple suspiru anstataÅ." + +#: actions/newmessage.php:181 +msgid "Message sent" +msgstr "MesaÄo sendita" + +#: actions/newmessage.php:185 +#, php-format +msgid "Direct message to %s sent." +msgstr "Rekta mesaÄo al %s sendiÄis." + +#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +msgid "Ajax Error" +msgstr "Eraro de Ajax" + +#: actions/newnotice.php:69 +msgid "New notice" +msgstr "Nova avizo" + +#: actions/newnotice.php:217 +msgid "Notice posted" +msgstr "Avizo afiÅiÄas" + +#: 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 "" +"Serĉi avizon ĉe %%site.name%% per Äia enhavo. Dividu serĉvortojn per spaco; " +"ili estu almenaÅ 3 literojn longaj." + +#: actions/noticesearch.php:78 +msgid "Text search" +msgstr "Teksta serĉado" + +#: actions/noticesearch.php:91 +#, php-format +msgid "Search results for \"%1$s\" on %2$s" +msgstr "Trovito per \"%1$s\" ĉe %2$s" + +#: actions/noticesearch.php:121 +#, php-format +msgid "" +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" +msgstr "" +"Estu la unua [afiÅi pri la temo](%%%%action.newnotice%%%%?status_textarea=%" +"s)!" + +#: 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 "" +"Kial ne [krei konton](%%%%action.register%%%%) kaj esti la unua [afiÅi pri " +"la temo](%%%%action.newnotice%%%%?status_textarea=%s)!" + +#: actions/noticesearchrss.php:96 +#, php-format +msgid "Updates with \"%s\"" +msgstr "ÄœisdatiÄo enhavante \"%s\"" + +#: actions/noticesearchrss.php:98 +#, php-format +msgid "Updates matching search term \"%1$s\" on %2$s!" +msgstr "ÄœisdatiÄo kongruanta al serĉvorto \"%1$s\" ĉe %2$s!" + +#: actions/nudge.php:85 +msgid "" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." +msgstr "" +"La uzanto ne permesas puÅeton aÅ ne jam konfirmis aÅ registris " +"retpoÅtadreson." + +#: actions/nudge.php:94 +msgid "Nudge sent" +msgstr "PuÅeto sendiÄis" + +#: actions/nudge.php:97 +msgid "Nudge sent!" +msgstr "PuÅeto sendiÄis!" + +#: actions/oauthappssettings.php:59 +msgid "You must be logged in to list your applications." +msgstr "Ensalutu por listigi viajn aplikaĵojn." + +#: actions/oauthappssettings.php:74 +msgid "OAuth applications" +msgstr "OAuth aplikoj" + +#: actions/oauthappssettings.php:85 +msgid "Applications you have registered" +msgstr "Aplikoj kiujn vi enskribis" + +#: actions/oauthappssettings.php:135 +#, php-format +msgid "You have not registered any applications yet." +msgstr "Vi ne jam registri iun ajn aplikaĵon." + +#: actions/oauthconnectionssettings.php:72 +msgid "Connected applications" +msgstr "Konektita aplikaĵo" + +#: actions/oauthconnectionssettings.php:83 +msgid "You have allowed the following applications to access you account." +msgstr "Vi permesis al jenaj aplikaĵoj aliradon al via konto." + +#: actions/oauthconnectionssettings.php:175 +msgid "You are not a user of that application." +msgstr "Mi ne estas uzanto de tiu aplikaĵo." + +#: actions/oauthconnectionssettings.php:186 +#, php-format +msgid "Unable to revoke access for app: %s." +msgstr "Maleble revoki aliradon al aplikaĵo: %s." + +#: actions/oauthconnectionssettings.php:198 +msgid "You have not authorized any applications to use your account." +msgstr "Vi ne rajtigis iun ajn aplikaĵon uzi vian konton." + +#: actions/oauthconnectionssettings.php:211 +msgid "Developers can edit the registration settings for their applications " +msgstr "Programisto povas redakti registradan agordon de sia aplikaĵo " + +#: actions/oembed.php:80 actions/shownotice.php:100 +msgid "Notice has no profile." +msgstr "Avizo sen profilo" + +#: actions/oembed.php:87 actions/shownotice.php:175 +#, php-format +msgid "%1$s's status on %2$s" +msgstr "Stato de %1$s ĉe %2$s" + +#. 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 "Enhavtipo %s ne subteniÄas." + +#. 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 "Datumformato ne subteniÄas." + +#: actions/opensearch.php:64 +msgid "People Search" +msgstr "Homserĉo" + +#: actions/opensearch.php:67 +msgid "Notice Search" +msgstr "Avizoserĉo" + +#: actions/othersettings.php:60 +msgid "Other settings" +msgstr "Aliaj agordoj" + +#: actions/othersettings.php:71 +msgid "Manage various other options." +msgstr "Agordi diversajn aliajn elektojn." + +#: actions/othersettings.php:108 +msgid " (free service)" +msgstr " (Senpaga servo)" + +#: actions/othersettings.php:116 +msgid "Shorten URLs with" +msgstr "Mallongigu URLojn per" + +#: actions/othersettings.php:117 +msgid "Automatic shortening service to use." +msgstr "Uzota aÅtomata mallongigad-servo." + +#: actions/othersettings.php:122 +msgid "View profile designs" +msgstr "Vidi profilo-desegnon" + +#: actions/othersettings.php:123 +msgid "Show or hide profile designs." +msgstr "Montri aÅ kaÅi profilo-desegnon." + +#: actions/othersettings.php:153 +msgid "URL shortening service is too long (max 50 chars)." +msgstr "URL-mallongigado-servo tro longas (maksimume 50 literojn)." + +#: actions/otp.php:69 +msgid "No user ID specified." +msgstr "Neniu uzanto-ID specifiÄas." + +#: actions/otp.php:83 +msgid "No login token specified." +msgstr "Neniu ensalutado-ĵetono specifiÄas." + +#: actions/otp.php:90 +msgid "No login token requested." +msgstr "Neniu ensalutad-ĵetono bezoniÄas." + +#: actions/otp.php:95 +msgid "Invalid login token specified." +msgstr "Specifita ensalutado-ĵetono nevalidas." + +#: actions/otp.php:104 +msgid "Login token expired." +msgstr "Ensalutado-ĵetono eksvalidiÄas." + +#: actions/outbox.php:58 +#, php-format +msgid "Outbox for %1$s - page %2$d" +msgstr "elirkesto de %1$s - paÄo %2$d" + +#: actions/outbox.php:61 +#, php-format +msgid "Outbox for %s" +msgstr "Elirkesto de %s" + +#: actions/outbox.php:116 +#, fuzzy +msgid "This is your outbox, which lists private messages you have sent." +msgstr "" +"Tio ĉi estas via alvenkesto, kie listiÄas viaj alvenaj privataj mesaÄoj." + +#: actions/passwordsettings.php:58 +msgid "Change password" +msgstr "ÅœanÄi pasvorton" + +#: actions/passwordsettings.php:69 +msgid "Change your password." +msgstr "ÅœanÄi vian pasvorton." + +#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 +msgid "Password change" +msgstr "Pasvorta ÅanÄo" + +#: actions/passwordsettings.php:104 +msgid "Old password" +msgstr "Malnova pasvorto" + +#: actions/passwordsettings.php:108 actions/recoverpassword.php:235 +msgid "New password" +msgstr "Nova pasvorto" + +#: actions/passwordsettings.php:109 +msgid "6 or more characters" +msgstr "6 aÅ pli da literoj" + +#: actions/passwordsettings.php:112 actions/recoverpassword.php:239 +#: actions/register.php:440 +msgid "Confirm" +msgstr "Konfirmi" + +#: actions/passwordsettings.php:113 actions/recoverpassword.php:240 +msgid "Same as password above" +msgstr "Same kiel pasvorto supra" + +#: actions/passwordsettings.php:117 +msgid "Change" +msgstr "ÅœanÄi" + +#: actions/passwordsettings.php:154 actions/register.php:237 +msgid "Password must be 6 or more characters." +msgstr "Pasvorto devas esti 6-litera aÅ pli longa." + +#: actions/passwordsettings.php:157 actions/register.php:240 +msgid "Passwords don't match." +msgstr "La pasvortoj diferencas." + +#: actions/passwordsettings.php:165 +msgid "Incorrect old password" +msgstr "NeÄusta malnova pasvorto" + +#: actions/passwordsettings.php:181 +msgid "Error saving user; invalid." +msgstr "Eraris konservi uzanton: nevalida." + +#: actions/passwordsettings.php:186 actions/recoverpassword.php:381 +msgid "Can't save new password." +msgstr "Malsukcesis konservi novan pasvorton." + +#: actions/passwordsettings.php:192 actions/recoverpassword.php:211 +msgid "Password saved." +msgstr "Pasvorto konservitas." + +#. TRANS: Menu item for site administration +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 +msgid "Paths" +msgstr "Vojoj" + +#: actions/pathsadminpanel.php:70 +msgid "Path and server settings for this StatusNet site." +msgstr "Vojo kaj servila agordo por ĉi tiu StatusNet-retejo." + +#: actions/pathsadminpanel.php:157 +#, fuzzy, php-format +msgid "Theme directory not readable: %s." +msgstr "Desegno ne havebla: %s." + +#: actions/pathsadminpanel.php:163 +#, fuzzy, php-format +msgid "Avatar directory not writable: %s." +msgstr "Avatara adresaro" + +#: actions/pathsadminpanel.php:169 +#, fuzzy, php-format +msgid "Background directory not writable: %s." +msgstr "Fona adresaro" + +#: 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 "Retejo" + +#: actions/pathsadminpanel.php:238 +msgid "Server" +msgstr "Servilo" + +#: actions/pathsadminpanel.php:238 +msgid "Site's server hostname." +msgstr "Gastigserva Nomo de la retejo" + +#: actions/pathsadminpanel.php:242 +msgid "Path" +msgstr "Vojo" + +#: actions/pathsadminpanel.php:242 +msgid "Site path" +msgstr "Reteja vojo" + +#: actions/pathsadminpanel.php:246 +msgid "Path to locales" +msgstr "Lokigilo al lokaĵaro" + +#: actions/pathsadminpanel.php:246 +msgid "Directory path to locales" +msgstr "Adresara lokigilo al lokaĵaro" + +#: 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 "Temo" + +#: actions/pathsadminpanel.php:264 +msgid "Theme server" +msgstr "Tema servilo" + +#: actions/pathsadminpanel.php:268 +msgid "Theme path" +msgstr "Temo-lokigilo" + +#: actions/pathsadminpanel.php:272 +msgid "Theme directory" +msgstr "Tema adresaro" + +#: actions/pathsadminpanel.php:279 +msgid "Avatars" +msgstr "Avataroj" + +#: actions/pathsadminpanel.php:284 +msgid "Avatar server" +msgstr "Avatara servilo" + +#: actions/pathsadminpanel.php:288 +msgid "Avatar path" +msgstr "Avataro-lokigilo" + +#: actions/pathsadminpanel.php:292 +msgid "Avatar directory" +msgstr "Avatara adresaro" + +#: actions/pathsadminpanel.php:301 +msgid "Backgrounds" +msgstr "Fono" + +#: actions/pathsadminpanel.php:305 +msgid "Background server" +msgstr "Fono-lokigilo" + +#: actions/pathsadminpanel.php:309 +msgid "Background path" +msgstr "Fono-lokigilo" + +#: actions/pathsadminpanel.php:313 +msgid "Background directory" +msgstr "Fona adresaro" + +#: actions/pathsadminpanel.php:320 +msgid "SSL" +msgstr "\"SSL\"" + +#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 +msgid "Never" +msgstr "Neniam" + +#: actions/pathsadminpanel.php:324 +msgid "Sometimes" +msgstr "Kelkfoje" + +#: actions/pathsadminpanel.php:325 +msgid "Always" +msgstr "Ĉiam" + +#: actions/pathsadminpanel.php:329 +msgid "Use SSL" +msgstr "Uzi \"SSL\"" + +#: actions/pathsadminpanel.php:330 +msgid "When to use SSL" +msgstr "Kiam uzi \"SSL\"" + +#: actions/pathsadminpanel.php:335 +msgid "SSL server" +msgstr "\"SSL\"a servilo" + +#: actions/pathsadminpanel.php:336 +msgid "Server to direct SSL requests to" +msgstr "Servilo, kien orienti \"SSL\"-peton" + +#: actions/pathsadminpanel.php:352 +msgid "Save paths" +msgstr "Konservu lokigilon" + +#: 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 "" +"Serĉi personon ĉe %%site.name%% per Äia nomo, loko, aÅ intereso. Dividu " +"serĉvortojn per spacoj; ili estu almenaÅ 3 literojn longaj." + +#: actions/peoplesearch.php:58 +msgid "People search" +msgstr "Persona serĉado" + +#: actions/peopletag.php:68 +#, php-format +msgid "Not a valid people tag: %s." +msgstr "Ne valida persona markilo: %s." + +#: actions/peopletag.php:142 +#, php-format +msgid "Users self-tagged with %1$s - page %2$d" +msgstr "Uzantoj sinmarkitaj per %1$s - paÄo %2$d" + +#: actions/postnotice.php:95 +msgid "Invalid notice content." +msgstr "Nevalida avizo-enhavo" + +#: actions/postnotice.php:101 +#, php-format +msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." +msgstr "Aviza permesilo ‘%1$s’ ne konformas al reteja permesilo ‘%2$s’." + +#: actions/profilesettings.php:60 +msgid "Profile settings" +msgstr "Profila agordo" + +#: actions/profilesettings.php:71 +msgid "" +"You can update your personal profile info here so people know more about you." +msgstr "" +"Vi povas Äisdatigi vian propran profilan informon, por ke oni sciu pli pri " +"vi." + +#: actions/profilesettings.php:99 +msgid "Profile information" +msgstr "Profila informo" + +#: actions/profilesettings.php:108 lib/groupeditform.php:154 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces" +msgstr "1-64 minusklaj literoj aÅ ciferoj, neniu interpunkcio aÅ spaco" + +#: 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 "Plena nomo" + +#. TRANS: Form input field label. +#: actions/profilesettings.php:115 actions/register.php:460 +#: lib/applicationeditform.php:244 lib/groupeditform.php:161 +msgid "Homepage" +msgstr "HejmpaÄo" + +#: actions/profilesettings.php:117 actions/register.php:462 +msgid "URL of your homepage, blog, or profile on another site" +msgstr "URL de via hejmpaÄo, blogo aÅ profilo ĉe alia retejo" + +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format +msgid "Describe yourself and your interests in %d chars" +msgstr "Priskribu vin mem kaj viajn Åatokupojn per ne pli ol %d signoj" + +#: actions/profilesettings.php:125 actions/register.php:471 +msgid "Describe yourself and your interests" +msgstr "Priskribu vin mem kaj viajn Åatokupojn" + +#: actions/profilesettings.php:127 actions/register.php:473 +msgid "Bio" +msgstr "Biografio" + +#: 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 "Loko" + +#: actions/profilesettings.php:134 actions/register.php:480 +msgid "Where you are, like \"City, State (or Region), Country\"" +msgstr "Kie vi estas, ekzemple \"Urbo, Åœtato (aÅ Regiono), Lando\"" + +#: actions/profilesettings.php:138 +msgid "Share my current location when posting notices" +msgstr "Sciigu mian nunan lokon, kiam mi sendas avizon." + +#: 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 "Markiloj" + +#: actions/profilesettings.php:147 +msgid "" +"Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" +msgstr "" +"Markiloj por vi mem (literoj, ciferoj, \"-\", \".\", kaj \"_\"), dividite " +"per komoj aÅ spacoj" + +#: actions/profilesettings.php:151 +msgid "Language" +msgstr "Lingvo" + +#: actions/profilesettings.php:152 +msgid "Preferred language" +msgstr "Preferata lingvo" + +#: actions/profilesettings.php:161 +msgid "Timezone" +msgstr "Horzono" + +#: actions/profilesettings.php:162 +msgid "What timezone are you normally in?" +msgstr "En kiu horzono vi kutime troviÄas?" + +#: actions/profilesettings.php:167 +msgid "" +"Automatically subscribe to whoever subscribes to me (best for non-humans)" +msgstr "AÅtomate aboni iun ajn, kiu abonas min (prefereble por ne-homoj)" + +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format +msgid "Bio is too long (max %d chars)." +msgstr "Biografio tro longas (maksimume 255 literoj)" + +#: actions/profilesettings.php:235 actions/siteadminpanel.php:151 +msgid "Timezone not selected." +msgstr "Horzono ne elektita" + +#: actions/profilesettings.php:241 +msgid "Language is too long (max 50 chars)." +msgstr "Lingvo tro longas (maksimume 255 literoj)" + +#: actions/profilesettings.php:253 actions/tagother.php:178 +#, php-format +msgid "Invalid tag: \"%s\"" +msgstr "Nevalida markilo: \"%s\"" + +#: actions/profilesettings.php:306 +msgid "Couldn't update user for autosubscribe." +msgstr "Malsukcesis Äisdatigi uzanton por aÅtomatabonado." + +#: actions/profilesettings.php:363 +msgid "Couldn't save location prefs." +msgstr "Malsukcesis konservi lokan preferon." + +#: actions/profilesettings.php:375 +msgid "Couldn't save profile." +msgstr "Malsukcesis konservi la profilon." + +#: actions/profilesettings.php:383 +msgid "Couldn't save tags." +msgstr "Malsukcesis konservi markilojn." + +#. TRANS: Message after successful saving of administrative settings. +#: actions/profilesettings.php:391 lib/adminpanelaction.php:141 +msgid "Settings saved." +msgstr "Agordo konservitas." + +#: actions/public.php:83 +#, php-format +msgid "Beyond the page limit (%s)." +msgstr "Trans paÄolimo (%s)." + +#: actions/public.php:92 +msgid "Could not retrieve public stream." +msgstr "Malsukcesis ricevi publikan fluon" + +#: actions/public.php:130 +#, php-format +msgid "Public timeline, page %d" +msgstr "Publika tempstrio, paÄo %d" + +#: actions/public.php:132 lib/publicgroupnav.php:79 +msgid "Public timeline" +msgstr "Publika tempstrio" + +#: actions/public.php:160 +msgid "Public Stream Feed (RSS 1.0)" +msgstr "Publika fluo (RSS 1.0)" + +#: actions/public.php:164 +msgid "Public Stream Feed (RSS 2.0)" +msgstr "Publika fluo (RSS 2.0)" + +#: actions/public.php:168 +msgid "Public Stream Feed (Atom)" +msgstr "Publika fluo (Atom)" + +#: actions/public.php:188 +#, php-format +msgid "" +"This is the public timeline for %%site.name%% but no one has posted anything " +"yet." +msgstr "" +"Tio ĉi estas la publika tempstrio de %%site.name%%, sed ankoraÅ neniu afiÅis " +"ion ajn." + +#: actions/public.php:191 +msgid "Be the first to post!" +msgstr "Estu la unua afiÅanto!" + +#: actions/public.php:195 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to post!" +msgstr "Kial ne [krei konton](%%action.register%%) kaj esti la unua afiÅanto!" + +#: actions/public.php:242 +#, fuzzy, 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 "" +"Tio ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de libera servila programo [StatusNet](http://status." +"net/)." + +#: 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 "" +"Tio ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de libera servila programo [StatusNet](http://status." +"net/)." + +#: actions/publictagcloud.php:57 +msgid "Public tag cloud" +msgstr "Publika markil-nubo" + +#: 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 "Estu la unua afiÅanto!" + +#: actions/publictagcloud.php:75 +#, fuzzy, php-format +msgid "" +"Why not [register an account](%%action.register%%) and be the first to post " +"one!" +msgstr "Kial ne [krei konton](%%action.register%%) kaj esti la unua afiÅanto!" + +#: actions/publictagcloud.php:134 +#, fuzzy +msgid "Tag cloud" +msgstr "Publika markil-nubo" + +#: actions/recoverpassword.php:36 +#, fuzzy +msgid "You are already logged in!" +msgstr "Vi jam ensalutis." + +#: actions/recoverpassword.php:62 +#, fuzzy +msgid "No such recovery code." +msgstr "Ne estas tiu avizo." + +#: 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 +#, fuzzy +msgid "Error with confirmation code." +msgstr "Neniu konfirma kodo." + +#: actions/recoverpassword.php:97 +#, fuzzy +msgid "This confirmation code is too old. Please start again." +msgstr "Tiu komfirmnumero ne estas por vi!" + +#: actions/recoverpassword.php:111 +#, fuzzy +msgid "Could not update user with confirmed email address." +msgstr "Nuna konfirmita retpoÅtadreso." + +#: 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 "Vi estis identigita. Enigu sube novan pasvorton." + +#: actions/recoverpassword.php:188 +#, fuzzy +msgid "Password recovery" +msgstr "Pasvorta ÅanÄo" + +#: actions/recoverpassword.php:191 +#, fuzzy +msgid "Nickname or email address" +msgstr "Neniu retpoÅta adreso." + +#: actions/recoverpassword.php:193 +msgid "Your nickname on this server, or your registered email address." +msgstr "" + +#: actions/recoverpassword.php:199 actions/recoverpassword.php:200 +#, fuzzy +msgid "Recover" +msgstr "Forigi" + +#: actions/recoverpassword.php:208 +msgid "Reset password" +msgstr "Refari pasvorton" + +#: actions/recoverpassword.php:209 +msgid "Recover password" +msgstr "Refari pasvorton" + +#: 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 "AlmenaÅ 6 signoj, kaj ne forgesu Äin!" + +#: actions/recoverpassword.php:243 +msgid "Reset" +msgstr "Restarigi" + +#: actions/recoverpassword.php:252 +#, fuzzy +msgid "Enter a nickname or email address." +msgstr "Tiu ne estas via retpoÅtadreso." + +#: 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 +#, fuzzy +msgid "Error saving address confirmation." +msgstr "Eraris konservi uzanton: nevalida." + +#: 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 +#, fuzzy +msgid "Unexpected password reset." +msgstr "Neatendita formo-sendo." + +#: actions/recoverpassword.php:365 +msgid "Password must be 6 chars or more." +msgstr "Pasvorto devas enhavi 6 signojn aÅ pli." + +#: actions/recoverpassword.php:369 +#, fuzzy +msgid "Password and confirmation do not match." +msgstr "La pasvortoj diferencas." + +#: actions/recoverpassword.php:388 actions/register.php:255 +#, fuzzy +msgid "Error setting user." +msgstr "Eraris konservi uzanton: nevalida." + +#: 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 "RegistriÄo sukcesa" + +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 +msgid "Register" +msgstr "Registri" + +#: actions/register.php:142 +msgid "Registration not allowed." +msgstr "RegistriÄo ne permesita." + +#: actions/register.php:205 +msgid "You can't register if you don't agree to the license." +msgstr "Vi ne povas registri se vi ne konsentas al la licenco." + +#: actions/register.php:219 +msgid "Email address already exists." +msgstr "RetpoÅta adreso jam ekzistas." + +#: actions/register.php:250 actions/register.php:272 +msgid "Invalid username or password." +msgstr "Nevalida uzantnomo aÅ pasvorto." + +#: 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 +#, fuzzy +msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." +msgstr "1-64 minusklaj literoj aÅ ciferoj, neniu interpunkcio aÅ spaco" + +#: actions/register.php:437 +#, fuzzy +msgid "6 or more characters. Required." +msgstr "6 aÅ pli da literoj" + +#: actions/register.php:441 +#, fuzzy +msgid "Same as password above. Required." +msgstr "Same kiel pasvorto supra" + +#. 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 "RetpoÅto" + +#: 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 +#, fuzzy +msgid "Remote subscribe" +msgstr "Malaboni" + +#: actions/remotesubscribe.php:124 +msgid "Subscribe to a remote user" +msgstr "" + +#: actions/remotesubscribe.php:129 +#, fuzzy +msgid "User nickname" +msgstr "Neniu kromnomo." + +#: actions/remotesubscribe.php:130 +msgid "Nickname of the user you want to follow" +msgstr "" + +#: actions/remotesubscribe.php:133 +#, fuzzy +msgid "Profile URL" +msgstr "Profilo" + +#: 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 "Aboni" + +#: 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 +#, fuzzy +msgid "Couldn’t get a request token." +msgstr "Malsukcesis interÅanÄi petĵetonon al atingoĵetono." + +#: actions/repeat.php:57 +msgid "Only logged-in users can repeat notices." +msgstr "" + +#: actions/repeat.php:64 actions/repeat.php:71 +#, fuzzy +msgid "No notice specified." +msgstr "Neniu profilo elektita." + +#: actions/repeat.php:76 +msgid "You can't repeat your own notice." +msgstr "Vi ne povas ripeti vian propran avizon." + +#: actions/repeat.php:90 +msgid "You already repeated that notice." +msgstr "La avizo jam ripetiÄis." + +#: actions/repeat.php:114 lib/noticelist.php:676 +msgid "Repeated" +msgstr "Ripetita" + +#: actions/repeat.php:119 +msgid "Repeated!" +msgstr "Ripetita!" + +#: actions/replies.php:126 actions/repliesrss.php:68 +#: lib/personalgroupnav.php:105 +#, fuzzy, php-format +msgid "Replies to %s" +msgstr "Ripetoj de %s" + +#: actions/replies.php:128 +#, fuzzy, php-format +msgid "Replies to %1$s, page %2$d" +msgstr "Alvenkesto de %1$s - paÄo %2$d" + +#: actions/replies.php:145 +#, fuzzy, php-format +msgid "Replies feed for %s (RSS 1.0)" +msgstr "Fluo por amikoj de %s (RSS 1.0)" + +#: actions/replies.php:152 +#, fuzzy, php-format +msgid "Replies feed for %s (RSS 2.0)" +msgstr "Fluo por amikoj de %s (RSS 2.0)" + +#: actions/replies.php:159 +#, fuzzy, php-format +msgid "Replies feed for %s (Atom)" +msgstr "Fluo por amikoj de %s (Atom)" + +#: 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 "" +"Tie ĉi estas la tempstrio de %s kaj amikoj sed ankoraÅ neniu afiÅis ion ajn." + +#: 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 +#, fuzzy, php-format +msgid "" +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." +msgstr "" +"Vi povas provi [puÅeti %1$s](../%2$s) de lia profilo aÅ [afiÅi ion al li](%%" +"%%action.newnotice%%%%?status_textarea=%3$s)." + +#: actions/repliesrss.php:72 +#, fuzzy, php-format +msgid "Replies to %1$s on %2$s!" +msgstr "Bonvenon al %1$s, @%2$s!" + +#: actions/revokerole.php:75 +#, fuzzy +msgid "You cannot revoke user roles on this site." +msgstr "Vi ne rajtas doni al uzanto rolon ĉe ĉi tiu retejo." + +#: actions/revokerole.php:82 +#, fuzzy +msgid "User doesn't have this role." +msgstr "Uzanto jam havas la rolon." + +#: actions/rsd.php:146 actions/version.php:159 +#, fuzzy +msgid "StatusNet" +msgstr "Stato forigita." + +#: actions/sandbox.php:65 actions/unsandbox.php:65 +#, fuzzy +msgid "You cannot sandbox users on this site." +msgstr "Vi ne rajtas doni al uzanto rolon ĉe ĉi tiu retejo." + +#: actions/sandbox.php:72 +#, fuzzy +msgid "User is already sandboxed." +msgstr "La uzanto jam de grupo blokiÄas." + +#. TRANS: Menu item for site administration +#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 +#: lib/adminpanelaction.php:392 +#, fuzzy +msgid "Sessions" +msgstr "Versio" + +#: actions/sessionsadminpanel.php:65 +#, fuzzy +msgid "Session settings for this StatusNet site." +msgstr "Aspektaj agordoj por ĉi tiu StatusNet-retejo." + +#: 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 +#, fuzzy +msgid "Save site settings" +msgstr "Konservu atingan agordon" + +#: actions/showapplication.php:82 +#, fuzzy +msgid "You must be logged in to view an application." +msgstr "Ensalutu por redakti la aplikaĵon." + +#: actions/showapplication.php:157 +#, fuzzy +msgid "Application profile" +msgstr "Aplikaĵo ne trovita." + +#. 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 "Nomo" + +#. TRANS: Form input field label. +#: actions/showapplication.php:178 lib/applicationeditform.php:235 +msgid "Organization" +msgstr "Organizaĵo" + +#. TRANS: Form input field label. +#: actions/showapplication.php:187 actions/version.php:200 +#: lib/applicationeditform.php:216 lib/groupeditform.php:172 +msgid "Description" +msgstr "Priskribo" + +#: 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 +#, fuzzy +msgid "Application actions" +msgstr "Aplikaĵo ne trovita." + +#: actions/showapplication.php:236 +msgid "Reset key & secret" +msgstr "" + +#: actions/showapplication.php:261 +#, fuzzy +msgid "Application info" +msgstr "Aplikaĵo ne trovita." + +#: actions/showapplication.php:263 +msgid "Consumer key" +msgstr "" + +#: actions/showapplication.php:268 +msgid "Consumer secret" +msgstr "" + +#: actions/showapplication.php:273 +msgid "Request token URL" +msgstr "" + +#: actions/showapplication.php:278 +msgid "Access token URL" +msgstr "" + +#: actions/showapplication.php:283 +msgid "Authorize URL" +msgstr "" + +#: actions/showapplication.php:288 +msgid "" +"Note: We support HMAC-SHA1 signatures. We do not support the plaintext " +"signature method." +msgstr "" + +#: actions/showapplication.php:309 +#, fuzzy +msgid "Are you sure you want to reset your consumer key and secret?" +msgstr "Ĉu vi certe volas forigi la avizon?" + +#: actions/showfavorites.php:79 +#, fuzzy, php-format +msgid "%1$s's favorite notices, page %2$d" +msgstr "Åœatataj avizoj de %s" + +#: actions/showfavorites.php:132 +#, fuzzy +msgid "Could not retrieve favorite notices." +msgstr "Malsukcesis krei Åataton." + +#: actions/showfavorites.php:171 +#, fuzzy, php-format +msgid "Feed for favorites of %s (RSS 1.0)" +msgstr "Fluo por amikoj de %s (RSS 1.0)" + +#: actions/showfavorites.php:178 +#, fuzzy, php-format +msgid "Feed for favorites of %s (RSS 2.0)" +msgstr "Fluo por amikoj de %s (RSS 2.0)" + +#: actions/showfavorites.php:185 +#, fuzzy, php-format +msgid "Feed for favorites of %s (Atom)" +msgstr "Fluo por amikoj de %s (Atom)" + +#: 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 +#, fuzzy, 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 "" +"[Kreu konton](%%action.register%%) kaj estu la unua, kiu aldonos avizon al " +"sia Åatolisto!" + +#: actions/showfavorites.php:243 +msgid "This is a way to share what you like." +msgstr "" + +#: actions/showgroup.php:82 lib/groupnav.php:86 +#, fuzzy, php-format +msgid "%s group" +msgstr "Grupoj de %s" + +#: actions/showgroup.php:84 +#, fuzzy, php-format +msgid "%1$s group, page %2$d" +msgstr "%1$s grupanoj, paÄo %2$d" + +#: actions/showgroup.php:227 +#, fuzzy +msgid "Group profile" +msgstr "Grupa emblemo" + +#: actions/showgroup.php:272 actions/tagother.php:118 +#: actions/userauthorization.php:175 lib/userprofile.php:178 +msgid "URL" +msgstr "URL" + +#: actions/showgroup.php:283 actions/tagother.php:128 +#: actions/userauthorization.php:187 lib/userprofile.php:195 +msgid "Note" +msgstr "Noto" + +#: actions/showgroup.php:293 lib/groupeditform.php:184 +#, fuzzy +msgid "Aliases" +msgstr "Ĉiam" + +#: actions/showgroup.php:302 +#, fuzzy +msgid "Group actions" +msgstr "grupoj ĉe %s" + +#: actions/showgroup.php:338 +#, fuzzy, php-format +msgid "Notice feed for %s group (RSS 1.0)" +msgstr "Fluo por amikoj de %s (RSS 1.0)" + +#: actions/showgroup.php:344 +#, fuzzy, php-format +msgid "Notice feed for %s group (RSS 2.0)" +msgstr "Fluo por amikoj de %s (RSS 2.0)" + +#: actions/showgroup.php:350 +#, fuzzy, php-format +msgid "Notice feed for %s group (Atom)" +msgstr "Fluo por amikoj de %s (Atom)" + +#: actions/showgroup.php:355 +#, fuzzy, php-format +msgid "FOAF for %s group" +msgstr "Grupoj de %s" + +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 +msgid "Members" +msgstr "Grupanoj" + +#: 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 +#, fuzzy +msgid "(None)" +msgstr "Noto" + +#: actions/showgroup.php:404 +msgid "All members" +msgstr "Ĉiuj grupanoj" + +#: actions/showgroup.php:439 +#, fuzzy +msgid "Created" +msgstr "Ripetita" + +#: actions/showgroup.php:455 +#, fuzzy, 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 "" +"Tio ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de libera servila programo [StatusNet](http://status." +"net/)." + +#: actions/showgroup.php:461 +#, fuzzy, 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 "" +"Tio ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de libera servila programo [StatusNet](http://status." +"net/)." + +#: actions/showgroup.php:489 +#, fuzzy +msgid "Admins" +msgstr "Administranto" + +#: actions/showmessage.php:81 +#, fuzzy +msgid "No such message." +msgstr "Ne estas tiu paÄo." + +#: actions/showmessage.php:98 +msgid "Only the sender and recipient may read this message." +msgstr "" + +#: actions/showmessage.php:108 +#, fuzzy, php-format +msgid "Message to %1$s on %2$s" +msgstr "Äœisdatigoj etikeditaj %1$s ĉe %2$s!" + +#: actions/showmessage.php:113 +#, fuzzy, php-format +msgid "Message from %1$s on %2$s" +msgstr "Äœisdatigoj etikeditaj %1$s ĉe %2$s!" + +#: actions/shownotice.php:90 +msgid "Notice deleted." +msgstr "Avizo viÅiÄas" + +#: actions/showstream.php:73 +#, fuzzy, php-format +msgid " tagged %s" +msgstr "Avizoj etikeditaj %s" + +#: actions/showstream.php:79 +#, fuzzy, php-format +msgid "%1$s, page %2$d" +msgstr "%1$s kaj amikoj, paÄo %2$d" + +#: actions/showstream.php:122 +#, fuzzy, php-format +msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" +msgstr "Fluo por amikoj de %s (RSS 1.0)" + +#: actions/showstream.php:129 +#, fuzzy, php-format +msgid "Notice feed for %s (RSS 1.0)" +msgstr "Fluo por amikoj de %s (RSS 1.0)" + +#: actions/showstream.php:136 +#, fuzzy, php-format +msgid "Notice feed for %s (RSS 2.0)" +msgstr "Fluo por amikoj de %s (RSS 2.0)" + +#: actions/showstream.php:143 +#, fuzzy, php-format +msgid "Notice feed for %s (Atom)" +msgstr "Fluo por amikoj de %s (Atom)" + +#: actions/showstream.php:148 +#, fuzzy, php-format +msgid "FOAF for %s" +msgstr "Elirkesto de %s" + +#: actions/showstream.php:200 +#, fuzzy, php-format +msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." +msgstr "" +"Tie ĉi estas la tempstrio de %s kaj amikoj sed ankoraÅ neniu afiÅis ion ajn." + +#: 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 +#, fuzzy, php-format +msgid "" +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." +msgstr "" +"Vi povas provi [puÅeti %1$s](../%2$s) de lia profilo aÅ [afiÅi ion al li](%%" +"%%action.newnotice%%%%?status_textarea=%3$s)." + +#: actions/showstream.php:243 +#, fuzzy, 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 "" +"Tio ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de libera servila programo [StatusNet](http://status." +"net/)." + +#: actions/showstream.php:248 +#, fuzzy, 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 "" +"Tio ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de libera servila programo [StatusNet](http://status." +"net/)." + +#: actions/showstream.php:305 +#, fuzzy, php-format +msgid "Repeat of %s" +msgstr "Ripetoj de %s" + +#: actions/silence.php:65 actions/unsilence.php:65 +#, fuzzy +msgid "You cannot silence users on this site." +msgstr "Vi ne rajtas doni al uzanto rolon ĉe ĉi tiu retejo." + +#: actions/silence.php:72 +#, fuzzy +msgid "User is already silenced." +msgstr "La uzanto jam de grupo blokiÄas." + +#: actions/siteadminpanel.php:69 +#, fuzzy +msgid "Basic settings for this StatusNet site" +msgstr "Aspektaj agordoj por ĉi tiu StatusNet-retejo." + +#: actions/siteadminpanel.php:133 +msgid "Site name must have non-zero length." +msgstr "" + +#: actions/siteadminpanel.php:141 +#, fuzzy +msgid "You must have a valid contact email address." +msgstr "RetpoÅta adreso ne valida" + +#: 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 "Äœenerala" + +#: actions/siteadminpanel.php:224 +#, fuzzy +msgid "Site name" +msgstr "Reteja desegno" + +#: 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 +#, fuzzy +msgid "Contact email address for your site" +msgstr "Alvena retpoÅtadreso forigita." + +#: actions/siteadminpanel.php:245 +#, fuzzy +msgid "Local" +msgstr "Loko" + +#: 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 +#, fuzzy +msgid "Default language" +msgstr "Preferata lingvo" + +#: 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 +#, fuzzy +msgid "Site Notice" +msgstr "Avizoj" + +#: actions/sitenoticeadminpanel.php:67 +#, fuzzy +msgid "Edit site-wide message" +msgstr "Nova mesaÄo" + +#: actions/sitenoticeadminpanel.php:103 +#, fuzzy +msgid "Unable to save site notice." +msgstr "Malsukcesis konservi vian desegnan agordon" + +#: actions/sitenoticeadminpanel.php:113 +msgid "Max length for the site-wide notice is 255 chars." +msgstr "" + +#: actions/sitenoticeadminpanel.php:176 +#, fuzzy +msgid "Site notice text" +msgstr "Forigi avizon" + +#: actions/sitenoticeadminpanel.php:178 +msgid "Site-wide notice text (255 chars max; HTML okay)" +msgstr "" + +#: actions/sitenoticeadminpanel.php:198 +#, fuzzy +msgid "Save site notice" +msgstr "Forigi avizon" + +#. TRANS: Title for SMS settings. +#: actions/smssettings.php:59 +#, fuzzy +msgid "SMS settings" +msgstr "TujmesaÄila agordo." + +#. TRANS: SMS settings page instructions. +#. TRANS: %%site.name%% is the name of the site. +#: actions/smssettings.php:74 +#, fuzzy, php-format +msgid "You can receive SMS messages through email from %%site.name%%." +msgstr "Administri kiel ricevi mesaÄon de %%site.name%%." + +#. TRANS: Message given in the SMS settings if SMS is not enabled on the site. +#: actions/smssettings.php:97 +#, fuzzy +msgid "SMS is not available." +msgstr "TujmesaÄilo ne estas disponebla." + +#. TRANS: Form legend for SMS settings form. +#: actions/smssettings.php:111 +#, fuzzy +msgid "SMS address" +msgstr "TujmesaÄila adreso" + +#. TRANS: Form guide in SMS settings form. +#: actions/smssettings.php:120 +#, fuzzy +msgid "Current confirmed SMS-enabled phone number." +msgstr "Nuna konfirmita retpoÅtadreso." + +#. 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 +#, fuzzy +msgid "Confirmation code" +msgstr "Neniu konfirma kodo." + +#. 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 "Konfirmi" + +#. 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 +#, fuzzy +msgid "Phone number, no punctuation or spaces, with area code" +msgstr "1-64 minusklaj literoj aÅ ciferoj, neniu interpunkcio aÅ spaco" + +#. TRANS: Form legend for SMS preferences form. +#: actions/smssettings.php:195 +#, fuzzy +msgid "SMS preferences" +msgstr "TujmesaÄilaj preferoj" + +#. 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 +#, fuzzy +msgid "SMS preferences saved." +msgstr "Prefero konservita." + +#. TRANS: Message given saving SMS phone number without having provided one. +#: actions/smssettings.php:338 +#, fuzzy +msgid "No phone number." +msgstr "Ne ekzistas tiu uzanto." + +#. TRANS: Message given saving SMS phone number without having selected a carrier. +#: actions/smssettings.php:344 +#, fuzzy +msgid "No carrier selected." +msgstr "Avizo viÅiÄas" + +#. TRANS: Message given saving SMS phone number that is already set. +#: actions/smssettings.php:352 +#, fuzzy +msgid "That is already your phone number." +msgstr "Tio estas jam via Jabber-ID." + +#. TRANS: Message given saving SMS phone number that is already set for another user. +#: actions/smssettings.php:356 +#, fuzzy +msgid "That phone number already belongs to another user." +msgstr "Tiu retpoÅtadreso jam apartenas al alia uzanto." + +#. TRANS: Message given saving valid SMS phone number that is to be confirmed. +#: actions/smssettings.php:384 +#, fuzzy +msgid "" +"A confirmation code was sent to the phone number you added. Check your phone " +"for the code and instructions on how to use it." +msgstr "" +"Konfirmkodo jam senditas al la aldonita retpoÅtadreso. Kontrolu vian " +"alvenkeston (kaj spamkeston!) pri la kodo kaj instrukcio pri kiel uzi Äin." + +#. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. +#: actions/smssettings.php:413 +#, fuzzy +msgid "That is the wrong confirmation number." +msgstr "Tiu retpoÅtadreso estas malÄusta." + +#. TRANS: Message given after successfully canceling SMS phone number confirmation. +#: actions/smssettings.php:427 +#, fuzzy +msgid "SMS confirmation cancelled." +msgstr "TujmesaÄila konfirmo nuligita." + +#. TRANS: Message given trying to remove an SMS phone number that is not +#. TRANS: registered for the active user. +#: actions/smssettings.php:448 +#, fuzzy +msgid "That is not your phone number." +msgstr "Tio ne estas via Jabber-ID." + +#. TRANS: Message given after successfully removing a registered SMS phone number. +#: actions/smssettings.php:470 +#, fuzzy +msgid "The SMS phone number was removed." +msgstr "La tujmesaÄila adreso estas forigita." + +#. 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 +#, fuzzy +msgid "No code entered" +msgstr "Neniu enhavo!" + +#. 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 +#, fuzzy +msgid "Manage snapshot configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#: actions/snapshotadminpanel.php:127 +#, fuzzy +msgid "Invalid snapshot run value." +msgstr "Rolo nevalida." + +#: actions/snapshotadminpanel.php:133 +msgid "Snapshot frequency must be a number." +msgstr "" + +#: actions/snapshotadminpanel.php:144 +#, fuzzy +msgid "Invalid snapshot report URL." +msgstr "URL por la emblemo nevalida." + +#: 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 "Ofteco" + +#: 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 +#, fuzzy +msgid "Save snapshot settings" +msgstr "Konservu atingan agordon" + +#: actions/subedit.php:70 +#, fuzzy +msgid "You are not subscribed to that profile." +msgstr "Vi ne estas grupano." + +#. 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 "Malsukcesis konservi la profilon." + +#: actions/subscribe.php:77 +msgid "This action only accepts POST requests." +msgstr "" + +#: actions/subscribe.php:107 +#, fuzzy +msgid "No such profile." +msgstr "Ne ekzistas tia dosiero." + +#: 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 "Abonita" + +#: actions/subscribers.php:50 +#, fuzzy, php-format +msgid "%s subscribers" +msgstr "Malaboni" + +#: actions/subscribers.php:52 +#, fuzzy, php-format +msgid "%1$s subscribers, page %2$d" +msgstr "%1$s grupanoj, paÄo %2$d" + +#: 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 +#, fuzzy, php-format +msgid "" +"%s has no subscribers. Why not [register an account](%%%%action.register%%%" +"%) and be the first?" +msgstr "Kial ne [krei konton](%%action.register%%) kaj esti la unua afiÅanto!" + +#: actions/subscriptions.php:52 +#, fuzzy, php-format +msgid "%s subscriptions" +msgstr "Priskribo" + +#: actions/subscriptions.php:54 +#, fuzzy, php-format +msgid "%1$s subscriptions, page %2$d" +msgstr "%1$s kaj amikoj, paÄo %2$d" + +#: 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 "Jabber" + +#: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 +msgid "SMS" +msgstr "SMS" + +#: actions/tag.php:69 +#, fuzzy, php-format +msgid "Notices tagged with %1$s, page %2$d" +msgstr "Uzantoj sinmarkitaj per %1$s - paÄo %2$d" + +#: actions/tag.php:87 +#, fuzzy, php-format +msgid "Notice feed for tag %s (RSS 1.0)" +msgstr "Fluo por amikoj de %s (RSS 1.0)" + +#: actions/tag.php:93 +#, fuzzy, php-format +msgid "Notice feed for tag %s (RSS 2.0)" +msgstr "Fluo por amikoj de %s (RSS 2.0)" + +#: actions/tag.php:99 +#, fuzzy, php-format +msgid "Notice feed for tag %s (Atom)" +msgstr "Fluo por amikoj de %s (Atom)" + +#: actions/tagother.php:39 +#, fuzzy +msgid "No ID argument." +msgstr "Ne estas aldonaĵo." + +#: actions/tagother.php:65 +#, fuzzy, php-format +msgid "Tag %s" +msgstr "Markiloj" + +#: actions/tagother.php:77 lib/userprofile.php:76 +#, fuzzy +msgid "User profile" +msgstr "La uzanto ne havas profilon." + +#: actions/tagother.php:81 actions/userauthorization.php:132 +#: lib/userprofile.php:103 +msgid "Photo" +msgstr "Foto" + +#: actions/tagother.php:141 +#, fuzzy +msgid "Tag user" +msgstr "Markiloj" + +#: actions/tagother.php:151 +#, fuzzy +msgid "" +"Tags for this user (letters, numbers, -, ., and _), comma- or space- " +"separated" +msgstr "" +"Markiloj por vi mem (literoj, ciferoj, \"-\", \".\", kaj \"_\"), dividite " +"per komoj aÅ spacoj" + +#: actions/tagother.php:193 +msgid "" +"You can only tag people you are subscribed to or who are subscribed to you." +msgstr "" + +#: actions/tagother.php:200 +#, fuzzy +msgid "Could not save tags." +msgstr "Malsukcesis konservi markilojn." + +#: actions/tagother.php:236 +#, fuzzy +msgid "Use this form to add tags to your subscribers or subscriptions." +msgstr "Uzu ĉi tiun formularon por redakti vian aplikaĵon." + +#: actions/tagrss.php:35 +#, fuzzy +msgid "No such tag." +msgstr "Ne estas tiu paÄo." + +#: actions/unblock.php:59 +#, fuzzy +msgid "You haven't blocked that user." +msgstr "Vi jam blokis la uzanton." + +#: actions/unsandbox.php:72 +#, fuzzy +msgid "User is not sandboxed." +msgstr "La uzanto ne estas blokita de grupo." + +#: actions/unsilence.php:72 +#, fuzzy +msgid "User is not silenced." +msgstr "La uzanto ne havas profilon." + +#: actions/unsubscribe.php:77 +#, fuzzy +msgid "No profile ID in request." +msgstr "Neniu ensalutad-ĵetono bezoniÄas." + +#: actions/unsubscribe.php:98 +#, fuzzy +msgid "Unsubscribed" +msgstr "Malaboni" + +#: actions/updateprofile.php:64 actions/userauthorization.php:337 +#, fuzzy, php-format +msgid "" +"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." +msgstr "Aviza permesilo ‘%1$s’ ne konformas al reteja permesilo ‘%2$s’." + +#. TRANS: User admin panel title +#: actions/useradminpanel.php:59 +msgctxt "TITLE" +msgid "User" +msgstr "Uzanto" + +#: actions/useradminpanel.php:70 +#, fuzzy +msgid "User settings for this StatusNet site." +msgstr "Aspektaj agordoj por ĉi tiu StatusNet-retejo." + +#: 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 "Profilo" + +#: 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 +#, fuzzy +msgid "New users" +msgstr "Inviti novajn uzantojn" + +#: actions/useradminpanel.php:235 +msgid "New user welcome" +msgstr "" + +#: actions/useradminpanel.php:236 +#, fuzzy +msgid "Welcome text for new users (Max 255 chars)." +msgstr "La nomo estas tro longa (maksimume 255 literoj)" + +#: actions/useradminpanel.php:241 +#, fuzzy +msgid "Default subscription" +msgstr "Priskribo" + +#: actions/useradminpanel.php:242 +#, fuzzy +msgid "Automatically subscribe new users to this user." +msgstr "AÅtomate aboni iun ajn, kiu abonas min (prefereble por ne-homoj)" + +#: actions/useradminpanel.php:251 +#, fuzzy +msgid "Invitations" +msgstr "Invito(j) senditas" + +#: actions/useradminpanel.php:256 +#, fuzzy +msgid "Invitations enabled" +msgstr "Invito(j) senditas" + +#: actions/useradminpanel.php:258 +msgid "Whether to allow users to invite new users." +msgstr "" + +#: actions/userauthorization.php:105 +#, fuzzy +msgid "Authorize subscription" +msgstr "Priskribo" + +#: 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 "Licenco" + +#: actions/userauthorization.php:217 +msgid "Accept" +msgstr "Akcepti" + +#: actions/userauthorization.php:218 lib/subscribeform.php:115 +#: lib/subscribeform.php:139 +#, fuzzy +msgid "Subscribe to this user" +msgstr "Forigi la uzanton" + +#: actions/userauthorization.php:219 +msgid "Reject" +msgstr "Malakcepti" + +#: actions/userauthorization.php:220 +#, fuzzy +msgid "Reject this subscription" +msgstr "Forigi la uzanton" + +#: actions/userauthorization.php:232 +#, fuzzy +msgid "No authorization request!" +msgstr "Neniu ensalutad-ĵetono bezoniÄas." + +#: actions/userauthorization.php:254 +#, fuzzy +msgid "Subscription authorized" +msgstr "Vi ne estas rajtigita." + +#: 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 +#, fuzzy +msgid "Subscription rejected" +msgstr "Priskribo necesas." + +#: 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 +#, fuzzy, php-format +msgid "Avatar URL ‘%s’ is not valid." +msgstr "Revokfunkcia URL estas nevalida." + +#: 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 +#, fuzzy +msgid "Profile design" +msgstr "Vidi profilo-desegnon" + +#: actions/userdesignsettings.php:87 lib/designsettings.php:76 +#, fuzzy +msgid "" +"Customize the way your profile looks with a background image and a colour " +"palette of your choice." +msgstr "Agordi kiel aspektu via grupo, kun elekto de fonbildo kaj koloraro." + +#: 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 +#, fuzzy, php-format +msgid "%1$s groups, page %2$d" +msgstr "%1$s grupanoj, paÄo %2$d" + +#: actions/usergroups.php:132 +msgid "Search for more groups" +msgstr "" + +#: actions/usergroups.php:159 +#, fuzzy, php-format +msgid "%s is not a member of any group." +msgstr "La uzanto ne estas grupano." + +#: 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 +#, fuzzy, php-format +msgid "Updates from %1$s on %2$s!" +msgstr "Åœatataj ÄœisdatiÄoj de %1$s ĉe %2$s!" + +#: 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 "Kontribuantoj" + +#: 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 "Versio" + +#: actions/version.php:199 +msgid "Author(s)" +msgstr "AÅtoro(j)" + +#. 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 +#, fuzzy +msgid "Invalid filename." +msgstr "Grando nevalida." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 +#, fuzzy +msgid "Group join failed." +msgstr "Grupo ne troviÄas." + +#. 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 "Malsukcesis Äisdatigi grupon." + +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 +#, fuzzy +msgid "Group leave failed." +msgstr "Malsukcesis alÅuti" + +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 +#, fuzzy +msgid "Could not update local group." +msgstr "Malsukcesis Äisdatigi grupon." + +#. 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 "Malsukcesis krei alinomon." + +#. 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 +#, fuzzy +msgid "Could not insert message." +msgstr "Malsukcesis trovi celan uzanton." + +#. 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 "Malsukcesis Äisdatigi uzanton" + +#. 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 +#, fuzzy, php-format +msgid "Database error inserting hashtag: %s" +msgstr "Datumbaza eraro enigi la uzanton de *OAuth-aplikaĵo." + +#. 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 +#, fuzzy +msgid "You are banned from posting notices on this site." +msgstr "Vi ne rajtas doni al uzanto rolon ĉe ĉi tiu retejo." + +#. 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:1746 +#, php-format +msgid "RT @%1$s %2$s" +msgstr "RT @%1$s %2$s" + +#. 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:737 +#, 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:746 +#, 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 "La uzanto ne havas profilon." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +#, fuzzy +msgid "Unable to save tag." +msgstr "Malsukcesis konservi vian desegnan agordon" + +#. 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 "Tiu uzanto abonblokis vin." + +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 +#, fuzzy +msgid "Already subscribed!" +msgstr "Abonita" + +#. 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 "La uzanto ne estas blokita de grupo." + +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 +#, fuzzy +msgid "Not subscribed!" +msgstr "Abonita" + +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +#, fuzzy +msgid "Could not delete self-subscription." +msgstr "Malsukcesis forigi Åataton." + +#. 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 "Malsukcesis forigi Åataton." + +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +#, fuzzy +msgid "Could not delete subscription." +msgstr "Malsukcesis forigi Åataton." + +#. 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 "Bonvenon al %1$s, @%2$s!" + +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 +#, fuzzy +msgid "Could not create group." +msgstr "Malsukcesis Äisdatigi grupon." + +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 +#, fuzzy +msgid "Could not set group URI." +msgstr "Malsukcesis Äisdatigi grupon." + +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 +#, fuzzy +msgid "Could not set group membership." +msgstr "Malsukcesis Äisdatigi grupon." + +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 +#, fuzzy +msgid "Could not save local group info." +msgstr "Malsukcesis konservi la profilon." + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:109 +#, fuzzy +msgid "Change your profile settings" +msgstr "Profila agordo" + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:116 +#, fuzzy +msgid "Upload an avatar" +msgstr "Eraris Äisdatigi vizaÄbildon." + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:123 +#, fuzzy +msgid "Change your password" +msgstr "ÅœanÄi vian pasvorton." + +#. 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 +#, fuzzy +msgid "Design your profile" +msgstr "La uzanto ne havas profilon." + +#. TRANS: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:144 +#, fuzzy +msgid "Other options" +msgstr "Aliaj agordoj" + +#. TRANS: Link description in user account settings menu. +#: lib/accountsettingsaction.php:146 +msgid "Other" +msgstr "Alia" + +#. 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 "%1$s - %2$s" + +#. 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 +#, fuzzy +msgid "Primary site navigation" +msgstr "ÅœanÄi agordojn de la retejo" + +#. 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 "Persona" + +#. TRANS: Tooltip for main menu option "Account" +#: lib/action.php:447 +#, fuzzy +msgctxt "TOOLTIP" +msgid "Change your email, avatar, password, profile" +msgstr "ÅœanÄi vian pasvorton." + +#. TRANS: Tooltip for main menu option "Services" +#: lib/action.php:452 +msgctxt "TOOLTIP" +msgid "Connect to services" +msgstr "Konekti al servoj" + +#. 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 "Konekti" + +#. TRANS: Tooltip for menu option "Admin" +#: lib/action.php:458 +msgctxt "TOOLTIP" +msgid "Change site configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Main menu option when logged in and site admin for access to site configuration +#: lib/action.php:461 +msgctxt "MENU" +msgid "Admin" +msgstr "Administranto" + +#. 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 "Inviti amikojn kaj kolegojn aliÄi vin sur %s" + +#. TRANS: Main menu option when logged in and invitations are allowed for inviting new users +#: lib/action.php:468 +msgctxt "MENU" +msgid "Invite" +msgstr "Inviti" + +#. TRANS: Tooltip for main menu option "Logout" +#: lib/action.php:474 +#, fuzzy +msgctxt "TOOLTIP" +msgid "Logout from the site" +msgstr "Desegno por la retejo" + +#. TRANS: Main menu option when logged in to log out the current user +#: lib/action.php:477 +msgctxt "MENU" +msgid "Logout" +msgstr " Elsaluti" + +#. TRANS: Tooltip for main menu option "Register" +#: lib/action.php:482 +msgctxt "TOOLTIP" +msgid "Create an account" +msgstr "Krei konton" + +#. TRANS: Main menu option when not logged in to register a new account +#: lib/action.php:485 +msgctxt "MENU" +msgid "Register" +msgstr "RegistriÄi" + +#. TRANS: Tooltip for main menu option "Login" +#: lib/action.php:488 +#, fuzzy +msgctxt "TOOLTIP" +msgid "Login to the site" +msgstr "Ensaluti al la retejo" + +#: lib/action.php:491 +#, fuzzy +msgctxt "MENU" +msgid "Login" +msgstr "Ensaluti" + +#. TRANS: Tooltip for main menu option "Help" +#: lib/action.php:494 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "Helpu min!" + +#: lib/action.php:497 +msgctxt "MENU" +msgid "Help" +msgstr "Helpo" + +#. TRANS: Tooltip for main menu option "Search" +#: lib/action.php:500 +msgctxt "TOOLTIP" +msgid "Search for people or text" +msgstr "" + +#: lib/action.php:503 +#, fuzzy +msgctxt "MENU" +msgid "Search" +msgstr "Homserĉo" + +#. 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 +#, fuzzy +msgid "Site notice" +msgstr "Nova avizo" + +#. 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 +#, fuzzy +msgid "Page notice" +msgstr "Nova avizo" + +#. 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 "Helpo" + +#. TRANS: Secondary navigation menu option leading to text about StatusNet site. +#: lib/action.php:771 +msgid "About" +msgstr "Enkonduko" + +#. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. +#: lib/action.php:774 +msgid "FAQ" +msgstr "Oftaj demandoj" + +#. 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 "Privateco" + +#. TRANS: Secondary navigation menu option. +#: lib/action.php:786 +msgid "Source" +msgstr "Fontkodo" + +#. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. +#: lib/action.php:792 +msgid "Contact" +msgstr "Kontakto" + +#: lib/action.php:794 +msgid "Badge" +msgstr "Insigno" + +#. TRANS: DT element for StatusNet software license. +#: lib/action.php:823 +msgid "StatusNet software license" +msgstr "Licenco de la programaro StatusNet" + +#. 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 +#, fuzzy +msgid "Site content license" +msgstr "Licenco de la programaro StatusNet" + +#. 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 +#, fuzzy +msgid "Pagination" +msgstr "Registrado" + +#. 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 "Poste" + +#. 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 "AntaÅe" + +#. 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 +#, fuzzy +msgid "You cannot make changes to this site." +msgstr "Vi ne rajtas doni al uzanto rolon ĉe ĉi tiu retejo." + +#. TRANS: Client error message throw when a certain panel's settings cannot be changed. +#: lib/adminpanelaction.php:110 +#, fuzzy +msgid "Changes to that panel are not allowed." +msgstr "RegistriÄo ne permesita." + +#. 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 +#, fuzzy +msgid "Unable to delete design setting." +msgstr "Malsukcesis konservi vian desegnan agordon" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:350 +#, fuzzy +msgid "Basic site configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:352 +#, fuzzy +msgctxt "MENU" +msgid "Site" +msgstr "Retejo" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:358 +#, fuzzy +msgid "Design configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:360 +#, fuzzy +msgctxt "MENU" +msgid "Design" +msgstr "Aspekto" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:366 +#, fuzzy +msgid "User configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 +msgid "User" +msgstr "Uzanto" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:374 +#, fuzzy +msgid "Access configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:382 +#, fuzzy +msgid "Paths configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:390 +#, fuzzy +msgid "Sessions configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:398 +#, fuzzy +msgid "Edit site notice" +msgstr "Forigi avizon" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:406 +#, fuzzy +msgid "Snapshots configuration" +msgstr "ÅœanÄi agordojn de la retejo" + +#. 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 +#, fuzzy +msgid "Edit application" +msgstr "Redakti Aplikon" + +#. TRANS: Form guide. +#: lib/applicationeditform.php:187 +#, fuzzy +msgid "Icon for this application" +msgstr "Ne forigu ĉi tiun aplikaĵon." + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:209 +#, fuzzy, php-format +msgid "Describe your application in %d characters" +msgstr "Priskribu vin mem kaj viajn Åatokupojn per ne pli ol %d signoj" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:213 +#, fuzzy +msgid "Describe your application" +msgstr "Forigi aplikaĵon" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:224 +#, fuzzy +msgid "URL of the homepage of this application" +msgstr "Vi ne estas la posedanto de ĉi tiu aplikaĵo." + +#. TRANS: Form input field label. +#: lib/applicationeditform.php:226 +#, fuzzy +msgid "Source URL" +msgstr "Fontkodo" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:233 +#, fuzzy +msgid "Organization responsible for this application" +msgstr "Vi ne estas la posedanto de ĉi tiu aplikaĵo." + +#. 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 +#, fuzzy +msgid "Cancel" +msgstr "Nuligi" + +#. 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 +#, fuzzy +msgctxt "BUTTON" +msgid "Revoke" +msgstr "Forigi" + +#. TRANS: DT element label in attachment list. +#: lib/attachmentlist.php:88 +#, fuzzy +msgid "Attachments" +msgstr "Ne estas aldonaĵo." + +#. TRANS: DT element label in attachment list item. +#: lib/attachmentlist.php:265 +#, fuzzy +msgid "Author" +msgstr "AÅtoro(j)" + +#. TRANS: DT element label in attachment list item. +#: lib/attachmentlist.php:279 +#, fuzzy +msgid "Provider" +msgstr "AntaÅrigardo" + +#: lib/attachmentnoticesection.php:67 +msgid "Notices where this attachment appears" +msgstr "" + +#: lib/attachmenttagcloudsection.php:48 +#, fuzzy +msgid "Tags for this attachment" +msgstr "Ne estas tiu aldonaĵo." + +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 +#, fuzzy +msgid "Password changing failed" +msgstr "Pasvorta ÅanÄo" + +#: lib/authenticationplugin.php:236 +#, fuzzy +msgid "Password changing is not allowed" +msgstr "Pasvorta ÅanÄo" + +#: lib/channel.php:157 lib/channel.php:177 +#, fuzzy +msgid "Command results" +msgstr "Neniu rezulto." + +#: lib/channel.php:229 lib/mailhandler.php:142 +msgid "Command complete" +msgstr "" + +#: lib/channel.php:240 +#, fuzzy +msgid "Command failed" +msgstr "Malsukcesis alÅuti" + +#: 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 +#, fuzzy +msgid "User has no last notice" +msgstr "La uzanto ne havas profilon." + +#. 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 +#, fuzzy, php-format +msgid "Could not find a user with nickname %s" +msgstr "Malsukcesis trovi celan uzanton." + +#. 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 +#, fuzzy, php-format +msgid "Nudge sent to %s" +msgstr "PuÅeto sendiÄis" + +#: lib/command.php:260 +#, php-format +msgid "" +"Subscriptions: %1$s\n" +"Subscribers: %2$s\n" +"Notices: %3$s" +msgstr "" + +#: lib/command.php:302 +#, fuzzy +msgid "Notice marked as fave." +msgstr "Ĉi tiu avizo jam estas Åatata." + +#: lib/command.php:323 +#, fuzzy +msgid "You are already a member of that group" +msgstr "Vi estas jam grupano." + +#. 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 +#, fuzzy, php-format +msgid "Could not join user %1$s to group %2$s" +msgstr "La uzanto %1$*s ne povas aliÄi al la grupo %2$*s." + +#. 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 +#, fuzzy, php-format +msgid "Could not remove user %1$s from group %2$s" +msgstr "Malsukcesis forigi uzanton %1$s de grupo %2$s." + +#. TRANS: Whois output. %s is the full name of the queried user. +#: lib/command.php:418 +#, fuzzy, php-format +msgid "Fullname: %s" +msgstr "Plena nomo" + +#. 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 +#, fuzzy, php-format +msgid "Location: %s" +msgstr "Loko" + +#. 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 +#, fuzzy, php-format +msgid "Homepage: %s" +msgstr "HejmpaÄo" + +#. TRANS: Whois output. %s is the bio information of the queried user. +#: lib/command.php:430 +#, fuzzy, php-format +msgid "About: %s" +msgstr "Enkonduko" + +#: 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 +#, fuzzy, php-format +msgid "Direct message to %s sent" +msgstr "Rekta mesaÄo al %s sendiÄis." + +#: lib/command.php:494 +msgid "Error sending direct message." +msgstr "" + +#: lib/command.php:514 +#, fuzzy +msgid "Cannot repeat your own notice" +msgstr "Vi ne povas ripeti vian propran avizon." + +#: lib/command.php:519 +#, fuzzy +msgid "Already repeated that notice" +msgstr "La avizo jam ripetiÄis." + +#. 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 +#, fuzzy, php-format +msgid "Notice from %s repeated" +msgstr "Avizo afiÅiÄas" + +#: lib/command.php:531 +#, fuzzy +msgid "Error repeating notice." +msgstr "Eraro je Äisdatigo de fora profilo." + +#: lib/command.php:562 +#, php-format +msgid "Notice too long - maximum is %d characters, you sent %d" +msgstr "" + +#: lib/command.php:571 +#, fuzzy, php-format +msgid "Reply to %s sent" +msgstr "Ripetita al %s" + +#: lib/command.php:573 +#, fuzzy +msgid "Error saving notice." +msgstr "Eraris konservi uzanton: nevalida." + +#: 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 +#, fuzzy, php-format +msgid "Subscribed to %s" +msgstr "Abonita" + +#: lib/command.php:655 lib/command.php:754 +msgid "Specify the name of the user to unsubscribe from" +msgstr "" + +#: lib/command.php:664 +#, fuzzy, php-format +msgid "Unsubscribed from %s" +msgstr "Malaboni" + +#: lib/command.php:682 lib/command.php:705 +msgid "Command not yet implemented." +msgstr "" + +#: lib/command.php:685 +#, fuzzy +msgid "Notification off." +msgstr "Neniu konfirma kodo." + +#: lib/command.php:687 +msgid "Can't turn off notification." +msgstr "" + +#: lib/command.php:708 +#, fuzzy +msgid "Notification on." +msgstr "Neniu konfirma kodo." + +#: lib/command.php:710 +#, fuzzy +msgid "Can't turn on notification." +msgstr "Vi ne povas ripeti vian propran avizon." + +#: 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 +#, fuzzy, php-format +msgid "Unsubscribed %s" +msgstr "Malaboni" + +#: lib/command.php:778 +#, fuzzy +msgid "You are not subscribed to anyone." +msgstr "Vi ne estas rajtigita." + +#: lib/command.php:780 +#, fuzzy +msgid "You are subscribed to this person:" +msgid_plural "You are subscribed to these people:" +msgstr[0] "Vi jam abonas jenajn uzantojn:" +msgstr[1] "Vi jam abonas jenajn uzantojn:" + +#: lib/command.php:800 +msgid "No one is subscribed to you." +msgstr "" + +#: lib/command.php:802 +msgid "This person is subscribed to you:" +msgid_plural "These people are subscribed to you:" +msgstr[0] "" +msgstr[1] "" + +#: lib/command.php:822 +#, fuzzy +msgid "You are not a member of any groups." +msgstr "Vi ne estas grupano." + +#: lib/command.php:824 +#, fuzzy +msgid "You are a member of this group:" +msgid_plural "You are a member of these groups:" +msgstr[0] "Vi ne estas grupano." +msgstr[1] "Vi ne estas grupano." + +#: 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 +#, fuzzy +msgid "No configuration file found. " +msgstr "Neniu konfirma kodo." + +#: 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 +#, fuzzy +msgid "Connections" +msgstr "Konekti" + +#: lib/connectsettingsaction.php:121 +#, fuzzy +msgid "Authorized connected applications" +msgstr "Konektita aplikaĵo" + +#: lib/dberroraction.php:60 +msgid "Database error" +msgstr "" + +#: lib/designsettings.php:105 +#, fuzzy +msgid "Upload file" +msgstr "Malsukcesis alÅuti" + +#: lib/designsettings.php:109 +#, fuzzy +msgid "" +"You can upload your personal background image. The maximum file size is 2MB." +msgstr "Vi povas alÅuti vian personan vizaÄbildon. Dosiero-grandlimo estas %s." + +#: lib/designsettings.php:418 +#, fuzzy +msgid "Design defaults restored." +msgstr "Desegna agordo konservita." + +#: lib/disfavorform.php:114 lib/disfavorform.php:140 +#, fuzzy +msgid "Disfavor this notice" +msgstr "Forigi la avizon" + +#: lib/favorform.php:114 lib/favorform.php:140 +#, fuzzy +msgid "Favor this notice" +msgstr "Forigi la avizon" + +#: 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 +#, fuzzy +msgid "All" +msgstr "Permesi" + +#: lib/galleryaction.php:139 +msgid "Select tag to filter" +msgstr "" + +#: lib/galleryaction.php:140 +#, fuzzy +msgid "Tag" +msgstr "Markiloj" + +#: lib/galleryaction.php:141 +msgid "Choose a tag to narrow list" +msgstr "" + +#: lib/galleryaction.php:143 +msgid "Go" +msgstr "Iri" + +#: lib/grantroleform.php:91 +#, php-format +msgid "Grant this user the \"%s\" role" +msgstr "" + +#: lib/groupeditform.php:163 +#, fuzzy +msgid "URL of the homepage or blog of the group or topic" +msgstr "URL de via hejmpaÄo, blogo aÅ profilo ĉe alia retejo" + +#: lib/groupeditform.php:168 +msgid "Describe the group or topic" +msgstr "" + +#: lib/groupeditform.php:170 +#, fuzzy, php-format +msgid "Describe the group or topic in %d characters" +msgstr "Priskribu vin mem kaj viajn Åatokupojn per ne pli ol %d signoj" + +#: lib/groupeditform.php:179 +#, fuzzy +msgid "" +"Location for the group, if any, like \"City, State (or Region), Country\"" +msgstr "Kie vi estas, ekzemple \"Urbo, Åœtato (aÅ Regiono), Lando\"" + +#: lib/groupeditform.php:187 +#, php-format +msgid "Extra nicknames for the group, comma- or space- separated, max %d" +msgstr "" + +#: lib/groupnav.php:85 +#, fuzzy +msgid "Group" +msgstr "Grupoj" + +#: lib/groupnav.php:101 +#, fuzzy +msgid "Blocked" +msgstr "Bloki" + +#: lib/groupnav.php:102 +#, fuzzy, php-format +msgid "%s blocked users" +msgstr "%s profiloj blokitaj" + +#: lib/groupnav.php:108 +#, fuzzy, php-format +msgid "Edit %s group properties" +msgstr "Redakti %s grupon" + +#: lib/groupnav.php:113 +#, fuzzy +msgid "Logo" +msgstr " Elsaluti" + +#: 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 +#, fuzzy +msgid "Groups with most members" +msgstr "%s grupanoj" + +#: 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 +#, fuzzy +msgid "Unsupported image file format." +msgstr "Formato ne subtenata." + +#: lib/imagefile.php:88 +#, fuzzy, php-format +msgid "That file is too big. The maximum file size is %s." +msgstr "" +"Vi povas alÅuti emblemo-bildon por via grupo. Dosiero-grandlimo estas $s." + +#: lib/imagefile.php:93 +#, fuzzy +msgid "Partial upload." +msgstr "Neniu dosiero alÅutiÄas." + +#: 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 +#, fuzzy +msgid "Lost our file." +msgstr "PerdiÄis nia dosiera datumo." + +#: 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 +#, fuzzy +msgid "Join" +msgstr "Ensaluti" + +#: lib/leaveform.php:114 +msgid "Leave" +msgstr "Forlasi" + +#: lib/logingroupnav.php:80 +#, fuzzy +msgid "Login with a username and password" +msgstr "Ensaluti per via uzantnomo kaj pasvorto." + +#: lib/logingroupnav.php:86 +msgid "Sign up for a new account" +msgstr "" + +#. TRANS: Subject for address confirmation email +#: lib/mail.php:174 +#, fuzzy +msgid "Email address confirmation" +msgstr "RetpoÅtadreso" + +#. 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 +#, fuzzy, php-format +msgid "%1$s is now listening to your notices on %2$s." +msgstr "%1$s invitis vin kunaliÄi ĉe %2$s" + +#: 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 +#, fuzzy, php-format +msgid "Bio: %s" +msgstr "Biografio" + +#. TRANS: Subject of notification mail for new posting email address +#: lib/mail.php:304 +#, fuzzy, php-format +msgid "New email address for posting to %s" +msgstr "Krei novan retpoÅtadreson por afiÅado kaj nuligi la antaÅan." + +#. 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 +#, fuzzy, php-format +msgid "%s status" +msgstr "Stato de %1$s ĉe %2$s" + +#. TRANS: Subject line for SMS-by-email address confirmation message +#: lib/mail.php:460 +#, fuzzy +msgid "SMS confirmation" +msgstr "Neniu konfirma kodo." + +#. 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 +#, fuzzy, php-format +msgid "New private message from %s" +msgstr "Rektaj mesaÄoj de %s" + +#. 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 +#, fuzzy, php-format +msgid "%s (@%s) added your notice as a favorite" +msgstr "Sendu al mi mesaÄon tiam, kiam iu Åatas mian avizon ." + +#. 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:228 lib/noticelist.php:506 +msgid "from" +msgstr "" + +#: lib/mailhandler.php:37 +#, fuzzy +msgid "Could not parse message." +msgstr "Malsukcesis Äisdatigi uzanton" + +#: lib/mailhandler.php:42 +msgid "Not a registered user." +msgstr "" + +#: lib/mailhandler.php:46 +#, fuzzy +msgid "Sorry, that is not your incoming email address." +msgstr "Tiu ne estas via retpoÅtadreso." + +#: lib/mailhandler.php:50 +#, fuzzy +msgid "Sorry, no incoming email allowed." +msgstr "Ne estas alvena retpoÅtadreso" + +#: lib/mailhandler.php:228 +#, fuzzy, php-format +msgid "Unsupported message type: %s" +msgstr "Formato ne subtenata." + +#: 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 +#, fuzzy +msgid "Could not determine file's MIME type." +msgstr " Malsukcesis certigi fontan uzanton." + +#: 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 +#, fuzzy +msgid "Send a direct notice" +msgstr "Forigi avizon" + +#: lib/messageform.php:146 +msgid "To" +msgstr "Al" + +#: lib/messageform.php:159 lib/noticeform.php:185 +msgid "Available characters" +msgstr "Haveblaj karakteroj" + +#: lib/messageform.php:178 lib/noticeform.php:236 +msgctxt "Send button for sending notice" +msgid "Send" +msgstr "Sendi" + +#: lib/noticeform.php:160 +#, fuzzy +msgid "Send a notice" +msgstr "Nova avizo" + +#: 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 +#, fuzzy +msgid "Do not share my location" +msgstr "Ne forigu ĉi tiun aplikaĵon." + +#: 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 +#, fuzzy +msgid "N" +msgstr "Ne" + +#. 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 "al" + +#: lib/noticelist.php:568 +#, fuzzy +msgid "in context" +msgstr "Neniu enhavo!" + +#: lib/noticelist.php:603 +#, fuzzy +msgid "Repeated by" +msgstr "Ripetita" + +#: lib/noticelist.php:630 +#, fuzzy +msgid "Reply to this notice" +msgstr "Forigi la avizon" + +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "" + +#: lib/noticelist.php:675 +#, fuzzy +msgid "Notice repeated" +msgstr "Avizo viÅiÄas" + +#: lib/nudgeform.php:116 +#, fuzzy +msgid "Nudge this user" +msgstr "Forigi la uzanton" + +#: lib/nudgeform.php:128 +#, fuzzy +msgid "Nudge" +msgstr "PuÅeto sendiÄis" + +#: lib/nudgeform.php:128 +#, fuzzy +msgid "Send a nudge to this user" +msgstr "Vi ne povas sendi mesaÄon al la uzanto." + +#: lib/oauthstore.php:283 +#, fuzzy +msgid "Error inserting new profile" +msgstr "Eraro je Äisdatigo de fora profilo." + +#: lib/oauthstore.php:291 +#, fuzzy +msgid "Error inserting avatar" +msgstr "Eraris konservi uzanton: nevalida." + +#: lib/oauthstore.php:306 +#, fuzzy +msgid "Error updating remote profile" +msgstr "Eraro je Äisdatigo de fora profilo." + +#: lib/oauthstore.php:311 +#, fuzzy +msgid "Error inserting remote profile" +msgstr "Eraro je Äisdatigo de fora profilo." + +#: lib/oauthstore.php:345 +#, fuzzy +msgid "Duplicate notice" +msgstr "Forigi avizon" + +#: lib/oauthstore.php:490 +#, fuzzy +msgid "Couldn't insert new subscription." +msgstr "Malsukcesis enmeti konfirmkodon." + +#: lib/personalgroupnav.php:99 +#, fuzzy +msgid "Personal" +msgstr "Persona" + +#: lib/personalgroupnav.php:104 +msgid "Replies" +msgstr "" + +#: lib/personalgroupnav.php:114 +#, fuzzy +msgid "Favorites" +msgstr "Aldoni al Åatolisto" + +#: lib/personalgroupnav.php:125 +msgid "Inbox" +msgstr "" + +#: lib/personalgroupnav.php:126 +#, fuzzy +msgid "Your incoming messages" +msgstr "Ne estas alvena retpoÅtadreso" + +#: lib/personalgroupnav.php:130 +#, fuzzy +msgid "Outbox" +msgstr "Elirkesto de %s" + +#: lib/personalgroupnav.php:131 +#, fuzzy +msgid "Your sent messages" +msgstr "Persona mesaÄo" + +#: 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 +#, fuzzy +msgid "Subscriptions" +msgstr "Priskribo" + +#: lib/profileaction.php:126 +#, fuzzy +msgid "All subscriptions" +msgstr "Priskribo" + +#: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90 +#, fuzzy +msgid "Subscribers" +msgstr "Aboni" + +#: lib/profileaction.php:161 +#, fuzzy +msgid "All subscribers" +msgstr "Malaboni" + +#: lib/profileaction.php:191 +#, fuzzy +msgid "User ID" +msgstr "Uzanto" + +#: lib/profileaction.php:196 +#, fuzzy +msgid "Member since" +msgstr "Grupanoj" + +#. TRANS: Average count of posts made per day since account registration +#: lib/profileaction.php:235 +msgid "Daily average" +msgstr "" + +#: lib/profileaction.php:264 +#, fuzzy +msgid "All groups" +msgstr "Grupoj de %s" + +#: lib/profileformaction.php:123 +msgid "Unimplemented method." +msgstr "" + +#: lib/publicgroupnav.php:78 +msgid "Public" +msgstr "Publika" + +#: lib/publicgroupnav.php:82 +msgid "User groups" +msgstr "Uzantaj grupoj" + +#: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 +msgid "Recent tags" +msgstr "FreÅaj etikedoj" + +#: lib/publicgroupnav.php:88 +#, fuzzy +msgid "Featured" +msgstr "Elstaraj uzantoj" + +#: lib/publicgroupnav.php:92 +#, fuzzy +msgid "Popular" +msgstr "Populara avizo" + +#: lib/redirectingaction.php:95 +#, fuzzy +msgid "No return-to arguments." +msgstr "Ne estas aldonaĵo." + +#: lib/repeatform.php:107 +#, fuzzy +msgid "Repeat this notice?" +msgstr "Forigi la avizon" + +#: lib/repeatform.php:132 +msgid "Yes" +msgstr "Jes" + +#: lib/repeatform.php:132 +#, fuzzy +msgid "Repeat this notice" +msgstr "Forigi la avizon" + +#: lib/revokeroleform.php:91 +#, fuzzy, php-format +msgid "Revoke the \"%s\" role from this user" +msgstr "Bloki la uzanton de la grupo" + +#: 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 +#, fuzzy +msgid "Sandbox this user" +msgstr "Malbloki ĉi tiun uzanton" + +#: lib/searchaction.php:120 +msgid "Search site" +msgstr "" + +#: lib/searchaction.php:126 +msgid "Keyword(s)" +msgstr "" + +#: lib/searchaction.php:127 +#, fuzzy +msgid "Search" +msgstr "Homserĉo" + +#: lib/searchaction.php:162 +msgid "Search help" +msgstr "" + +#: lib/searchgroupnav.php:80 +#, fuzzy +msgid "People" +msgstr "Homserĉo" + +#: 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 +#, fuzzy +msgid "Find groups on this site" +msgstr "grupoj ĉe %s" + +#: lib/section.php:89 +msgid "Untitled section" +msgstr "" + +#: lib/section.php:106 +msgid "More..." +msgstr "Pli..." + +#: lib/silenceform.php:67 +msgid "Silence" +msgstr "Silento" + +#: lib/silenceform.php:78 +#, fuzzy +msgid "Silence this user" +msgstr "Forigi la uzanton" + +#: 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 +#, fuzzy, php-format +msgid "Groups %s is a member of" +msgstr "Grupoj de %2$s ĉe %1$s." + +#: lib/subgroupnav.php:105 +#, fuzzy +msgid "Invite" +msgstr "Inviti" + +#: lib/subgroupnav.php:106 +#, fuzzy, php-format +msgid "Invite friends and colleagues to join you on %s" +msgstr "Inviti amikojn kaj kolegojn aliÄi vin sur %s" + +#: 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 +#, fuzzy +msgid "None" +msgstr "Noto" + +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Eraris Äisdatigi vizaÄbildon." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Eraro je Äisdatigo de fora profilo." + +#: lib/topposterssection.php:74 +msgid "Top posters" +msgstr "" + +#: lib/unsandboxform.php:69 +msgid "Unsandbox" +msgstr "" + +#: lib/unsandboxform.php:80 +#, fuzzy +msgid "Unsandbox this user" +msgstr "Malbloki ĉi tiun uzanton" + +#: lib/unsilenceform.php:67 +#, fuzzy +msgid "Unsilence" +msgstr "Silento" + +#: lib/unsilenceform.php:78 +#, fuzzy +msgid "Unsilence this user" +msgstr "Malbloki ĉi tiun uzanton" + +#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 +#, fuzzy +msgid "Unsubscribe from this user" +msgstr "Malbloki ĉi tiun uzanton" + +#: lib/unsubscribeform.php:137 +msgid "Unsubscribe" +msgstr "Malaboni" + +#: lib/usernoprofileexception.php:58 +#, fuzzy, php-format +msgid "User %s (%d) has no profile record." +msgstr "La uzanto ne havas profilon." + +#: lib/userprofile.php:117 +#, fuzzy +msgid "Edit Avatar" +msgstr "VizaÄbildo" + +#: lib/userprofile.php:234 lib/userprofile.php:248 +#, fuzzy +msgid "User actions" +msgstr "Uzantaj grupoj" + +#: lib/userprofile.php:237 +msgid "User deletion in progress..." +msgstr "" + +#: lib/userprofile.php:263 +#, fuzzy +msgid "Edit profile settings" +msgstr "Profila agordo" + +#: lib/userprofile.php:264 +msgid "Edit" +msgstr "Redakti" + +#: lib/userprofile.php:287 +#, fuzzy +msgid "Send a direct message to this user" +msgstr "Vi ne povas sendi mesaÄon al la uzanto." + +#: lib/userprofile.php:288 +msgid "Message" +msgstr "MesaÄo" + +#: lib/userprofile.php:326 +msgid "Moderate" +msgstr "Moderigi" + +#: lib/userprofile.php:364 +#, fuzzy +msgid "User role" +msgstr "Uzantaj grupoj" + +#: lib/userprofile.php:366 +msgctxt "role" +msgid "Administrator" +msgstr "Administranto" + +#: lib/userprofile.php:367 +msgctxt "role" +msgid "Moderator" +msgstr "Moderanto" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1100 +msgid "a few seconds ago" +msgstr "antaÅ kelkaj sekundoj" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1103 +msgid "about a minute ago" +msgstr "antaŠĉirkaÅ unu minuto" + +#. 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 "antaŠĉirkaÅ %d minutoj" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1110 +msgid "about an hour ago" +msgstr "antaŠĉirkaÅ unu horo" + +#. 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 "antaŠĉirkaÅ %d horoj" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1117 +msgid "about a day ago" +msgstr "antaŠĉirkaÅ unu tago" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1121 +#, fuzzy, php-format +msgid "about %d days ago" +msgstr "antaŠĉirkaÅ unu tago" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1124 +#, fuzzy +msgid "about a month ago" +msgstr "antaŠĉirkaÅ unu minuto" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1128 +#, fuzzy, php-format +msgid "about %d months ago" +msgstr "antaŠĉirkaÅ %d minutoj" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1131 +#, fuzzy +msgid "about a year ago" +msgstr "antaŠĉirkaÅ unu tago" + +#: lib/webcolor.php:82 +#, fuzzy, php-format +msgid "%s is not a valid color!" +msgstr "ĈefpaÄo ne estas valida URL." + +#: 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/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po index 268cb5c5d..f7e57911c 100644 --- a/locale/es/LC_MESSAGES/statusnet.po +++ b/locale/es/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Spanish # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Crazymadlover # Author@translatewiki.net: Locos epraix # Author@translatewiki.net: McDutchie @@ -14,12 +15,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:47+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:22+0000\n" "Language-Team: Spanish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -27,7 +28,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Acceder" @@ -89,24 +90,24 @@ msgid "Save" msgstr "Guardar" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "No existe tal página." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -119,7 +120,7 @@ msgid "No such user." msgstr "No existe ese usuario." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s y sus amistades, página %2$d" @@ -127,33 +128,33 @@ msgstr "%1$s y sus amistades, página %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 y sus amistades" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Feed de los amigos de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Feed de los amigos de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Feed de los amigos de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -161,7 +162,7 @@ msgstr "" "Esta es la lÃnea temporal de %s y amistades, pero nadie ha publicado nada " "todavÃa." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -171,77 +172,77 @@ msgstr "" "todavÃa." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Tú y tus amistades" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "¡Actualizaciones de %1$s y sus amistades en %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Método de API no encontrado." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Este método requiere un POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -249,7 +250,7 @@ msgstr "" "Tienes que especificar un parámetro llamdao 'dispositivo' con un valor a " "elegir entre: sms, im, ninguno." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "No se pudo actualizar el usuario." @@ -269,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:210 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 @@ -345,30 +346,30 @@ msgstr "No se encuentra usuario receptor." msgid "Can't send direct messages to users who aren't your friend." msgstr "No se puede enviar mensajes directos a usuarios que no son tu amigo." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "No se encontró estado para ese ID" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Este status ya está en favoritos." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "No se pudo crear favorito." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Este status no es un favorito." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -383,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." @@ -395,125 +396,129 @@ msgstr "No se pudo determinar el usuario fuente." msgid "Could not find target user." msgstr "No se pudo encontrar ningún usuario de destino." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "El usuario debe tener solamente letras minúsculas y números y no puede tener " "espacios." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "El usuario ya existe. Prueba con otro." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Usuario inválido" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "La página de inicio no es un URL válido." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Tu nombre es demasiado largo (max. 255 carac.)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "La descripción es demasiado larga (máx. %d caracteres)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "La ubicación es demasiado larga (máx. 255 caracteres)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "¡Muchos seudónimos! El máximo es %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Alias inválido: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "El alias \"%s\" ya está en uso. Intenta usar otro." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "El alias no puede ser el mismo que el usuario." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Grupo no encontrado." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Ya eres miembro de ese grupo" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Has sido bloqueado de ese grupo por el administrador." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "No se pudo unir el usuario %s al grupo %s" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "No eres miembro de este grupo." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "No se pudo eliminar al usuario %1$s del grupo %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Grupos de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1$s grupos %2$s es un miembro de." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Grupos %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -524,15 +529,15 @@ msgstr "Token inválido." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -601,12 +606,12 @@ msgstr "" "debes dar acceso a tu cuenta %4$s a terceras partes en las que confÃes." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Cuenta" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -614,8 +619,8 @@ msgid "Nickname" msgstr "Usuario" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Contraseña" @@ -631,11 +636,11 @@ msgstr "Permitir" msgid "Allow or deny access to your account information." msgstr "Permitir o denegar el acceso a la información de tu cuenta." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Este método requiere un PUBLICAR O ELIMINAR" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "No puedes borrar el estado de otro usuario." @@ -652,61 +657,65 @@ msgstr "No puedes repetir tus propias notificaciones." msgid "Already repeated that notice." msgstr "Esta notificación ya se ha repetido." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Status borrado." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "No hay estado para ese ID" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "No encontrado." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoritos de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s actualizaciones favoritas de %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Actualizaciones que mencionan %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "actualizaciones de %1$s en respuesta a las de %2$s / %3$s" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "lÃnea temporal pública de %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "¡Actualizaciones de todos en %s!" @@ -721,16 +730,20 @@ msgstr "Repetido a %s" msgid "Repeats of %s" msgstr "Repeticiones de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Avisos etiquetados con %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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." @@ -783,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" @@ -823,11 +836,11 @@ msgstr "Imagen borrada." msgid "You already blocked that user." msgstr "Ya has bloqueado a este usuario." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloquear usuario." -#: actions/block.php:130 +#: 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 " @@ -842,7 +855,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -851,7 +864,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "No bloquear a este usuario" @@ -860,7 +873,7 @@ msgstr "No bloquear a este usuario" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -868,11 +881,11 @@ msgid "Yes" msgstr "SÃ" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Bloquear este usuario." -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "No se guardó información de bloqueo." @@ -1000,7 +1013,7 @@ msgstr "No eres el propietario de esta aplicación." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Hubo problemas con tu clave de sesión." @@ -1034,7 +1047,7 @@ msgstr "Borrar esta aplicación" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "No conectado." @@ -1065,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" @@ -1105,45 +1118,53 @@ msgstr "Diseño" msgid "Design settings for this StatusNet site." msgstr "Configuración de diseño de este sitio StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL de logotipo inválido." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema no disponible: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Cambiar logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo del sitio" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Cambiar el tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Tema del sitio" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema para el sitio." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Personalizar tema" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Puedes subir un tema personalizado StatusNet como un archivo .ZIP." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Cambiar la imagen de fondo" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Fondo" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1153,57 +1174,65 @@ msgstr "" "es %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Activar" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Desactivar" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Activar o desactivar la imagen de fondo." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Imagen de fondo en mosaico" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Cambiar colores" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Contenido" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra lateral" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "VÃnculos" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avanzado" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Personalizar CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Utilizar los valores predeterminados" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaurar los diseños predeterminados" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Volver a los valores predeterminados" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1213,7 +1242,7 @@ msgstr "Volver a los valores predeterminados" msgid "Save" msgstr "Guardar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Guardar el diseño" @@ -1327,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." @@ -1486,7 +1516,7 @@ msgid "Cannot normalize that email address" msgstr "No se puede normalizar esta dirección de correo electrónico." #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Correo electrónico no válido" @@ -1623,7 +1653,7 @@ msgstr "Avisos favoritos de %s" #: actions/favoritesrss.php:115 #, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "¡Actualizaciones favorecidas por %1$ s en %2$s!" +msgstr "¡Actualizaciones favorecidas por %1$s en %2$s!" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1714,13 +1744,13 @@ msgstr "El usuario ya tiene esta función." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "No se especificó perfil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "No existe perfil con ese ID" @@ -1863,7 +1893,7 @@ msgstr "Convertir a este usuario en administrador" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "lÃnea temporal de %s" @@ -2272,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." @@ -2289,41 +2319,41 @@ msgstr "No eres miembro de este grupo." msgid "%1$s left group %2$s" msgstr "%1$s ha dejado el grupo %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Ya estás conectado." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nombre de usuario o contraseña incorrectos." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Error al configurar el usuario. Posiblemente no tengas autorización." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Inicio de sesión" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Ingresar a sitio" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Recordarme" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Iniciar sesión automáticamente en el futuro. ¡No usar en ordenadores " "compartidos! " -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "¿Contraseña olvidada o perdida?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2331,11 +2361,11 @@ msgstr "" "Por razones de seguridad, por favor vuelve a escribir tu nombre de usuario y " "contraseña antes de cambiar tu configuración." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Ingresar con tu nombre de usuario y contraseña." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2488,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" @@ -2545,30 +2575,30 @@ msgstr "" "Los desarrolladores pueden editar la configuración de registro de sus " "aplicaciones " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Aviso no tiene perfil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "estado de %1$s en %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Tipo de contenido %s no soportado." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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" @@ -2672,7 +2702,7 @@ msgid "6 or more characters" msgstr "6 o más caracteres" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmar" @@ -2684,11 +2714,11 @@ msgstr "Igual a la contraseña de arriba" msgid "Change" msgstr "Cambiar" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Cotrnaseña debe tener 6 o más caracteres." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Las contraseñas no coinciden" @@ -2709,7 +2739,7 @@ msgid "Password saved." msgstr "Se guardó Contraseña." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Rutas" @@ -2915,43 +2945,43 @@ msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" "1-64 letras en minúscula o números, sin signos de puntuación o espacios" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nombre completo" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Página de inicio" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "El URL de tu página de inicio, blog o perfil en otro sitio" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "DescrÃbete y cuéntanos tus intereses en %d caracteres" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "DescrÃbete y cuéntanos acerca de tus intereses" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "BiografÃa" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Ubicación" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Dónde estás, por ejemplo \"Ciudad, Estado (o Región), PaÃs\"" @@ -2995,7 +3025,7 @@ msgstr "" "Suscribirse automáticamente a quien quiera que se suscriba a mà (es mejor " "para no-humanos)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "La biografÃa es muy larga (máx. %d caracteres)." @@ -3264,7 +3294,7 @@ msgstr "La contraseña debe tener 6 o más caracteres." msgid "Password and confirmation do not match." msgstr "La contraseña y la confirmación no coinciden." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Error al configurar el usuario." @@ -3272,39 +3302,39 @@ msgstr "Error al configurar el usuario." msgid "New password successfully saved. You are now logged in." msgstr "Nueva contraseña guardada correctamente. Has iniciado una sesión." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Disculpa, sólo personas invitadas pueden registrarse." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "El código de invitación no es válido." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registro exitoso." -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrarse" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registro de usuario no permitido." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "No puedes registrarte si no estás de acuerdo con la licencia." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "La dirección de correo electrónico ya existe." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Usuario o contraseña inválidos." -#: actions/register.php:343 +#: 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. " @@ -3312,58 +3342,60 @@ msgstr "" "Con este formulario puedes crear una nueva cuenta. Después podrás publicar " "avisos y enviar vÃnculos de ellos a tus amigos y colegas. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 letras en minúscula o números, sin signos de puntuación o espacios. " "Requerido." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 o más caracters. Requerido." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Igual a la contraseña de arriba. Requerida" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Correo electrónico" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Se usa sólo para actualizaciones, anuncios y recuperación de contraseñas" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nombre más largo, preferiblemente tu nombre \"real\"" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "El contenido y datos de %1$s son privados y confidenciales." +msgstr "" +"Entiendo que el contenido y los datos de %1$s son privados y confidenciales." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." msgstr "" +"Mi texto y archivos est'an protegidos por los derecho de autor de %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Mi texto y archivos permanecen bajo mi propio derecho de autor." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Todos los derechos reservados." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3373,7 +3405,7 @@ msgstr "" "información privada: contraseña, dirección de correo electrónico, dirección " "de mensajerÃa instantánea y número de teléfono." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3406,7 +3438,7 @@ msgstr "" "\n" "¡Gracias por apuntarte! Esperamos que disfrutes usando este servicio." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3489,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" @@ -3527,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 @@ -3544,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 @@ -3563,7 +3595,7 @@ msgstr "No puedes revocar funciones de usuario en este sitio." msgid "User doesn't have this role." msgstr "El usuario no tiene esta función." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3577,7 +3609,7 @@ msgstr "Al usuario ya se le ha impuesto restricciones." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sesiones" @@ -3620,7 +3652,7 @@ msgid "Icon" msgstr "Icono" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nombre" @@ -3631,12 +3663,12 @@ msgid "Organization" msgstr "Organización" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3725,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." @@ -3798,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" @@ -3812,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." @@ -3832,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." @@ -3845,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" @@ -3922,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 @@ -4255,7 +4287,7 @@ msgstr "No ingresó código" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Capturas" @@ -4315,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." @@ -4495,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." @@ -4610,7 +4639,7 @@ msgstr "" "avisos de este usuario. Si no pediste suscribirte a los avisos de alguien, " "haz clic en \"Cancelar\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licencia" @@ -4739,18 +4768,18 @@ msgstr "Intenta [buscar gupos](%%action.groupsearch%%) y unirte a ellos." #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "¡Actualizaciones de %1$s en %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "%s StatusNet" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4759,11 +4788,11 @@ msgstr "" "Este sitio ha sido desarrollado con %1$s, versión %2$s, Derechos Reservados " "2008-2010 StatusNet, Inc. y sus colaboradores." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Colaboradores" -#: actions/version.php:168 +#: 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 " @@ -4775,7 +4804,7 @@ msgstr "" "publicado por la Fundación del Software Libre, bien por la versión 3 de la " "Licencia, o cualquier versión posterior (la de tu elección). " -#: actions/version.php:174 +#: 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 " @@ -4787,7 +4816,7 @@ msgstr "" "IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia Pública General " "de Affero AGPL para más detalles. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4796,94 +4825,141 @@ msgstr "" "Debes haber recibido una copia de la Licencia Pública General de Affero GNU " "con este programa. Si no la recibiste, visita %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Complementos" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versión" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autor(es)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4891,72 +4967,119 @@ msgstr "" "Muchos mensajes, enviados muy rápido; espera un poco e intenta publicar " "pasados unos minutos." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5007,188 +5130,188 @@ msgid "Untitled page" msgstr "Página sin tÃtulo" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navegación de sitio primario" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Perfil personal y lÃnea temporal de amistades" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Cambia tu correo electrónico, imagen, contraseña, perfil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Conectar a los servicios" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Conectarse" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Cambiar la configuración del sitio" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Invita a amistades y compañeros a unirse a tà en %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Invitar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Cerrar sesión en el sitio" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Cerrar sesión" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Crear una cuenta" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrarse" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Iniciar sesión en el sitio" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Inicio de sesión" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "¡Ayúdame!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Ayuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Buscar personas o texto" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Buscar" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Aviso de sitio" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Vistas locales" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Aviso de página" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navegación de sitio secundario" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Ayuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Acerca de" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Preguntas Frecuentes" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacidad" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Fuente" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Ponerse en contacto" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Insignia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licencia de software de StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5198,13 +5321,13 @@ msgstr "" "[%%site.broughtby%%**](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** es un servicio de microblogueo." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5216,34 +5339,34 @@ msgstr "" "licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licencia de contenido del sitio" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "El contenido y datos de %1$s son privados y confidenciales." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" "Copyright del contenido y los datos de%1$s. Todos los derechos reservados." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Derechos de autor de contenido y datos por los colaboradores. Todos los " "derechos reservados." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5251,19 +5374,19 @@ msgstr "" "$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginación" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Después" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Antes" @@ -5313,64 +5436,64 @@ msgid "Unable to delete design setting." msgstr "No se puede eliminar la configuración de diseño." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuración básica del sitio" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Sitio" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuración del diseño" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Diseño" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuración de usuario" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Usuario" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuración de acceso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuración de rutas" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuración de sesiones" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Editar el aviso del sitio" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configuración de instantáneas" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API requiere acceso de lectura y escritura, pero sólo tienes acceso de " @@ -5503,11 +5626,11 @@ msgstr "Mensajes donde aparece este adjunto" msgid "Tags for this attachment" msgstr "Etiquetas de este archivo adjunto" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "El cambio de contraseña ha fallado" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "No está permitido cambiar la contraseña" @@ -5602,14 +5725,14 @@ msgstr "Nombre completo: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Lugar: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Página de inicio: %s" @@ -6146,8 +6269,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s ahora está escuchando tus avisos en %2$s" +#: 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 "" +"Si crees que esta cuenta está siendo utilizada de forma abusiva, puedes " +"bloquearla de tu lista de suscriptores y reportar la como cuenta no deseada " +"a los administradores de sitios en %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6175,19 +6308,19 @@ msgstr "" "Cambia tus preferencias de notificaciones a tu correo electrónico en %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Bio: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nueva dirección de correo para postear a %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6209,30 +6342,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "estado de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS confirmación" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: Confirma que este es tu número de teléfono mediante este código:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s te ha dado un toque" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6260,13 +6393,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nuevo mensaje privado de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6300,13 +6433,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) agregó tu aviso como un favorito" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6344,7 +6477,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6355,13 +6488,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) ha enviado un aviso a tu atención" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6424,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" @@ -6484,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." @@ -6557,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" @@ -6711,7 +6844,7 @@ msgstr "Promedio diario" msgid "All groups" msgstr "Todos los grupos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Método no implementado." @@ -6735,7 +6868,7 @@ msgstr "Destacado" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "No hay respuesta a los argumentos." @@ -6756,7 +6889,7 @@ msgstr "Responder este aviso." msgid "Revoke the \"%s\" role from this user" msgstr "Revocar el rol \"%s\" de este usuario" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Ningún usuario sólo definido para modo monousuario." @@ -6854,6 +6987,51 @@ msgstr "Nube de etiquetas de personas etiquetadas" msgid "None" msgstr "Ninguno" +#: lib/themeuploader.php:50 +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 "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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Grabado de tema errado." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "Tema inválido: mala estructura de directorio." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"Tema subido es demasiado grande; debe ser menor que %d bytes sin comprimir." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Archivo de tema inválido: archivo perdido 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 "" +"El tema contiene archivo o nombre de carpeta inválido. RestrÃnjase a letras " +"ASCII, dÃgitos, carácter de subrayado, y signo menos." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "El tema contiene archivo de tipo '.%s', que no está permitido." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Error al abrir archivo de tema." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Principales posteadores" @@ -6934,56 +7112,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "hace unos segundos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "hace un minuto" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "hace %d minutos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "hace una hora" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "hace %d horas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "hace un dÃa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "hace %d dÃas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "hace un mes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "hace %d meses" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "hace un año" diff --git a/locale/fa/LC_MESSAGES/statusnet.po b/locale/fa/LC_MESSAGES/statusnet.po index c4a039c31..c5303e341 100644 --- a/locale/fa/LC_MESSAGES/statusnet.po +++ b/locale/fa/LC_MESSAGES/statusnet.po @@ -1,6 +1,8 @@ # Translation of StatusNet to Persian # # Author@translatewiki.net: ArianHT +# Author@translatewiki.net: Brion +# Author@translatewiki.net: Choxos # Author@translatewiki.net: Everplays # Author@translatewiki.net: Narcissus # -- @@ -10,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:56+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:25+0000\n" "Last-Translator: Ahmad Sufi Mahmudi\n" "Language-Team: Persian\n" "MIME-Version: 1.0\n" @@ -20,29 +22,29 @@ msgstr "" "X-Language-Code: fa\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); Translate extension (2010-07-21)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "دسترسی" #. TRANS: Page notice #: actions/accessadminpanel.php:67 msgid "Site access settings" -msgstr "تنظیمات دسترسی" +msgstr "تنظیمات دسترسی وب‌گاه" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 msgid "Registration" -msgstr "ثبت‌نام" +msgstr "نام‌نویسی" #. TRANS: Checkbox instructions for admin setting "Private" #: actions/accessadminpanel.php:165 msgid "Prohibit anonymous users (not logged in) from viewing site?" -msgstr "" +msgstr "از دیدن وب‌گاه توسط کاربران ناشناس (وارد نشده) جلوگیری شود؟" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 @@ -53,27 +55,27 @@ msgstr "خصوصی" #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." -msgstr "تنها آماده کردن دعوت نامه های ثبت نام." +msgstr "نام‌نویسی تنها با دعوت‌نامه انجام شود." #. TRANS: Checkbox label for configuring site as invite only. #: actions/accessadminpanel.php:176 msgid "Invite only" -msgstr "Ùقط دعوت کردن" +msgstr "تنها دعوت کردن" #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." -msgstr "غیر Ùعال کردن نام نوبسی جدید" +msgstr "غیر Ùعال کردن نام‌نوبسی تازه" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 msgid "Closed" -msgstr "مسدود" +msgstr "بسته‌شده" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 msgid "Save access settings" -msgstr "ذخیره‌ی تنظیمات دسترسی" +msgstr "ذخیرهٔ تنظیمات دسترسی" #. TRANS: Button label to save e-mail preferences. #. TRANS: Button label to save IM preferences. @@ -87,25 +89,24 @@ msgid "Save" msgstr "ذخیره" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "چنین صÙØه‌ای وجود ندارد" +msgstr "چنین صÙØه‌ای وجود ندارد." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -118,134 +119,134 @@ msgid "No such user." msgstr "چنین کاربری وجود ندارد." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 -#, fuzzy, php-format +#: actions/all.php:90 +#, php-format msgid "%1$s and friends, page %2$d" -msgstr "%s کاربران مسدود شده، صÙØه‌ی %d" +msgstr "%1$s Ùˆ دوستان، صÙØÙ‡Ù” %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 Ùˆ دوستان" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "خوراک دوستان %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "خوراک دوستان %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "خوراک دوستان %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." -msgstr "این خط‌زمانی %s Ùˆ دوستانش است، اما هیچ‌یک تاکنون چیزی پست نکرده‌اند." +msgstr "این خط‌زمانی %s Ùˆ دوستانش است، اما هیچ‌یک تاکنون چیزی Ù†Ùرستاده‌اند." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " "something yourself." msgstr "" -"پیگیری اÙراد بیش‌تری بشوید [به یک گروه بپیوندید](%%action.groups%%) یا خودتان " -"چیزی را ارسال کنید." +"پیگیر اÙراد بیش‌تری بشوید [به یک گروه بپیوندید](%%action.groups%%) یا خودتان " +"چیزی بÙرستید." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" -"می‌توانید از صÙØه‌ی شخصی‌اش به او [سقلمه](../%2$s) بزنید یا [چیزی بنویسید](%%%%" -"action.newnotice%%%%?status_textarea=%3$s) تا توجه او را جذب کنید." +"شما می‌توانید [یادآوری‌کردن %1$s](../%2$s) را از نمایه‌اش امتØان کنید یا [به " +"توجه او چیزی بÙرستید](%%%%action.newnotice%%%%?status_textarea=%3$s)." -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 his or her attention." +"post a notice to them." msgstr "" -"چرا [ثبت نام](%%%%action.register%%%%) نمی‌کنید Ùˆ سپس با Ùرستادن پیام توجه %s " -"را جلب کنید." +"چرا [ثبت‌نام](%%%%action.register%%%%) نمی‌کنید Ùˆ سپس به %s یادآوری کنید یا یک " +"پیام به توجه‌اش بÙرستید." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "به روز رسانی از %1$ Ùˆ دوستان در %2$" +msgstr "به روز رسانی از %1$s Ùˆ دوستان در %2$s" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "رابط مورد نظر پیدا نشد." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "برای استÙاده از این روش باید اطلاعات را به صورت پست بÙرستید" -#: actions/apiaccountupdatedeliverydevice.php:105 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." -msgstr "شما باید یک پارامتر با نام device Ùˆ مقدار smsØŒ im یا none مشخص کنید." +msgstr "" +"شما باید یک پارامتر را به نام device Ùˆ مقدار smsØŒ im یا none مشخص کنید." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "نمی‌توان کاربر را به‌هنگام‌سازی کرد." @@ -257,15 +258,15 @@ msgstr "نمی‌توان کاربر را به‌هنگام‌سازی کرد." #: actions/replies.php:80 actions/usergroups.php:100 lib/galleryaction.php:66 #: lib/profileaction.php:84 msgid "User has no profile." -msgstr "کاربر هیچ شناس‌نامه‌ای ندارد." +msgstr "کاربر هیچ نمایه‌ای ندارد." #: actions/apiaccountupdateprofile.php:147 msgid "Could not save profile." -msgstr "نمی‌توان شناس‌نامه را ذخیره کرد." +msgstr "نمی‌توان نمایه را ذخیره کرد." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -330,7 +331,7 @@ msgstr "هیچ پیام متنی وجود ندارد!" #: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." -msgstr "این بسیار طولانی است. بیشینهٔ اندازهٔ پیام %d Øر٠است." +msgstr "این بسیار طولانی است. بیشینهٔ اندازهٔ پیام %d نویسه است." #: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." @@ -340,29 +341,30 @@ msgstr "کاربر گیرنده یاÙت نشد." msgid "Can't send direct messages to users who aren't your friend." msgstr "نمی‌توان پیام مستقیم را به کاربرانی Ú©Ù‡ دوست شما نیستند، Ùرستاد." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "هیچ وضعیتی با آن شناسه پیدا نشد." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." -msgstr "این پیغام را پیش‌تر به علایق خود اضاÙÙ‡ کرده‌اید" +msgstr "این پیغام را پیش‌تر به برگزیده‌های خود اضاÙÙ‡ کرده‌اید" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." -msgstr "نمی‌توان وضعیت را موردعلاقه کرد." +msgstr "نمی‌توان پیام را برگزید." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." -msgstr "این پیغام جزو علایق شما نیست" +msgstr "این پیام یک پیام برگزیده نیست." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 msgid "Could not delete favorite." -msgstr "نمی‌توان وضعیت موردعلاقه را Øذ٠کرد." +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 @@ -378,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 @@ -390,144 +393,147 @@ msgstr "نمی‌توان کاربر منبع را تعیین کرد." msgid "Could not find target user." msgstr "نمی‌توان کاربر هد٠را پیدا کرد." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "لقب باید شامل Øرو٠کوچک Ùˆ اعداد Ùˆ بدون Ùاصله باشد." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "این لقب در Øال Øاضر ثبت شده است. لطÙا یکی دیگر انتخاب کنید." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "لقب نا معتبر." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." -msgstr "برگهٔ آغازین یک نشانی معتبر نیست." +msgstr "صÙØÙ‡Ù” خانگی یک نشانی معتبر نیست." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." -msgstr "نام کامل طولانی است (Û²ÛµÛµ Øر٠در Øالت بیشینه(." +msgstr "نام کامل خیلی طولانی است (Øداکثر Û²ÛµÛµ نویسه)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." -msgstr "توصی٠بسیار زیاد است (Øداکثر %d ØرÙ)." +msgstr "توصی٠خیلی طولانی است (Øداکثر %d نویسه)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." -msgstr "مکان طولانی است (Øداکثر Û²ÛµÛµ ØرÙ)" +msgstr "نام مکان خیلی طولانی است (Øداکثر Û²ÛµÛµ نویسه)" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "نام‌های مستعار بسیار زیاد هستند! Øداکثر %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "نام‌مستعار غیر مجاز: «%s»" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "نام‌مستعار «%s» ازپیش گرÙته‌شده‌است. یکی دیگر را امتØان کنید." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "نام Ùˆ نام مستعار شما نمی تواند یکی باشد ." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 -#, fuzzy +#: 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 "گروه یاÙت نشد!" +msgstr "گروه یاÙت نشد." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "شما از پیش یک عضو این گروه هستید." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "دسترسی شما به گروه توسط مدیر آن Ù…Øدود شده است." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "عضویت %s در گروه %s نا موÙÙ‚ بود." +msgstr "نمی‌توان کاربر %1$s را عضو گروه %2$s کرد." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "شما یک عضو این گروه نیستید." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "خارج شدن %s از گروه %s نا موÙÙ‚ بود" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "هست عضو %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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s گروه" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" +msgstr "هیچ پارامتر oauth_token آماده نشده است." #: actions/apioauthauthorize.php:106 -#, fuzzy msgid "Invalid token." -msgstr "اندازه‌ی نادرست" +msgstr "رمز نامعتبر است." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -536,17 +542,16 @@ msgid "There was a problem with your session token. Try again, please." msgstr "مشکلی در دریاÙت جلسه‌ی شما وجود دارد. لطÙا بعدا سعی کنید." #: actions/apioauthauthorize.php:135 -#, fuzzy msgid "Invalid nickname / password!" -msgstr "نام کاربری یا کلمه ÛŒ عبور نا معتبر." +msgstr "نام کاربری یا گذرواژه نامعتبر است!" #: actions/apioauthauthorize.php:159 msgid "Database error deleting OAuth application user." -msgstr "" +msgstr "هنگام ØØ°Ù‌کردن کاربر برنامهٔ OAuth در پایگاه داده خطایی رخ داد." #: actions/apioauthauthorize.php:185 msgid "Database error inserting OAuth application user." -msgstr "" +msgstr "هنگام اÙزودن کاربر برنامهٔ OAuth در پایگاه داده خطایی رخ داد." #: actions/apioauthauthorize.php:214 #, php-format @@ -554,11 +559,12 @@ msgid "" "The request token %s has been authorized. Please exchange it for an access " "token." msgstr "" +"نشانهٔ درخواست %s تایید شد. لطÙا آن را برای یک نشانهٔ دسترسی مبادله کنید." #: actions/apioauthauthorize.php:227 #, php-format msgid "The request token %s has been denied and revoked." -msgstr "" +msgstr "نشانهٔ درخواست %s پذیرÙته نشد Ùˆ لغو شد." #. 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. @@ -574,11 +580,11 @@ msgstr "ارسال غیر قابل انتظار Ùرم." #: actions/apioauthauthorize.php:259 msgid "An application would like to connect to your account" -msgstr "" +msgstr "یک برنامه می‌خواهد Ú©Ù‡ به Øساب شما وصل شود" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "اجازه‌دادن (به) یا جلوگیری از دسترسی" #: actions/apioauthauthorize.php:292 #, php-format @@ -587,14 +593,18 @@ msgid "" "the ability to <strong>%3$s</strong> your %4$s account data. You should only " "give access to your %4$s account to third parties you trust." msgstr "" +"برنامهٔ <strong>%1$s</strong> نوشته شده توسط <strong>%2$s</strong> امکان " +"<strong>%3$s</strong> داده‌های Øساب %4$s شما را می‌خواهد. شما باید تنها اجازهٔ " +"دسترسی به Øساب %4$s خودتان را به برنامه‌های دیگری Ú©Ù‡ به آن اعتماد دارید، " +"بدهید." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Øساب کاربری" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -602,30 +612,28 @@ msgid "Nickname" msgstr "نام کاربری" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "گذرواژه" #: actions/apioauthauthorize.php:328 -#, fuzzy 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." -msgstr "" +msgstr "به دسترسی به اطلاعات Øسابتان اجازه بدهید یا از آن جلوگیری کنید." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "این روش نیازمند POST یا DELETE است." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "شما توانایی Øذ٠وضعیت کاربر دیگری را ندارید." @@ -636,65 +644,69 @@ msgstr "چنین پیامی وجود ندارد." #: actions/apistatusesretweet.php:83 msgid "Cannot repeat your own notice." -msgstr "نمی توانید خبر خود را تکرار کنید." +msgstr "نمی توانید پیام خود را تکرار کنید." #: actions/apistatusesretweet.php:91 msgid "Already repeated that notice." -msgstr "ابن خبر قبلا Ùرستاده شده" +msgstr "قبلا آن پیام تکرار شده است." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "وضعیت Øذ٠شد." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "هیچ وضعیتی با آن شناسه یاÙت نشد." -#: actions/apistatusesupdate.php:240 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 Øر٠است." +msgstr "این خیلی طولانی است. بیشینهٔ طول پیام %d نویسه است." -#: actions/apistatusesupdate.php:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "یاÙت نشد." -#: actions/apistatusesupdate.php:304 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 Øر٠است Ú©Ù‡ شامل ضمیمه نیز می‌باشد" +msgstr "بیشینهٔ طول پیام %d نویسه Ú©Ù‡ شامل نشانی اینترنتی پیوست هم هست." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." msgstr "قالب پشتیبانی نشده." -#: actions/apitimelinefavorites.php:109 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:110 +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / دوست داشتنی از %s" +msgstr "%1$s / برگزیده‌ها از %2$s" -#: actions/apitimelinefavorites.php:118 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:119 +#, php-format msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "%s به روز رسانی های دوست داشتنی %s / %s" +msgstr "به‌روزرسانی‌های %1$s Ú©Ù‡ توسط %2$s برگزیده شده اند / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%$1s / به روز رسانی های شامل %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s به روز رسانی هایی Ú©Ù‡ در پاسخ به $2$s / %3$s" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s خط‌زمانی عمومی" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s به روز رسانی های عموم" @@ -702,23 +714,27 @@ msgstr "%s به روز رسانی های عموم" #: actions/apitimelineretweetedtome.php:111 #, php-format msgid "Repeated to %s" -msgstr "" +msgstr "تکرار شده به %s" #: actions/apitimelineretweetsofme.php:114 #, php-format msgid "Repeats of %s" msgstr "تکرار %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "پیام‌هایی Ú©Ù‡ با %s نشانه گزاری شده اند." -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "چنین پیوستی وجود ندارد." @@ -728,7 +744,7 @@ msgstr "چنین پیوستی وجود ندارد." #: actions/grouplogo.php:86 actions/groupmembers.php:76 #: actions/grouprss.php:91 actions/showgroup.php:121 msgid "No nickname." -msgstr "بدون لقب." +msgstr "لقبی وجود ندارد." #: actions/avatarbynickname.php:64 msgid "No size." @@ -753,9 +769,8 @@ msgstr "" #: actions/avatarsettings.php:106 actions/avatarsettings.php:185 #: actions/grouplogo.php:181 actions/remotesubscribe.php:191 #: actions/userauthorization.php:72 actions/userrss.php:108 -#, fuzzy msgid "User without matching profile." -msgstr "کاربر بدون مشخصات" +msgstr "کاربر نمایهٔ تطبیق ندارد." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -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 "ØØ°Ù" @@ -786,9 +801,8 @@ msgid "Crop" msgstr "برش" #: actions/avatarsettings.php:305 -#, fuzzy msgid "No file uploaded." -msgstr "کاربری مشخص نشده است." +msgstr "هیچ پرونده‌ای بارگذاری نشد." #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" @@ -814,11 +828,11 @@ msgstr "چهره پاک شد." msgid "You already blocked that user." msgstr "شما هم اکنون آن کاربر را مسدود کرده اید." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "مسدود کردن کاربر" -#: actions/block.php:130 +#: 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 " @@ -834,17 +848,16 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 -#, fuzzy msgctxt "BUTTON" msgid "No" msgstr "خیر" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "کاربر را مسدود Ù†Ú©Ù†" @@ -853,22 +866,21 @@ msgstr "کاربر را مسدود Ù†Ú©Ù†" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 -#, fuzzy msgctxt "BUTTON" msgid "Yes" msgstr "بله" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "کاربر را مسدود Ú©Ù†" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." -msgstr "" +msgstr "ذخیرهٔ ردی٠اطلاعات شکست خورد." #: actions/blockedfromgroup.php:80 actions/blockedfromgroup.php:87 #: actions/editgroup.php:100 actions/foafgroup.php:44 actions/foafgroup.php:62 @@ -887,12 +899,12 @@ msgstr "چنین گروهی وجود ندارد." #: actions/blockedfromgroup.php:97 #, php-format msgid "%s blocked profiles" -msgstr "%s کاربران مسدود شده" +msgstr "%s نمایه‌های مسدود شده" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s کاربران مسدود شده، صÙØه‌ی %d" +msgstr "%1$s نمایه‌های مسدود شده، صÙØÙ‡Ù” %2$d" #: actions/blockedfromgroup.php:115 msgid "A list of the users blocked from joining this group." @@ -912,9 +924,9 @@ msgstr "آزاد سازی کاربر" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "ارسال به " +msgstr "Ùرستادن به %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -930,9 +942,9 @@ msgstr "آن کد تصدیق برای شما نیست!" #. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. #: actions/confirmaddress.php:91 -#, fuzzy, php-format +#, php-format msgid "Unrecognized address type %s." -msgstr "نوع نشانی نامشخص است %s" +msgstr "نوع نشانی نامشخص است %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -961,7 +973,6 @@ msgid "Couldn't delete email confirmation." msgstr "نمی‌توان تصدیق پست الکترونیک را پاک کرد." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" msgstr "تایید نشانی" @@ -980,53 +991,47 @@ msgid "Notices" msgstr "پیام‌ها" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "برای ویرایش گروه باید وارد شوید." +msgstr "برای پاک‌کردن یک برنامه باید وارد شده باشید." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "ابن خبر ذخیره ای ندارد ." +msgstr "برنامه یاÙت نشد." #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 -#, fuzzy msgid "You are not the owner of this application." -msgstr "شما یک عضو این گروه نیستید." +msgstr "شما مالک این برنامه نیستید." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." -msgstr "" +msgstr "یک مشکل با رمز نشست شما وجود داشت." #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "چنین پیامی وجود ندارد." +msgstr "Øذ٠برنامه" #: actions/deleteapplication.php:149 -#, fuzzy msgid "" "Are you sure you want to delete this application? This will clear all data " "about the application from the database, including all existing user " "connections." msgstr "" -"آیا مطمئن هستید Ú©Ù‡ می‌خواهید این کاربر را پاک کنید؟ با این کار تمام اطلاعات " -"پاک Ùˆ بدون برگشت خواهند بود." +"آیا مطمئن هستید Ú©Ù‡ می‌خواهید این برنامه را Øذ٠کنید؟ این تمام داده‌ها را " +"دربارهٔ برنامه از پایگاه‌داده پاک می‌کند Ú©Ù‡ شامل تمام اتصال‌های کاربری موجود " +"می‌شود." #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 -#, fuzzy msgid "Do not delete this application" -msgstr "این پیام را پاک Ù†Ú©Ù†" +msgstr "این برنامه Øذ٠نشود" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -msgstr "این پیام را پاک Ú©Ù†" +msgstr "این برنامه Øذ٠شود" #. 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 @@ -1034,7 +1039,7 @@ msgstr "این پیام را پاک Ú©Ù†" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "شما به سیستم وارد نشده اید." @@ -1065,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 "این پیام را پاک Ú©Ù†" @@ -1103,47 +1108,56 @@ msgstr "طرØ" #: actions/designadminpanel.php:74 msgid "Design settings for this StatusNet site." -msgstr "تنظیمات ظاهری برای این سایت." +msgstr "تنظیمات ظاهری برای این وب‌گاه StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "نشانی اینترنتی نشان نامعتبر است." -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "پوسته در دسترس نمی‌باشد: %s" +msgstr "پوسته در دسترس نیست: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "تغییر نشان" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "نشان وب‌گاه" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "تغییر پوسته" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "پوستهٔ وب‌گاه" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "پوسته برای وب‌گاه" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "پوستهٔ وب‌گاه" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "تغییر تصویر پیش‌زمینه" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "پیش‌زمینه" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1153,57 +1167,65 @@ msgstr "" "پرونده %1 $s است." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "روشن" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "خاموش" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "تصویر پیش‌زمینه را Ùعال یا غیرÙعال کنید." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "تصویر پیش‌زمینهٔ موزاییکی" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" -msgstr "عوض‌کردن رنگ‌ها" +msgstr "تغییر رنگ‌ها" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Ù…Øتوا" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "ستون کناری" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "متن" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "پیوندها" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "استÙاده‌کردن از پیش‌Ùرض‌ها" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "بازگرداندن طرØ‌های پیش‌Ùرض" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "برگشت به Øالت پیش گزیده" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1213,17 +1235,17 @@ msgstr "برگشت به Øالت پیش گزیده" msgid "Save" msgstr "ذخیره‌کردن" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "ذخیره‌کردن طرØ" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" -msgstr "این Ø¢Ú¯Ù‡ÛŒ یک Ø¢Ú¯Ù‡ÛŒ برگزیده نیست!" +msgstr "این پیام یک پیام برگزیده نیست!" #: actions/disfavor.php:94 msgid "Add to favorites" -msgstr "اÙزودن به علاقه‌مندی‌ها" +msgstr "اÙزودن به برگزیده‌ها" #: actions/doc.php:158 #, fuzzy, php-format @@ -1231,65 +1253,57 @@ msgid "No such document \"%s\"" msgstr "چنین سندی وجود ندارد." #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "انتخابات دیگر" +msgstr "ویرایش برنامه" #: actions/editapplication.php:66 -#, fuzzy msgid "You must be logged in to edit an application." -msgstr "برای ویرایش گروه باید وارد شوید." +msgstr "برای ویرایش یک برنامه باید وارد شده باشید." #: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 #: actions/showapplication.php:87 -#, fuzzy msgid "No such application." -msgstr "چنین پیامی وجود ندارد." +msgstr "چنین برنامه‌ای وجود ندارد." #: actions/editapplication.php:161 -#, fuzzy msgid "Use this form to edit your application." -msgstr "از این روش برای ویرایش گروه استÙاده کنید." +msgstr "از این روش برای ویرایش برنامه‌تان استÙاده کنید." #: actions/editapplication.php:177 actions/newapplication.php:159 msgid "Name is required." -msgstr "" +msgstr "نام مورد نیاز است." #: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy msgid "Name is too long (max 255 chars)." -msgstr "نام کامل طولانی است (Û²ÛµÛµ Øر٠در Øالت بیشینه(." +msgstr "نام خیلی طولانی است (Øداکثر Û²ÛµÛµ نویسه)." #: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy msgid "Name already in use. Try another one." -msgstr "این لقب در Øال Øاضر ثبت شده است. لطÙا یکی دیگر انتخاب کنید." +msgstr "این نام در Øال Øاضر مورد استÙاده است. یکی دیگر را بیازمایید." #: actions/editapplication.php:186 actions/newapplication.php:168 msgid "Description is required." -msgstr "" +msgstr "توصی٠مورد نیاز است." #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "نشانی اینترنتی منبع بسیار بلند است." #: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy msgid "Source URL is not valid." -msgstr "برگهٔ آغازین یک نشانی معتبر نیست." +msgstr "نشانی اینترنتی منبع معتبر نیست." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "سازمانی‌دهی مورد نیاز است." #: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy msgid "Organization is too long (max 255 chars)." -msgstr "مکان طولانی است (Øداکثر Û²ÛµÛµ ØرÙ)" +msgstr "نام سازمان خیلی طولانی است (Øداکثر Û²ÛµÛµ نویسه)." #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" +msgstr "صÙØهٔ‌خانگی سازمان مورد نیاز است." #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." @@ -1300,9 +1314,8 @@ msgid "Callback URL is not valid." msgstr "" #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد." +msgstr "نمی‌توان برنامه را به‌هنگام‌سازی کرد." #: actions/editgroup.php:56 #, php-format @@ -1315,9 +1328,8 @@ msgstr "برای ساخت یک گروه، باید وارد شده باشید." #: actions/editgroup.php:107 actions/editgroup.php:172 #: actions/groupdesignsettings.php:107 actions/grouplogo.php:109 -#, fuzzy msgid "You must be an admin to edit the group." -msgstr "برای ویرایش گروه، باید یک مدیر باشید." +msgstr "برای ویرایش گروه باید یک مدیر باشید." #: actions/editgroup.php:158 msgid "Use this form to edit the group." @@ -1326,7 +1338,7 @@ msgstr "از این روش برای ویرایش گروه استÙاده Ú©Ù†ÛŒØ #: actions/editgroup.php:205 actions/newgroup.php:145 #, php-format msgid "description is too long (max %d chars)." -msgstr "توصی٠بسیار زیاد است (Øداکثر %d ØرÙ)." +msgstr "توصی٠خیلی طولانی است (Øداکثر %d نویسه)" #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format @@ -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 "نمی‌توان نام‌های مستعار را ساخت." @@ -1347,7 +1360,6 @@ msgstr "گزینه‌ها ذخیره شدند." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" msgstr "تنظیمات پست الکترونیک" @@ -1361,9 +1373,8 @@ msgstr "چگونگی دریاÙت نامه از %%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 -#, fuzzy msgid "Email address" -msgstr "نشانی‌های پست الکترونیکی" +msgstr "نشانی پست الکترونیک" #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 @@ -1378,7 +1389,6 @@ msgstr "نشانی پست الکترونیکی تایید شدهٔ کنونی" #: 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 "ØØ°Ù" @@ -1388,6 +1398,8 @@ msgid "" "Awaiting confirmation on this address. Check your inbox (and spam box!) for " "a message with further instructions." msgstr "" +"در Øال انتظار برای تایید این نشانی. صندوق ورودی (Ùˆ صندوق هرزنامه!) خود را " +"برای یک پیام با راهنمایی‌های بیش‌تر بررسی کنید." #. TRANS: Button label to cancel an e-mail address confirmation procedure. #. TRANS: Button label to cancel an IM address confirmation procedure. @@ -1395,7 +1407,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 "انصراÙ" @@ -1410,7 +1421,6 @@ msgstr "نشانی پست الکترونیکی، مانند «UserName@example.o #. 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 -#, fuzzy msgctxt "BUTTON" msgid "Add" msgstr "اÙزودن" @@ -1425,27 +1435,26 @@ msgstr "پست الکترونیک ورودی" #. 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 "برای ارسال پیام با استÙاده از پست الکترونیک به این نشانی نامه بÙرستید." +msgstr "" +"برای Ùرستادن پیام با استÙاده از پست الکترونیک به این نشانی نامه بÙرستید." #. 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 "نشانی جدید برای ارسال پیام ایجاد کن؛ نشانی قبلی Ùسخ می‌شود." +msgstr "نشانی جدید برای Ùرستادن پیام ایجاد کن؛ نشانی قبلی لغو می‌شود." #. 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 -#, fuzzy msgctxt "BUTTON" msgid "New" -msgstr "جدید" +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 @@ -1456,7 +1465,7 @@ msgstr "پیام‌های کسانی را Ú©Ù‡ به تازگی دنبال می†#: actions/emailsettings.php:186 msgid "Send me email when someone adds my notice as a favorite." msgstr "" -"هر وقت کسی پیام های مرا دوست داشتنی کرد، مرا با پست اکترونیک با خبر Ú©Ù†." +"هرگاه کسی پیام من را به عنوان برگزیده اضاÙÙ‡ کرد، به من نامه Ùرستاده شود." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:193 @@ -1466,17 +1475,18 @@ msgstr "هر وقت کسی برای من پیام خصوصی Ùرستاد، مر #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "هر وقت کسی از من در پیام خود یاد کرد، مرا با پست الکترونیک با خبر Ú©Ù†." +msgstr "هرگاه کسی به من یک «@-پاسخ» می‌Ùرستد، به من نامه بÙرست." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." -msgstr "اجازه بده دوستان توجه مرا جذب کنند Ùˆ به من نامه بÙرستند." +msgstr "" +"به دوستان اجازه داده شود Ú©Ù‡ به من یادآوری کنند Ùˆ یک نامه به من بÙرستند." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:212 msgid "I want to post notices by email." -msgstr "می‌خواهم با نامه پیام ارسال کنم." +msgstr "می‌خواهم با نامه پیام بÙرستم." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 @@ -1485,9 +1495,8 @@ msgstr "یک شناسه برای پست الکترونیک من منتشر Ú©Ù† #. 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 @@ -1500,10 +1509,10 @@ msgid "Cannot normalize that email address" msgstr "نمی‌توان نشانی را قانونی کرد" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." -msgstr "یک آدرس ایمیل معتبر نیست." +msgstr "یک نشانی پست الکترونیکی معتبر نیست." #. TRANS: Message given saving e-mail address that is already set. #: actions/emailsettings.php:370 @@ -1529,8 +1538,8 @@ 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 "" -"کد تایید به نشانی شما ارسال شد. نامه های خود را بررسی کنید برای کد تایید Ùˆ " -"راه استÙاده." +"کد تایید به نشانی شما Ùرستاده شد. صندوق ورودی (Ùˆ صندوق هرزنامه‌تان!) را برای " +"کد Ùˆ راهنمای استÙادهٔ آن بررسی کنید." #. TRANS: Message given canceling e-mail address confirmation that is not pending. #. TRANS: Message given canceling IM address confirmation that is not pending. @@ -1542,15 +1551,13 @@ msgstr "هیچ تاییدی برای Ùسخ کردن وجود ندارد." #. TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address. #: actions/emailsettings.php:424 -#, fuzzy msgid "That is the wrong email address." -msgstr "نشانی پیام رسان اشتباه است." +msgstr "این نشانی پست الکترونیکی نادرست است." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "تایید Ùسخ شد." +msgstr "تایید پست الکترونیکی لغو شد." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1560,9 +1567,8 @@ msgstr "آن نشانی شما نیست." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "نشانی پاک شده است." +msgstr "نشانی پست الکترونیکی پاک شده است." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1587,38 +1593,39 @@ msgstr "نشانی ورودی جدید اضاÙÙ‡ شد." #: actions/favor.php:79 msgid "This notice is already a favorite!" -msgstr "این پیام هم اکنون دوست داشتنی شده است." +msgstr "این پیام ازقبل برگزیده شده است!" #: actions/favor.php:92 lib/disfavorform.php:140 msgid "Disfavor favorite" -msgstr "دوست ندارم" +msgstr "خارج‌کردن از برگزیده‌ها" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 msgid "Popular notices" -msgstr "آگهی‌های Ù…Øبوب" +msgstr "پیام‌های برگزیده" #: actions/favorited.php:67 #, php-format msgid "Popular notices, page %d" -msgstr "آگهی‌های Ù…Øبوب، صÙØÙ‡Ù” %d" +msgstr "پیام‌های برگزیده، صÙØÙ‡Ù” %d" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." -msgstr "دوست داشتنی ترین پیام های سایت در Øال Øاضر." +msgstr "Ù…Øبوب‌ترین پیام‌هایی Ú©Ù‡ اکنون در این وب‌گاه هستند." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." msgstr "" -"پیام‌های دوست داشتنی در این صÙØÙ‡ نمایش داده می‌شوند اما هیچ کس پیامی را دوست " -"داشتنی نکرده است." +"پیام‌های برگزیده در این صÙØÙ‡ نشان داده می‌شوند، ولی هنوز کسی چیزی را برنگزیده " +"است." #: 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 "" -"یک پیام را دوست داشتنی کنید با کلیک کردن روی دکمه‌ی دوست داشتنی نزدیک هر پیام." +"با کلیک کردن روی دکمهٔ برگزیده کنار هر پیامی Ú©Ù‡ می‌خواهید، اولین Ù†Ùری باشید Ú©Ù‡ " +"یک پیام را به برگزیده‌هایش اضاÙÙ‡ می‌کند." #: actions/favorited.php:156 #, php-format @@ -1626,13 +1633,14 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" -"چرا [ثبت نام](%%action.register%%) نمی‌کنید Ùˆ یک پیام را دوست داشتنی کنید؟" +"چرا به [باز کردن یک Øساب](%%action.register%%) اقدام نمی‌کنید Ùˆ اولین Ù†Ùری " +"باشید Ú©Ù‡ یک پیام را به برگزیده‌هایش اضاÙÙ‡ می‌کند!" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "دوست داشتنی های %s" +msgstr "پیام‌های برگزیدهٔ %s" #: actions/favoritesrss.php:115 #, php-format @@ -1652,27 +1660,27 @@ msgstr "کاربران ویژه، صÙØه‌ی %d" #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" -msgstr "" +msgstr "یک انتخاب از برخی از کاربران مهم در %s" #: actions/file.php:34 msgid "No notice ID." -msgstr "" +msgstr "هیچ شناسهٔ پیامی وجود ندارد." #: actions/file.php:38 msgid "No notice." -msgstr "بدون Ø¢Ú¯Ù‡ÛŒ." +msgstr "هیچ پیامی وجود ندارد." #: actions/file.php:42 msgid "No attachments." -msgstr "بدون ضمیمه." +msgstr "هیچ پیوستی وجود ندارد." #: actions/file.php:51 msgid "No uploaded attachments." -msgstr "بدون ضمیمه های ارسال شده." +msgstr "هیچ پیوست بارگذاری شده‌ای وجود ندارد." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" -msgstr "انتظار چنین جوابی وجود نداشت!" +msgstr "انتظار چنین واکنشی وجود نداشت!" #: actions/finishremotesubscribe.php:80 msgid "User being listened to does not exist." @@ -1699,9 +1707,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "خدمات مورد نظر از نسخه‌ی نا Ù…Ùهومی از قرارداد OMB استÙاده می‌کند." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "اشکال در به روز کردن کاربر دوردست." +msgstr "خطا هنگام به‌هنگام‌سازی نمایهٔ از راه دور." #: actions/getfile.php:79 msgid "No such file." @@ -1712,33 +1719,30 @@ msgid "Cannot read file." msgstr "نمی‌توان پرونده را خواند." #: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy msgid "Invalid role." -msgstr "اندازه‌ی نادرست" +msgstr "وظیÙÙ‡ نامعتبر است." #: actions/grantrole.php:66 actions/revokerole.php:66 msgid "This role is reserved and cannot be set." -msgstr "" +msgstr "این نقش از قبل تعیین شده است Ùˆ نمی‌تواند کارگذاشته شود." #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "شما نمی توانید کاربری را در این سایت ساکت کنید." +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 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." -msgstr "کاربری مشخص نشده است." +msgstr "نمایه‌ای مشخص نشده است." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "کاربری با چنین شناسه‌ای وجود ندارد." @@ -1761,25 +1765,28 @@ msgstr "کاربر عضو گروه نیست." #: actions/groupblock.php:134 actions/groupmembers.php:360 msgid "Block user from group" -msgstr "دسترسی کاربر به گروه را مسدود Ú©Ù†" +msgstr "دسترسی کاربر به گروه مسدود شود" #: actions/groupblock.php:160 -#, fuzzy, php-format +#, php-format msgid "" "Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They " "will be removed from the group, unable to post, and unable to subscribe to " "the group in the future." -msgstr "آیا مطمئن هستید می‌خواهید دسترسی »%s« را به گروه »%s« مسدود کنید؟" +msgstr "" +"آیا مطمئن هستید Ú©Ù‡ می‌خواهید مانع دسترسی «%1$s» به گروه «%2$s» بشوید؟ آن‌ها از " +"گروه Øذ٠خواهند شد، نمی‌توانند چیزی به گروه بÙرستند Ùˆ نمی‌توانند Ú©Ù‡ در آینده " +"مشترک گروه شوند." #. 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 "دسترسی کاربر به گروه را مسدود Ù†Ú©Ù†" +msgstr "دسترسی کاربر به گروه مسدود نشود" #. 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 "دسترسی کاربر را به گروه مسدود Ú©Ù†" +msgstr "دسترسی کاربر به گروه مسدود شود" #: actions/groupblock.php:206 msgid "Database error blocking user from group." @@ -1787,7 +1794,7 @@ msgstr "اشکال پایگاه داده در مسدود کردن کاربر" #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." -msgstr "" +msgstr "هیچ ID وجود ندارد." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." @@ -1832,7 +1839,7 @@ msgstr "نشان به‌هنگام‌سازی شد." #: actions/grouplogo.php:401 msgid "Failed updating logo." -msgstr "اشکال در ارسال نشان." +msgstr "به‌هنگام‌سازی نشان شکست خورد." #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format @@ -1840,9 +1847,9 @@ msgid "%s group members" msgstr "اعضای گروه %s" #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "اعضای گروه %sØŒ صÙØÙ‡Ù” %d" +msgstr "اعضای گروه %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1872,7 +1879,7 @@ msgstr "این کاربر یک مدیر شود" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "خط زمانی %s" @@ -1902,11 +1909,11 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" -"گروه های %%%site.name%%% به شما اجازه می‌دهد با کسانی Ú©Ù‡ همانند شما علاقه‌مندی " -"های خاصی دارد صØبت کنید. بعد از پیوستن به یک گروه می‌توانید به Ø´Ú©Ù„ !groupname " -"به اعضای آن گروه پیام ارسال کنید .گروهی Ú©Ù‡ دوست دارید را نمی‌بینید؟ می‌توانید " -"برای یاÙتن آن [بگردید](%%%action.groupsearch%%%) یا آن را خودتان [ایجاد](%%%" -"action.newgroup%%%) کنید." +"گروه‌های %%%site.name%%% به شما اجازه می‌دهد با کسانی Ú©Ù‡ همانند شما " +"علاقه‌مندی‌های خاصی دارد صØبت کنید. بعد از پیوستن به یک گروه می‌توانید به Ø´Ú©Ù„ !" +"groupname به تمام اعضای دیگر گروه پیام بÙرستید. گروهی را Ú©Ù‡ دوست دارید، " +"نمی‌بینید؟ می‌توانید برای یاÙتن آن [بگردید](%%%action.groupsearch%%%) !یا [آن " +"را خودتان بسازید] (%%%%action.newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 msgid "Create a new group" @@ -1917,7 +1924,9 @@ msgstr "یک گروه جدید بساز" 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 "با وارد کردن Û³ Øر٠و بیش‌تر در گروه‌های %%site.name%% جست‌و‌جو کنید." +msgstr "" +"برای جست‌وجوی گروه‌ها در %%site.name%% از نام، مکان یا توصیÙ‌شان استÙاده کنید. " +"عبارت‌ها را با Ùاصله جدا کنید؛ آن‌ها باید Û³ نویسه یا بیش‌تر باشند." #: actions/groupsearch.php:58 msgid "Group search" @@ -1926,7 +1935,7 @@ msgstr "جست‌وجوی گروه" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 msgid "No results." -msgstr "بدون نتیجه." +msgstr "نتیجه‌ای وجود ندارد." #: actions/groupsearch.php:82 #, php-format @@ -1960,7 +1969,6 @@ msgstr "اشکال در پاکسازی" #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" msgstr "تنظیمات پیام‌رسان Ùوری" @@ -1984,7 +1992,6 @@ 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 -#, fuzzy msgid "IM address" msgstr "نشانی پیام‌رسان Ùوری" @@ -2016,25 +2023,23 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "ترجیØات" +msgstr "ترجیØات پیام‌رسان Ùوری" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 msgid "Send me notices through Jabber/GTalk." -msgstr "آگهی‌ها را از راه Jabber/GTalk برای من بÙرست." +msgstr "پیام‌ها را از راه Jabber/GTalk برای من بÙرست." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:166 msgid "Post a notice when my Jabber/GTalk status changes." -msgstr "هر وقت Ú©Ù‡ وضعیت Jabber/Gtalk من Ùرق کرد، یک پیام ارسال Ú©Ù†." +msgstr "هر وقت Ú©Ù‡ وضعیت Jabber/Gtalk من تغییر کرد، یک پیام بÙرست." #. 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 "" -"جواب کسانی Ú©Ù‡ من آن ها را دنبال نمی‌کنم را با Jabber/Gtalk برایم ارسال Ú©Ù†." +msgstr "پاسخ کسانی Ú©Ù‡ من آن‌ها را دنبال نمی‌کنم را با Jabber/Gtalk برایم بÙرست." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:179 @@ -2069,7 +2074,7 @@ msgstr "این شناسه Jabber کنونی شماست." #. 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 "شناسه Jabber به یک کاربر دیگر مربوط است." +msgstr "شناسهٔ Jabber به یک کاربر دیگر مربوط است." #. TRANS: Message given saving valid IM address that is to be confirmed. #. TRANS: %s is the IM address set for the site. @@ -2079,8 +2084,8 @@ msgid "" "A confirmation code was sent to the IM address you added. You must approve %" "s for sending messages to you." msgstr "" -"کد تایید به پیام‌رسان شما ارسال شد. شما باید %s را تایید کنید تا پیام‌ها به " -"شما ارسال شود." +"یک کد تایید به نشانی پیام‌رسانی Ú©Ù‡ اضاÙÙ‡ کرده‌اید، Ùرستاده شد. شما باید %s را " +"برای Ùرستادن پیام به شما، تایید کنید." #. TRANS: Message given canceling IM address confirmation for the wrong IM address. #: actions/imsettings.php:388 @@ -2089,15 +2094,13 @@ msgstr "نشانی پیام رسان اشتباه است." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "نمی‌توان تصدیق پست الکترونیک را پاک کرد." +msgstr "نمی‌توان تایید پیام‌رسان Ùوری را پاک کرد." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "تایید Ùسخ شد." +msgstr "تایید پیام‌رسان Ùوری لغو شد." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2107,14 +2110,13 @@ msgstr "این شناسه‌ی Jabber شما نیست." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "نشانی پاک شده است." +msgstr "نشانی پیام‌رسان Ùوری پاک شده است." #: actions/inbox.php:59 -#, fuzzy, php-format +#, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "صندوق ورودی %s" +msgstr "صندوق ورودی %1$s - صÙØÙ‡Ù” %2$d" #: actions/inbox.php:62 #, php-format @@ -2127,12 +2129,12 @@ msgstr "این صندوق ورودی‌های شماست Ú©Ù‡ پیام‌های #: actions/invite.php:39 msgid "Invites have been disabled." -msgstr "دعوت‌کردن از کار انداخته شده‌است." +msgstr "دعوت‌کردن از کار انداخته شده است." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "شما برای دعوت دیگران برای استÙاده از %s باید وارد شودید." +msgstr "شما برای دعوت دیگران به استÙاده از %s باید وارد شده باشید." #: actions/invite.php:72 #, php-format @@ -2149,14 +2151,14 @@ msgstr "دعوت کردن کاربران تازه" #: actions/invite.php:128 msgid "You are already subscribed to these users:" -msgstr "هم اکنون شما این کاربران را دنبال می‌کنید: " +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 "" +msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" @@ -2172,8 +2174,8 @@ 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 "" @@ -2195,11 +2197,10 @@ msgstr "پیام خصوصی" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." -msgstr "اگر دوست دارید می‌توانید یک پیام به همراه دعوت نامه ارسال کنید." +msgstr "در صورت تمایل می‌توانید یک پیام به همراه دعوت نامه بÙرستید." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" msgstr "Ùرستادن" @@ -2241,22 +2242,48 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" +"%1$s شما را دعودت کرده است تا به آن‌ها در %2$s (%3$s) بپیوندید.\n" +"\n" +"%2$s یک سرویس میکروبلاگینگ است Ú©Ù‡ به شما امکان می‌دهد Ú©Ù‡ با کسانی Ú©Ù‡ می‌شناسید " +"Ùˆ کسانی Ú©Ù‡ به شما توجه دارند، به‌روز بمانید.\n" +"\n" +"شما همچنین می‌توانید خبرهایی دربارهٔ خودتان، اÙکارتان Ùˆ یا زندگی‌تان با کسانی " +"Ú©Ù‡ شما را می‌شناسند، به صورت آنلاین به اشتراک بگذارید.همچنین این راهی خوب " +"برای ملاقات اÙراد تازه‌ای است Ú©Ù‡ علاقه‌مندی‌هایتان را با آن‌ها به اشتراک " +"می‌گذارید.\n" +"\n" +"%1$sÚ¯Ùته است:\n" +"\n" +"%4$s\n" +"\n" +"شما می‌توانید صÙØÙ‡Ù” نمایهٔ %1$s' را در %2$s این‌جا ببینید:\n" +"\n" +"%5$s\n" +"\n" +"اگر شما دوست دارید Ú©Ù‡ سرویس را آزمایش کنید، روی پیوند زیر برای قبول دعوت " +"کلیک کنید.\n" +"\n" +"%6$s\n" +"\n" +"اگر چنین نیست، شما می‌توانید این پیام را نادیده بگیرید. از شما برای طاقت Ùˆ " +"وقت‌تان تشکر می‌کنیم.\n" +"\n" +"با تشکر، %2$s\n" #: actions/joingroup.php:60 msgid "You must be logged in to join a group." msgstr "برای پیوستن به یک گروه، باید وارد شده باشید." #: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy msgid "No nickname or ID." -msgstr "بدون لقب." +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 -#, fuzzy, php-format +#, php-format msgid "%1$s joined group %2$s" -msgstr "ملØÙ‚ شدن به گروه" +msgstr "%1$s به گروه %2$s پیوست" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." @@ -2269,110 +2296,103 @@ 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 -#, fuzzy, php-format +#, php-format msgid "%1$s left group %2$s" -msgstr "%s گروه %s را ترک کرد." +msgstr "%1$s گروه %2$s را ترک کرد" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "قبلا وارد شده" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." -msgstr "نام کاربری یا رمز عبور نادرست." +msgstr "نام کاربری یا گذرواژه نادرست است." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." -msgstr "خطا در تنظیم کاربر. شما اØتمالا اجازه ÛŒ این کار را ندارید." +msgstr "خطا در تنظیم کاربر. شما اØتمالا اجازهٔ این کار را ندارید." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "ورود" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "ورود به وب‌گاه" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "مرا به یاد بسپار" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "وارد شدن خودکار. نه برای کامپیوترهای مشترک!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" -msgstr "رمز عبور خود را Ú¯Ù… یا Ùراموش کرده اید؟" +msgstr "گذرواژهٔ خود را Ú¯Ù… یا Ùراموش کرده‌اید؟" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" -"به دلایل امنیتی، لطÙا نام کاربری Ùˆ رمز عبور خود را قبل از تغییر تنظیمات " +"به دلایل امنیتی، لطÙا نام کاربری Ùˆ گذرواژهٔ خود را قبل از تغییر تنظیمات " "دوباره وارد نمایید." -#: actions/login.php:270 -#, fuzzy +#: actions/login.php:292 msgid "Login with your username and password." -msgstr "وارد شدن با یک نام کاربری Ùˆ کلمه ÛŒ عبور" +msgstr "با نام‌کاربری Ùˆ گذرواژه‌تان وارد شوید." -#: actions/login.php:273 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"با نام‌کاربری Ùˆ گذزواژه‌ی خود وارد شوید. نام‌کاربری ندارید؟ یک نام‌کاربری [ثبت ]" -"(%%action.register%%) کنید." +"هنوز یک نام‌کاربری ندارید؟ یک Øساب تازه [ثبت کنید](%%action.register%%)." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "Ùقط یک مدیر می‌تواند کاربر دیگری را مدیر کند." #: actions/makeadmin.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "%s از قبل مدیر گروه %s بود." +msgstr "%1$s از قبل مدیر گروه «%2$s» است." #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "نمی‌توان اطلاعات عضویت %s را در گروه %s به دست آورد." +msgstr "نمی‌توان پیشینهٔ عضویت %1$s را در گروه %2$s به‌دست آورد." #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "نمی‌توان %s را مدیر گروه %s کرد." +msgstr "نمی‌توان %1$s را یکی از مدیران گروه %2$s کرد." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "بدون وضعیت Ùعلی" +msgstr "وضعیت Ùعلی وجود ندارد." #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "چنین پیامی وجود ندارد." +msgstr "برنامهٔ تازه" #: actions/newapplication.php:64 -#, fuzzy msgid "You must be logged in to register an application." -msgstr "برای ساخت یک گروه، باید وارد شده باشید." +msgstr "برای ثبت یک برنامه باید وارد شده باشید." #: actions/newapplication.php:143 -#, fuzzy msgid "Use this form to register a new application." -msgstr "از این Ùرم برای ساختن یک گروه جدید استÙاده کنید" +msgstr "از این شیوه برای ساختن یک برنامهٔ تازه استÙاده کنید." #: actions/newapplication.php:176 msgid "Source URL is required." -msgstr "" +msgstr "نشانی اینترنتی منبع مورد نیاز است." #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "نمی‌توان نام‌های مستعار را ساخت." +msgstr "نمی‌توان برنامه را ساخت." #: actions/newgroup.php:53 msgid "New group" @@ -2393,7 +2413,7 @@ msgstr "شما نمی توانید به این کاربر پیام بÙØ±Ø³ØªÛŒØ #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 #: lib/command.php:555 msgid "No content!" -msgstr "بدون Ù…Øتوا!" +msgstr "Ù…Øتوایی ÙˆØود ندارد!" #: actions/newmessage.php:158 msgid "No recipient specified." @@ -2409,21 +2429,21 @@ msgid "Message sent" msgstr "پیام Ùرستاده‌شد" #: actions/newmessage.php:185 -#, fuzzy, php-format +#, php-format msgid "Direct message to %s sent." msgstr "پیام مستقیم به %s Ùرستاده شد." #: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 msgid "Ajax Error" -msgstr "اشکال آژاکسی" +msgstr "خطای آژاکس" #: actions/newnotice.php:69 msgid "New notice" -msgstr "Ø¢Ú¯Ù‡ÛŒ جدید" +msgstr "پیام جدید" #: actions/newnotice.php:217 msgid "Notice posted" -msgstr "Ø¢Ú¯Ù‡ÛŒ Ùرستاده‌شد." +msgstr "پیام Ùرستاده‌شد." #: actions/noticesearch.php:68 #, php-format @@ -2431,8 +2451,8 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"جست‌و‌جوی متن پیام‌ها در %%site.name%%. هر شرط را با Ùاصله جدا کنید Ùˆ کمینه‌ی " -"جست‌و‌جو باید Û³ Øر٠باشد." +"برای جست‌وجوی پیام‌ها در %%site.name%% از Ù…Øتوایشان استÙاده کنید. عبارت‌ها را " +"با Ùاصله جدا کنید؛ آن‌ها باید Û³ نویسه یا بیش‌تر باشند." #: actions/noticesearch.php:78 msgid "Text search" @@ -2472,90 +2492,88 @@ 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 "" -"این کاربر اجازه‌ی سقلمه زدن را نداده است یا پست‌الکترونیک خود را تایید نکرده " -"است." +"این کاربر اجازه‌ی یادآوری‌کردن را نداده است یا پست‌الکترونیک خود را تایید یا " +"تعیین نکرده است." #: actions/nudge.php:94 msgid "Nudge sent" -msgstr "Ùرتادن اژیر" +msgstr "یادآوری Ùرستاده‌شد" #: actions/nudge.php:97 msgid "Nudge sent!" -msgstr "سقلمه Ùرستاده شد!" +msgstr "یادآوری Ùرستاده‌شد!" #: actions/oauthappssettings.php:59 -#, fuzzy msgid "You must be logged in to list your applications." -msgstr "برای ویرایش گروه باید وارد شوید." +msgstr "برای Ùهرست‌کردن برنامه‌هایتان باید وارد شده باشید." #: actions/oauthappssettings.php:74 -#, fuzzy msgid "OAuth applications" -msgstr "انتخابات دیگر" +msgstr "برنامه‌های OAuth" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "برنامه‌هایی Ú©Ù‡ ثبت کرده‌اید" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "شما هنوز هیچ برنامه‌ای را ثبت نکرده‌اید." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" +msgstr "برنامه‌های وصل‌شده" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "شما به برنامه‌های زیر اجازه داده‌اید Ú©Ù‡ به Øساب‌تان دسترسی پیدا کنند." #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "شما یک کاربر این گروه نیستید." +msgstr "شما یک کاربر این برنامه نیستید." #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." -msgstr "" +msgstr "نمی‌توان دسترسی را برای برنامهٔ %s لغو کرد." #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "شما به هیچ برنامه‌ای اجازه نداده‌اید Ú©Ù‡ از Øساب‌تان استÙاده کند." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " msgstr "" +"توسعه‌دهنده‌ها می‌توانند تنظیمات نام‌نویسی را برای برنامه‌هایشان ویرایش کنند " -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "ابن خبر ذخیره ای ندارد ." +msgstr "این پیام نمایه‌ای ندارد." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "وضعیت %1$s در %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "نوع Ù…Øتوا " +msgstr "نوع Ù…Øتوای %s پشتیبانی نشده است." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format msgid "Only %s URLs over plain HTTP please." -msgstr "" +msgstr "لطÙا تنها از نشانی‌های اینترنتی %s از راه HTTP ساده استÙاده کنید." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "یک قالب دادهٔ پشتیبانی‌شده نیست." @@ -2565,10 +2583,9 @@ msgstr "جست‌وجوی کاربران" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "جست‌وجوی آگهی‌ها" +msgstr "جست‌وجوی پیام‌ها" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" msgstr "تنظیمات دیگر" @@ -2590,44 +2607,40 @@ msgstr "کوتاه‌کننده‌ی نشانی مورد استÙاده." #: actions/othersettings.php:122 msgid "View profile designs" -msgstr "نمایش طراØÛŒ های پروÙایل" +msgstr "نمایش طراØی‌های نمایه" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "نمایش یا عدم‌نمایش طراØی‌های کاربران." +msgstr "نمایش دادن یا پنهان کردن طراØی‌های نمایه." #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." msgstr "کوتاه کننده‌ی نشانی بسیار طولانی است (بیش‌تر از ÛµÛ° ØرÙ)." #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "گروهی مشخص نشده است." +msgstr "هیچ شناسهٔ کاربری مشخص نشده است." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "خبری مشخص نشده." +msgstr "هیچ رمز ورودی مشخص نشده است." #: actions/otp.php:90 msgid "No login token requested." -msgstr "" +msgstr "هیچ رمز ورودی درخواست نشده است." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "علامت بی اعتبار یا منقضی." +msgstr "رمز ورود مشخص شده نامعتبر است." #: actions/otp.php:104 -#, fuzzy msgid "Login token expired." -msgstr "ورود به وب‌گاه" +msgstr "رمز ورود منسوخ شده است." #: actions/outbox.php:58 -#, fuzzy, php-format +#, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "Ùرستاده‌های %s" +msgstr "صندوق خروجی %1$s - صÙØÙ‡Ù” %2$d" #: actions/outbox.php:61 #, php-format @@ -2637,8 +2650,8 @@ msgstr "Ùرستاده‌های %s" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." msgstr "" -"این صندوق خروجی شماست، Ú©Ù‡ پیام های خصوصی Ùرستاده شده به وسیله ÛŒ شما را لیست " -"Ù…ÛŒ کند." +"این صندوق خروجی شماست، Ú©Ù‡ پیام‌های خصوصی Ùرستاده شده به وسیلهٔ شما را Ùهرست " +"می‌کند." #: actions/passwordsettings.php:58 msgid "Change password" @@ -2646,7 +2659,7 @@ msgstr "تغییر گذرواژه" #: actions/passwordsettings.php:69 msgid "Change your password." -msgstr "تغییر گذرواژه‌تان" +msgstr "تغییر گذرواژهٔ شما" #: actions/passwordsettings.php:96 actions/recoverpassword.php:231 msgid "Password change" @@ -2654,89 +2667,89 @@ msgstr "تغییر گذرواژه" #: actions/passwordsettings.php:104 msgid "Old password" -msgstr "گذرواژهٔ قدیمی" +msgstr "گذرواژهٔ پیشین" #: actions/passwordsettings.php:108 actions/recoverpassword.php:235 msgid "New password" -msgstr "گذرواژهٔ جدید" +msgstr "گذرواژهٔ تازه" #: actions/passwordsettings.php:109 msgid "6 or more characters" msgstr "Û¶ نویسه یا بیش‌تر" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "تایید" #: actions/passwordsettings.php:113 actions/recoverpassword.php:240 msgid "Same as password above" -msgstr "مثل رمز عبور بالا" +msgstr "مانند گذرواژهٔ بالا" #: actions/passwordsettings.php:117 msgid "Change" msgstr "تغییر" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "گذرواژه باید Û¶ نویسه یا بیش‌تر باشد." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "گذرواژه‌ها مطابقت ندارند." #: actions/passwordsettings.php:165 msgid "Incorrect old password" -msgstr "گذرواژه قدیمی اشتباه است" +msgstr "گذرواژه پیشین اشتباه است" #: actions/passwordsettings.php:181 msgid "Error saving user; invalid." -msgstr "خطا هنگام ذخیره ÛŒ کاربر؛ نا معتبر." +msgstr "هنگام ذخیرهٔ کاربر خطا رخ داد؛ نامعتبر است." #: actions/passwordsettings.php:186 actions/recoverpassword.php:381 msgid "Can't save new password." -msgstr "نمی‌توان گذرواژه جدید را ذخیره کرد." +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:383 +#: 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 "تنظیمات Ùˆ نشانی Ù…ØÙ„ÛŒ این سایت استاتوس‌نتی" +msgstr "تنظیمات Ùˆ نشانی Ù…ØÙ„ÛŒ این وب‌گاه StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "شاخه‌ی پوسته‌ها خواندنی نیست: %s" +msgstr "شاخه‌ی پوسته‌ها قابل خواندن نیست: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "شاخه‌ی چهره‌ها نوشتنی نیست: %s" +msgstr "شاخه‌ی تصویر چهره‌ها قابل نوشتن نیست: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "شاخه‌ی پس زمینه‌ها نوشتنی نیست: %s" +msgstr "شاخه‌ی پس زمینه‌ها قابل نوشتن نیست: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "پوشه‌ی تنظیمات Ù…ØÙ„ÛŒ خواندنی نیست: %s" +msgstr "پوشه‌ی تنظیمات Ù…ØÙ„ÛŒ قابل خواندن نیست: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "کارگزار SSL نامعتبر است. بیشینهٔ طول نام Û²ÛµÛµ نویسه است." #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" -msgstr "سایت" +msgstr "وب‌گاه" #: actions/pathsadminpanel.php:238 msgid "Server" @@ -2744,7 +2757,7 @@ msgstr "کارگزار" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "" +msgstr "نام میزبان کارگزار وب‌گاه." #: actions/pathsadminpanel.php:242 msgid "Path" @@ -2760,15 +2773,15 @@ msgstr "نشانی تنظیمات Ù…ØÙ„ÛŒ" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" -msgstr "" +msgstr "مسیر پوشه برای زبان‌های Ù…ØÙ„ÛŒ" #: actions/pathsadminpanel.php:250 msgid "Fancy URLs" -msgstr "" +msgstr "نشانی‌های تمیز" #: actions/pathsadminpanel.php:252 msgid "Use fancy (more readable and memorable) URLs?" -msgstr "" +msgstr "از نشانی‌های تمیز (خواناتر Ùˆ ماندگارتر در ذهن) استÙاده شود؟" #: actions/pathsadminpanel.php:259 msgid "Theme" @@ -2792,7 +2805,7 @@ msgstr "چهره‌ها" #: actions/pathsadminpanel.php:284 msgid "Avatar server" -msgstr "کارگزار نیم‌رخ" +msgstr "کارگزار چهره‌ها" #: actions/pathsadminpanel.php:288 msgid "Avatar path" @@ -2840,16 +2853,15 @@ msgstr "استÙاده از SSL" #: actions/pathsadminpanel.php:330 msgid "When to use SSL" -msgstr "" +msgstr "زمان استÙاده از SSL" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "کارگزار" +msgstr "کارگزار SSL" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" -msgstr "" +msgstr "کارگزار برای هدایت درخواست‌های SSL به" #: actions/pathsadminpanel.php:352 msgid "Save paths" @@ -2861,95 +2873,94 @@ msgid "" "Search for people on %%site.name%% by their name, location, or interests. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"جست‌و‌جو اÙراد در %%site.name%% با نام، Ù…ØÙ„ زندگی یا چیز‌هایی Ú©Ù‡ دوست دارند. " -"عبارت‌ها را با Ùاصله از هم جدا کنید Ùˆ Øداقل Û³ Øر٠وارد کنید." +"برای جست‌وجوی اÙراد در %%site.name%% از نام، مکان یا توصیÙ‌شان استÙاده کنید. " +"عبارت‌ها را با Ùاصله جدا کنید؛ آن‌ها باید Û³ نویسه یا بیش‌تر باشند." #: actions/peoplesearch.php:58 msgid "People search" msgstr "جست‌وجوی کاربران" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "یک برچسب کاربری معتبر نیست: %s" +msgstr "یک برچسب کاربری معتبر نیست: %s." #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "کاربران خود برچسب‌گذاری شده با %s - صÙØÙ‡Ù” %d" +msgstr "کاربران خود برچسب‌گذاری شده با %1$s - صÙØÙ‡Ù” %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Ù…Øتوای Ø¢Ú¯Ù‡ÛŒ نامعتبر" +msgstr "Ù…Øتوای پیام نامعتبر است." #: actions/postnotice.php:101 #, php-format msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." -msgstr "" +msgstr "مجوز پیام «%1$s» با مجوز وب‌گاه «%2$s» سازگار نیست." #: actions/profilesettings.php:60 msgid "Profile settings" -msgstr "تنظیمات شناس‌نامه" +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 "اطلاعات شناس‌نامه" +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:448 +#: 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:453 +#: 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:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" -msgstr "نشانی اینترنتی صÙØÙ‡Ù” خانگی، وبلاگ یا مشخصات کاربری‌تان در یک وب‌گاه دیگر" +msgstr "نشانی اینترنتی صÙØÙ‡Ù” خانگی، وبلاگ یا نمایه‌تان در یک وب‌گاه دیگر" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "" +msgstr "خودتان Ùˆ علاقه‌مندی‌هایتان را در %d نویسه توصی٠کنید" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" -msgstr "خودتان Ùˆ علایقتان را توصی٠کنید." +msgstr "خودتان Ùˆ علاقه‌مندی‌هایتان را توصی٠کنید" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "شرØ‌Øال" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: 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 "" +msgstr "مکان کنونی من هنگام Ùرستادن پیام‌ها به اشتراک گذاشته شود" #: actions/profilesettings.php:145 actions/tagother.php:149 #: actions/tagother.php:209 lib/subscriptionlist.php:106 @@ -2961,6 +2972,7 @@ msgstr "برچسب‌ها" msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" +"برچسب‌ها برای خودتان (ØروÙØŒ اعداد، -ØŒ .ØŒ Ùˆ _) جدا شده با کاما- یا Ùاصله-" #: actions/profilesettings.php:151 msgid "Language" @@ -2976,17 +2988,18 @@ msgstr "منطقهٔ‌زمانی" #: actions/profilesettings.php:162 msgid "What timezone are you normally in?" -msgstr "شما معمولا در کدام منطقه ÛŒ زمانی هستید؟" +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:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." -msgstr "" +msgstr "شرØ‌Øال خیلی طولانی است (بیشینه %d نویسه)." #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." @@ -2994,7 +3007,7 @@ msgstr "منطقه‌ی زمانی انتخاب نشده است." #: actions/profilesettings.php:241 msgid "Language is too long (max 50 chars)." -msgstr "کلام بسیار طولانی است( Øداکثر ÛµÛ° کاراکتر)" +msgstr "زبان بسیار طولانی است ( Øداکثر ÛµÛ° نویسه)" #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format @@ -3003,7 +3016,7 @@ msgstr "نشان نادرست »%s«" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." -msgstr "" +msgstr "نمی‌توان کاربر را برای اشتراک خودکار به‌هنگام‌سازی کرد." #: actions/profilesettings.php:363 msgid "Couldn't save location prefs." @@ -3011,7 +3024,7 @@ msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد." #: actions/profilesettings.php:375 msgid "Couldn't save profile." -msgstr "نمی‌توان شناسه را ذخیره کرد." +msgstr "نمی‌توان نمایه را ذخیره کرد." #: actions/profilesettings.php:383 msgid "Couldn't save tags." @@ -3029,7 +3042,7 @@ msgstr "" #: actions/public.php:92 msgid "Could not retrieve public stream." -msgstr "" +msgstr "نمی‌توان جریان عمومی را دریاÙت کرد." #: actions/public.php:130 #, php-format @@ -3042,15 +3055,15 @@ msgstr "خط زمانی عمومی" #: actions/public.php:160 msgid "Public Stream Feed (RSS 1.0)" -msgstr "" +msgstr "خوراک جریان عمومی (RSS 1.0)" #: actions/public.php:164 msgid "Public Stream Feed (RSS 2.0)" -msgstr "" +msgstr "خوراک جریان عمومی (RSS 2.0)" #: actions/public.php:168 msgid "Public Stream Feed (Atom)" -msgstr "" +msgstr "خوراک جریان عمومی (Atom)" #: actions/public.php:188 #, php-format @@ -3058,6 +3071,7 @@ msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"این خط‌زمانی عمومی برای %%site.name%% است، اما هیچ‌کس هنوز چیزی Ù†Ùرستاده است." #: actions/public.php:191 msgid "Be the first to post!" @@ -3077,6 +3091,11 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" +"این %%site.name%%ØŒ یک سرویس [میکروبلاگینگ](http://fa.wikipedia.org/wiki/%D9%" +"85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%D8%A7%DA%AF%DB%8C%D9%86%DA%AF) بر " +"پایهٔ نرم‌اÙزار آزاد [StatusNet](http://status.net/) است. ]اکنون بپیوندید[(%%" +"action.register%%) تا آگاهی‌هایی را دربارهٔ خودتان با دوستان، خانواده Ùˆ " +"همکاران‌تان به اشتراک بگذارید! ([بیش‌تر بخوانید](%%doc.help%%))" #: actions/public.php:247 #, php-format @@ -3085,24 +3104,27 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" +"این %%site.name%%ØŒ یک سرویس [میکروبلاگینگ](http://fa.wikipedia.org/wiki/%D9%" +"85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%D8%A7%DA%AF%DB%8C%D9%86%DA%AF) بر " +"پایهٔ نرم‌اÙزار آزاد [StatusNet](http://status.net/) است." #: actions/publictagcloud.php:57 msgid "Public tag cloud" -msgstr "" +msgstr "ابر برچسب عمومی" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "" +msgstr "این‌ها Ù…Øبوب‌ترین برچسب‌های اخیر روی %s هستند " #: actions/publictagcloud.php:69 #, php-format msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." -msgstr "" +msgstr "هیچ‌کس هنوز پیامی با یک [برچسب](%%doc.tags%%) Ù†Ùرستاده است." #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "" +msgstr "اولین Ù†Ùری باشید Ú©Ù‡ چیزی می‌Ùرستد!" #: actions/publictagcloud.php:75 #, php-format @@ -3110,10 +3132,12 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"چرا به [باز کردن یک Øساب](%%action.register%%) اقدام نمی‌کنید Ùˆ اولین Ù†Ùری " +"باشید Ú©Ù‡ چیزی می‌Ùرستد!" #: actions/publictagcloud.php:134 msgid "Tag cloud" -msgstr "" +msgstr "ابر برچسب" #: actions/recoverpassword.php:36 msgid "You are already logged in!" @@ -3148,24 +3172,25 @@ msgid "" "If you have forgotten or lost your password, you can get a new one sent to " "the email address you have stored in your account." msgstr "" -"اگر شما کلمه ÛŒ عبورتان را Ùراموش کرده اید یا Ú¯Ù… کرده اید، Ù…ÛŒ توانید یک کلمه " -"ÛŒ عبور جدید از آدرس ایمیل ذخیره شده در Øسابتان بگیرید." +"اگر شما گذرواژهٔ خودتان را Ú¯Ù… یا Ùراموش کرده‌اید، شما می‌توانید یکی جدیدتر را " +"Ú©Ù‡ به نشانی پست الکترونیکی‌تان Ú©Ù‡ در Øساب‌تان ذخیره کرده‌اید Ùرستاده شده است، " +"بگیرید." #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " -msgstr "" +msgstr "هویت شما شناسایی شد. یک گذرواژه تازه را در زیر وارد کنید. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "بازیابی کلمه ÛŒ عبور" +msgstr "بازیابی گذرواژه" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "نام کاربری یا آدرس ایمیل" +msgstr "نام کاربری یا نشانی پست الکترونیکی" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." -msgstr "نام کاربری شما بر روی این سرور، یا آدرس ایمیل ثبت شده ÛŒ شما." +msgstr "نام کاربری شما بر روی این سرور، یا نشانی پست الکترونیکی ثبت شدهٔ شما." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" @@ -3173,168 +3198,170 @@ msgstr "بازیابی" #: actions/recoverpassword.php:208 msgid "Reset password" -msgstr "ریست کردن کلمه ÛŒ عبور" +msgstr "بازنشانی گذرواژه" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "بازیابی کلمه ÛŒ عبور" +msgstr "بازیابی گذرواژه" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" -msgstr "بازیابی کلمه ÛŒ عبور درخواست شد" +msgstr "بازیابی گذرواژه درخواست شد" #: actions/recoverpassword.php:213 msgid "Unknown action" -msgstr "" +msgstr "عمل نامعلوم" #: actions/recoverpassword.php:236 msgid "6 or more characters, and don't forget it!" -msgstr "Û¶ کاراکتر یا بیشتر، این را Ùراموش نکنید!" +msgstr "Û¶ نویسه یا بیش‌تر، Ùˆ این را Ùراموش نکنید!" #: actions/recoverpassword.php:243 msgid "Reset" -msgstr "ریست( راه انداری مجدد )" +msgstr "بازنشاندن" #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." -msgstr "یک نام کاربری یا آدرس ایمیل وارد کنید." +msgstr "یک نام کاربری یا نشانی پست الکترونیکی وارد کنید." #: actions/recoverpassword.php:282 msgid "No user with that email address or username." -msgstr "هیچ کاربری با آن آدرس ایمیل یا نام کاربری وجود ندارد." +msgstr "هیچ کاربری با آن نشانی پست الکترونیکی یا نام کاربری وجود ندارد." #: actions/recoverpassword.php:299 msgid "No registered email address for that user." -msgstr "برای آن کاربر آدرس ایمیل ثبت شده وجود ندارد." +msgstr "برای آن کاربر نشانی پست الکترونیکی ثبت شده وجود ندارد." #: actions/recoverpassword.php:313 msgid "Error saving address confirmation." -msgstr "خطا هنگام ذخیره ÛŒ تاییدیه ÛŒ آدرس." +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 "کلمه ÛŒ عبور به طور غیر منتظره ریست شد." +msgstr "گذرواژه به طور غیر منتظره ریست شد." #: actions/recoverpassword.php:365 msgid "Password must be 6 chars or more." -msgstr "کلمه ÛŒ عبور باید Û¶ کاراکتر یا بیشتر باشد." +msgstr "گذرواژه باید Û¶ نویسه یا بیش‌تر باشد." #: actions/recoverpassword.php:369 msgid "Password and confirmation do not match." -msgstr "کلمه ÛŒ عبور Ùˆ تاییدیه ÛŒ آن با هم تطابق ندارند." +msgstr "گذرواژه Ùˆ تاییدیهٔ آن با هم تطابق ندارند." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." -msgstr "" +msgstr "هنگام گذاشتن کاربر خطا روی داد." #: actions/recoverpassword.php:395 msgid "New password successfully saved. You are now logged in." -msgstr "کلمه ÛŒ عبور جدید با موÙقیت ذخیره شد. شما الان وارد شده اید." +msgstr "گذرواژه تازه با موÙقیت ذخیره شد. شما اکنون وارد شده‌اید." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "با عرض معذرت، تنها اÙراد دعوت شده Ù…ÛŒ توانند ثبت نام کنند." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "با عرض تاسÙØŒ کد دعوت نا معتبر است." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "ثبت نام با موÙقیت انجام شد." -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "ثبت نام" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "اجازه‌ی ثبت نام داده نشده است." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "شما نمی توانید ثبت نام کنید اگر با لیسانس( جواز ) مواÙقت نکنید." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." -msgstr "آدرس ایمیل از قبل وجود دارد." +msgstr "نشانی پست الکترونیکی از قبل وجود دارد." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." -msgstr "نام کاربری یا کلمه ÛŒ عبور نا معتبر." +msgstr "نام کاربری یا گذرواژه نا معتبر است." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "Û±-Û¶Û´ Øر٠کوچک یا اعداد، بدون نشانه گذاری یا Ùاصله نیاز است." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." -msgstr "Û¶ کاراکتر یا بیشتر نیاز است." +msgstr "Û¶ نویسه یا بیش‌تر مورد نیاز است." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." -msgstr "" +msgstr "با گذرواژهٔ بالا یکسان باشد. مورد نیاز است." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "پست الکترونیکی" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" -msgstr "" +msgstr "تنها برای به‌هنگام‌سازی‌ها، اعلامیه‌ها Ùˆ بازیابی گذرواژه به کار می‌رود" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "نام بلند تر، به طور بهتر نام واقعیتان" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "" +msgstr "من متوجه هستم Ú©Ù‡ Ù…Øتوا Ùˆ داده‌های %1$s خصوصی Ùˆ Ù…Øرمانه هستند." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "متن Ùˆ پرونده‌های من دارای ØÙ‚ تکثیر %1$s هستند." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "متن Ùˆ پرونده‌های من زیر ØÙ‚ تکثیر خودم می‌مانند." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: 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:533 -#, fuzzy, php-format +#: 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 "" -"به استثنای این داده ÛŒ Ù…Øرمانه : کلمه ÛŒ عبور، آدرس ایمیل، آدرس IMØŒ Ùˆ شماره " -"تلÙÙ†." +"نوشته‌ها Ùˆ پرونده‌های من به جز داده‌های خصوصی گذرواژه، نشانی پست الکترونیک، " +"نشانی پیام‌رسان Ùوری Ùˆ شماره تلÙÙ† زیر مجوز %s هستند." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3352,14 +3379,29 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" +"به شما تبریک می‌گوییم، %1$s! Ùˆ به %%%%site.name%%%% خوش آمدید. از این‌جا، شما " +"ممکن است بخواهید...\n" +"\n" +"* به [نمایه‌تان](%2$s) بروید Ùˆ اولین پیام‌تان را بÙرستید.\n" +"* یک [Jabber/GTalk نشانی](%%%%action.imsettings%%%%) اضاÙÙ‡ کنید. در این‌صورت " +"می‌توانیدپیام‌ها را از راه پیام‌های Ùوری بÙرستید.\n" +"* [به دنبال اÙراد دیگر بگردید](%%%%action.peoplesearch%%%%) Ú©Ù‡ ممکن است آن‌ها " +"را بشناسید Ùˆ یا علاقه‌مندی‌هایتان را به اشتراک بگذارید. \n" +"* [تنظیمات نمایه‌تان](%%%%action.profilesettings%%%%) را به هنگام‌سازی کنید تا " +"به دیگران بیش‌تر در مورد خودتان بگویید. \n" +"* برای ویژگی‌هایی Ú©Ù‡ Ú¯Ù… کرده‌اید، [اسناد آنلاین](%%%%doc.help%%%%) را " +"بخوانید. \n" +"\n" +"از این‌که نام‌نویسی کرده‌اید، تشکر می‌کنیم Ùˆ امیدواریم Ú©Ù‡ از استÙاده از این " +"سرویس لذت ببرید." -#: actions/register.php:600 +#: 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 @@ -3368,14 +3410,17 @@ msgid "" "register%%) a new account. If you already have an account on a [compatible " "microblogging site](%%doc.openmublog%%), enter your profile URL below." msgstr "" +"برای اشتراک، شما می‌توانید ]وارد[(%%action.login%%) شوید، یا یک Øساب جدید ]" +"ثبت کنید[(%%action.register%%). اگر شما یک Øساب در یک ]وب‌گاه میکروبلاگینگ " +"سازگار[(%%doc.openmublog%%) دارید، نشانی نمایهٔ خود را در زیر وارد کنید." #: actions/remotesubscribe.php:112 msgid "Remote subscribe" -msgstr "" +msgstr "اشتراک از راه دور" #: actions/remotesubscribe.php:124 msgid "Subscribe to a remote user" -msgstr "" +msgstr "اشتراک یک کاربر از راه دور" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3387,56 +3432,58 @@ msgstr "نام کاربری، کاربری Ú©Ù‡ Ù…ÛŒ خواهید او را دن #: actions/remotesubscribe.php:133 msgid "Profile URL" -msgstr "" +msgstr "نشانی نمایه" #: actions/remotesubscribe.php:134 msgid "URL of your profile on another compatible microblogging service" -msgstr "" +msgstr "نشانی اینترنتی نمایهٔ شما در سرویس میکروبلاگینگ سازگار دیگری" #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:406 msgid "Subscribe" -msgstr "" +msgstr "اشتراک" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" -msgstr "" +msgstr "نشانی اینترنتی نمایه نامعتبر است (Ùرمت نامناسب است)" #: actions/remotesubscribe.php:168 msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." msgstr "" +"این یک نشانی نمایهٔ صØÛŒØ Ù†ÛŒØ³Øª (هیچ سند YADIS وجود ندارد Ùˆ یا XRDS مشخص شده " +"نامعتبر است)." #: 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." -msgstr "" +msgstr "نمی‌توان یک نشانهٔ درخواست را به‌دست آورد." #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." -msgstr "تنها کاربران وارد شده Ù…ÛŒ توانند Ø¢Ú¯Ù‡ÛŒ ها را تکرار کنند." +msgstr "تنها کاربران وارد شده Ù…ÛŒ توانند پیام‌ها را تکرار کنند." #: actions/repeat.php:64 actions/repeat.php:71 msgid "No notice specified." -msgstr "خبری مشخص نشده." +msgstr "هیچ پیامی مشخص نشده است." #: actions/repeat.php:76 msgid "You can't repeat your own notice." -msgstr "شما نمی توانید Ø¢Ú¯Ù‡ÛŒ خودتان را تکرار کنید." +msgstr "شما نمی‌توانید پیام خودتان را تکرار کنید." #: actions/repeat.php:90 msgid "You already repeated that notice." -msgstr "شما قبلا آن Ø¢Ú¯Ù‡ÛŒ را تکرار کردید." +msgstr "شما قبلا آن پیام را تکرار کرده‌اید." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:675 msgid "Repeated" -msgstr "" +msgstr "تکرار شده" #: actions/repeat.php:119 msgid "Repeated!" -msgstr "" +msgstr "تکرار شد!" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3445,9 +3492,9 @@ msgid "Replies to %s" msgstr "پاسخ‌های به %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "پاسخ‌های به %s" +msgstr "پاسخ‌های به %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/replies.php:145 #, php-format @@ -3468,8 +3515,10 @@ msgstr "خوراک پاسخ‌ها برای %s (Atom)" #, 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 "این خط‌زمانی %s Ùˆ دوستانش است، اما هیچ‌یک تاکنون چیزی پست نکرده‌اند." +"notice to them yet." +msgstr "" +"این خط‌زمانی است Ú©Ù‡ پاسخ‌ها به %1$s را نشان می‌دهد، اما %2$s هنوز یک پیام به " +"توجه‌اش دریاÙت نکرده است." #: actions/replies.php:204 #, php-format @@ -3477,32 +3526,32 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" +"شما می‌توانید کاربران دیگر را در یک Ú¯Ùت‌وگو سرگرم کنید، مشترک اÙراد بیش‌تری " +"شوید یا [به گروه‌ها بپیوندید](%%action.groups%%)." #: 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 "" -"اولین کسی باشید Ú©Ù‡ در [این موضوع](%%%%action.newnotice%%%%?status_textarea=%" -"s) پیام می‌Ùرستد." +"شما می‌توانید [یادآوری %1$s](../%2$s) را امتØان کنید یا [به توجه او چیزی " +"بÙرستید](%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 #, php-format msgid "Replies to %1$s on %2$s!" -msgstr "" +msgstr "پاسخ‌های به %1$s در %2$s!" #: 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:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "وضعیت Øذ٠شد." @@ -3517,18 +3566,17 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" -msgstr "" +msgstr "نشست‌ها" #: actions/sessionsadminpanel.php:65 -#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "تنظیمات ظاهری برای این سایت." +msgstr "تنظیمات نشست برای این وب‌گاه StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" -msgstr "" +msgstr "مدیریت نشست‌ها" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." @@ -3536,52 +3584,48 @@ msgstr "" #: actions/sessionsadminpanel.php:181 msgid "Session debugging" -msgstr "" +msgstr "اشکال‌زدایی نشست" #: actions/sessionsadminpanel.php:183 msgid "Turn on debugging output for sessions." -msgstr "" +msgstr "خروجی اشکال‌زدایی برای نشست‌ها روشن شود." #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 msgid "Save site settings" -msgstr "" +msgstr "ذخیرهٔ تنظیمات وب‌گاه" #: actions/showapplication.php:82 -#, fuzzy msgid "You must be logged in to view an application." -msgstr "برای ترک یک گروه، شما باید وارد شده باشید." +msgstr "برای دیدن یک برنامه باید وارد شده باشید." #: actions/showapplication.php:157 -#, fuzzy msgid "Application profile" -msgstr "ابن خبر ذخیره ای ندارد ." +msgstr "نمایهٔ برنامه" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 msgid "Icon" -msgstr "" +msgstr "شمایل" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 -#, fuzzy msgid "Name" -msgstr "نام کاربری" +msgstr "نام" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "صÙØÙ‡ بندى" +msgstr "سازمان" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 msgid "Description" -msgstr "" +msgstr "توصیÙ" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "آمار" @@ -3589,11 +3633,11 @@ msgstr "آمار" #: actions/showapplication.php:203 #, php-format msgid "Created by %1$s - %2$s access by default - %3$d users" -msgstr "" +msgstr "ساخته شده توسط %1$s - دسترسی %2$s به صورت پیش‌Ùرض - %3$d کاربر" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "اعمال برنامه" #: actions/showapplication.php:236 msgid "Reset key & secret" @@ -3601,84 +3645,92 @@ msgstr "" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "اطلاعات برنامه" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "کلید مصرÙ‌کننده" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "رمز مصرÙ‌کننده" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "نشانی اینترنتی شناسهٔ درخواست" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "نشانی اینترنتی نشانهٔ درخواست" #: actions/showapplication.php:283 -#, fuzzy msgid "Authorize URL" -msgstr "مؤلÙ" +msgstr "نشانی اجازه‌دادن" #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" +"توجه: ما امضاهای HMAC-SHA1 را پشتیبانی می‌کنیم. ما روش امضای plaintext را " +"پشتیبانی نمی‌کنیم." #: actions/showapplication.php:309 -#, fuzzy msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "آیا اطمینان دارید Ú©Ù‡ می‌خواهید این پیام را پاک کنید؟" +msgstr "آیا مطمئن هستید Ú©Ù‡ می‌خواهید کلید Ùˆ رمز خریدار را دوباره تعیین کنید؟" #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "دوست داشتنی های %s" +msgstr "پیام‌های برگزیدهٔ %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." -msgstr "ناتوان در بازیابی Ø¢Ú¯Ù‡ÛŒ های Ù…Øبوب." +msgstr "نمی‌توان پیام‌های برگزیده را دریاÙت کرد." #: actions/showfavorites.php:171 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "" +msgstr "خوراک برای برگزیده‌های %s (RSS 1.0)" #: actions/showfavorites.php:178 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "" +msgstr "خوراک برای برگزیده‌های %s (RSS 2.0)" #: actions/showfavorites.php:185 #, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "" +msgstr "خوراک برای برگزیده‌های %s (Atom)" #: 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 +#, 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%%%%) اقدام نمی‌کنید Ùˆ سپس چیز جالبی را Ú©Ù‡ ممکن است " +"به برگزیده‌هایشان اضاÙÙ‡ کنند، بÙرستید :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3687,26 +3739,26 @@ msgstr "این یک راه است برای به اشتراک گذاشتن آنچ #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format msgid "%s group" -msgstr "" +msgstr "گروه %s" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "اعضای گروه %sØŒ صÙØÙ‡Ù” %d" +msgstr "گروه %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/showgroup.php:227 msgid "Group profile" -msgstr "" +msgstr "نمایهٔ گروه" #: actions/showgroup.php:272 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:178 msgid "URL" -msgstr "" +msgstr "نشانی اینترنتی" #: actions/showgroup.php:283 actions/tagother.php:128 #: actions/userauthorization.php:187 lib/userprofile.php:195 msgid "Note" -msgstr "" +msgstr "یادداشت" #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" @@ -3714,29 +3766,29 @@ msgstr "نام های مستعار" #: actions/showgroup.php:302 msgid "Group actions" -msgstr "" +msgstr "اعمال گروه" #: actions/showgroup.php:338 #, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "" +msgstr "خوراک پیام برای گروه %s (RSS 1.0)" #: actions/showgroup.php:344 #, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "" +msgstr "خوراک پیام برای گروه %s (RSS 2.0)" #: actions/showgroup.php:350 #, php-format msgid "Notice feed for %s group (Atom)" -msgstr "" +msgstr "خوراک پیام برای گروه %s (Atom)" #: actions/showgroup.php:355 #, php-format msgid "FOAF for %s group" -msgstr "" +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 "اعضا" @@ -3748,13 +3800,13 @@ msgstr "هیچ" #: actions/showgroup.php:404 msgid "All members" -msgstr "همه ÛŒ اعضا" +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." @@ -3763,8 +3815,14 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** یک گروه کاربری در %%%%site.name%%%%ØŒ یک سرویس [میکروبلاگینگ](http://" +"fa.wikipedia.org/wiki/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%D8%A7%DA%AF%" +"DB%8C%D9%86%DA%AF) بر پایهٔ نرم‌اÙزار آزاد [StatusNet](http://status.net/)ØŒ " +"است. کاربران آن پیام‌های کوتاهی را دربارهٔ زندگی Ùˆ علاقه‌مندی‌هایشان به اشتراک " +"می‌گذارند. [اکنون بپیوندید ](%%%%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." @@ -3772,10 +3830,15 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" +"**%s** یک گروه کاربری در %%%%site.name%%%%ØŒ یک سرویس [میکروبلاگینگ](http://" +"fa.wikipedia.org/wiki/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%D8%A7%DA%AF%" +"DB%8C%D9%86%DA%AF) بر پایهٔ نرم‌اÙزار آزاد [StatusNet](http://status.net/)ØŒ " +"است. کاربران آن پیام‌های کوتاهی را دربارهٔ زندگی Ùˆ علاقه‌مندی‌هایشان به اشتراک " +"می‌گذارند. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" -msgstr "" +msgstr "مدیران" #: actions/showmessage.php:81 msgid "No such message." @@ -3783,78 +3846,78 @@ msgstr "چنین پیغامی وجود ندارد." #: actions/showmessage.php:98 msgid "Only the sender and recipient may read this message." -msgstr "" +msgstr "تنها Ùرستنده Ùˆ گیرنده می‌توانند این پیام را بخوانند." #: actions/showmessage.php:108 #, php-format msgid "Message to %1$s on %2$s" -msgstr "" +msgstr "پیام به %1$s در %2$s" #: actions/showmessage.php:113 #, php-format msgid "Message from %1$s on %2$s" -msgstr "" +msgstr "پیام از %1$s در %2$s" #: actions/shownotice.php:90 msgid "Notice deleted." -msgstr "" +msgstr "پیام پاک شد." #: actions/showstream.php:73 #, php-format msgid " tagged %s" -msgstr "" +msgstr " برچسب‌گذاری‌شده %s" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s کاربران مسدود شده، صÙØه‌ی %d" +msgstr "%1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "خوراک پاسخ‌ها برای %s (RSS 1.0)" +msgstr "خوراک پیام‌های %1$s دارای برچسب %2$s (RSS 1.0)" #: actions/showstream.php:129 #, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "" +msgstr "خوراک پیام‌های %s (RSS 1.0)" #: actions/showstream.php:136 #, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "" +msgstr "خوراک پیام‌های %s (RSS 2.0)" #: actions/showstream.php:143 #, php-format msgid "Notice feed for %s (Atom)" -msgstr "" +msgstr "خوراک پیام‌های %s (Atom)" #: actions/showstream.php:148 #, php-format msgid "FOAF for %s" -msgstr "" +msgstr "FOAF برای %s" #: actions/showstream.php:200 -#, fuzzy, php-format +#, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." -msgstr "این خط‌زمانی %s Ùˆ دوستانش است، اما هیچ‌یک تاکنون چیزی پست نکرده‌اند." +msgstr "این خط‌زمانی %1$s است، اما %2$s تاکنون چیزی Ù†Ùرستاده است." #: 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 #, 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) پیام می‌Ùرستد." +"شما می‌توانید یادآوری %1$s را امتØان کنید یا [به توجه او چیزی بÙرستید](%%%%" +"action.newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -3864,6 +3927,11 @@ msgid "" "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** یک Øساب در %%%%site.name%%%%ØŒ یک سرویس ]میکروبلاگینگ[(http://fa." +"wikipedia.org/wiki/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%D8%A7%DA%AF%DB%" +"8C%D9%86%DA%AF) بر پایهٔ نرم‌اÙزار آزاد [StatusNet](http://status.net/) " +"،دارد. ]اکنون بپیوندید[(%%%%action.register%%%%) تا پیام‌های **%s** Ùˆ بلکه " +"بیش‌تر را دنبال کنید! (]بیش‌تر بخوانید[(%%%%doc.help%%%%))" #: actions/showstream.php:248 #, php-format @@ -3872,11 +3940,14 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" +"**%s** یک Øساب در %%%%site.name%%%%ØŒ یک سرویس ]میکروبلاگینگ[(http://fa." +"wikipedia.org/wiki/%D9%85%DB%8C%DA%A9%D8%B1%D9%88%D8%A8%D9%84%D8%A7%DA%AF%DB%" +"8C%D9%86%DA%AF) بر پایهٔ نرم‌اÙزار آزاد [StatusNet](http://status.net/) ،دارد. " #: actions/showstream.php:305 #, php-format msgid "Repeat of %s" -msgstr "" +msgstr "تکرار %s" #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." @@ -3887,18 +3958,16 @@ msgid "User is already silenced." msgstr "کاربر قبلا ساکت شده است." #: actions/siteadminpanel.php:69 -#, fuzzy msgid "Basic settings for this StatusNet site" -msgstr "تنظیمات پایه ای برای این سایت StatusNet." +msgstr "تنظیمات پایه برای این وب‌گاه StatusNet" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." -msgstr "نام سایت باید طولی غیر صÙر داشته باشد." +msgstr "نام وب‌گاه باید طولی غیر صÙر داشته باشد." #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "شما باید یک آدرس ایمیل قابل قبول برای ارتباط داشته باشید" +msgstr "شما باید یک نشانی پست الکترونیکی معتبر برای ارتباط داشته باشید." #: actions/siteadminpanel.php:159 #, php-format @@ -3907,7 +3976,7 @@ msgstr "" #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "کمینهٔ Ù…Øدودیت متن Û° است (نامØدود)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3915,7 +3984,7 @@ msgstr "" #: actions/siteadminpanel.php:221 msgid "General" -msgstr "" +msgstr "عمومی" #: actions/siteadminpanel.php:224 msgid "Site name" @@ -3927,23 +3996,23 @@ msgstr "نام وب‌گاه شما، مانند «میکروبلاگ شرکت Ø #: actions/siteadminpanel.php:229 msgid "Brought by" -msgstr "أورده شده به وسیله ÛŒ" +msgstr "آورده‌شده به وسیلهٔ" #: actions/siteadminpanel.php:230 msgid "Text used for credits link in footer of each page" -msgstr "" +msgstr "متن استÙاده‌شده برای پیوند سازندگان در انتهای هر صÙØÙ‡" #: actions/siteadminpanel.php:234 msgid "Brought by URL" -msgstr "" +msgstr "آورده‌شده با نشانی اینترنتی" #: actions/siteadminpanel.php:235 msgid "URL used for credits link in footer of each page" -msgstr "" +msgstr "نشانی اینترنتی استÙاده‌شده برای پیوند سازندگان در انتهای هر صÙØÙ‡" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "" +msgstr "نشانی پست الکترونیکی تماس برای وب‌گاه شما" #: actions/siteadminpanel.php:245 msgid "Local" @@ -3951,20 +4020,19 @@ msgstr "Ù…ØÙ„ÛŒ" #: actions/siteadminpanel.php:256 msgid "Default timezone" -msgstr "منطقه ÛŒ زمانی پیش Ùرض" +msgstr "منطقهٔ زمانی پیش‌Ùرض" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "منظقه ÛŒ زمانی پیش Ùرض برای سایت؛ معمولا UTC." +msgstr "منظقهٔ زمانی پیش‌Ùرض برای وب‌گاه؛ معمولا UTC." #: actions/siteadminpanel.php:262 -#, fuzzy msgid "Default language" -msgstr "زبان پیش Ùرض سایت" +msgstr "زبان پیش‌Ùرض" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" -msgstr "" +msgstr "شناسایی خودکار زبان وب‌گاه از راه تنظیمات مرورگر در دسترس نیست." #: actions/siteadminpanel.php:271 msgid "Limits" @@ -3976,7 +4044,7 @@ msgstr "Ù…Øدودیت متن" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "بیشینهٔ تعداد Øرو٠برای آگهی‌ها" +msgstr "بیشینهٔ تعداد نویسه‌ها برای پیام‌ها." #: actions/siteadminpanel.php:278 msgid "Dupe limit" @@ -3985,47 +4053,40 @@ msgstr "" #: actions/siteadminpanel.php:278 msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -"Ú†Ù‡ مدت کاربران باید منتظر بمانند ( به ثانیه ) تا همان چیز را مجددا ارسال " -"کنند." +"Ú†Ù‡ مدت کاربران باید منتظر بمانند (به ثانیه) تا همان چیز را دوباره بÙرستند." #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "خبر سایت" +msgstr "پیام وب‌گاه" #: actions/sitenoticeadminpanel.php:67 -#, fuzzy msgid "Edit site-wide message" -msgstr "پیام جدید" +msgstr "ویرایش پیام عمومی وب‌گاه" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "نمی‌توان تنظیمات طرØ‌تان را ذخیره کرد." +msgstr "نمی‌توان پیام وب‌گاه را ذخیره کرد." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "" +msgstr "بیشینهٔ طول برای پیام عمومی وب‌گاه Û²ÛµÛµ نویسه است." #: actions/sitenoticeadminpanel.php:176 -#, fuzzy msgid "Site notice text" -msgstr "خبر سایت" +msgstr "متن پیام وب‌گاه" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" -msgstr "" +msgstr "متن پیام عمومی وب‌گاه (Øداکثر Û²ÛµÛµ نویسه؛ می‌توان از HTML استÙاده کرد)" #: actions/sitenoticeadminpanel.php:198 -#, fuzzy msgid "Save site notice" -msgstr "خبر سایت" +msgstr "ذخیرهٔ پیام وب‌گاه" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "تنظیمات پیام‌رسان Ùوری" +msgstr "تنظیمات پیامک" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4033,22 +4094,22 @@ msgstr "تنظیمات پیام‌رسان Ùوری" #, php-format msgid "You can receive SMS messages through email from %%site.name%%." msgstr "" +"شما می‌توانید پیامک‌ها را از راه پست الکترونیک از %%site.name%% دریاÙت کنید." #. 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 "" +msgstr "پیامک در دسترس نیست." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "نشانی پیام‌رسان Ùوری" +msgstr "نشانی پیامک" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 msgid "Current confirmed SMS-enabled phone number." -msgstr "" +msgstr "شمارهٔ تلÙÙ† با قابلیت Ùرستادن پیامک Ú©Ù‡ در Øال Øاضر تایید شده است." #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 @@ -4063,20 +4124,18 @@ msgstr "کد تاییدیه" #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 msgid "Enter the code you received on your phone." -msgstr "کدی را Ú©Ù‡ در گوشیتان گرÙتید وارد کنید." +msgstr "کدی را Ú©Ù‡ در گوشی‌تان دریاÙت کردید، وارد کنید" #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "تایید" #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "شماره تماس پیامک" +msgstr "شمارهٔ تماس پیامک" #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4085,9 +4144,8 @@ msgstr "شماره تلÙن، بدون نشانه گذاری یا Ùاصله، Ø #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "ترجیØات" +msgstr "ترجیØات پیامک" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4095,12 +4153,13 @@ 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 -#, fuzzy msgid "SMS preferences saved." -msgstr "تنظیمات ذخیره شد." +msgstr "تنظیمات پیامک ذخیره شد." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4110,7 +4169,7 @@ msgstr "بدون شماره تلÙÙ†." #. TRANS: Message given saving SMS phone number without having selected a carrier. #: actions/smssettings.php:344 msgid "No carrier selected." -msgstr "" +msgstr "هیچ اپراتوری انتخاب نشده است." #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 @@ -4128,41 +4187,39 @@ 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 "آن کد تاییدیه ÛŒ نادرست است." +msgstr "این کد تاییدیه نادرست است." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "تایید Ùسخ شد." +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 "آن شماره تلÙÙ† شما نیست." +msgstr "این شمارهٔ تلÙÙ† شما نیست." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "شماره تماس پیامک" +msgstr "شماره تماس پیامک پاک شد." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" -msgstr "امواج موبایل" +msgstr "اپراتور موبایل" #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 msgid "Select a carrier" -msgstr "" +msgstr "یک اپراتور را انتخاب کنید" #. TRANS: Form instructions for mobile carrier dropdown menu in SMS settings. #. TRANS: %s is an administrative contact's e-mail address. @@ -4172,6 +4229,9 @@ 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 "" +"اپراتور موبایل برای گوشی شما. اگر شما اپراتوری را می‌شناسید Ú©Ù‡ از پیامک از " +"راه پست الکترونیک پشتیبانی می‌کند، اما این‌جا Ùهرست نشده است، در %s نامه " +"بÙرستید تا ما باخبر شویم." #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 @@ -4180,26 +4240,25 @@ msgstr "کدی وارد نشد" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" -msgstr "" +msgstr "تصاویر Ù„Øظه‌ای" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "تغییر پیکربندی سایت" +msgstr "مدیریت پیکربندی تصویر Ù„Øظه‌ای" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." -msgstr "" +msgstr "مقدار اجرای تصویر Ù„Øظه‌ای نامعتبر است." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." -msgstr "" +msgstr "تناوب تصویر Ù„Øظه‌ای باید یک عدد باشد." #: actions/snapshotadminpanel.php:144 msgid "Invalid snapshot report URL." -msgstr "" +msgstr "نشانی اینترنتی گزارش تصویر Ù„Øظه‌ای نامعتبر است." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" @@ -4207,19 +4266,19 @@ msgstr "" #: actions/snapshotadminpanel.php:201 msgid "In a scheduled job" -msgstr "" +msgstr "در یک وظیÙÙ‡Ù” برنامه‌ریزی‌شده" #: actions/snapshotadminpanel.php:206 msgid "Data snapshots" -msgstr "" +msgstr "داده‌های تصاویر Ù„Øظه‌ای" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" -msgstr "" +msgstr "زمان Ùرستادن داده‌های آماری به کارگزارهای status.net" #: actions/snapshotadminpanel.php:217 msgid "Frequency" -msgstr "" +msgstr "Ùرکانس" #: actions/snapshotadminpanel.php:218 msgid "Snapshots will be sent once every N web hits" @@ -4227,72 +4286,72 @@ msgstr "" #: actions/snapshotadminpanel.php:226 msgid "Report URL" -msgstr "" +msgstr "نشانی اینترنتی گزارش" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "تصاویر Ù„Øظه‌ای به این نشانی اینترنتی Ùرستاده می‌شوند" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "تنظیمات چهره" +msgstr "ذخیرهٔ تنظیمات تصویر Ù„Øظه‌ای" #: actions/subedit.php:70 msgid "You are not subscribed to that profile." -msgstr "شما به این پروÙيل متعهد نشدید" +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 "" +msgstr "نمی‌توان اشتراک را ذخیره کرد." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." -msgstr "" +msgstr "این عمل تنها درخواست‌های POST را می‌پذیرد." #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "چنین پرونده‌ای وجود ندارد." +msgstr "چنین نمایه‌ای وجود ندارد." #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "شما به این پروÙيل متعهد نشدید" +msgstr "نمی‌توان با این کار مشترک یک نمایهٔ از راه دور OMB 0.1شد." #: actions/subscribe.php:145 msgid "Subscribed" -msgstr "" +msgstr "مشترک‌شده" #: actions/subscribers.php:50 #, php-format msgid "%s subscribers" -msgstr "" +msgstr "%s مشترک" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s کاربران مسدود شده، صÙØه‌ی %d" +msgstr "مشترک‌های %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." -msgstr "این ها کسانی هستند Ú©Ù‡ به Ø¢Ú¯Ù‡ÛŒ های شما گوش Ù…ÛŒ دهند." +msgstr "این‌ها کسانی هستند Ú©Ù‡ پیام‌های شما را دنبال می‌کنند." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "" +msgstr "این‌ها کسانی هستند Ú©Ù‡ پیام‌های %s را دنبال می‌کنند." #: actions/subscribers.php:108 msgid "" "You have no subscribers. Try subscribing to people you know and they might " "return the favor" msgstr "" +"شما هیچ مشترکی ندارید. تلاش کنید Ú©Ù‡ مشترک اÙرادی شوید Ú©Ù‡ می‌شناسید Ùˆ شاید " +"آن‌ها هم مشترک شما شوند." #: actions/subscribers.php:110 #, php-format msgid "%s has no subscribers. Want to be the first?" -msgstr "" +msgstr "%s هیچ مشترکی ندارد. می‌خواهید اولین مشترک باشید؟" #: actions/subscribers.php:114 #, php-format @@ -4300,25 +4359,27 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"%s هیچ مشترکی ندارد. چرا ]یک Øساب ثبت نمی‌کنید[(%%%%action.register%%%%) Ùˆ " +"اولین مشترک نمی‌شوید؟" #: actions/subscriptions.php:52 #, php-format msgid "%s subscriptions" -msgstr "" +msgstr "%s اشتراک" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "%d گروه , صÙØÙ‡ %S" +msgstr "اشتراک‌های %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." -msgstr "" +msgstr "این‌ها کسانی هستند Ú©Ù‡ پیام‌هایشان را دنبال می‌کنید." #: actions/subscriptions.php:69 #, php-format msgid "These are the people whose notices %s listens to." -msgstr "" +msgstr "این‌ها کسانی هستند Ú©Ù‡ %s پیام‌هایشان را دنبال می‌کند." #: actions/subscriptions.php:126 #, php-format @@ -4329,11 +4390,17 @@ msgid "" "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can " "automatically subscribe to people you already follow there." msgstr "" +"شما در Øال Øاضر پیام‌های هیچ‌کس را دنبال نمی‌کنید، تلاش کنید Ú©Ù‡ مشترک اÙرادی Ú©Ù‡ " +"می‌شناسید شوید. [جست‌وجوی اÙراد](%%action.peoplesearch%%) را امتØان کنید، " +"اعضای گروه‌هایی را Ú©Ù‡ به آن‌ها علاقه دارید Ùˆ یا [کاربران برجسته](%%action." +"featured%%) را جست‌وجو کنید. اگر شما یک [کاربر توییتر](%%action." +"twittersettings%%) هستید، شما می‌توانید به‌صورت خودکار مشترک اÙرادی شوید Ú©Ù‡ " +"اکنون آن‌جا آن‌ها را دنبال می‌کنید." #: actions/subscriptions.php:128 actions/subscriptions.php:132 #, php-format msgid "%s is not listening to anyone." -msgstr "" +msgstr "%s هیچ‌کس را دنبال نمی‌کند." #: actions/subscriptions.php:208 msgid "Jabber" @@ -4341,27 +4408,27 @@ msgstr "" #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 msgid "SMS" -msgstr "" +msgstr "پیامک" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "کاربران خود برچسب‌گذاری شده با %s - صÙØÙ‡Ù” %d" +msgstr "پیام‌های برچسب‌دار شده با %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/tag.php:87 #, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "" +msgstr "خوراک پیام برای برچسب %s (RSS 1.0)" #: actions/tag.php:93 #, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "" +msgstr "خوراک پیام برای برچسب %s (RSS 2.0)" #: actions/tag.php:99 #, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "" +msgstr "خوراک پیام برای برچسب %s (Atom)" #: actions/tagother.php:39 msgid "No ID argument." @@ -4370,47 +4437,46 @@ msgstr "" #: actions/tagother.php:65 #, php-format msgid "Tag %s" -msgstr "" +msgstr "برچسب %s" #: actions/tagother.php:77 lib/userprofile.php:76 msgid "User profile" -msgstr "پروÙایل کاربر" +msgstr "نمایهٔ کاربر" #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" -msgstr "" +msgstr "تصویر" #: actions/tagother.php:141 msgid "Tag user" -msgstr "" +msgstr "برچسب‌گذاری کاربر" #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" msgstr "" +"برچسب‌ها برای این کاربر (ØروÙØŒ اعداد، -ØŒ .ØŒ Ùˆ _)ØŒ جدا شده با کاما- یا Ùاصله-" #: actions/tagother.php:193 msgid "" "You can only tag people you are subscribed to or who are subscribed to you." msgstr "" +"شما تنها می‌توانید اÙرادی را برچسب‌دار کنید Ú©Ù‡ مشترک آن‌ها هستید یا آن‌ها مشترک " +"شما هستند." #: actions/tagother.php:200 msgid "Could not save tags." -msgstr "" +msgstr "نمی‌توان برچسب‌ها را ذخیره کرد." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." -msgstr "" +msgstr "از این روش برای اÙزودن برچسب به مشترک‌ها یا اشتراک‌هایتان استÙاده کنید." #: actions/tagrss.php:35 msgid "No such tag." -msgstr "" - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "روش API در دست ساخت." +msgstr "چنین برچسبی وجود ندارد." #: actions/unblock.php:59 msgid "You haven't blocked that user." @@ -4425,13 +4491,12 @@ msgid "User is not silenced." msgstr "کاربر ساکت نشده است." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "کاربری با چنین شناسه‌ای وجود ندارد." +msgstr "هیچ شناسهٔ نمایه‌ای درخواست نشده است." #: actions/unsubscribe.php:98 msgid "Unsubscribed" -msgstr "" +msgstr "لغو اشتراک شده" #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format @@ -4441,45 +4506,44 @@ msgstr "" #. TRANS: User admin panel title #: actions/useradminpanel.php:59 -#, fuzzy msgctxt "TITLE" msgid "User" msgstr "کاربر" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "" +msgstr "تنظیمات کاربری برای این وب‌گاه StatusNet." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." -msgstr "" +msgstr "Ù…Øدودیت شرØ‌Øال نادرست است. مقدار Ù…Øدودیت باید عددی باشد." #: actions/useradminpanel.php:155 msgid "Invalid welcome text. Max length is 255 characters." -msgstr "" +msgstr "متن خوشامدگویی نامعتبر است. بیشینهٔ طول متن Û²ÛµÛµ نویسه است." #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "" +msgstr "اشتراک پیش‌Ùرض نامعتبر است: «%1$s» کاربر نیست." #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 #: lib/personalgroupnav.php:109 msgid "Profile" -msgstr "" +msgstr "نمایه" #: actions/useradminpanel.php:222 msgid "Bio Limit" -msgstr "" +msgstr "Ù…Øدودیت شرØ‌Øال" #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." -msgstr "Øداکثر طول یک زندگی نامه(در پروÙایل) بر Øسب کاراکتر." +msgstr "بیشینهٔ طول یک شرØ‌Øال نمایه بر اساس نویسه‌ها." #: actions/useradminpanel.php:231 msgid "New users" -msgstr "" +msgstr "کاربران تازه" #: actions/useradminpanel.php:235 msgid "New user welcome" @@ -4487,19 +4551,19 @@ msgstr "خوشامدگویی کاربر جدید" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." -msgstr "پیام خوشامدگویی برای کاربران جدید( Øداکثر 255 کاراکتر)" +msgstr "متن خوشامدگویی برای کاربران جدید (Øداکثر Û²ÛµÛµ نویسه)." #: actions/useradminpanel.php:241 msgid "Default subscription" -msgstr "" +msgstr "اشتراک پیش‌Ùرض" #: actions/useradminpanel.php:242 msgid "Automatically subscribe new users to this user." -msgstr "" +msgstr "به صورت خودکار کاربران تازه‌وارد را مشترک این کاربر Ú©Ù†." #: actions/useradminpanel.php:251 msgid "Invitations" -msgstr "دعوت نامه ها" +msgstr "دعوت‌نامه‌ها" #: actions/useradminpanel.php:256 msgid "Invitations enabled" @@ -4507,11 +4571,11 @@ msgstr "دعوت نامه ها Ùعال شدند" #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." -msgstr "خواه به کاربران اجازه ÛŒ دعوت کردن کاربران جدید داده شود." +msgstr "چنان‌که به کاربران اجازهٔ دعوت‌کردن کاربران تازه داده شود." #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "" +msgstr "تصدیق اشتراک" #: actions/userauthorization.php:110 msgid "" @@ -4519,10 +4583,13 @@ msgid "" "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:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" -msgstr "لیسانس" +msgstr "مجوز" #: actions/userauthorization.php:217 msgid "Accept" @@ -4531,7 +4598,7 @@ msgstr "پذیرÙتن" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 msgid "Subscribe to this user" -msgstr "تصویب این کاریر" +msgstr "مشترک شدن این کاربر" #: actions/userauthorization.php:219 msgid "Reject" @@ -4539,15 +4606,15 @@ msgstr "رد کردن" #: actions/userauthorization.php:220 msgid "Reject this subscription" -msgstr "" +msgstr "رد کردن این اشتراک" #: actions/userauthorization.php:232 msgid "No authorization request!" -msgstr "" +msgstr "هیچ درخواست اجازه‌ای وجود ندارد!" #: actions/userauthorization.php:254 msgid "Subscription authorized" -msgstr "" +msgstr "اشتراک تصدیق شد" #: actions/userauthorization.php:256 msgid "" @@ -4558,7 +4625,7 @@ msgstr "" #: actions/userauthorization.php:266 msgid "Subscription rejected" -msgstr "" +msgstr "اشتراک پذیرÙته نشد" #: actions/userauthorization.php:268 msgid "" @@ -4585,32 +4652,34 @@ msgstr "" #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "نشانی اینترنتی نمایهٔ «%s» برای یک کاربر Ù…ØÙ„ÛŒ است." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "نشانی تصویر چهره «%s» معتبر نیست." #: actions/userauthorization.php:350 #, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "" +msgstr "نمی‌توان نشانی اینترنتی چهره را خواند«%s»." #: actions/userauthorization.php:355 #, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "" +msgstr "نوع تصویر برای نشانی اینترنتی چهره نادرست است «%s»." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" -msgstr "طراØÛŒ پروÙیل" +msgstr "طراØÛŒ نمایه" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" "Customize the way your profile looks with a background image and a colour " "palette of your choice." msgstr "" +"شیوهٔ نمایش نمایهٔ خود را با یک تصویر پیش‌زمینه Ùˆ یک رنگ از جعبهٔ رنگ‌ها به " +"انتخاب خودتان سÙارشی‌سازی کنید." #: actions/userdesignsettings.php:282 msgid "Enjoy your hotdog!" @@ -4618,9 +4687,9 @@ 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 -#, fuzzy, php-format +#, php-format msgid "%1$s groups, page %2$d" -msgstr "اعضای گروه %sØŒ صÙØÙ‡Ù” %d" +msgstr "گروه‌های %1$sØŒ صÙØÙ‡Ù” %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" @@ -4629,152 +4698,212 @@ msgstr "جستجو برای گروه های بیشتر" #: actions/usergroups.php:159 #, php-format msgid "%s is not a member of any group." -msgstr "" +msgstr "%s عضو هیچ گروهی نیست." #: actions/usergroups.php:164 #, php-format msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." msgstr "" +"[جست‌وجوی گروه‌ها](%%action.groupsearch%%) را امتØان کنید Ùˆ به آن‌ها بپیوندید." #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "به روز رسانی‌های %1$s در %2$s" -#: actions/version.php:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "آمار" -#: actions/version.php:153 +#: 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 "" +"این وب‌گاه برگرÙته از قدرت %1$s نسخهٔ %2$s دارای ØÙ‚ تکثیر ۲۰۰۸−۲۰۰۹ StatusNet " +"Inc. Ùˆ مشارکت‌کنندگان است." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" -msgstr "" +msgstr "مشارکت‌کنندگان" -#: actions/version.php:168 +#: 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 "" +"StatusNet یک نرم‌اÙزار آزاد است: شما می‌توانید آن را بازتوزیع کنید Ùˆ/یا آن را " +"تØت شرایط مجوز GNU Affero General Public License نسخهٔ ۳، یا (به انتخاب شما) " +"هر نسخهٔ بعدی دیگری، Ú©Ù‡ توسط بنیاد نرم‌اÙزارهای آزاد منتشر شده است، ویرایش کنید" -#: actions/version.php:174 +#: 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 "" +"این برنامه به امید این‌که سودمند خواهد بود، توزیع شده است، اما بدون ضمانت؛ " +"Øتی بدون ضمانت جزئی دارای Ú©ÛŒÙیت Ùروش یا مناسب بودن برای هدÙÛŒ خاص. برای " +"جزئیات بیش‌تر مجوز «GNU Affero General Public License» را ببینید. " -#: actions/version.php:180 +#: 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 "" +"شما باید یک رونوشت از مجوز GNU Affero General Public License را همراه این " +"برنامه دریاÙت کرده باشید. اگر چنین نیست، %s را ببینید." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" -msgstr "" +msgstr "اÙزونه‌ها" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 -#, fuzzy +#: actions/version.php:198 lib/action.php:789 msgid "Version" -msgstr "شخصی" +msgstr "نسخه" -#: actions/version.php:197 -#, fuzzy +#: actions/version.php:199 msgid "Author(s)" -msgstr "مؤلÙ" +msgstr "مؤلÙ(ها)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "" +msgstr "پیوستن به گروه شکست خورد." -#: classes/Group_member.php:53 -#, fuzzy +#. 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 "نمی‌توان گروه را به‌هنگام‌سازی کرد." +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 "" +msgstr "ترک کردن گروه شکست خورد." -#: classes/Local_group.php:41 -#, fuzzy +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 msgid "Could not update local group." -msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد." +msgstr "نمی‌توان گروه Ù…ØÙ„ÛŒ را به‌هنگام‌سازی کرد." -#: classes/Login_token.php:76 -#, fuzzy, php-format +#. 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 "نمی‌توان نام‌های مستعار را ساخت." +msgstr "نمی‌توان رمز ورود را برای %s ایجاد کرد" + +#. 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 "" -#: classes/Message.php:45 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" -msgstr "" +msgstr "هنگام اÙزودن برچسب خطا در پایگاه داده رخ داد: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4782,92 +4911,140 @@ msgstr "" "تعداد زیاد پیام های دو نسخه ای Ùˆ بسرعت؛ استراØت کنید Ùˆ دقایقی دیگر مجددا " "ارسال کنید." -#: classes/Notice.php:266 +#. 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 "شما از Ùرستادن پست در این سایت مردود شدید ." +msgstr "شما از Ùرستادن پیام در این وب‌گاه منع شده‌اید." -#: classes/Notice.php:332 classes/Notice.php:358 +#. 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 "مشکل در ذخیره کردن Ø¢Ú¯Ù‡ÛŒ." +msgstr "هنگام ذخیرهٔ پیام مشکلی ایجاد شد." -#: classes/Notice.php:967 -#, fuzzy +#. 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 "مشکل در ذخیره کردن Ø¢Ú¯Ù‡ÛŒ." +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:1552 +#: classes/Notice.php:1745 #, php-format msgid "RT @%1$s %2$s" msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -msgid "You have been banned from subscribing." +#. 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:737 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." msgstr "" -#: classes/Subscription.php:78 +#. 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:746 +#, 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 "شما از اشتراک منع شده‌اید." + +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" -msgstr "قبلا تایید شده !" +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 "" +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 +#, 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." -msgstr "نمی‌توان تصدیق پست الکترونیک را پاک کرد." +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 +#, 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!" +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 "" +msgstr "نمی‌توان عضویت گروه را تعیین کرد." -#: classes/User_group.php:524 -#, fuzzy +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." -msgstr "نمی‌توان شناس‌نامه را ذخیره کرد." +msgstr "نمی‌توان اطلاعات گروه Ù…ØÙ„ÛŒ را ذخیره کرد." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" -msgstr "تنضبمات پروÙيلتان را تغیر دهید" +msgstr "تنظیمات نمایه‌تان را تغییر دهید" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 msgid "Upload an avatar" -msgstr "یک آواتار ارسال کنید" +msgstr "بارگذاری یک چهره" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 msgid "Change your password" -msgstr "کلمه ÛŒ عبور خود را تغییر دهید" +msgstr "تغییر گذرواژهٔ شما" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:130 @@ -4877,7 +5054,7 @@ msgstr "تغیر تنظیمات ایمل ." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 msgid "Design your profile" -msgstr "پروÙایل خود را طراØÛŒ کنید" +msgstr "نمایهٔ خود را طراØÛŒ کنید" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 @@ -4898,272 +5075,261 @@ msgstr "%s گروه %s را ترک کرد." #. TRANS: Page title for a page without a title set. #: lib/action.php:161 msgid "Untitled page" -msgstr "صÙØÙ‡ ÛŒ بدون عنوان" +msgstr "صÙØÙ‡Ù” بدون عنوان" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" -msgstr "" +msgstr "مسیریابی اصلی وب‌گاه" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" -msgstr "" +msgstr "نمایهٔ شخصی Ùˆ خط‌زمانی دوستان" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 -#, fuzzy +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "شخصی" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "آدرس ایمیل، آواتار، کلمه ÛŒ عبور، پروÙایل خود را تغییر دهید" +msgstr "پست الکترونیکی، تصویر، گذرواژه یا نمایهٔ خودتان را تغییر دهید" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:452 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "وصل‌شدن" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" -msgstr "تغییر پیکربندی سایت" +msgstr "تغییر پیکربندی وب‌گاه" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 -#, fuzzy +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "مدیر" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:465 +#, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr " به شما ملØÙ‚ شوند %s دوستان Ùˆ همکاران را دعوت کنید تا در" +msgstr "دوستان Ùˆ همکاران‌تان را دعوت کنید تا به شما در %s بپیوندند" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 -#, fuzzy +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "دعوت‌کردن" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "خارج شدن از سایت ." +msgstr "خارج‌شدن از وب‌گاه" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 -#, fuzzy +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "خروج" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "یک Øساب کاربری بسازید" +msgstr "ساختن یک جساب‌کاربری" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy +#: lib/action.php:485 msgctxt "MENU" msgid "Register" -msgstr "ثبت نام" +msgstr "ثبت‌نام" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "ورود به وب‌گاه" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "ورود" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "به من Ú©Ù…Ú© کنید!" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Ú©Ù…Ú©" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "جستجو برای شخص با متن" +msgstr "جست‌وجو برای اÙراد یا متن" -#: lib/action.php:493 -#, fuzzy +#: 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:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" -msgstr "خبر سایت" +msgstr "پیام وب‌گاه" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "دید Ù…ØÙ„ÛŒ" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" -msgstr "خبر صÙØÙ‡" +msgstr "پیام صÙØÙ‡" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" -msgstr "" +msgstr "مسیریابی Ùرعی وب‌گاه" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Ú©Ù…Ú©" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "دربارهٔ" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "سوال‌های رایج" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" -msgstr "" +msgstr "شرایط سرویس" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "خصوصی" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "منبع" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "تماس" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" -msgstr "" +msgstr "نشان" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet مجوز نرم اÙزار" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" +"**%%site.name%%** یک سرویس میکروبلاگینگ Ú©Ù‡ توسط [%%site.broughtby%%](%%site." +"broughtbyurl%%) برای شما راه‌اندازی شده است." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." -msgstr "" +msgstr "**%%site.name%%** یک سرویس میکروبلاگینگ است." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: 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 "" +"این وب‌گاه نرم‌اÙزار میکروبلاگینگ [StatusNet](http://status.net/) نسخهٔ %s را " +"اجرا می‌کند Ú©Ù‡ زیر مجوز [GNU Affero General Public License](http://www.fsf." +"org/licensing/licenses/agpl-3.0.html) در دسترس است." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" -msgstr "مجوز Ù…Øتویات سایت" +msgstr "مجوز Ù…Øتویات وب‌گاه" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +msgstr "Ù…Øتویات Ùˆ داده‌های %1$s خصوصی Ùˆ Ù…Øرمانه هستند." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." -msgstr "" +msgstr "ØÙ‚ تکثیر Ù…Øتوا Ùˆ داده‌ها با %1$s است. تمام Øقوق Ù…ØÙوظ است." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." -msgstr "" +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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +msgstr "تمام Ù…Øتویات Ùˆ داده‌های %1$s زیر مجوز %2$s در دسترس هستند." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: 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:1193 +#: lib/action.php:1203 msgid "After" -msgstr "بعد از" +msgstr "پس از" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "قبل از" @@ -5171,39 +5337,39 @@ msgstr "قبل از" #: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" +"در Øال انتظار برای یک عامل خوراک ریشه‌ای، اما یک سند XML کامل دریاÙت شد." #: lib/activityutils.php:208 msgid "Can't handle remote content yet." -msgstr "" +msgstr "هنوز نمی‌توان Ù…Øتویات ازراه‌دور را به‌کار برد." #: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "هنوز نمی‌توان Ù…Øتویات XML جاسازی‌شده را به‌کار برد." #: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." -msgstr "" +msgstr "هنوز نمی‌توان Ù…Øتوای جاسازی‌شدهٔ Base64 را به‌کار برد." #. 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 "شما نمی توانید در این سایت تغیری ایجاد کنید" +msgstr "شما نمی توانید در این وب‌گاه تغییر ایجاد کنید" #. TRANS: Client error message throw when a certain panel's settings cannot be changed. #: lib/adminpanelaction.php:110 -#, fuzzy msgid "Changes to that panel are not allowed." -msgstr "اجازه‌ی ثبت نام داده نشده است." +msgstr "تغییرات در آن قطعه مجاز نیست." #. TRANS: Client error message. #: lib/adminpanelaction.php:229 msgid "showForm() not implemented." -msgstr "" +msgstr "showForm() پیاده نشده است." #. TRANS: Client error message #: lib/adminpanelaction.php:259 msgid "saveSettings() not implemented." -msgstr "" +msgstr "saveSettings() پیاده نشده است." #. TRANS: Client error message thrown if design settings could not be deleted in #. TRANS: the admin panel Design. @@ -5212,150 +5378,144 @@ msgid "Unable to delete design setting." msgstr "نمی توان تنظیمات طراØÛŒ شده را پاک کرد ." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" -msgstr "پیکره بندی اصلی سایت" +msgstr "پیکربندی اولیه وب‌گاه" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" -msgstr "سایت" +msgstr "وب‌گاه" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" -msgstr "" +msgstr "پیکربندی طرØ" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "طرØ" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "پیکره بندی اصلی سایت" +msgstr "پیکربندی کاربر" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "کاربر" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "پیکره بندی اصلی سایت" +msgstr "پیکربندی دسترسی" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" -msgstr "" +msgstr "پیکربندی مسیرها" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "پیکره بندی اصلی سایت" +msgstr "پیکربندی نشست‌ها" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "خبر سایت" +msgstr "ویرایش پیام وب‌گاه" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "پیکره بندی اصلی سایت" +msgstr "پیکربندی تصاویر Ù„Øظه‌ای" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" +"منبع API به دسترسی خواندن-نوشتن نیاز دارد، اما شما تنها دسترسی خواندن را " +"دارید." #. TRANS: Form legend. #: lib/applicationeditform.php:137 msgid "Edit application" -msgstr "" +msgstr "ویرایش برنامه" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "شمایل این برنامه" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 #, php-format msgid "Describe your application in %d characters" -msgstr "" +msgstr "برنامهٔ خود را در %d نویسه توصی٠کنید" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 msgid "Describe your application" -msgstr "" +msgstr "برنامهٔ خود را توصی٠کنید" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 msgid "URL of the homepage of this application" -msgstr "" +msgstr "نشانی اینترنتی صÙØÙ‡Ù” خانگی این برنامه" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 -#, fuzzy msgid "Source URL" -msgstr "منبع" +msgstr "نشانی اینترنتی منبع" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "سازمان مسئول این برنامه" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 msgid "URL for the homepage of the organization" -msgstr "" +msgstr "نشانی اینترنتی برای صÙØÙ‡Ù” خانگی سازمان" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "نشانی اینترنتی برای دوباره‌هدایت‌کردن بعد از تصدیق" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 msgid "Browser" -msgstr "" +msgstr "مرورگر" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:295 msgid "Desktop" -msgstr "" +msgstr "میزکار" #. TRANS: Form guide. #: lib/applicationeditform.php:297 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "نوع برنامه، مرورگر یا میزکار" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 msgid "Read-only" -msgstr "" +msgstr "تنها خواندنی" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:339 msgid "Read-write" -msgstr "" +msgstr "خواندن-نوشتن" #. TRANS: Form guide. #: lib/applicationeditform.php:341 msgid "Default access for this application: read-only, or read-write" -msgstr "" +msgstr "دسترسی پیش‌Ùرض برای این برنامه: تنها خواندنی یا خواندن-نوشتن" #. TRANS: Submit button title #: lib/applicationeditform.php:359 @@ -5365,12 +5525,12 @@ msgstr "انصراÙ" #. TRANS: Application access type #: lib/applicationlist.php:136 msgid "read-write" -msgstr "" +msgstr "خواندن-نوشتن" #. TRANS: Application access type #: lib/applicationlist.php:138 msgid "read-only" -msgstr "" +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 @@ -5380,10 +5540,9 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "ØØ°Ù" +msgstr "لغو کردن" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5402,21 +5561,19 @@ msgstr "مهیا کننده" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "" +msgstr "پیام‌هایی Ú©Ù‡ این پیوست در آن‌جا ظاهر می‌شود" #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" -msgstr "" +msgstr "برچسب‌ها برای این پیوست" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" -msgstr "تغییر گذرواژه" +msgstr "تغییر گذرواژه شکست خورد" -#: lib/authenticationplugin.php:235 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "تغییر گذرواژه" +msgstr "تغییر گذرواژه مجاز نیست" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" @@ -5432,11 +5589,11 @@ msgstr "Ùرمان شکست خورد" #: lib/command.php:83 lib/command.php:105 msgid "Notice with that id does not exist" -msgstr "خبری با این مشخصه ایجاد نشد" +msgstr "پیامی با این شناسه وجود ندارد" #: lib/command.php:99 lib/command.php:596 msgid "User has no last notice" -msgstr "کاربر Ø¢Ú¯Ù‡ÛŒ آخر ندارد" +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. @@ -5448,24 +5605,24 @@ msgstr "پیدا نشد %s کاریری یا نام مستعار" #. 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 -#, fuzzy, php-format +#, php-format msgid "Could not find a local user with nickname %s" -msgstr "پیدا نشد %s کاریری یا نام مستعار" +msgstr "نمی‌توان یک کاربر Ù…ØÙ„ÛŒ با نام کاربری %s پیدا کرد" #: lib/command.php:180 msgid "Sorry, this command is not yet implemented." -msgstr "متاسÙانه این دستور هنوز اجرا نشده." +msgstr "متاسÙانه این دستور هنوز پیاده نشده است." #: lib/command.php:225 msgid "It does not make a lot of sense to nudge yourself!" -msgstr "" +msgstr "خیلی جالب نیست Ú©Ù‡ به خودتان یادآوری کنید!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. #: lib/command.php:234 -#, fuzzy, php-format +#, php-format msgid "Nudge sent to %s" -msgstr "Ùرتادن اژیر" +msgstr "یادآوری به %s Ùرستاده‌شد" #: lib/command.php:260 #, php-format @@ -5474,13 +5631,13 @@ msgid "" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" -"اشتراک : %1$s\n" -"مشترک : %2$s\n" -"خبر : %3$s" +"اشتراک‌ها: %1$s\n" +"مشترک‌ها: %2$s\n" +"پیام‌ها: %3$s" #: lib/command.php:302 msgid "Notice marked as fave." -msgstr "" +msgstr "پیام به‌عنوان برگزیده مشخص شد." #: lib/command.php:323 msgid "You are already a member of that group" @@ -5491,14 +5648,14 @@ msgstr "شما از پیش یک عضو این گروه هستید." #: lib/command.php:339 #, php-format msgid "Could not join user %1$s to group %2$s" -msgstr "عضویت %s در گروه %s نا موÙÙ‚ بود." +msgstr "نمی‌توان کاربر %1$s را عضو گروه %2$s کرد" #. 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 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %1$s from group %2$s" -msgstr "خارج شدن %s از گروه %s نا موÙÙ‚ بود" +msgstr "نمی‌توان کاربر %1$s را از گروه %2$s Øذ٠کرد" #. TRANS: Whois output. %s is the full name of the queried user. #: lib/command.php:418 @@ -5508,14 +5665,14 @@ msgstr "نام کامل : %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "موقعیت : %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "صÙØÙ‡ خانگی : %s" @@ -5524,7 +5681,7 @@ msgstr "صÙØÙ‡ خانگی : %s" #: lib/command.php:430 #, php-format msgid "About: %s" -msgstr "درباره ÛŒ : %s" +msgstr "دربارهٔ: %s" #: lib/command.php:457 #, php-format @@ -5532,15 +5689,17 @@ msgid "" "%s is a remote profile; you can only send direct messages to users on the " "same server." msgstr "" +"%s یک نمایهٔ ازراه‌دور است؛ شما تنها می‌توانید پیام‌های مستقیم را به کاربران در " +"یک کارگزار بÙرستید." #. 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 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d" msgstr "" -"پیغام بسیار طولانی است - بیشترین اندازه امکان پذیر %d کاراکتر است , شما %d " -"تا Ùرستادید" +"پیام خیلی طولانی است - Øداکثر تعداد مجاز %1$d نویسه است Ú©Ù‡ شما %2$d نویسه را " +"Ùرستادید" #. TRANS: Message given have sent a direct message to another user. #. TRANS: %s is the name of the other user. @@ -5555,69 +5714,68 @@ msgstr "خطا در Ùرستادن پیام مستقیم." #: lib/command.php:514 msgid "Cannot repeat your own notice" -msgstr "نمی توان Ø¢Ú¯Ù‡ÛŒ خودتان را تکرار کرد" +msgstr "امکان تکرار پیام خودتان وجود ندارد" #: lib/command.php:519 msgid "Already repeated that notice" -msgstr "آن Ø¢Ú¯Ù‡ÛŒ قبلا تکرار شده است." +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 -#, fuzzy, php-format +#, php-format msgid "Notice from %s repeated" -msgstr "Ø¢Ú¯Ù‡ÛŒ تکرار شد" +msgstr "پیام از %s تکرار شد" #: lib/command.php:531 msgid "Error repeating notice." -msgstr "خطا هنگام تکرار Ø¢Ú¯Ù‡ÛŒ." +msgstr "هنگام تکرار پیام خطایی رخ داد." #: lib/command.php:562 -#, fuzzy, php-format +#, php-format msgid "Notice too long - maximum is %d characters, you sent %d" msgstr "" -"پیغام بسیار طولانی است - بیشترین اندازه امکان پذیر %d کاراکتر است , شما %d " -"تا Ùرستادید" +"پیام خیلی طولانی است - Øداکثر تعداد مجاز %1$d نویسه است Ú©Ù‡ شما %2$d نویسه را " +"Ùرستادید" #: lib/command.php:571 -#, fuzzy, php-format +#, php-format msgid "Reply to %s sent" -msgstr "به این Ø¢Ú¯Ù‡ÛŒ جواب دهید" +msgstr "پاسخ به %s Ùرستاده شد" #: lib/command.php:573 msgid "Error saving notice." -msgstr "خطا هنگام ذخیره ÛŒ Ø¢Ú¯Ù‡ÛŒ" +msgstr "هنگام ذخیرهٔ پیام خطا رخ داد." #: lib/command.php:620 msgid "Specify the name of the user to subscribe to" -msgstr "" +msgstr "نام کاربر را برای مشترک‌شدن مشخص کنید" #: lib/command.php:628 -#, fuzzy msgid "Can't subscribe to OMB profiles by command." -msgstr "شما به این پروÙيل متعهد نشدید" +msgstr "نمی‌توان با دستور مشترک نمایه‌های OMB شد." #: lib/command.php:634 #, php-format msgid "Subscribed to %s" -msgstr "" +msgstr "مشترک‌شدن %s انجام‌شد" #: lib/command.php:655 lib/command.php:754 msgid "Specify the name of the user to unsubscribe from" -msgstr "" +msgstr "نام کاربر را برای لغو اشتراک از او مشخص کنید." #: lib/command.php:664 #, php-format msgid "Unsubscribed from %s" -msgstr "" +msgstr "از %s لغو اشتراک شد" #: lib/command.php:682 lib/command.php:705 msgid "Command not yet implemented." -msgstr "دستور هنوز اجرا نشده" +msgstr "دستور هنوز پیاده نشده است." #: lib/command.php:685 msgid "Notification off." -msgstr "" +msgstr "آگاه‌سازی خاموش شد." #: lib/command.php:687 msgid "Can't turn off notification." @@ -5639,29 +5797,30 @@ msgstr "Ùرمان ورود از کار اÙتاده است" #, php-format msgid "This link is useable only once, and is good for only 2 minutes: %s" msgstr "" +"این پیوند تنها یک‌بار قابل استÙاده است Ùˆ تنها برای دو دقیقه Ù…Ùید است: %s" #: lib/command.php:761 -#, fuzzy, php-format +#, php-format msgid "Unsubscribed %s" -msgstr "مشترک‌ها" +msgstr "لغو اشتراک شده %s" #: lib/command.php:778 msgid "You are not subscribed to anyone." -msgstr "شما توسط هیچ کس تصویب نشده اید ." +msgstr "شما مشترک هیچ‌کسی نشده‌اید." #: lib/command.php:780 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "هم اکنون شما این کاربران را دنبال می‌کنید: " +msgstr[0] "شما مشترک این Ùرد شده‌اید:" #: lib/command.php:800 msgid "No one is subscribed to you." -msgstr "هیچکس شما را تایید نکرده ." +msgstr "هیچ‌کس مشترک شما نشده است." #: lib/command.php:802 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "هیچکس شما را تایید نکرده ." +msgstr[0] "این Ùرد مشترک شما شده است:" #: lib/command.php:822 msgid "You are not a member of any groups." @@ -5670,7 +5829,7 @@ msgstr "شما در هیچ گروهی عضو نیستید ." #: lib/command.php:824 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" -msgstr[0] "شما یک عضو این گروه نیستید." +msgstr[0] "شما یک عضو این گروه هستید:" #: lib/command.php:838 msgid "" @@ -5713,6 +5872,44 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"دستورات:\n" +"on - روشن‌کردن آگاه‌سازی‌ها\n" +"off - خاموش‌کردن آگاه‌سازی‌ها\n" +"help - نشان دادن این Ú©Ù…Ú©\n" +"follow <nickname> - مشترک کاربر شدن\n" +"groups - گروه‌هایی را Ú©Ù‡ به آن‌ها پیوسته‌اید، Ùهرست می‌کند\n" +"subscriptions - اÙرادی را Ú©Ù‡ دنبال می‌کنید، Ùهرست می‌کند\n" +"subscribers - کاربرانی را Ú©Ù‡ شما را دنبال می‌کنند، Ùهرست می‌کند\n" +"leave <nickname> - لغو اشتراک از کاربر\n" +"d <nickname> <text> - پیام مستقیم به کاربر\n" +"get <nickname> - دریاÙت آخرین پیام از کاربر\n" +"whois <nickname> - دریاÙت اطلاعات نمایهٔ کاربر\n" +"lose <nickname> - وادار کردن کاربر به توق٠دنبال‌کردن شما\n" +"fav <nickname> - اÙزودن آخرین پیام کاربر به عنوان برگزیده\n" +"fav #<notice_id> - اÙزودن پیام با یک شناسهٔ داده‌شده به عنوان برگزیده\n" +"repeat #<notice_id> - تکرار کردن یک پیام با یک شناسهٔ داده‌شده\n" +"repeat <nickname> - تکرار کردن آخرین پیام از کاربر\n" +"reply #<notice_id> - پاسخ‌دادن به یک پیام با یک شناسهٔ داده‌شده\n" +"reply <nickname> - پاسخ‌دادن به آخرین پیام از کاربر\n" +"join <group> - پیوستن به گروه\n" +"login - دریاÙت یک پیوند برای واردشدن به رابط وب\n" +"drop <group> - ترک‌کردن گروه\n" +"stats - دریاÙت آمار شما\n" +"stop - مانند «off»\n" +"quit - مانند «off»\n" +"sub <nickname> - مانند «follow»\n" +"unsub <nickname> - مانند «leave»\n" +"last <nickname> - مانند «get»\n" +"on <nickname> - هنوز پیاده نشده است.\n" +"off <nickname> - هنوز پیاده نشده است.\n" +"nudge <nickname> - یادآوری‌کردن به یک کاربر برای به‌روز کردن\n" +"invite <phone number> - هنوز پیاده نشده است.\n" +"track <word> - هنوز پیاده نشده است.\n" +"untrack <word> - هنوز پیاده نشده است.\n" +"track off - هنوز پیاده نشده است.\n" +"untrack all - هنوز پیاده نشده است.\n" +"tracks - هنوز پیاده نشده است.\n" +"tracking - هنوز پیاده نشده است.\n" #: lib/common.php:135 msgid "No configuration file found. " @@ -5720,7 +5917,7 @@ msgstr "" #: lib/common.php:136 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "من به دنبال پرونده‌های پیکربندی در مکان‌های زیر بودم: " #: lib/common.php:138 msgid "You may wish to run the installer to fix this." @@ -5736,20 +5933,19 @@ msgstr "پیام‌رسان Ùوری" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "" +msgstr "به‌هنگام‌سازی‌های انجام‌شده با پیام‌رسان Ùوری (IM)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "به روز رسانی با پیامک" +msgstr "به‌روزرسانی با پیامک" #: lib/connectsettingsaction.php:120 -#, fuzzy msgid "Connections" -msgstr "وصل‌شدن" +msgstr "اتصال‌ها" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "برنامه‌های وصل‌شدهٔ مجاز" #: lib/dberroraction.php:60 msgid "Database error" @@ -5757,28 +5953,30 @@ msgstr "خطای پایگاه داده" #: lib/designsettings.php:105 msgid "Upload file" -msgstr "ارسال Ùایل" +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 "" +msgstr "پیش‌Ùرض‌های طراØÛŒ برگردانده شدند." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" -msgstr "" +msgstr "خارج‌کردن این پیام از برگزیده‌ها" #: lib/favorform.php:114 lib/favorform.php:140 msgid "Favor this notice" -msgstr "طرÙدار این خبر" +msgstr "برگزیده‌کردن این پیام" #: lib/favorform.php:140 msgid "Favor" -msgstr "توجه کردن" +msgstr "برگزیده‌کردن" #: lib/feed.php:85 msgid "RSS 1.0" @@ -5802,7 +6000,7 @@ msgstr "صادر کردن داده" #: lib/galleryaction.php:121 msgid "Filter tags" -msgstr "" +msgstr "پالایهٔ برچسب‌ها" #: lib/galleryaction.php:131 msgid "All" @@ -5810,15 +6008,15 @@ msgstr "همه" #: lib/galleryaction.php:139 msgid "Select tag to filter" -msgstr "" +msgstr "برچسب را برای پالودن انتخاب کنید" #: lib/galleryaction.php:140 msgid "Tag" -msgstr "" +msgstr "برچسب" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "" +msgstr "یک برچسب را برای Ù…Øدود کردن Ùهرست انتخاب کنید" #: lib/galleryaction.php:143 msgid "Go" @@ -5831,26 +6029,26 @@ msgstr "" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" -msgstr "" +msgstr "نشانی اینترنتی صÙØهٔ‌خانگی یا وبلاگ گروه یا موضوع" #: lib/groupeditform.php:168 msgid "Describe the group or topic" -msgstr "" +msgstr "گروه یا موضوع را توصی٠کنید" #: lib/groupeditform.php:170 #, php-format msgid "Describe the group or topic in %d characters" -msgstr "" +msgstr "گروه یا موضوع را در %d نویسه توصی٠کنید" #: lib/groupeditform.php:179 msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "" +msgstr "مکان گروه، در صورت وجود داشتن، مانند «شهر، ایالت (یا استان)ØŒ کشور»" #: lib/groupeditform.php:187 #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" -msgstr "" +msgstr "نام‌های مستعار اضاÙÛŒ برای گروه، با کاما- یا Ùاصله- جدا شود، بیشینه %d" #: lib/groupnav.php:85 msgid "Group" @@ -5863,7 +6061,7 @@ msgstr "مسدود شده" #: lib/groupnav.php:102 #, php-format msgid "%s blocked users" -msgstr "" +msgstr "%s کاربر مسدود شده" #: lib/groupnav.php:108 #, php-format @@ -5877,12 +6075,12 @@ msgstr "نشان" #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "" +msgstr "اÙزودن یا ویرایش نشان" #: lib/groupnav.php:120 #, php-format msgid "Add or edit %s design" -msgstr "" +msgstr "Ø·Ø±Ø %s را اضاÙÙ‡ یا ویرایش کنید" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" @@ -5895,12 +6093,12 @@ msgstr "گروه های با پست های بیشتر" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "" +msgstr "برچسب‌ها در پیام‌های گروه %s" #. TRANS: Client exception 406 #: lib/htmloutputter.php:104 msgid "This page is not available in a media type you accept" -msgstr "" +msgstr "این صÙØÙ‡ در نوع رسانه‌ای Ú©Ù‡ پذیرÙته‌اید، در دسترس نیست." #: lib/imagefile.php:72 msgid "Unsupported image file format." @@ -5909,8 +6107,7 @@ msgstr "Ùرمت(Ùایل) عکس پشتیبانی نشده." #: lib/imagefile.php:88 #, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" -"است . این Ùایل بسیار یزرگ است %s بیشترین مقدار قابل قبول برای اندازه ÛŒ Ùایل." +msgstr "این پرونده خیلی بزرگ است. بیشینهٔ اندازهٔ پرونده %s است." #: lib/imagefile.php:93 msgid "Partial upload." @@ -5918,7 +6115,7 @@ msgstr "" #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." -msgstr "خطای سیستم ارسال Ùایل." +msgstr "هنگام بارگذاری پرونده خطای سیستمی رخ داد." #: lib/imagefile.php:109 msgid "Not an image or corrupt file." @@ -5948,7 +6145,7 @@ msgstr "" #: lib/jabber.php:567 #, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "منبع صندوق ورودی نامعلوم است %d." #: lib/joinform.php:114 msgid "Join" @@ -5960,7 +6157,7 @@ msgstr "ترک کردن" #: lib/logingroupnav.php:80 msgid "Login with a username and password" -msgstr "وارد شدن با یک نام کاربری Ùˆ کلمه ÛŒ عبور" +msgstr "وارد شدن با یک نام کاربری Ùˆ گذرواژه" #: lib/logingroupnav.php:86 msgid "Sign up for a new account" @@ -5969,7 +6166,7 @@ msgstr "عضویت برای Øساب کاربری جدید" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 msgid "Email address confirmation" -msgstr "تاییدیه ÛŒ آدرس ایمیل" +msgstr "تایید نشانی پست الکترونیکی" #. TRANS: Body for address confirmation email. #: lib/mail.php:177 @@ -5988,15 +6185,35 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" +"سلام %s. \n" +"\n" +"کسی این پست الکترونیکی را در %s وارد کرده است.\n" +"\n" +"اگر شما بودید، Ùˆ می‌خواهید Ú©Ù‡ ورودی خود را تایید کنید، از نشانی اینترنتی زیر " +"استÙاده کنید:\n" +"\n" +"\t%s\n" +"\n" +"اگر چنین نیست، این پیام را نادیده بگیرید.\n" +"\n" +"از این‌که وقت خود را در اختیار ما گذاشتید، سپاس‌گزاریم، \n" +"%s\n" #. 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 "%2$s از Øالا به خبر های شما گوش میده %1$s" +msgstr "%1$s اکنون پیام‌های شما را در %2$s دنبال می‌کند." + +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6010,21 +6227,31 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" +"%1$s اکنون پیام‌های شما را در %2$s دنبال می‌کند.\n" +"\n" +"%3$s\n" +"\n" +"%4$s%5$s%6$s\n" +"با تشکر از شما،\n" +"%7$s.\n" +"\n" +"----\n" +"نشانی پست الکترونیک یا گزینه‌های آگاه‌سازی را در %8$s تغییر دهید\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 -#, fuzzy, php-format +#: lib/mail.php:274 +#, php-format msgid "Bio: %s" -msgstr "موقعیت : %s" +msgstr "شرØ‌Øال: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "%s ادرس ایمیل جدید برای" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6036,38 +6263,40 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -" %1$s شما یک ادرس پست جدید دارید در .\n" -"ایمیل بزنید %s برای پست یک پیغام جدید به .\n" -" %3$s راهنمای ایمیل بیشتر در .\n" +"شما یک نشانی ارسال تازه در %1$s دارید.\n" +"\n" +"برای Ùرستادن پیام‌های جدید به %2$s نامه بÙرستید.\n" "\n" -", ازروی ÙˆÙاداری خود شما \n" +"راهنمایی‌های پست الکترونیکی بیش‌تر در %3$s وجود دارد.\n" +"\n" +"با تشکر از شما،\n" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "وضعیت %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" -msgstr "تایید پیامک" +msgstr "تأیید پیامک" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "منتظر تاییدیه برای این شماره تلÙÙ†." +msgstr "%s: شماره تلÙÙ† خود را با این کد تایید کنید:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" -msgstr "" +msgstr "شما توسط %s یادآوری شدید." #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6082,15 +6311,26 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" +"%1$s (%2$s) کنجکاو است Ú©Ù‡ این روزها چکار می‌کنید Ùˆ شما را برای Ùرستادن " +"خبرهایی دعوت کرده است.\n" +"\n" +"پس بیایید Ú©Ù‡ از شما بیش‌تر بشنویم :)\n" +"\n" +"%3$s\n" +"\n" +"به این نامه پاسخ ندهید؛ زیرا به آن‌ها نخواهد رسید.\n" +"\n" +"با اØترام،\n" +"%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" -msgstr "" +msgstr "پیام خصوصی تازه از %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6108,15 +6348,29 @@ msgid "" "With kind regards,\n" "%5$s\n" msgstr "" +"%1$s (%2$s) یک پیام خصوصی برای شما Ùرستاده است:\n" +"\n" +"------------------------------------------------------\n" +"%3$s\n" +"------------------------------------------------------\n" +"\n" +"شما می‌توانید این‌جا به پیام‌شان پاسخ دهید:\n" +"\n" +"%4$s\n" +"\n" +"به این پست الکترونیک پاسخ ندهید، چون پاسخ شما به آن‌ها نمی‌رسد.\n" +"\n" +"با اØترام،\n" +"%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr " خبر شما را به علایق خود اضاÙÙ‡ کرد %s (@%s)" +msgstr "پیام شما را به برگزیده‌های خود اضاÙÙ‡ کرد %s (@%s)" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6136,23 +6390,46 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" +"%1$s (@%7$s) پیام شما در %2$s را به‌عنوان یکی از برگزیده‌هایشان اÙزوده است.\n" +"\n" +"نشانی اینترنتی پیام شما \n" +"\n" +"%3$s\n" +"\n" +"است.\n" +"\n" +"متن پیام شما\n" +"\n" +"%4$s\n" +"\n" +"است.\n" +"\n" +"شما می‌توانید Ùهرست برگزیده‌های %1$s را این‌جا ببینید:\n" +"\n" +"%5$s\n" +"\n" +"با تشکر از شما،\n" +"%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" "\n" "\t%s" msgstr "" +"Ú¯Ùت‌وگوی کامل می‌تواند این‌جا خوانده شود:\n" +"\n" +"\t\t%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "به توجه شما یک خبر Ùرستاده شده %s (@%s)" +msgstr "%s (@%s) به توجه شما یک پیام Ùرستاد" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6178,10 +6455,32 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) یک پاسخ به پیام شما (یک «@-پاسخ») در %2$s داده است.\n" +"\n" +"پیام این است:\n" +"\n" +"\t%3$s\n" +"\n" +"پاسخ داده است:\n" +"\n" +"\t%4$s\n" +"\n" +"%5$sشما می‌توانید این‌جا پاسخ دهید:\n" +"\n" +"\t%6$s\n" +"\n" +"Ùهرست تمام @-پاسخ‌ها برای شما این‌جا است:\n" +"\n" +"%7$s\n" +"\n" +"با تشکر،\n" +"%2$s\n" +"\n" +"Ù¾.Ù†. شما می‌توانید این آگاه‌سازی با نامه را این‌جا خاموش کنید:%8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "تنها کاربران Ù…ÛŒ تواند صندوق نامه ÛŒ خودشان را بخوانند." +msgstr "تنها کاربران Ù…ÛŒ تواند صندوق نامهٔ خودشان را بخوانند." #: lib/mailbox.php:139 msgid "" @@ -6189,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 "از" @@ -6210,9 +6509,9 @@ msgid "Sorry, no incoming email allowed." msgstr "با عرض پوزش، اجازه‌ی ورودی پست الکترونیک وجود ندارد" #: lib/mailhandler.php:228 -#, fuzzy, php-format +#, php-format msgid "Unsupported message type: %s" -msgstr "Ùرمت(Ùایل) عکس پشتیبانی نشده." +msgstr "نوع پیام پشتیبانی نشده است: %s" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." @@ -6231,7 +6530,7 @@ msgstr "" #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "Ùایل ارسال شده نتها اندکی ارسال شد." +msgstr "نتها اندکی از Ùایل بارگذاری‌شده Ùرستاده شد." #: lib/mediafile.php:159 msgid "Missing a temporary folder." @@ -6243,34 +6542,33 @@ 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 "" +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 -#, fuzzy +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." -msgstr "نمی‌توان کاربر منبع را تعیین کرد." +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 "" +msgstr "%s یک گونهٔ پروندهٔ پیشتیبانی شده روی این کارگزار نیست." #: lib/messageform.php:120 msgid "Send a direct notice" -msgstr "یک Ø¢Ú¯Ù‡ÛŒ مستقیم بÙرستید." +msgstr "Ùرستادن یک پیام مستقیم" #: lib/messageform.php:146 msgid "To" @@ -6281,128 +6579,127 @@ msgid "Available characters" msgstr "کاراکترهای موجود" #: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy msgctxt "Send button for sending notice" msgid "Send" msgstr "Ùرستادن" #: lib/noticeform.php:160 msgid "Send a notice" -msgstr "یک Ø¢Ú¯Ù‡ÛŒ بÙرستید" +msgstr "Ùرستادن یک پیام" #: lib/noticeform.php:173 #, php-format msgid "What's up, %s?" -msgstr "Ú†Ù‡ شده %s ?" +msgstr "Ú†Ù‡ خبر، %sØŸ" #: lib/noticeform.php:192 msgid "Attach" -msgstr "ضمیمه کردن" +msgstr "پیوست کردن" #: lib/noticeform.php:196 msgid "Attach a file" -msgstr "یک Ùایل ضمیمه کنید" +msgstr "یک Ùایل پیوست کنید" #: lib/noticeform.php:212 -#, fuzzy msgid "Share my location" -msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد." +msgstr "مکان من به اشتراک گذاشته شود" #: lib/noticeform.php:215 -#, fuzzy msgid "Do not share my location" -msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد." +msgstr "موقعیت من به اشتراک گذاشته نشود" #: lib/noticeform.php:216 msgid "" "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: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 "به این Ø¢Ú¯Ù‡ÛŒ جواب دهید" +msgstr "به این پیام پاسخ دهید" -#: lib/noticelist.php:622 +#: lib/noticelist.php:630 msgid "Reply" -msgstr "جواب دادن" +msgstr "پاسخ" -#: lib/noticelist.php:666 +#: lib/noticelist.php:674 msgid "Notice repeated" -msgstr "Ø¢Ú¯Ù‡ÛŒ تکرار شد" +msgstr "پیام تکرار شد" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "" +msgstr "یادآوری‌کردن به این کاربر" #: lib/nudgeform.php:128 msgid "Nudge" -msgstr "" +msgstr "یادآوری‌کردن" #: lib/nudgeform.php:128 msgid "Send a nudge to this user" -msgstr "برای این کاربر اژير بÙرست" +msgstr "یک یادآوری به این کاربر Ùرستاده شود" #: lib/oauthstore.php:283 msgid "Error inserting new profile" -msgstr "خطا در درج مشخصات جدید" +msgstr "هنگام قرار دادن نمایهٔ تازه خطا رخ داد" #: lib/oauthstore.php:291 msgid "Error inserting avatar" -msgstr "" +msgstr "هنگام اÙزودن چهره خطایی رخ داد" #: lib/oauthstore.php:306 msgid "Error updating remote profile" -msgstr "اشکال در به روز کردن کاربر دوردست." +msgstr "هنگام به‌روز کردن نمایهٔ از راه دور خطا رخ داد" #: lib/oauthstore.php:311 msgid "Error inserting remote profile" -msgstr "" +msgstr "هنگام اÙزودن نمایهٔ ازراه‌دور خطایی رخ داد" #: lib/oauthstore.php:345 msgid "Duplicate notice" -msgstr "" +msgstr "رونوشت‌برداری از پیام" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." -msgstr "" +msgstr "نمی‌توان اشتراک تازه‌ای اÙزود." #: lib/personalgroupnav.php:99 msgid "Personal" @@ -6414,7 +6711,7 @@ msgstr "پاسخ ها" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "چیزهای مورد علاقه" +msgstr "برگزیده‌ها" #: lib/personalgroupnav.php:125 msgid "Inbox" @@ -6430,16 +6727,16 @@ msgstr "صندوق خروجی" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "پیام های Ùرستاده شده به وسیله ÛŒ شما" +msgstr "پیام‌های Ùرستاده شدهٔ شما" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "" +msgstr "برچسب‌ها در پیام‌های %s" #: lib/plugin.php:115 msgid "Unknown" -msgstr "" +msgstr "ناشناخته" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6468,15 +6765,15 @@ 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" msgstr "تمام گروه‌ها" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." -msgstr "" +msgstr "روش پیاده نشده است." #: lib/publicgroupnav.php:78 msgid "Public" @@ -6498,14 +6795,13 @@ msgstr "خصوصیت" msgid "Popular" msgstr "Ù…Øبوب" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "" #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "به این Ø¢Ú¯Ù‡ÛŒ جواب دهید" +msgstr "این پیام تکرار شود؟" #: lib/repeatform.php:132 msgid "Yes" @@ -6513,16 +6809,16 @@ msgstr "بله" #: lib/repeatform.php:132 msgid "Repeat this notice" -msgstr "" +msgstr "تکرار این پیام" #: lib/revokeroleform.php:91 #, fuzzy, php-format msgid "Revoke the \"%s\" role from this user" msgstr "دسترسی کاربر را به گروه مسدود Ú©Ù†" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." -msgstr "" +msgstr "هیچ کاربر تنهایی برای Øالت تک کاربره مشخص نشده است." #: lib/sandboxform.php:67 msgid "Sandbox" @@ -6550,23 +6846,23 @@ msgstr "راهنمای جستجو" #: lib/searchgroupnav.php:80 msgid "People" -msgstr "شخص" +msgstr "اÙراد" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "پیدا کردن شخص در این سایت" +msgstr "پیدا کردن اÙراد در این وب‌گاه" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "" +msgstr "پیدا کردن Ù…Øتوای پیام‌ها" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "پیداا کردن گروه ها در این سایت" +msgstr "پیدا کردن گروه‌ها در این وب‌گاه" #: lib/section.php:89 msgid "Untitled section" -msgstr "" +msgstr "بخش بی‌نام" #: lib/section.php:106 msgid "More..." @@ -6574,11 +6870,11 @@ msgstr "بیش‌تر..." #: lib/silenceform.php:67 msgid "Silence" -msgstr "آرامش" +msgstr "ساکت کردن" #: lib/silenceform.php:78 msgid "Silence this user" -msgstr "آرامش این کاربر" +msgstr "ساکت کردن این کاربر" #: lib/subgroupnav.php:83 #, php-format @@ -6588,7 +6884,7 @@ msgstr "" #: lib/subgroupnav.php:91 #, php-format msgid "People subscribed to %s" -msgstr "" +msgstr "اÙراد مشترک %s" #: lib/subgroupnav.php:99 #, php-format @@ -6602,7 +6898,7 @@ msgstr "دعوت‌کردن" #: lib/subgroupnav.php:106 #, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr " به شما ملØÙ‚ شوند %s دوستان Ùˆ همکاران را دعوت کنید تا در" +msgstr "به شما ملØÙ‚ شوند %s دوستان Ùˆ همکاران را دعوت کنید تا در" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 @@ -6618,6 +6914,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "خطا هنگام به‌هنگام‌سازی نمایهٔ از راه دور." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "اعلان های بالا" @@ -6632,24 +6972,24 @@ msgstr "" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "از Øالت سکوت درآوردن" #: lib/unsilenceform.php:78 msgid "Unsilence this user" -msgstr "" +msgstr "این کاربر از Øالت سکوت خارج شود" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" -msgstr "" +msgstr "لغو مشترک‌شدن از این کاربر" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" -msgstr "" +msgstr "لغو اشتراک" #: lib/usernoprofileexception.php:58 -#, fuzzy, php-format +#, php-format msgid "User %s (%d) has no profile record." -msgstr "کاربر هیچ شناس‌نامه‌ای ندارد." +msgstr "کاربر %s (%d) هیچ تاریخچهٔ نمایه‌ای ندارد." #: lib/userprofile.php:117 msgid "Edit Avatar" @@ -6657,15 +6997,15 @@ msgstr "ویرایش اواتور" #: lib/userprofile.php:234 lib/userprofile.php:248 msgid "User actions" -msgstr "" +msgstr "اعمال کاربر" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "پاک‌کردن کاربر در Øالت اجرا است..." #: lib/userprofile.php:263 msgid "Edit profile settings" -msgstr "ویرایش تنظیمات پروÙيل" +msgstr "ویرایش تنظیمات نمایه" #: lib/userprofile.php:264 msgid "Edit" @@ -6681,74 +7021,73 @@ msgstr "پیام" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +msgstr "اداره کردن" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "پروÙایل کاربر" +msgstr "وظیÙÙ‡Ù” کاربر" #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" -msgstr "" +msgstr "رئیس" #: lib/userprofile.php:367 msgctxt "role" msgid "Moderator" -msgstr "" +msgstr "مدیر" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "Øدود %d دقیقه پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "Øدود %d ساعت پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "Øدود %d روز پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "Øدود %d ماه پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "Øدود یک سال پیش" @@ -6760,11 +7099,11 @@ msgstr "%s یک رنگ صØÛŒØ Ù†ÛŒØ³Øª!" #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." -msgstr "%s یک رنگ صØÛŒØ Ù†ÛŒØ³Øª! از Û³ یا Û¶ Øر٠مبنای شانزده استÙاده کنید" +msgstr "%s یک رنگ صØÛŒØ Ù†ÛŒØ³Øª! از Û³ یا Û¶ نویسه مبنای شانزده استÙاده کنید" #: lib/xmppmanager.php:403 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"پیغام بسیار طولانی است - بیشترین اندازه امکان پذیر %d کاراکتر است , شما %d " -"تا Ùرستادید" +"پیام خیلی طولانی است - Øداکثر تعداد مجاز %1$d نویسه است Ú©Ù‡ شما %2$d نویسه را " +"Ùرستادید." diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po index 48a25ce22..5b1465bc5 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:39:53+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:23+0000\n" "Language-Team: Finnish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "Hyväksy" @@ -70,9 +70,8 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Estä" +msgstr "Suljettu" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 @@ -93,25 +92,25 @@ msgid "Save" msgstr "Tallenna" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Sivua ei ole." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -124,7 +123,7 @@ msgid "No such user." msgstr "Käyttäjää ei ole." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s ja kaverit, sivu %d" @@ -132,33 +131,33 @@ msgstr "%s ja kaverit, sivu %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 ja kaverit" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Käyttäjän %s kavereiden syöte (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Käyttäjän %s kavereiden syöte (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Käyttäjän %s kavereiden syöte (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -166,7 +165,7 @@ msgstr "" "Tämä on käyttäjän %s ja kavereiden aikajana, mutta kukaan ei ole lähettyänyt " "vielä mitään." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -176,82 +175,82 @@ msgstr "" "tai lähetä päivitys itse." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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)!" -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Sinä ja kaverit" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Käyttäjän %1$s ja kavereiden päivitykset palvelussa %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "API-metodia ei löytynyt!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Tämä metodi edellyttää POST sanoman." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Ei voitu päivittää käyttäjää." @@ -273,7 +272,7 @@ msgstr "Ei voitu tallentaa profiilia." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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,31 +350,32 @@ msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Et voi lähettää suoraa viestiä käyttäjälle, jonka kanssa et ole vielä kaveri." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Käyttäjätunnukselle ei löytynyt statusviestiä." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Tämä päivitys on jo suosikki!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Ei voitu lisätä suosikiksi." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 #, fuzzy msgid "That status is not a favorite." msgstr "Tämä päivitys ei ole suosikki!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -392,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 @@ -406,126 +407,131 @@ msgstr "Julkista päivitysvirtaa ei saatu." msgid "Could not find target user." msgstr "Ei löytynyt yhtään päivitystä." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Käyttäjätunnuksessa voi olla ainoastaan pieniä kirjaimia ja numeroita ilman " "välilyöntiä." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Tunnus on jo käytössä. Yritä toista tunnusta." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Tuo ei ole kelvollinen tunnus." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Kotisivun verkko-osoite ei ole toimiva." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Koko nimi on liian pitkä (max 255 merkkiä)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "kuvaus on liian pitkä (max 140 merkkiä)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Kotipaikka on liian pitkä (max 255 merkkiä)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Liikaa aliaksia. Maksimimäärä on %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Virheellinen alias: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: 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\" on jo käytössä. Yritä toista aliasta." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Alias ei voi olla sama kuin ryhmätunnus." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Ryhmää ei löytynyt!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Sinä kuulut jo tähän ryhmään." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Sinut on estetty osallistumasta tähän ryhmään ylläpitäjän toimesta." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Käyttäjä %s ei voinut liittyä ryhmään %s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Sinä et kuulu tähän ryhmään." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Ei voitu poistaa käyttäjää %s ryhmästä %s" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Käyttäjän %s ryhmät" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Ryhmät, joiden jäsen %s on" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Käyttäjän %s ryhmät" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, fuzzy, php-format 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 "" @@ -537,15 +543,15 @@ msgstr "Koko ei kelpaa." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -611,12 +617,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Käyttäjätili" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -624,8 +630,8 @@ msgid "Nickname" msgstr "Tunnus" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Salasana" @@ -643,11 +649,11 @@ msgstr "Kaikki" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Tämä metodi edellyttää joko POST tai DELETE sanoman." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Et voi poistaa toisen käyttäjän päivitystä." @@ -666,60 +672,64 @@ msgstr "Ilmoituksia ei voi pistää päälle." msgid "Already repeated that notice." msgstr "Poista tämä päivitys" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Päivitys poistettu." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Käyttäjätunnukselle ei löytynyt statusviestiä." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ei löytynyt." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%s / Käyttäjän %s suosikit" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr " Palvelun %s päivitykset, jotka %s / %s on merkinnyt suosikikseen." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Vastaukset päivitykseen %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" "%1$s -päivitykset, jotka on vastauksia käyttäjän %2$s / %3$s päivityksiin." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s julkinen aikajana" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s päivitykset kaikilta!" @@ -734,16 +744,20 @@ msgstr "Vastaukset käyttäjälle %s" msgid "Repeats of %s" msgstr "Vastaukset käyttäjälle %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Päivitykset joilla on tagi %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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." @@ -797,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" @@ -839,11 +853,11 @@ msgstr "Kuva poistettu." msgid "You already blocked that user." msgstr "Sinä olet jo estänyt tämän käyttäjän." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Estä käyttäjä" -#: actions/block.php:130 +#: 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 " @@ -855,7 +869,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -865,7 +879,7 @@ msgstr "Ei" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Älä estä tätä käyttäjää" @@ -874,7 +888,7 @@ msgstr "Älä estä tätä käyttäjää" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -883,11 +897,11 @@ msgid "Yes" msgstr "Kyllä" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Estä tämä käyttäjä" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Käyttäjän estotiedon tallennus epäonnistui." @@ -1019,7 +1033,7 @@ msgstr "Sinä et kuulu tähän ryhmään." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Istuntoavaimesi kanssa oli ongelma." @@ -1053,7 +1067,7 @@ msgstr "Poista tämä päivitys" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Et ole kirjautunut sisään." @@ -1084,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" @@ -1124,51 +1138,60 @@ msgstr "Ulkoasu" msgid "Design settings for this StatusNet site." msgstr "Ulkoasuasetukset tälle StatusNet palvelulle." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Koko ei kelpaa." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Pikaviestin ei ole käytettävissä." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Vaihda salasanasi" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "Kutsu" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "Vaihda" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Palvelun ilmoitus" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 #, fuzzy msgid "Theme for the site." msgstr "Kirjaudu ulos palvelusta" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Palvelun ilmoitus" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Vaihda tautakuva" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Tausta" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1176,58 +1199,66 @@ msgid "" msgstr "Voit ladata ryhmälle logokuvan. Maksimikoko on %s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "On" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Off" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Vaihda väriä" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Sisältö" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Haku" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Teksti" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Linkit" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Käytä oletusasetuksia" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1237,7 +1268,7 @@ msgstr "" msgid "Save" msgstr "Tallenna" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1364,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." @@ -1405,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" @@ -1531,7 +1562,7 @@ msgid "Cannot normalize that email address" msgstr "Ei voida normalisoida sähköpostiosoitetta" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Tuo ei ole kelvollinen sähköpostiosoite." @@ -1767,13 +1798,13 @@ msgstr "Käyttäjä on asettanut eston sinulle." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Profiilia ei ole määritelty." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ei profiilia tuolle ID:lle." @@ -1910,7 +1941,7 @@ msgstr "Tee tästä käyttäjästä ylläpitäjä" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s aikajana" @@ -2338,42 +2369,42 @@ msgstr "Sinä et kuulu tähän ryhmään." msgid "%1$s left group %2$s" msgstr "%s erosi ryhmästä %s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Olet jo kirjautunut sisään." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Väärä käyttäjätunnus tai salasana" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "Sinulla ei ole valtuutusta tähän." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Kirjaudu sisään" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Kirjaudu sisään" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Muista minut" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Kirjaudu sisään automaattisesti tulevaisuudessa; ei tietokoneille joilla " "useampi käyttäjä!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Oletko hukannut tai unohtanut salasanasi?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2381,12 +2412,12 @@ msgstr "" "Syötä turvallisuussyistä käyttäjätunnuksesi ja salasanasi uudelleen ennen " "asetuksiesi muuttamista." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Kirjaudu sisään käyttäjätunnuksella ja salasanalla" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2539,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." @@ -2599,31 +2631,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Päivitykselle ei ole profiilia" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Käyttäjän %1$s päivitys %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "Yhdistä" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2733,7 +2765,7 @@ msgid "6 or more characters" msgstr "6 tai useampia merkkejä" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Vahvista" @@ -2745,11 +2777,11 @@ msgstr "Sama kuin ylläoleva salasana" msgid "Change" msgstr "Vaihda" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Salasanassa pitää olla 6 tai useampia merkkejä." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Salasanat eivät täsmää." @@ -2770,7 +2802,7 @@ msgid "Password saved." msgstr "Salasana tallennettu." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Polut" @@ -2990,43 +3022,43 @@ msgstr "" "1-64 pientä kirjainta tai numeroa, ei ääkkösiä eikä välimerkkejä tai " "välilyöntejä" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Koko nimi" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Kotisivu" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "Kotisivusi, blogisi tai toisella sivustolla olevan profiilisi osoite." -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Kuvaile itseäsi ja kiinnostuksen kohteitasi %d merkillä" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Kuvaile itseäsi ja kiinnostuksen kohteitasi" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Tietoja" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Kotipaikka" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Olinpaikka kuten \"Kaupunki, Maakunta (tai Lääni), Maa\"" @@ -3070,7 +3102,7 @@ msgstr "" "Tilaa automaattisesti kaikki, jotka tilaavat päivitykseni (ei sovi hyvin " "ihmiskäyttäjille)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "\"Tietoja\" on liian pitkä (max 140 merkkiä)." @@ -3322,7 +3354,7 @@ msgstr "Salasanassa pitää olla 6 tai useampia merkkejä." msgid "Password and confirmation do not match." msgstr "Salasana ja salasanan vahvistus eivät täsmää." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Virhe tapahtui käyttäjän asettamisessa." @@ -3331,97 +3363,97 @@ msgid "New password successfully saved. You are now logged in." msgstr "" "Uusi salasana tallennettiin onnistuneesti. Olet nyt kirjautunut sisään." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Valitettavasti vain kutsutut ihmiset voivat rekisteröityä." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Virheellinen kutsukoodin." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Rekisteröityminen onnistui" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Rekisteröidy" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Rekisteröityminen ei ole sallittu." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Et voi rekisteröityä, jos et hyväksy lisenssiehtoja." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Sähköpostiosoite on jo käytössä." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Käyttäjätunnus tai salasana ei kelpaa." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 pientä kirjainta tai numeroa, ei ääkkösiä eikä välimerkkejä tai " "välilyöntejä. Pakollinen." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 tai useampia merkkejä. Pakollinen." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Sama kuin ylläoleva salasana. Pakollinen." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Sähköposti" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Käytetään ainoastaan päivityksien lähettämiseen, ilmoitusasioihin ja " "salasanan uudelleen käyttöönottoon." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Pitempi nimi, mieluiten oikea nimesi" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3430,7 +3462,7 @@ msgstr "" "poislukien yksityinen tieto: salasana, sähköpostiosoite, IM-osoite, " "puhelinnumero." -#: actions/register.php:576 +#: actions/register.php:583 #, fuzzy, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3463,7 +3495,7 @@ msgstr "" "\n" "Kiitokset rekisteröitymisestäsi ja toivomme että pidät palvelustamme." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3552,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" @@ -3592,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ä." @@ -3607,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)!" @@ -3628,7 +3660,7 @@ msgstr "Et voi lähettää viestiä tälle käyttäjälle." msgid "User doesn't have this role." msgstr "Käyttäjälle ei löydy profiilia" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Päivitys poistettu." @@ -3645,7 +3677,7 @@ msgstr "Käyttäjä on asettanut eston sinulle." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3692,7 +3724,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3705,12 +3737,12 @@ msgid "Organization" msgstr "Sivutus" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3796,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 @@ -3864,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" @@ -3878,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." @@ -3892,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." @@ -3903,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" @@ -3980,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)!" @@ -4321,7 +4353,7 @@ msgstr "Koodia ei ole syötetty." #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4383,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." @@ -4556,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." @@ -4682,7 +4711,7 @@ msgstr "" "päivitykset. Jos et valinnut haluavasi tilata jonkin käyttäjän päivityksiä, " "paina \"Peruuta\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Lisenssi" @@ -4812,29 +4841,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Käyttäjän %1$s päivitykset palvelussa %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "Tilastot" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4842,7 +4871,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4850,105 +4879,153 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "Omat" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Tietokantavirhe tallennettaessa risutagiä: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4956,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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5079,133 +5205,133 @@ msgid "Untitled page" msgstr "Nimetön sivu" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Ensisijainen sivunavigointi" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 #, fuzzy msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Henkilökohtainen profiili ja kavereiden aikajana" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "Omat" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Muuta sähköpostiosoitettasi, kuvaasi, salasanaasi, profiiliasi" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Ei voitu uudelleenohjata palvelimelle: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Yhdistä" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Ensisijainen sivunavigointi" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "Ylläpito" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Kutsu kavereita ja työkavereita liittymään palveluun %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Kutsu" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 #, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Kirjaudu ulos palvelusta" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Kirjaudu ulos" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "Luo uusi käyttäjätili" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Rekisteröidy" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 #, fuzzy msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Kirjaudu sisään palveluun" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "Kirjaudu sisään" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Auta minua!" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "Ohjeet" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 #, fuzzy msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Hae ihmisiä tai tekstiä" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5213,72 +5339,72 @@ msgstr "Haku" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Palvelun ilmoitus" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Paikalliset näkymät" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Sivuilmoitus" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Toissijainen sivunavigointi" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Ohjeet" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Tietoa" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "UKK" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Yksityisyys" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Lähdekoodi" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Ota yhteyttä" -#: lib/action.php:784 +#: lib/action.php:794 #, fuzzy msgid "Badge" msgstr "Tönäise" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet-ohjelmiston lisenssi" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5288,13 +5414,13 @@ msgstr "" "site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** on mikroblogipalvelu." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5306,50 +5432,50 @@ msgstr "" "www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "StatusNet-ohjelmiston lisenssi" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Sivutus" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Myöhemmin" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Aiemmin" @@ -5402,74 +5528,74 @@ msgid "Unable to delete design setting." msgstr "Twitter-asetuksia ei voitu tallentaa!" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Sähköpostiosoitteen vahvistus" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "Kutsu" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "SMS vahvistus" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Ulkoasu" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "SMS vahvistus" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Käyttäjä" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "SMS vahvistus" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "SMS vahvistus" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "SMS vahvistus" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Palvelun ilmoitus" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "SMS vahvistus" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5605,12 +5731,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Salasanan vaihto" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Salasanan vaihto" @@ -5703,14 +5829,14 @@ msgstr "Koko nimi: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Kotipaikka: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Kotisivu: %s" @@ -6204,8 +6330,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s seuraa nyt päivityksiäsi palvelussa %2$s." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6231,7 +6364,7 @@ msgstr "" "Voit vaihtaa sähköpostiosoitetta tai ilmoitusasetuksiasi %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "" @@ -6239,13 +6372,13 @@ msgstr "" "\n" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Uusi sähköpostiosoite päivityksien lähettämiseen palveluun %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6267,30 +6400,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s päivitys" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS vahvistus" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "Odotetaan vahvistusta tälle puhelinnumerolle." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s tönäisi sinua" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6307,13 +6440,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Uusi yksityisviesti käyttäjältä %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6333,13 +6466,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s lisäsi päivityksesi suosikkeihinsa" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6361,7 +6494,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6369,13 +6502,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6412,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ä " @@ -6468,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 "" @@ -6543,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." @@ -6704,7 +6837,7 @@ msgstr "" msgid "All groups" msgstr "Kaikki ryhmät" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6728,7 +6861,7 @@ msgstr "Esittelyssä" msgid "Popular" msgstr "Suosituimmat" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Ei id parametria." @@ -6752,7 +6885,7 @@ msgstr "Vastaa tähän päivitykseen" msgid "Revoke the \"%s\" role from this user" msgstr "Estä tätä käyttäjää osallistumassa tähän ryhmään" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6856,6 +6989,50 @@ msgstr "" msgid "None" msgstr "Ei mitään" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Profiilikuvan päivittäminen epäonnistui." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Virhe tapahtui etäprofiilin päivittämisessä" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Eniten päivityksiä" @@ -6942,56 +7119,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "muutama sekunti sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "noin minuutti sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "noin %d minuuttia sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "noin tunti sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "noin %d tuntia sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "noin päivä sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "noin %d päivää sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "noin kuukausi sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "noin %d kuukautta sitten" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "noin vuosi sitten" diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po index f5e2e9a91..4f7b3f0e7 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:00+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:12:08+0000\n" "Language-Team: French\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -28,7 +28,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Accès" @@ -90,24 +90,24 @@ msgid "Save" msgstr "Enregistrer" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Page non trouvée." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -120,7 +120,7 @@ msgid "No such user." msgstr "Utilisateur non trouvé." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s et ses amis, page %2$d" @@ -128,33 +128,33 @@ msgstr "%1$s et ses amis, page %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 et ses amis" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Flux pour les amis de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Flux pour les amis de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Flux pour les amis de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -162,7 +162,7 @@ msgstr "" "Ceci est le flux pour %s et ses amis mais personne n’a rien posté pour le " "moment." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -172,78 +172,78 @@ msgstr "" "(%%action.groups%%) ou de poster quelque chose vous-même." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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%%%%?" "status_textarea=%3$s)." -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 +#: 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 "" -"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 -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Vous et vos amis" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Statuts de %1$s et ses amis dans %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Méthode API non trouvée !" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Ce processus requiert un POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -251,7 +251,7 @@ msgstr "" "Vous devez spécifier un paramètre « device » avec une des valeurs suivantes : " "sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Impossible de mettre à jour l’utilisateur." @@ -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:210 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 @@ -349,30 +349,30 @@ msgstr "" "Vous ne pouvez envoyer des messages personnels qu’aux utilisateurs inscrits " "comme amis." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Aucun statut trouvé avec cet identifiant. " -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Cet avis est déjà un favori." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Impossible de créer le favori." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Cet avis n’est pas un favori." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -399,125 +399,129 @@ msgstr "Impossible de déterminer l’utilisateur source." msgid "Could not find target user." msgstr "Impossible de trouver l’utilisateur cible." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Les pseudos ne peuvent contenir que des caractères minuscules et des " "chiffres, sans espaces." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Pseudo déjà utilisé. Essayez-en un autre." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Pseudo invalide." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "L’adresse du site personnel n’est pas un URL valide. " -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Nom complet trop long (maximum de 255 caractères)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "La description est trop longue (%d caractères maximum)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Emplacement trop long (maximum de 255 caractères)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Trop d’alias ! Maximum %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Alias invalide : « %s »." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: 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 » déjà utilisé. Essayez-en un autre." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "L’alias ne peut pas être le même que le pseudo." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Groupe non trouvé." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Vous êtes déjà membre de ce groupe." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Vous avez été bloqué de ce groupe par l’administrateur." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Impossible de joindre l’utilisateur %1$s au groupe %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Vous n’êtes pas membre de ce groupe." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Impossible de retirer l’utilisateur %1$s du groupe %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Groupes de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Groupes de %1$s dont %2$s est membre." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Groupes de %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -528,15 +532,15 @@ msgstr "Jeton incorrect." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -609,12 +613,12 @@ msgstr "" "confiance." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Compte" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -622,8 +626,8 @@ msgid "Nickname" msgstr "Pseudo" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Mot de passe" @@ -639,11 +643,11 @@ msgstr "Autoriser" msgid "Allow or deny access to your account information." msgstr "Autoriser ou refuser l’accès à votre compte." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Ce processus requiert un POST ou un DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Vous ne pouvez pas supprimer le statut d’un autre utilisateur." @@ -660,61 +664,65 @@ msgstr "Vous ne pouvez pas reprendre votre propre avis." msgid "Already repeated that notice." msgstr "Vous avez déjà repris cet avis." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Statut supprimé." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Aucun statut trouvé avec cet identifiant." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trouvé." -#: actions/apistatusesupdate.php:304 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é." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoris de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s statuts favoris de %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Mises à jour mentionnant %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s statuts en réponses aux statuts de %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Activité publique %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s statuts de tout le monde !" @@ -729,16 +737,20 @@ msgstr "Repris pour %s" msgid "Repeats of %s" msgstr "Reprises de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Avis marqués avec %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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:657 msgid "Delete" msgstr "Supprimer" @@ -833,11 +845,11 @@ msgstr "Avatar supprimé." msgid "You already blocked that user." msgstr "Vous avez déjà bloqué cet utilisateur." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloquer cet utilisateur" -#: actions/block.php:130 +#: 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 " @@ -852,7 +864,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -861,7 +873,7 @@ msgstr "Non" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Ne pas bloquer cet utilisateur" @@ -870,7 +882,7 @@ msgstr "Ne pas bloquer cet utilisateur" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -878,11 +890,11 @@ msgid "Yes" msgstr "Oui" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Bloquer cet utilisateur" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Impossible d’enregistrer les informations de blocage." @@ -1009,7 +1021,7 @@ msgstr "Vous n’êtes pas le propriétaire de cette application." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Un problème est survenu avec votre jeton de session." @@ -1043,7 +1055,7 @@ msgstr "Supprimer cette application" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Non connecté." @@ -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:657 msgid "Delete this notice" msgstr "Supprimer cet avis" @@ -1114,45 +1126,54 @@ msgstr "Conception" msgid "Design settings for this StatusNet site." msgstr "Paramètres de conception pour ce site StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL du logo invalide." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Le thème n’est pas disponible : %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Modifier le logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo du site" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Modifier le thème" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Thème du site" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Thème pour le site." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Thème personnalisé" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" +"Vous pouvez importer un thème StatusNet personnalisé dans une archive .ZIP." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Changer l’image d’arrière plan" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Arrière plan" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1162,57 +1183,65 @@ msgstr "" "maximale du fichier est de %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Activé" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Désactivé" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Activer ou désactiver l’image d’arrière plan." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Répéter l’image d’arrière plan" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Modifier les couleurs" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Contenu" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barre latérale" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texte" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Liens" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avancé" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personnalisé" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Utiliser les valeurs par défaut" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaurer les conceptions par défaut" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Revenir aux valeurs par défaut" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1222,7 +1251,7 @@ msgstr "Revenir aux valeurs par défaut" msgid "Save" msgstr "Enregistrer" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Sauvegarder la conception" @@ -1336,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." @@ -1486,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 @@ -1494,7 +1524,7 @@ msgid "Cannot normalize that email address" msgstr "Impossible d’utiliser cette adresse courriel" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Adresse courriel invalide." @@ -1721,13 +1751,13 @@ msgstr "L’utilisateur a déjà ce rôle." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Aucun profil n’a été spécifié." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Aucun profil ne correspond à cet identifiant." @@ -1869,7 +1899,7 @@ msgstr "Faire de cet utilisateur un administrateur" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Activité de %s" @@ -2304,43 +2334,43 @@ msgstr "Vous n’êtes pas membre de ce groupe." msgid "%1$s left group %2$s" msgstr "%1$s a quitté le groupe %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Déjà connecté." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Identifiant ou mot de passe incorrect." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Erreur lors de la mise en place de l’utilisateur. Vous n’y êtes probablement " "pas autorisé." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Ouvrir une session" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Ouverture de session" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Se souvenir de moi" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Ouvrir automatiquement ma session à l’avenir (déconseillé pour les " "ordinateurs publics ou partagés)" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Mot de passe perdu ?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2348,11 +2378,11 @@ msgstr "" "Pour des raisons de sécurité, veuillez entrer à nouveau votre identifiant et " "votre mot de passe afin d’enregistrer vos préférences." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Ouvrez une session avec un identifiant et un mot de passe." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2507,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." @@ -2565,30 +2595,30 @@ msgstr "" "Les programmeurs peuvent modifier les paramètres d’enregistrement pour leurs " "applications " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "L’avis n’a pas de profil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Statut de %1$s sur %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Type de contenu %s non supporté." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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é." @@ -2692,7 +2722,7 @@ msgid "6 or more characters" msgstr "6 caractères ou plus" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmer" @@ -2704,11 +2734,11 @@ msgstr "Identique au mot de passe ci-dessus" msgid "Change" msgstr "Modifier" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Votre mot de passe doit contenir au moins 6 caractères." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Les mots de passe ne correspondent pas." @@ -2729,7 +2759,7 @@ msgid "Password saved." msgstr "Mot de passe enregistré." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Chemins" @@ -2935,43 +2965,43 @@ msgstr "Information de profil" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1 à 64 lettres minuscules ou chiffres, sans ponctuation ni espaces" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nom complet" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Site personnel" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "Adresse de votre site Web, blogue, ou profil dans un autre site" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Décrivez vous et vos intérêts en %d caractères" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Décrivez vous et vos interêts" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Bio" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Emplacement" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Indiquez votre emplacement, ex.: « Ville, État (ou région), Pays »" @@ -3015,7 +3045,7 @@ msgstr "" "M’abonner automatiquement à tous ceux qui s’abonnent à moi (recommandé pour " "les utilisateurs non-humains)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "La bio est trop longue (%d caractères maximum)." @@ -3280,7 +3310,7 @@ msgstr "Le mot de passe doit contenir au moins 6 caractères." msgid "Password and confirmation do not match." msgstr "Le mot de passe et sa confirmation ne correspondent pas." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Erreur lors de la configuration de l’utilisateur." @@ -3289,39 +3319,39 @@ msgid "New password successfully saved. You are now logged in." msgstr "" "Nouveau mot de passe créé avec succès. Votre session est maintenant ouverte." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Désolé ! Seules les personnes invitées peuvent s’inscrire." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Désolé, code d’invitation invalide." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Compte créé avec succès" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Créer un compte" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Création de compte non autorisée." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Vous devez accepter les termes de la licence pour créer un compte." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Cette adresse courriel est déjà utilisée." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Identifiant ou mot de passe incorrect." -#: actions/register.php:343 +#: 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. " @@ -3329,58 +3359,60 @@ msgstr "" "Avec ce formulaire vous pouvez créer un nouveau compte. Vous pourrez ensuite " "poster des avis and et vous relier à des amis et collègues. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1 à 64 lettres minuscules ou chiffres, sans ponctuation ni espaces. Requis." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 caractères ou plus. Requis." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Identique au mot de passe ci-dessus. Requis." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Courriel" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Utilisé uniquement pour les mises à jour, les notifications, et la " "récupération de mot de passe" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nom plus long, votre \"vrai\" nom de préférence" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Le contenu et les données de %1$s sont privés et confidentiels." +msgstr "" +"Je comprends que le contenu et les données de %1$s sont privés et " +"confidentiels." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Mon texte et les fichiers sont protégés par copyright par %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Mon texte et les fichiers restent sous mon propre droit d'auteur." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Tous droits réservés." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3390,7 +3422,7 @@ msgstr "" "données personnelles : mot de passe, adresse électronique, adresse de " "messagerie instantanée, numéro de téléphone." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3424,7 +3456,7 @@ msgstr "" "Merci pour votre inscription ! Nous vous souhaitons d’apprécier notre " "service." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3506,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:676 msgid "Repeated" msgstr "Repris" @@ -3544,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." @@ -3562,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" @@ -3582,7 +3614,7 @@ msgstr "Vous ne pouvez pas révoquer les rôles des utilisateurs sur ce site." msgid "User doesn't have this role." msgstr "L'utilisateur ne possède pas ce rôle." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3597,7 +3629,7 @@ msgstr "L’utilisateur est déjà dans le bac à sable." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessions" @@ -3640,7 +3672,7 @@ msgid "Icon" msgstr "Icône" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nom" @@ -3651,12 +3683,12 @@ msgid "Organization" msgstr "Organisation" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3746,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 :)" @@ -3755,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." @@ -3819,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" @@ -3833,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." @@ -3853,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." @@ -3866,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" @@ -3946,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)." @@ -4280,7 +4312,7 @@ msgstr "Aucun code entré" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Instantanés" @@ -4340,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." @@ -4521,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." @@ -4638,7 +4667,7 @@ msgstr "" "abonner aux avis de cet utilisateur. Si vous n’avez pas demandé à vous " "abonner aux avis de quelqu’un, cliquez « Rejeter »." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licence" @@ -4770,18 +4799,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Statuts de %1$s dans %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4790,11 +4819,11 @@ msgstr "" "Ce site est propulsé par %1$s, version %2$s, Copyright 2008-2010 StatusNet, " "Inc. et ses contributeurs." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Contributeurs" -#: actions/version.php:168 +#: 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 " @@ -4806,7 +4835,7 @@ msgstr "" "GNU Affero telle qu’elle a été publiée par la Free Software Foundation, dans " "sa version 3 ou (comme vous le souhaitez) toute version plus récente. " -#: actions/version.php:174 +#: 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 " @@ -4818,7 +4847,7 @@ msgstr "" "D’ADAPTATION À UN BUT PARTICULIER. Pour plus de détails, voir la Licence " "Publique Générale GNU Affero." -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4827,93 +4856,140 @@ msgstr "" "Vous avez dû recevoir une copie de la Licence Publique Générale GNU Affero " "avec ce programme. Si ce n’est pas le cas, consultez %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Extensions" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Version" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Auteur(s)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "Aucun nom de base de données ou DSN trouvé 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4921,71 +4997,121 @@ msgstr "" "Trop de messages en double trop vite ! Prenez une pause et publiez à nouveau " "dans quelques minutes." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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." @@ -5036,188 +5162,188 @@ msgid "Untitled page" msgstr "Page sans nom" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navigation primaire du site" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Profil personnel et flux des amis" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personnel" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Modifier votre adresse électronique, avatar, mot de passe, profil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Se connecter aux services" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Connecter" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Modifier la configuration du site" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrer" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Inviter des amis et collègues à vous rejoindre sur %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Inviter" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Fermer la session" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Déconnexion" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Créer un compte" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "S'inscrire" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ouvrir une session" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Connexion" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "À l’aide !" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Aide" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Rechercher des personnes ou du texte" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Rechercher" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Notice du site" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Vues locales" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Avis de la page" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navigation secondaire du site" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Aide" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "À propos" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "CGU" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Confidentialité" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Source" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contact" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Insigne" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licence du logiciel StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5227,13 +5353,13 @@ msgstr "" "%site.broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** est un service de micro-blogging." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5245,20 +5371,20 @@ msgstr "" "(http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licence du contenu du site" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Le contenu et les données de %1$s sont privés et confidentiels." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5266,33 +5392,33 @@ msgstr "" "réservés." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Le contenu et les données sont sous le droit d’auteur du contributeur. Tous " "droits réservés." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" "Tous les contenus %1$s et les données sont disponibles sous la licence %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Pagination" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Après" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Avant" @@ -5340,64 +5466,64 @@ msgid "Unable to delete design setting." msgstr "Impossible de supprimer les paramètres de conception." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuration basique du site" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuration de la conception" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Conception" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuration utilisateur" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Utilisateur" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuration d’accès" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuration des chemins" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuration des sessions" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Modifier l'avis du site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configuration des instantanés" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "La ressource de l’API a besoin de l’accès en lecture et en écriture, mais " @@ -5531,11 +5657,11 @@ msgstr "Avis sur lesquels cette pièce jointe apparaît." msgid "Tags for this attachment" msgstr "Marques de cette pièce jointe" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "La modification du mot de passe a échoué" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "La modification du mot de passe n’est pas autorisée" @@ -5629,14 +5755,14 @@ msgstr "Nom complet : %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Emplacement : %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Site Web : %s" @@ -6180,8 +6306,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s suit maintenant vos avis sur %2$s." +#: 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 "" +"Si vous pensez que ce compte est utilisé à des fins abusives, vous pouvez le " +"bloquer de votre liste d'abonnés et le signaler comme spam aux " +"administrateurs du site, sur %s." + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6207,19 +6343,19 @@ msgstr "" "Changez votre adresse de courriel ou vos options de notification sur %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Bio : %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nouvelle adresse courriel pour poster dans %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6241,31 +6377,31 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Statut de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmation SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "" "%s : confirmez que vous possédez ce numéro de téléphone grâce à ce code :" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Vous avez reçu un clin d’œil de %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6293,13 +6429,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nouveau message personnel de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6333,13 +6469,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) a ajouté un de vos avis à ses favoris" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6378,7 +6514,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6389,13 +6525,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) vous a envoyé un avis" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6458,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:228 lib/noticelist.php:506 msgid "from" msgstr "de" @@ -6517,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." @@ -6590,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:568 msgid "in context" msgstr "dans le contexte" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repris par" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Répondre à cet avis" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Répondre" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Avis repris" @@ -6744,7 +6880,7 @@ msgstr "Moyenne journalière" msgid "All groups" msgstr "Tous les groupes" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Méthode non implémentée." @@ -6768,7 +6904,7 @@ msgstr "En vedette" msgid "Popular" msgstr "Populaires" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Aucun argument de retour." @@ -6789,7 +6925,7 @@ msgstr "Reprendre cet avis" msgid "Revoke the \"%s\" role from this user" msgstr "Révoquer le rôle « %s » de cet utilisateur" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Aucun utilisateur unique défini pour le mode mono-utilisateur." @@ -6887,6 +7023,54 @@ msgstr "Nuage de marques pour une personne" msgid "None" msgstr "Aucun" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" +"Le serveur ne peut pas gérer l’import de thèmes sans le support du format " +"ZIP." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "L’enregistrement du thème a échoué." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "Thème invalide : mauvaise arborescence." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"Le thème importé est trop volumineux. Non compressé, il doit occuper moins " +"de %d octets." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Archive de thème invalide : fichier css/display.css manquant" + +#: lib/themeuploader.php:205 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"Le thème contient un nom de fichier ou de dossier invalide. Limitez-vous aux " +"lettres ASCII et aux chiffres, caractère de soulignement et signe moins." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Le thème contient un fichier de type « .%s », qui n'est pas autorisé." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Erreur lors de l’ouverture de l’archive du thème." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Utilisateurs les plus actifs" @@ -6967,56 +7151,56 @@ msgid "Moderator" msgstr "Modérateur" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "il y a quelques secondes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "il y a 1 minute" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "il y a %d minutes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "il y a 1 heure" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "il y a %d heures" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "il y a 1 jour" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "il y a %d jours" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "il y a 1 mois" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "il y a %d mois" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "il y a environ 1 an" diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po index 64a4d3e3b..8d30fb829 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:04+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:29+0000\n" "Language-Team: Irish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "Aceptar" @@ -92,25 +92,25 @@ msgid "Save" msgstr "Gardar" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Non existe a etiqueta." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -123,7 +123,7 @@ msgid "No such user." msgstr "Ningún usuario." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s e amigos" @@ -131,39 +131,39 @@ msgstr "%s e amigos" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 e amigos" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Fonte para os amigos de %s" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Fonte para os amigos de %s" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, fuzzy, php-format msgid "Feed for friends of %s (Atom)" msgstr "Fonte para os amigos de %s" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -171,81 +171,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 #, fuzzy msgid "You and friends" msgstr "%s e amigos" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Actualizacións dende %1$s e amigos en %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "Método da API non atopado" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Este método require un POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Non se puido actualizar o usuario." @@ -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:210 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 @@ -346,31 +346,32 @@ msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Non se pode enviar a mensaxe directa a usuarios dos que non eres amigo." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Non se atopou un estado con ese ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Este chÃo xa é un favorito!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Non se puido crear o favorito." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 #, fuzzy msgid "That status is not a favorite." msgstr "Este chÃo non é un favorito!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -404,124 +406,129 @@ msgstr "Non se pudo recuperar a liña de tempo publica." msgid "Could not find target user." msgstr "Non se puido atopar ningún estado" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "O alcume debe ter só letras minúsculas e números, e sen espazos." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Non é un alcume válido." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "A páxina persoal semella que non é unha URL válida." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "O nome completo é demasiado longo (max 255 car)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "O teu Bio é demasiado longo (max 140 car.)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "A localización é demasiado longa (max 255 car.)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Etiqueta inválida: '%s'" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Método da API non atopado" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Xa estas suscrito a estes usuarios:" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Non podes seguir a este usuario: o Usuario non se atopa." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Non estás suscrito a ese perfil" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Non podes seguir a este usuario: o Usuario non se atopa." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "Usuarios" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1s non é unha orixe fiable." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, fuzzy, php-format 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 "" @@ -533,15 +540,15 @@ msgstr "Tamaño inválido." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -605,13 +612,13 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 #, fuzzy msgid "Account" msgstr "Sobre" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -619,8 +626,8 @@ msgid "Nickname" msgstr "Alcume" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Contrasinal" @@ -637,11 +644,11 @@ msgstr "Todos" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Este método require un POST ou DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Non deberÃas eliminar o estado de outro usuario" @@ -660,62 +667,66 @@ msgstr "Non se pode activar a notificación." msgid "Already repeated that notice." msgstr "Eliminar chÃo" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 #, fuzzy msgid "Status deleted." msgstr "Avatar actualizado." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Non existe ningún estado con esa ID atopada." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non atopado" -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%s / Favoritos dende %s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%s updates favorited by %s / %s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / ChÃos que respostan a %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "Hai %1$s chÃos en resposta a chÃos dende %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Liña de tempo pública de %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s chÃos de calquera!" @@ -730,16 +741,20 @@ msgstr "Replies to %s" msgid "Repeats of %s" msgstr "Replies to %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "ChÃos tagueados con %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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" @@ -839,11 +854,11 @@ msgstr "Avatar actualizado." msgid "You already blocked that user." msgstr "Xa bloqueaches a este usuario." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloquear usuario" -#: actions/block.php:130 +#: 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 " @@ -858,7 +873,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -868,7 +883,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "Bloquear usuario" @@ -878,7 +893,7 @@ msgstr "Bloquear usuario" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -887,12 +902,12 @@ msgid "Yes" msgstr "Si" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 #, fuzzy msgid "Block this user" msgstr "Bloquear usuario" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Erro ao gardar información de bloqueo." @@ -1027,7 +1042,7 @@ msgstr "Non estás suscrito a ese perfil" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 #, fuzzy msgid "There was a problem with your session token." msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..." @@ -1062,7 +1077,7 @@ msgstr "Eliminar chÃo" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Non está logueado." @@ -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" @@ -1138,50 +1153,59 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Tamaño inválido." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Esta páxina non está dispoñÃbel no tipo de medio que aceptas" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Cambiar contrasinal" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "Invitar" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "Modificado" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Novo chÃo" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Novo chÃo" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1189,61 +1213,69 @@ msgid "" msgstr "Podes actualizar a túa información do perfil persoal aquÃ" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Cambiar contrasinal" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Conectar" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Buscar" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Lista" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1253,7 +1285,7 @@ msgstr "" msgid "Save" msgstr "Gardar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1383,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." @@ -1551,7 +1584,7 @@ msgid "Cannot normalize that email address" msgstr "Esa dirección de correo non se pode normalizar " #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Non é un enderezo de correo válido." @@ -1789,13 +1822,13 @@ msgstr "O usuario bloqueoute." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Non se especificou ningún perfil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Non se atopou un perfil con ese ID." @@ -1942,7 +1975,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Liña de tempo de %s" @@ -2370,40 +2403,40 @@ msgstr "Non estás suscrito a ese perfil" msgid "%1$s left group %2$s" msgstr "%s / Favoritos dende %s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Sesión xa iniciada" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Usuario ou contrasinal incorrectos." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "Non está autorizado." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Inicio de sesión" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Lembrarme" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Endiante acceder automáticamente, coidado en equipos compartidos!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "¿Perdeches a contrasinal?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2411,12 +2444,12 @@ msgstr "" "Por razóns de seguranza, por favor re-insire o teu nome de usuario e " "contrasinal antes de cambiar as túas preferenzas." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Accede co teu nome de usuario e contrasinal." -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2569,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." @@ -2628,31 +2662,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "O chÃo non ten perfil" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Estado de %1$s en %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "Conectar" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2764,7 +2798,7 @@ msgid "6 or more characters" msgstr "6 ou máis caracteres" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmar" @@ -2776,11 +2810,11 @@ msgstr "Igual que a contrasinal de enriba" msgid "Change" msgstr "Modificado" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "A contrasinal debe ter 6 caracteres ou máis." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "As contrasinais non coinciden" @@ -2801,7 +2835,7 @@ msgid "Password saved." msgstr "Contrasinal gardada." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -3019,44 +3053,44 @@ msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" "De 1 a 64 letras minúsculas ou númeors, nin espazos nin signos de puntuación" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nome completo" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Páxina persoal" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "Enderezo da túa páxina persoal, blogue, ou perfil noutro sitio" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres." -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres." -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Bio" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Localización" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "¿Onde estas, coma \"Cidade, Provincia, PaÃs\"" @@ -3100,7 +3134,7 @@ msgstr "" "Suscribirse automáticamente a calquera que se suscriba a min (o mellor para " "non humáns)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "O teu Bio é demasiado longo (max 140 car.)." @@ -3359,7 +3393,7 @@ msgstr "A contrasinal debe ter 6 caracteres ou máis." msgid "Password and confirmation do not match." msgstr "A contrasinal e a súa confirmación non coinciden." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Acounteceu un erro configurando o usuario." @@ -3367,40 +3401,40 @@ msgstr "Acounteceu un erro configurando o usuario." msgid "New password successfully saved. You are now logged in." msgstr "A nova contrasinal gardouse correctamente. Xa estas logueado." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Desculpa, só se pode rexistrar a xente con invitación." -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "Acounteceu un erro co código de confirmación." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Xa estas rexistrado!!" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Rexistrar" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Non se permite o rexistro neste intre." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Non podes rexistrarte se non estas de acordo coa licenza." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "O enderezo de correo xa existe." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Usuario ou contrasinal inválidos." -#: actions/register.php:343 +#: actions/register.php:350 #, fuzzy msgid "" "With this form you can create a new account. You can then post notices and " @@ -3410,58 +3444,58 @@ msgstr "" "chÃos, e suscribirte a amigos. (Tes unha conta [OpenID](http://openid.net/)? " "Proba o noso [Rexistro OpenID](%%action.openidlogin%%)!)" -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "De 1 a 64 letras minúsculas ou números, nin espazos nin signos de " "puntuación. Requerido." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 ou máis caracteres. Requerido." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "A mesma contrasinal que arriba. Requerido." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Correo Electrónico" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Empregado só para actualizacións, novidades, e recuperación de contrasinais" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nome máis longo, preferiblemente o teu nome \"real\"" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3470,7 +3504,7 @@ msgstr "" " agás esta informción privada: contrasinal, dirección de correo electrónico, " "dirección IM, número de teléfono." -#: actions/register.php:576 +#: actions/register.php:583 #, fuzzy, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3502,7 +3536,7 @@ msgstr "" "\n" "Grazas por rexistrarte e esperamos que laretexes moito." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3591,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" @@ -3631,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 @@ -3644,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 @@ -3663,7 +3697,7 @@ msgstr "Non podes enviar mensaxes a este usurio." msgid "User doesn't have this role." msgstr "Usuario sen un perfil que coincida." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Avatar actualizado." @@ -3680,7 +3714,7 @@ msgstr "O usuario bloqueoute." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3726,7 +3760,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3739,13 +3773,13 @@ msgid "Organization" msgstr "Invitación(s) enviada(s)." #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 #, fuzzy 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" @@ -3831,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 @@ -3902,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" @@ -3918,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." @@ -3937,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." @@ -3950,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 "" @@ -4026,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 @@ -4371,7 +4405,7 @@ msgstr "Non se inseriu ningún código" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4433,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." @@ -4608,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." @@ -4734,7 +4765,7 @@ msgstr "" "user's notices. If you didn't just ask to subscribe to someone's notices, " "click \"Cancel\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4866,29 +4897,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Actualizacións dende %1$s en %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "EstatÃsticas" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4896,7 +4927,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4904,105 +4935,153 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "Persoal" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Erro ó inserir o hashtag na BD: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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 " @@ -5011,79 +5090,128 @@ 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5137,57 +5265,57 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "Persoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Cambiar contrasinal" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Non se pode redireccionar ao servidor: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Conectar" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Navegación de subscricións" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" @@ -5196,71 +5324,71 @@ msgstr "" "este servizo." #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Invitar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Sair" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "Crear nova conta" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Rexistrar" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "Inicio de sesión" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Axuda" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "Axuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5268,74 +5396,74 @@ msgstr "Buscar" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "Novo chÃo" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "Novo chÃo" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" msgstr "Navegación de subscricións" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Axuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Sobre" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Preguntas frecuentes" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacidade" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5345,13 +5473,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** é un servizo de microbloguexo." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5363,51 +5491,51 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "Atopar no contido dos chÃos" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 #, fuzzy msgid "After" msgstr "« Despois" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 #, fuzzy msgid "Before" msgstr "Antes »" @@ -5461,74 +5589,74 @@ msgid "Unable to delete design setting." msgstr "Non se puideron gardar os teus axustes de Twitter!" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Confirmar correo electrónico" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "Invitar" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "Confirmación de SMS" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Persoal" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "Confirmación de SMS" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Usuario" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "Confirmación de SMS" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "Confirmación de SMS" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "Confirmación de SMS" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Novo chÃo" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "Confirmación de SMS" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5664,12 +5792,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Contrasinal gardada." -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Contrasinal gardada." @@ -5766,14 +5894,14 @@ msgstr "Nome completo: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Ubicación: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Páxina persoal: %s" @@ -6323,8 +6451,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s está a escoitar os teus chÃos %2$s." +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6346,19 +6481,19 @@ msgstr "" "%4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "Ubicación: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nova dirección de email para posterar en %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6380,30 +6515,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Estado de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmación de SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "Agardando a confirmación neste número de teléfono." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s douche un toque" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6430,13 +6565,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "%s enviouche unha nova mensaxe privada" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6470,13 +6605,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s gustoulle o teu chÃo" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, fuzzy, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6510,7 +6645,7 @@ msgstr "" "%5$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6518,13 +6653,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6561,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 " @@ -6617,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 "" @@ -6695,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" @@ -6863,7 +6998,7 @@ msgstr "" msgid "All groups" msgstr "Tódalas etiquetas" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6888,7 +7023,7 @@ msgstr "Destacado" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Non hai argumento id." @@ -6912,7 +7047,7 @@ msgstr "Non se pode eliminar este chÃos." msgid "Revoke the \"%s\" role from this user" msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -7020,6 +7155,50 @@ msgstr "" msgid "None" msgstr "No" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Acounteceu un fallo ó actualizar o avatar." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Acounteceu un erro actualizando o perfil remoto" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -7109,56 +7288,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "fai uns segundos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "fai un minuto" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "fai %d minutos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "fai unha hora" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "fai %d horas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "fai un dÃa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "fai %d dÃas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "fai un mes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "fai %d meses" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "fai un ano" diff --git a/locale/gl/LC_MESSAGES/statusnet.po b/locale/gl/LC_MESSAGES/statusnet.po index 6639ecf5a..68434b085 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:10+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:30+0000\n" "Language-Team: Galician\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Acceso" @@ -84,24 +84,24 @@ msgid "Save" msgstr "Gardar" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Esa páxina non existe." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -114,7 +114,7 @@ msgid "No such user." msgstr "Non existe tal usuario." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s e amigos, páxina %2$d" @@ -122,40 +122,40 @@ msgstr "%1$s e amigos, páxina %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 e amigos" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Fonte de novas dos amigos de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Fonte de novas dos amigos de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Fonte de novas dos amigos de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" "Esta é a liña do tempo de %s e amigos pero ninguén publicou nada aÃnda." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -165,78 +165,78 @@ msgstr "" "publique algo." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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 que non [rexistrar unha conta](%%%%action.register%%%%) e entón facerlle " "un aceno a %s ou publicar unha nota dirixida a el ou ela?" #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Vostede e mailos seus amigos" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Actualizacións de %1$s e amigos en %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Non se atopou o método da API." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Este método require un POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -244,7 +244,7 @@ msgstr "" "Ten que especificar un parámetro chamado \"device\" cun destes valores: sms, " "im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Non se puido actualizar o usuario." @@ -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:210 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 @@ -342,29 +342,29 @@ msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Non pode enviar mensaxes directas a usuarios que non sexan amigos seus." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Non se atopou ningún estado con esa ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Este estado xa é dos favoritos." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Non se puido crear o favorito." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Ese estado non é un dos favoritos." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -392,125 +392,129 @@ msgstr "Non se puido determinar o usuario de orixe." msgid "Could not find target user." msgstr "Non se puido atopar o usuario de destino." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "O alcume debe ter só letras en minúscula e números, e non pode ter espazos " "en branco." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Ese alcume xa está en uso. Probe con outro." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "O formato do alcume non é correcto." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "O URL da páxina persoal non é correcto." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "O nome completo é longo de máis (o máximo son 255 caracteres)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "A descrición é longa de máis (o máximo son %d caracteres)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "A localidade é longa de máis (o máximo son 255 caracteres)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Demasiados pseudónimos! O número máximo é %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Pseudónimo incorrecto: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "O pseudónimo \"%s\" xa se está a usar. Proba con outro." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "O pseudónimo non pode coincidir co alcume." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Non se atopou o grupo." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Xa forma parte dese grupo." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "O administrador bloqueouno nese grupo." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "O usuario %1$s non se puido engadir ao grupo %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Vostede non pertence a este grupo." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "O usuario %1$s non se puido eliminar do grupo %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Os grupos de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Grupos de %1$s aos que pertence %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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "grupos %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "grupos en %s" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Houbo un erro durante a carga." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Non se forneceu o parámetro oauth_token." @@ -521,15 +525,15 @@ msgstr "Pase incorrecto." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -597,12 +601,12 @@ msgstr "" "acceso á súa conta %4$s a xente de confianza." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Conta" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -610,8 +614,8 @@ msgid "Nickname" msgstr "Alcume" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Contrasinal" @@ -627,11 +631,11 @@ msgstr "Permitir" msgid "Allow or deny access to your account information." msgstr "Permitir ou denegar o acceso á información da súa conta." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Este método require un POST ou un DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Non pode borrar o estado doutro usuario." @@ -648,61 +652,65 @@ msgstr "Non pode repetir a súa propia nota." msgid "Already repeated that notice." msgstr "Xa repetiu esa nota." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Borrouse o estado." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Non se atopou ningún estado con esa ID." -#: actions/apistatusesupdate.php:240 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "O cliente debe proporcionar un parámetro de \"estado\" cun 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 "Iso é longo de máis. A nota non pode exceder os %d caracteres." -#: actions/apistatusesupdate.php:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non se atopou." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoritos de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s actualizacións marcadas como favoritas por %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Actualizacións que mencionan %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s actualizacións que responden a actualizacións de %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Liña do tempo pública de %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s actualizacións de todos!" @@ -717,16 +725,20 @@ msgstr "Repetiu a %s" msgid "Repeats of %s" msgstr "Repeticións de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notas etiquetadas con %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 +793,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" @@ -821,11 +833,11 @@ msgstr "Borrouse o avatar." msgid "You already blocked that user." msgstr "Xa bloqueou ese usuario." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloquear o usuario" -#: actions/block.php:130 +#: 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 " @@ -840,7 +852,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -849,7 +861,7 @@ msgstr "Non" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Non bloquear este usuario" @@ -858,7 +870,7 @@ msgstr "Non bloquear este usuario" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -866,11 +878,11 @@ msgid "Yes" msgstr "Si" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Bloquear este usuario" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Non se puido gardar a información do bloqueo." @@ -997,7 +1009,7 @@ msgstr "Non é o dono desa aplicación." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Houbo un problema co seu pase." @@ -1031,7 +1043,7 @@ msgstr "Borrar a aplicación" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Non iniciou sesión." @@ -1062,7 +1074,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" @@ -1102,45 +1114,54 @@ msgstr "Deseño" msgid "Design settings for this StatusNet site." msgstr "Configuración do deseño deste sitio StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL do logo incorrecto." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "O tema visual non está dispoñible: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Cambiar o logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo do sitio" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Cambar o tema visual" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Tema visual do sitio" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema visual para o sitio." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Tema visual personalizado" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" +"Pode cargar como arquivo .ZIP un tema visual personalizado para StatusNet" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Cambiar a imaxe de fondo" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Fondo" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1150,57 +1171,65 @@ msgstr "" "ficheiro é de %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Activado" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Desactivado" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Activar ou desactivar a imaxe de fondo." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Imaxe de fondo en mosaico" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Cambiar as cores" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Contido" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra lateral" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Ligazóns" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avanzado" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personalizado" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Utilizar os valores por defecto" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaurar o deseño por defecto" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Volver ao deseño por defecto" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1210,7 +1239,7 @@ msgstr "Volver ao deseño por defecto" msgid "Save" msgstr "Gardar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Gardar o deseño" @@ -1324,7 +1353,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." @@ -1487,7 +1517,7 @@ msgid "Cannot normalize that email address" msgstr "Non se pode normalizar ese enderezo de correo electrónico" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "O enderezo de correo electrónico é incorrecto." @@ -1713,13 +1743,13 @@ msgstr "O usuario xa ten este rol." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Non se especificou ningún perfil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ningún perfil ten esa ID." @@ -1860,7 +1890,7 @@ msgstr "Converter a este usuario en administrador" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Liña do tempo de %s" @@ -2231,8 +2261,8 @@ msgid "" msgstr "" "%1$s convidouno a unirse a el en %2$s (%3$s).\n" "\n" -"%2$s é un servizo de microblogue que lle permite estar ao dÃa coas persoas " -"que coñece e coas que lle interesen.\n" +"%2$s é un servizo de mensaxes de blogue curtas que lle permite estar ao dÃa " +"coas persoas que coñece e coas que lle interesen.\n" "\n" "Tamén pode compartir novas persoais, pensamentos ou a súa vida en liña con " "outros coñecidos. Tamén está moi ben para coñecer xente con intereses " @@ -2285,43 +2315,43 @@ msgstr "Non pertence a ese grupo." msgid "%1$s left group %2$s" msgstr "%1$s deixou o grupo %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Xa se identificou." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nome de usuario ou contrasinal incorrectos." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Houbo un erro ao configurar o usuario. Probablemente non estea autorizado " "para facelo." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Identificarse" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Identificarse no sitio" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Lembrádeme" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Identificarse automaticamente no futuro. Non se aconsella en computadoras " "compartidas!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Esqueceu ou perdeu o contrasinal?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2329,11 +2359,11 @@ msgstr "" "Por razóns de seguridade, volva introducir o seu nome de usuario e " "contrasinal antes de cambiar a súa configuración." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "IdentifÃquese co seu nome de usuario e contrasinal." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2484,9 +2514,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 @@ -2541,30 +2571,30 @@ msgstr "" "Os desenvolvedores poden editar a configuración de rexistro das súas " "aplicacións " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Non hai perfil para a nota." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Estado de %1$s en %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Non se soporta o tipo de contido %s." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2670,7 +2700,7 @@ msgid "6 or more characters" msgstr "Seis ou máis caracteres" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmar" @@ -2682,11 +2712,11 @@ msgstr "Igual ao contrasinal anterior" msgid "Change" msgstr "Cambiar" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "O contrasinal debe conter seis ou máis caracteres." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Os contrasinais non coinciden." @@ -2707,7 +2737,7 @@ msgid "Password saved." msgstr "Gardouse o contrasinal." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Rutas" @@ -2913,43 +2943,43 @@ msgstr "" "Entre 1 e 64 letras minúsculas ou números, sen signos de puntuación, " "espazos, tiles ou eñes" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nome completo" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Páxina persoal" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL da súa páxina persoal, blogue ou perfil noutro sitio" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "DescrÃbase a vostede e mailos seus intereses en %d caracteres" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "DescrÃbase a vostede e mailos seus intereses" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "BiografÃa" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Lugar" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Onde está a vivir, coma “localidade, provincia (ou comunidade), paÃsâ€" @@ -2993,7 +3023,7 @@ msgstr "" "Subscribirse automaticamente a quen se subscriba a min (o mellor para os " "bots)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "A biografÃa é longa de máis (o lÃmite son %d caracteres)." @@ -3091,11 +3121,11 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" -"Isto é %%site.name%%, un servizo de [microblogue](http://en.wikipedia.org/" -"wiki/Microblogging) (en inglés) baseado na ferramenta de software libre " -"[StatusNet](http://status.net/). [Únase agora](%%action.register%%) para " -"compartir notas persoais cos amigos, a familia e os compañeiros! ([Máis " -"información](%%doc.help%%))" +"Isto é %%site.name%%, un servizo de [mensaxes de blogue curtas](http://en." +"wikipedia.org/wiki/Microblogging) (en inglés) baseado na ferramenta de " +"software libre [StatusNet](http://status.net/). [Únase agora](%%action." +"register%%) para compartir notas persoais cos amigos, a familia e os " +"compañeiros! ([Máis información](%%doc.help%%))" #: actions/public.php:247 #, php-format @@ -3104,9 +3134,9 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" -"Isto é %%site.name%%, un servizo de [microblogue](http://en.wikipedia.org/" -"wiki/Microblogging) (en inglés) baseado na ferramenta de software libre " -"[StatusNet](http://status.net/)." +"Isto é %%site.name%%, un servizo de [mensaxes de blogue curtas](http://en." +"wikipedia.org/wiki/Microblogging) (en inglés) baseado na ferramenta de " +"software libre [StatusNet](http://status.net/)." #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -3261,7 +3291,7 @@ msgstr "O contrasinal debe ter seis ou máis caracteres." msgid "Password and confirmation do not match." msgstr "O contrasinal e a confirmación non coinciden." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Houbo un erro ao configurar o usuario." @@ -3269,39 +3299,39 @@ msgstr "Houbo un erro ao configurar o usuario." msgid "New password successfully saved. You are now logged in." msgstr "O novo contrasinal gardouse correctamente. Agora está identificado." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Só se pode rexistrar mediante invitación." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "O código da invitación é incorrecto." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Rexistrouse correctamente" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Rexistrarse" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Non se permite o rexistro." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Non pode rexistrarse se non acepta a licenza." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "O enderezo de correo electrónico xa existe." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "O nome de usuario ou contrasinal non son correctos." -#: actions/register.php:343 +#: 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. " @@ -3309,58 +3339,61 @@ msgstr "" "Con este formulario pode crear unha conta nova. Entón poderá publicar notas " "e porse en contacto con amigos e compañeiros. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "Entre 1 e 64 letras minúsculas ou números, sen signos de puntuación, " "espazos, tiles ou eñes. Obrigatorio." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 ou máis caracteres. Obrigatorio." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "O mesmo contrasinal que o anterior. Obrigatorio." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Correo electrónico" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Só se utiliza para actualizacións, anuncios e recuperación de contrasinais" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nome longo, preferiblemente o seu nome \"real\"" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "O contido e os datos de %1$s son privados e confidenciais." +msgstr "Entendo que o contido e os datos de %1$s son privados e confidenciais." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." msgstr "" +"Os meus textos e ficheiros están protexidos polos dereitos de autor de %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." msgstr "" +"Os meus textos e ficheiros están protexidos polos meus propios dereitos de " +"autor." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Todos os dereitos reservados." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3370,7 +3403,7 @@ msgstr "" "datos privados: contrasinais, enderezos de correo electrónico e mensaxerÃa " "instantánea e números de teléfono." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3402,7 +3435,7 @@ msgstr "" "\n" "Grazas por rexistrarse. Esperamos que goce deste servizo." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3419,8 +3452,8 @@ msgid "" msgstr "" "Para subscribirse, pode [identificarse](%%action.login%%) ou [rexistrar](%%" "action.register%%) unha conta nova. Se xa ten unha conta nun [sitio de " -"microblogging compatible](%%doc.openmublog%%), introduza a continuación o " -"URL do seu perfil." +"mensaxes de blogue curtas compatible](%%doc.openmublog%%), introduza a " +"continuación o URL do seu perfil." #: actions/remotesubscribe.php:112 msgid "Remote subscribe" @@ -3444,7 +3477,8 @@ msgstr "URL do perfil" #: actions/remotesubscribe.php:134 msgid "URL of your profile on another compatible microblogging service" -msgstr "URL do seu perfil noutro servizo de microblogue compatible" +msgstr "" +"URL do seu perfil noutro servizo de mensaxes de blogue curtas compatible" #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:406 @@ -3485,7 +3519,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" @@ -3523,7 +3557,7 @@ msgstr "Fonte de novas coas 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 "" "Esta é a liña do tempo coas respostas a %1$s, pero a %2$s aÃnda non lle " "mandaron ningunha nota." @@ -3540,8 +3574,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 "" "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)." @@ -3559,7 +3593,7 @@ msgstr "Non pode revogar os roles dos usuarios neste sitio." msgid "User doesn't have this role." msgstr "O usuario non ten este rol." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3573,7 +3607,7 @@ msgstr "O usuario xa está illado." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sesións" @@ -3616,7 +3650,7 @@ msgid "Icon" msgstr "Icona" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nome" @@ -3627,12 +3661,12 @@ msgid "Organization" msgstr "Organización" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3723,8 +3757,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 :)" @@ -3732,9 +3766,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 " @@ -3796,7 +3830,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" @@ -3810,11 +3844,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." @@ -3823,14 +3857,14 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -"**%s** é un grupo de usuarios de %%%%site.name%%%%, un servizo de " -"[microblogue](http://en.wikipedia.org/wiki/Microblogging) (en inglés) " +"**%s** é un grupo de usuarios de %%%%site.name%%%%, un servizo de [mensaxes " +"de blogue curtas](http://en.wikipedia.org/wiki/Microblogging) (en inglés) " "baseado na ferramenta de software libre [StatusNet](http://status.net/). Os " "seus membros comparten mensaxes curtas sobre as súas vidas e intereses. " "[Ú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." @@ -3838,12 +3872,12 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" -"**%s** é un grupo de usuarios de %%%%site.name%%%%, un servizo de " -"[microblogue](http://en.wikipedia.org/wiki/Microblogging) (en inglés) " +"**%s** é un grupo de usuarios de %%%%site.name%%%%, un servizo de [mensaxes " +"de blogue curtas](http://en.wikipedia.org/wiki/Microblogging) (en inglés) " "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" @@ -3920,8 +3954,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 "" "Pode probar a facerlle un aceno a %1$s ou [publicar algo dirixido a el ou " "ela](%%%%action.newnotice%%%%?status_textarea=%2$s)." @@ -3934,11 +3968,11 @@ msgid "" "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -"**%s** ten unha conta en %%%%site.name%%%%, un servizo de [microblogue]" -"(http://en.wikipedia.org/wiki/Microblogging) (en inglés) baseado na " -"ferramenta de software libre [StatusNet](http://status.net/). [Únase agora](%" -"%%%action.register%%%%) para seguir as notas de **%s** e de moita máis " -"xente! ([Máis información](%%%%doc.help%%%%))" +"**%s** ten unha conta en %%%%site.name%%%%, un servizo de [mensaxes de " +"blogue curtas](http://en.wikipedia.org/wiki/Microblogging) (en inglés) " +"baseado na ferramenta de software libre [StatusNet](http://status.net/). " +"[Únase agora](%%%%action.register%%%%) para seguir as notas de **%s** e de " +"moita máis xente! ([Máis información](%%%%doc.help%%%%))" #: actions/showstream.php:248 #, php-format @@ -3947,9 +3981,9 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s** ten unha conta en %%%%site.name%%%%, un servizo de [microblogue]" -"(http://en.wikipedia.org/wiki/Microblogging) (en inglés) baseado na " -"ferramenta de software libre [StatusNet](http://status.net/). " +"**%s** ten unha conta en %%%%site.name%%%%, un servizo de [mensaxes de " +"blogue curtas](http://en.wikipedia.org/wiki/Microblogging) (en inglés) " +"baseado na ferramenta de software libre [StatusNet](http://status.net/). " #: actions/showstream.php:305 #, php-format @@ -4000,7 +4034,8 @@ msgstr "Nome do sitio" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" -"O nome do seu sitio, como por exemplo \"O microblogue da miña empresa\"" +"O nome do seu sitio, como por exemplo \"O sitio de mensaxes de blogue curtas " +"da miña empresa\"" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -4253,7 +4288,7 @@ msgstr "Non se introduciu ningún código" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Instantáneas" @@ -4313,7 +4348,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." @@ -4492,10 +4528,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." @@ -4607,7 +4639,7 @@ msgstr "" "deste usuario. Se non pediu a subscrición ás notas de alguén, prema en " "\"Rexeitar\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licenza" @@ -4736,18 +4768,18 @@ msgstr "Probe a [buscar grupos](%%action.groupsearch%%) e unirse a eles." #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Actualizacións de %1$s en %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "%s de StatusNet" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4756,11 +4788,11 @@ msgstr "" "Este sitio foi desenvolvido sobre a versión %2$s de %1$s, propiedade de " "StatusNet, Inc. e colaboradores, 2008-2010." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Colaboradores" -#: actions/version.php:168 +#: 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 " @@ -4772,7 +4804,7 @@ msgstr "" "Software Foundation, versión 3 ou calquera versión posterior (a elección do " "usuario) da licenza. " -#: actions/version.php:174 +#: 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 " @@ -4784,7 +4816,7 @@ msgstr "" "ou IDONEIDADE PARA UN PROPÓSITO PARTICULAR. Lea a Licenza Pública Xeral " "Affero de GNU para máis información. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4793,94 +4825,141 @@ msgstr "" "Debeu recibir unha copia da Licenza Pública Xeral Affero de GNU xunto co " "programa. En caso contrario, vexa %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Complementos" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versión" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autores" -#: classes/File.php:169 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Non se pode procesar o URL \"%s\"" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin pensa que algo é 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 "" -"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:179 +#. 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:186 +#. 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 +msgid "Invalid filename." +msgstr "Nome de ficheiro incorrecto." + +#. 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 "Non se atopou por ningures o nome da base de datos 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 "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 +#, php-format +msgid "No such profile (%1$d) for notice (%2$d)." +msgstr "Non existe tal perfil (%1$d) para a nota (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4888,71 +4967,119 @@ msgstr "" "Repetiu demasiadas mensaxes 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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 dado para saveKnownGroups era incorrecto" + +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "" +"Non se pode revogar o rol \"%1$s\" do usuario #%2$d: o usuario non 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:746 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Non se pode revogar o rol \"%1$s\" do usuario #%2$d: erro na 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 "Falta o perfil de usuario." + +#. 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 +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 +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 +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." @@ -5003,229 +5130,229 @@ msgid "Untitled page" msgstr "Páxina sen tÃtulo" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navegación principal do sitio" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Liña do tempo do perfil persoal e os amigos" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Persoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Cambie o seu correo electrónico, avatar, contrasinal ou perfil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Conectarse aos servizos" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Conectarse" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Cambiar a configuración do sitio" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrador" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Convide a amigos e compañeiros a unÃrselle en %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Convidar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "SaÃr ao anonimato" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "SaÃr" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Crear unha conta" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Rexistrarse" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Identificarse no sitio" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Identificarse" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Axuda!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Axuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Buscar persoas ou palabras" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Buscar" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Nota do sitio" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Vistas locais" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Nota da páxina" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navegación secundaria do sitio" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Axuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Acerca de" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Preguntas máis frecuentes" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Condicións do servicio" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Protección de datos" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Código fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Insignia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licenza do software StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** é un servizo de microblogue ofrecido por [%%site.broughtby%" -"%](%%site.broughtbyurl%%)." +"**%%site.name%%** é un servizo de mensaxes de blogue curtas ofrecido por [%%" +"site.broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." -msgstr "**%%site.name%%** é un servizo de microblogue." +msgstr "**%%site.name%%** é un servizo de mensaxes de blogue curtas." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: 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 "" -"Utiliza a versión %s do software de microblogue [StatusNet](http://status." -"net/), dispoñible baixo a [Licenza Pública Xeral Affero de GNU](http://www." -"fsf.org/licensing/licenses/agpl-3.0.html) (en inglés)." +"Utiliza a versión %s do software de mensaxes de blogue curtas [StatusNet]" +"(http://status.net/), dispoñible baixo a [Licenza Pública Xeral Affero de " +"GNU](http://www.fsf.org/licensing/licenses/agpl-3.0.html) (en inglés)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licenza dos contidos do sitio" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "O contido e os datos de %1$s son privados e confidenciais." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5233,33 +5360,33 @@ msgstr "" "todos os dereitos." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Os contidos e datos son propiedade intelectual dos colaboradores. Quedan " "reservados todos os dereitos." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" "Todos os contidos e datos de %1$s están dispoñibles baixo a licenza %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paxinación" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Posteriores" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Anteriores" @@ -5308,64 +5435,64 @@ msgid "Unable to delete design setting." msgstr "Non se puido borrar a configuración do deseño." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuración básica do sitio" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Sitio" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuración do deseño" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Deseño" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuración do usuario" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Usuario" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuración de acceso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuración das rutas" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuración das sesións" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Modificar a nota do sitio" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configuración das instantáneas" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "O recurso API precisa permisos de lectura e escritura, pero só dispón de " @@ -5498,11 +5625,11 @@ msgstr "Notas nas que se anexou este ficheiro" msgid "Tags for this attachment" msgstr "Etiquetas para este ficheiro" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Non se puido cambiar o contrasinal" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Non se permite cambiar o contrasinal" @@ -5596,14 +5723,14 @@ msgstr "Nome completo: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Localidade: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Sitio web: %s" @@ -6138,8 +6265,17 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "Agora %1$s segue as súas notas en %2$s." +#: 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 "" +"Se cre que esta conta se está usando con fins abusivos, pode bloquear a súa " +"lista de subscritores e informar disto aos administradores do sitio en %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6166,19 +6302,19 @@ msgstr "" "notificación en %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "BiografÃa: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Novo enderezo de correo electrónico para publicar en %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6200,31 +6336,31 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Estado de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmación dos SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "" "%s: utilice o seguinte código para confirmar que o número de teléfono é seu:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s fÃxolle un aceno" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6252,13 +6388,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nova mensaxe privada de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6292,13 +6428,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) marcou a súa nota como favorita" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6337,7 +6473,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6348,13 +6484,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) enviou unha nota á súa atención" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6416,7 +6552,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" @@ -6474,24 +6610,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." @@ -6547,51 +6683,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" @@ -6701,7 +6837,7 @@ msgstr "Media diaria" msgid "All groups" msgstr "Todos os grupos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "AÃnda non se implantou o método." @@ -6725,7 +6861,7 @@ msgstr "Salientadas" msgid "Popular" msgstr "Populares" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Sen argumentos \"return-to\"." @@ -6746,7 +6882,7 @@ msgstr "Repetir esta nota" msgid "Revoke the \"%s\" role from this user" msgstr "Revogarlle o rol \"%s\" a este usuario" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Non se estableceu ningún usuario único para o modo de usuario único." @@ -6844,6 +6980,54 @@ msgstr "Nube de etiquetas que lle puxo a outras persoas" msgid "None" msgstr "Ningún" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" +"O servidor non pode xestionar as cargas de temas visuais sen soporte para o " +"formato ZIP." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Non se puido gardar o tema visual." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "Tema visual inválido: a estrutura do directorio é incorrecta" + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"O tema visual cargado é grande de máis; o tamaño descomprimido non pode " +"superar os %d bytes." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Arquivo de tema visual 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 "" +"O tema visual contén un ficheiro inválido ou nome de cartafol incorrecto. " +"LimÃteo a letras ASCII, dÃxitos, barras baixas e signos menos." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "O tema visual contén o tipo de ficheiro \".%s\". Non está permitido." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Houbo un erro ao abrir o arquivo do tema visual." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Os que máis publican" @@ -6924,56 +7108,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "hai uns segundos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "hai como un minuto" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "hai como %d minutos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "hai como unha hora" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "hai como %d horas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "hai como un dÃa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "hai como %d dÃas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "hai como un mes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "hai como %d meses" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "hai como un ano" diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po index 486fc3285..64c36e84e 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:14+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:32+0000\n" "Language-Team: Hebrew\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -20,7 +20,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "קבל" @@ -89,25 +89,25 @@ msgid "Save" msgstr "שמור" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "×ין הודעה כזו." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -120,7 +120,7 @@ msgid "No such user." msgstr "×ין משתמש ×›×–×”." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s וחברי×" @@ -128,39 +128,39 @@ msgstr "%s וחברי×" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 וחברי×" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "×”×–× ×•×ª ×”×—×‘×¨×™× ×©×œ %s" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "×”×–× ×•×ª ×”×—×‘×¨×™× ×©×œ %s" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, fuzzy, php-format msgid "Feed for friends of %s (Atom)" msgstr "×”×–× ×•×ª ×”×—×‘×¨×™× ×©×œ %s" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -168,81 +168,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 #, fuzzy msgid "You and friends" msgstr "%s וחברי×" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "קוד ×”×ישור ×œ× × ×ž×¦×." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "עידכון המשתמש × ×›×©×œ." @@ -264,7 +264,7 @@ msgstr "שמירת הפרופיל × ×›×©×œ×”." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -340,31 +340,32 @@ msgstr "" msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "זהו כבר זיהוי ×”-Jabber שלך." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -395,126 +396,131 @@ msgstr "עידכון המשתמש × ×›×©×œ." msgid "Could not find target user." msgstr "עידכון המשתמש × ×›×©×œ." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "×›×™× ×•×™ יכול להכיל רק ×ותיות ×× ×’×œ×™×•×ª ×§×˜× ×•×ª ומספרי×, ×•×œ×œ× ×¨×•×•×—×™×." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "×›×™× ×•×™ ×–×” כבר תפוס. × ×¡×” ×›×™× ×•×™ ×חר." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "×©× ×ž×©×ª×ž×© ×œ× ×—×•×§×™." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "ל×תר הבית יש כתובת ×œ× ×—×•×§×™×ª." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "×”×©× ×”×ž×œ× ×רוך מידי (מותרות 255 ×ותיות בלבד)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "הביוגרפיה ×רוכה מידי (לכל היותר 140 ×ותיות)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "×©× ×”×ž×™×§×•× ×רוך מידי (מותר עד 255 ×ותיות)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "כתובת ×תר הבית '%s' ××™× ×” חוקית" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "×›×™× ×•×™ ×–×” כבר תפוס. × ×¡×” ×›×™× ×•×™ ×חר." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "×œ× × ×ž×¦×" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "כבר × ×›× ×¡×ª למערכת!" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "× ×›×©×œ×” ×”×”×¤× ×™×” לשרת: %s" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "×œ× ×©×œ×—× ×• ××œ×™× ×• ×ת הפרופיל ×”×–×”" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "× ×›×©×œ×” יצירת OpenID מתוך: %s" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "פרופיל" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "×œ× ×©×œ×—× ×• ××œ×™× ×• ×ת הפרופיל ×”×–×”" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -526,15 +532,15 @@ msgstr "גודל ×œ× ×—×•×§×™." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -598,13 +604,13 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 #, fuzzy msgid "Account" msgstr "×ודות" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -612,8 +618,8 @@ msgid "Nickname" msgstr "×›×™× ×•×™" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "סיסמה" @@ -629,11 +635,11 @@ msgstr "" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -652,62 +658,66 @@ msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון" msgid "Already repeated that notice." msgstr "כבר × ×›× ×¡×ª למערכת!" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 #, fuzzy msgid "Status deleted." msgstr "×”×ª×ž×•× ×” ×¢×•×“×›× ×”." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "×œ× × ×ž×¦×" -#: actions/apistatusesupdate.php:304 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 "פורמט ×”×ª×ž×•× ×” ××™× ×• × ×ª×ž×š." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "הסטטוס של %1$s ב-%2$s " -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "מיקרובלוג מ×ת %s" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "הסטטוס של %1$s ב-%2$s " -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -722,16 +732,20 @@ msgstr "תגובת עבור %s" msgid "Repeats of %s" msgstr "תגובת עבור %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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 "מחק" @@ -831,12 +845,12 @@ msgstr "×”×ª×ž×•× ×” ×¢×•×“×›× ×”." msgid "You already blocked that user." msgstr "כבר × ×›× ×¡×ª למערכת!" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 #, fuzzy msgid "Block user" msgstr "×ין משתמש ×›×–×”." -#: actions/block.php:130 +#: 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 " @@ -848,7 +862,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -858,7 +872,7 @@ msgstr "ל×" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "×ין משתמש ×›×–×”." @@ -868,7 +882,7 @@ msgstr "×ין משתמש ×›×–×”." #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -877,12 +891,12 @@ msgid "Yes" msgstr "כן" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 #, fuzzy msgid "Block this user" msgstr "×ין משתמש ×›×–×”." -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -1017,7 +1031,7 @@ msgstr "×œ× ×©×œ×—× ×• ××œ×™× ×• ×ת הפרופיל ×”×–×”" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1051,7 +1065,7 @@ msgstr "ת×ר ×ת עצמך ו×ת × ×•×©××™ ×”×¢× ×™×™×Ÿ שלך ב-140 ×ות #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "" @@ -1123,50 +1137,59 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "גודל ×œ× ×—×•×§×™." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "עמוד ×–×” ××™× ×• זמין בסוג מדיה ש×תה יכול לקבל" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "×©× ×” סיסמה" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "הודעה חדשה" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "×©× ×”" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "הודעה חדשה" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "הודעה חדשה" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1174,61 +1197,69 @@ msgid "" msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "×©× ×” סיסמה" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "התחבר" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "חיפוש" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "טקסט" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "×”×™×›× ×¡" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1238,7 +1269,7 @@ msgstr "" msgid "Save" msgstr "שמור" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1362,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 "שמירת מידע ×”×ª×ž×•× ×” × ×›×©×œ" @@ -1526,7 +1558,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "" @@ -1763,13 +1795,13 @@ msgstr "למשתמש ×ין פרופיל." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1914,7 +1946,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "" @@ -2311,51 +2343,51 @@ msgstr "×œ× ×©×œ×—× ×• ××œ×™× ×• ×ת הפרופיל ×”×–×”" msgid "%1$s left group %2$s" msgstr "הסטטוס של %1$s ב-%2$s " -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "כבר מחובר." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "×©× ×ž×©×ª×ž×© ×ו סיסמה ×œ× × ×›×•× ×™×." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "×œ× ×ž×•×¨×©×”." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "×”×™×›× ×¡" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "זכור ×ותי" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "בעתיד התחבר ×וטומטית; ×œ× ×œ×©×™×ž×•×© ×‘×ž×—×©×‘×™× ×¦×™×‘×•×¨×™×™×!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "שכחת ×ו ×יבדת ×ת הסיסמה?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "לצרכי ×בטחה, ×”×›× ×¡ מחדש ×ת ×©× ×”×ž×©×ª×ž×© והסיסמה ×œ×¤× ×™ ×©×ª×©× ×” ×ת ההגדרות." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "×©× ×”×ž×©×ª×ž×© ×ו הסיסמה ×œ× ×—×•×§×™×™×" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2506,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 @@ -2560,31 +2592,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "להודעה ×ין פרופיל" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "הסטטוס של %1$s ב-%2$s " #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "התחבר" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2696,7 +2728,7 @@ msgid "6 or more characters" msgstr "לפחות 6 ×ותיות" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "×שר" @@ -2708,11 +2740,11 @@ msgstr "×–×”×” לסיסמה למעלה" msgid "Change" msgstr "×©× ×”" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "הסיסמ×ות ×œ× ×ª×•×מות." @@ -2733,7 +2765,7 @@ msgid "Password saved." msgstr "הסיסמה × ×©×ž×¨×”." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2947,44 +2979,44 @@ msgstr "פרופיל ×œ× ×ž×•×›×¨" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1 עד 64 ×ותיות ×× ×’×œ×™×•×ª ×§×˜× ×•×ª ×ו מספרי×, ×œ×œ× ×¡×™×ž× ×™ פיסוק ×ו רווחי×." -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "ת×ר ×ת עצמך ו×ת × ×•×©××™ ×”×¢× ×™×™×Ÿ שלך ב-140 ×ותיות" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "ת×ר ×ת עצמך ו×ת × ×•×©××™ ×”×¢× ×™×™×Ÿ שלך ב-140 ×ותיות" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "ביוגרפיה" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "מיקומך, למשל \"עיר, ×ž×“×™× ×” ×ו מחוז, ×רץ\"" @@ -3024,7 +3056,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "הביוגרפיה ×רוכה מידי (לכל היותר 140 ×ותיות)" @@ -3274,7 +3306,7 @@ msgstr "הסיסמה חייבת להיות בת לפחות 6 ×ותיות." msgid "Password and confirmation do not match." msgstr "הסיסמה ו×ישורה ××™× ×Ÿ תו×מות." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "שגי××” ביצירת ×©× ×”×ž×©×ª×ž×©." @@ -3282,101 +3314,101 @@ msgstr "שגי××” ביצירת ×©× ×”×ž×©×ª×ž×©." msgid "New password successfully saved. You are now logged in." msgstr "הסיסמה החדשה × ×©×ž×¨×” בהצלחה. ×תה מחובר למערכת." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "שגי××” ב×ישור הקוד." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "הירש×" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "" -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "×©× ×”×ž×©×ª×ž×© ×ו הסיסמה ×œ× ×—×•×§×™×™×" -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr " לפחות 6 ×ותיות. שדה חובה." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "לשימוש רק ×‘×ž×§×¨×™× ×©×œ ×¢×™×“×›×•× ×™×, הודעות מערכת, ושיחזורי סיסמ×ות" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3395,7 +3427,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3479,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 "צור" @@ -3519,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 @@ -3532,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 @@ -3551,7 +3583,7 @@ msgstr "×œ× ×©×œ×—× ×• ××œ×™× ×• ×ת הפרופיל ×”×–×”" msgid "User doesn't have this role." msgstr "למשתמש ×ין פרופיל." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "×”×ª×ž×•× ×” ×¢×•×“×›× ×”." @@ -3568,7 +3600,7 @@ msgstr "למשתמש ×ין פרופיל." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3613,7 +3645,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3626,13 +3658,13 @@ msgid "Organization" msgstr "מיקו×" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 #, fuzzy 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 "סטטיסטיקה" @@ -3717,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 @@ -3787,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 "חבר מ××–" @@ -3802,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." @@ -3817,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." @@ -3826,7 +3858,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3902,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 @@ -4227,7 +4259,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4290,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 "יצירת ×”×ž× ×•×™ × ×›×©×œ×”." @@ -4463,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." @@ -4586,7 +4615,7 @@ msgstr "" "בדוק ×ת ×”×¤×¨×˜×™× ×›×“×™ ×œ×•×•×“× ×©×‘×¨×¦×•× ×š ×œ×”×™×¨×©× ×›×ž× ×•×™ להודעות משתמש ×–×”. ×× ××™× ×š רוצה " "להירש×, לחץ \"בטל\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4716,29 +4745,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "סטטיסטיקה" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4746,7 +4775,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4754,181 +4783,278 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "×ישי" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "שגי×ת מסד × ×ª×•× ×™× ×‘×”×›× ×¡×ª התגובה: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "יצירת ×”×ž× ×•×™ × ×›×©×œ×”." @@ -4982,128 +5108,128 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "×ישי" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "×©× ×” סיסמה" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "× ×›×©×œ×” ×”×”×¤× ×™×” לשרת: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "התחבר" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "גודל ×œ× ×—×•×§×™." #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "צ×" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "צור חשבון חדש" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "הירש×" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "×”×™×›× ×¡" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "עזרה" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "עזרה" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5111,74 +5237,74 @@ msgstr "חיפוש" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "הודעה חדשה" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "הודעה חדשה" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" msgstr "הרשמות" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "עזרה" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "×ודות" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "רשימת ש×לות × ×¤×•×¦×•×ª" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "פרטיות" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "מקור" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "צור קשר" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5188,13 +5314,13 @@ msgstr "" "site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** ×”×•× ×©×¨×•×ª ביקרובלוג." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5206,51 +5332,51 @@ msgstr "" "licensing/licenses/agpl-3.0.html)" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 #, fuzzy 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:1203 +#: lib/action.php:1213 #, fuzzy msgid "Before" msgstr "×œ×¤× ×™ >>" @@ -5299,73 +5425,73 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "הרשמות" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "הודעה חדשה" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "×ישי" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "הרשמות" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "מתשמש" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "הרשמות" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "הרשמות" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "הרשמות" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "הודעה חדשה" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "הרשמות" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5501,12 +5627,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "הסיסמה × ×©×ž×¨×”." -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "הסיסמה × ×©×ž×¨×”." @@ -5601,14 +5727,14 @@ 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:263 +#: 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "" @@ -6107,8 +6233,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s כעת מ×זין להודעות שלך ב-%2$s" +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6129,19 +6262,19 @@ msgstr "" " %4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "×ודות: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6155,30 +6288,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6195,13 +6328,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6221,13 +6354,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%1$s כעת מ×זין להודעות שלך ב-%2$s" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6249,7 +6382,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6257,13 +6390,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6300,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 "" @@ -6355,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 "" @@ -6432,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 "הודעות" @@ -6594,7 +6727,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6619,7 +6752,7 @@ msgstr "" msgid "Popular" msgstr "×× ×©×™×" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "×ין מסמך ×›×–×”." @@ -6643,7 +6776,7 @@ msgstr "×ין הודעה כזו." msgid "Revoke the \"%s\" role from this user" msgstr "×ין משתמש ×›×–×”." -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6747,6 +6880,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "שגי××” בעדכון פרופיל מרוחק" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6833,56 +7010,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "×œ×¤× ×™ ×›-%d דקות" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "×œ×¤× ×™ ×›-%d שעות" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "×œ×¤× ×™ ×›-%d ימי×" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "×œ×¤× ×™ ×›-%d חודשי×" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "×œ×¤× ×™ ×›×©× ×”" diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po index 8600eaf7d..860efa66e 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:17+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:33+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "PÅ™istup" @@ -40,7 +41,7 @@ msgstr "Registrowanje" #. TRANS: Checkbox instructions for admin setting "Private" #: actions/accessadminpanel.php:165 msgid "Prohibit anonymous users (not logged in) from viewing site?" -msgstr "" +msgstr "Anonymnym wužiwarjam (njepÅ™izjewjenym) wobhladowanje sydÅ‚a zakazć?" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 @@ -85,24 +86,24 @@ msgid "Save" msgstr "SkÅ‚adować" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Strona njeeksistuje." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -115,7 +116,7 @@ msgid "No such user." msgstr "Wužiwar njeeksistuje" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s a pÅ™ećeljo, strona %2$d" @@ -123,39 +124,39 @@ msgstr "%1$s a pÅ™ećeljo, strona %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 a pÅ™ećeljo" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Kanal za pÅ™ećelow wužiwarja %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Kanal za pÅ™ećelow wužiwarja %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Kanal za pÅ™ećelow wužiwarja %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -163,79 +164,79 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Ty a pÅ™ećeljo" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "" +msgstr "Aktualizacije wot %1$s a pÅ™ećelow na %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API-metoda njenamakana." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Tuta metoda wužaduje sej POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Wužiwar njeje so daÅ‚ aktualizować." @@ -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:210 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 @@ -286,11 +287,11 @@ msgstr "NjemóžeÅ¡ so samoho blokować." #: actions/apiblockcreate.php:126 msgid "Block user failed." -msgstr "" +msgstr "Blokowanje wužiwarja je so njeporadźiÅ‚o." #: actions/apiblockdestroy.php:114 msgid "Unblock user failed." -msgstr "" +msgstr "Wotblokowanje wužiwarja je so njeporadźiÅ‚o." #: actions/apidirectmessage.php:89 #, php-format @@ -328,31 +329,33 @@ msgstr "PÅ™ijimowar njenamakany." #: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." msgstr "" +"Njeje móžno, direktne powÄ›sće wužiwarjam pósÅ‚ać, kotÅ™iž twoji pÅ™ećeljo " +"njejsu." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Status z tym ID njenamakany." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Tutón status je hižo faworit." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." -msgstr "" +msgstr "Faworit njeda so wutworić." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Tón status faworit njeje." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 msgid "Could not delete favorite." -msgstr "" +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 @@ -367,135 +370,140 @@ 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 "" +#: 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." -msgstr "" +msgstr "ŽórÅ‚owy wužiwar njeda so postajić." #: actions/apifriendshipsshow.php:142 msgid "Could not find target user." -msgstr "" +msgstr "Cilowy wužiwar njeda so namakać." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: 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:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "PÅ™imjeno so hižo wužiwa. Spytaj druhe." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Žane pÅ‚aćiwe pÅ™imjeno." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Startowa strona njeje pÅ‚aćiwy URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "DospoÅ‚ne mjeno je pÅ™edoÅ‚ho (maks. 255 znamjeÅ¡kow)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Wopisanje je pÅ™edoÅ‚ho (maks. %d znamjeÅ¡kow)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "MÄ›stno je pÅ™edoÅ‚ho (maks. 255 znamjeÅ¡kow)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "PÅ™ewjele aliasow! Maksimum: %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "NjepÅ‚aćiwy alias: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: 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\" so hižo wužiwa. Spytaj druhi." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Alias njemóže samsny kaž pÅ™imjeno być." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Skupina njenamakana." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Sy hižo ÄÅ‚on teje skupiny." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." -msgstr "" +msgstr "Administratora tuteje skupiny je će zablokowaÅ‚." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "NjebÄ› móžno wužiwarja %1$s skupinje %2%s pÅ™idać." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Njejsy ÄÅ‚on tuteje skupiny." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "NjebÄ› móžno wužiwarja %1$s ze skupiny %2$s wotstronić." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" -msgstr "" +msgstr "Skupiny wužiwarja %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." -msgstr "" +msgstr "Skupiny na %1$s, w kotrychž wužiwar %2$s je ÄÅ‚on." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s skupinow" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -506,15 +514,15 @@ msgstr "NjepÅ‚aćiwy 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -556,15 +564,15 @@ msgstr "" #: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44 #: actions/smssettings.php:277 lib/designsettings.php:304 msgid "Unexpected form submission." -msgstr "" +msgstr "NjewoÄakowane wotpósÅ‚anje formulara." #: actions/apioauthauthorize.php:259 msgid "An application would like to connect to your account" -msgstr "" +msgstr "Aplikacija chce so z twojom kontom zwjazać" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "PÅ™istup dowolić abo wotpokazać" #: actions/apioauthauthorize.php:292 #, php-format @@ -575,12 +583,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Konto" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -588,8 +596,8 @@ msgid "Nickname" msgstr "PÅ™imjeno" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "HesÅ‚o" @@ -603,13 +611,13 @@ msgstr "Dowolić" #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." -msgstr "" +msgstr "PÅ™istup ke kontowym informacijam dowolić abo wotpokazać." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Tuta metoda wužaduje sej POST abo DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "NjemóžeÅ¡ status druheho wužiwarja zniÄić." @@ -626,62 +634,66 @@ msgstr "Njemóžno twoju zdźělenku wospjetować." msgid "Already repeated that notice." msgstr "Tuta zdźělenka bu hižo wospjetowana." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Status zniÄeny." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Žadyn status z tym ID namakany." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Njenamakany." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "" +msgstr "%s aktualizacijow wote wÅ¡Ä›ch!" #: actions/apitimelineretweetedtome.php:111 #, php-format @@ -693,16 +705,20 @@ msgstr "" msgid "Repeats of %s" msgstr "" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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." @@ -756,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ć" @@ -778,7 +794,7 @@ msgstr "" #: actions/avatarsettings.php:347 actions/grouplogo.php:380 msgid "Lost our file data." -msgstr "" +msgstr "NaÅ¡e datajowe daty su so zhubili." #: actions/avatarsettings.php:370 msgid "Avatar updated." @@ -786,7 +802,7 @@ msgstr "Awatar zaktualizowany." #: actions/avatarsettings.php:373 msgid "Failed updating avatar." -msgstr "" +msgstr "Aktualizowanje awatara je so njeporadźiÅ‚o." #: actions/avatarsettings.php:397 msgid "Avatar deleted." @@ -796,11 +812,11 @@ msgstr "Awatar zniÄeny." msgid "You already blocked that user." msgstr "Sy tutoho wužiwarja hižo zablokowaÅ‚." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Wužiwarja blokować" -#: actions/block.php:130 +#: 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 " @@ -812,7 +828,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -821,7 +837,7 @@ msgstr "NÄ›" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Tutoho wužiwarja njeblokować" @@ -830,7 +846,7 @@ msgstr "Tutoho wužiwarja njeblokować" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -838,11 +854,11 @@ msgid "Yes" msgstr "Haj" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Tutoho wužiwarja blokować" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -863,7 +879,7 @@ msgstr "Skupina njeeksistuje." #: actions/blockedfromgroup.php:97 #, php-format msgid "%s blocked profiles" -msgstr "" +msgstr "%s je profile zablokowaÅ‚" #: actions/blockedfromgroup.php:100 #, php-format @@ -876,15 +892,15 @@ msgstr "" #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" -msgstr "" +msgstr "Wužiwarja za skupinu wotblokować" #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" -msgstr "" +msgstr "Wotblokować" #: actions/blockedfromgroup.php:320 lib/unblockform.php:80 msgid "Unblock this user" -msgstr "" +msgstr "Tutoho wužiwarja wotblokować" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 @@ -927,14 +943,14 @@ msgstr "Tuta adresa bu hižo wobkrućena." #: actions/profilesettings.php:283 actions/smssettings.php:308 #: actions/smssettings.php:464 msgid "Couldn't update user." -msgstr "" +msgstr "Wužiwar njeda aktualizować." #. 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 "" +msgstr "E-mejlowe wobkrućenje njeda so zhaÅ¡eć." #: actions/confirmaddress.php:146 msgid "Confirm address" @@ -969,7 +985,7 @@ msgstr "Njejsy wobsedźer tuteje aplikacije." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1000,7 +1016,7 @@ msgstr "Tutu aplikaciju zniÄić" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "NjepÅ™izjewjeny." @@ -1029,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ć" @@ -1067,45 +1083,53 @@ msgstr "Design" msgid "Design settings for this StatusNet site." msgstr "Designowe nastajenja za tute sydÅ‚o StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "NjepÅ‚aćiwy logowy URL." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Å at njesteji k dispoziciji: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Logo zmÄ›nić" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo sydÅ‚a" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Å at zmÄ›nić" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Å at sydÅ‚a" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Å at za sydÅ‚o." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Swójski Å¡at" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "MóžeÅ¡ swójski Å¡at StatusNet jako .ZIP-archiw nahrać." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Pozadkowy wobraz zmÄ›nić" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Pozadk" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1114,57 +1138,65 @@ msgstr "" "MóžeÅ¡ pozadkowy wobraz za sydÅ‚o nahrać. Maksimalna datajowa wulkosć je %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Zapinjeny" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Wupinjeny" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Barby zmÄ›nić" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Wobsah" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "BóÄnica" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Wotkazy" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "RozÅ¡Ä›rjeny" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Swójski CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Standardne hódnoty wužiwać" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Standardne designy wobnowić" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Na standard wróćo stajić" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1174,7 +1206,7 @@ msgstr "Na standard wróćo stajić" msgid "Save" msgstr "SkÅ‚adować" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Design skÅ‚adować" @@ -1234,7 +1266,7 @@ msgstr "URL žórÅ‚a pÅ‚aćiwy njeje." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "Organizacija je trÄ›bna." #: actions/editapplication.php:206 actions/newapplication.php:191 msgid "Organization is too long (max 255 chars)." @@ -1242,7 +1274,7 @@ msgstr "Mjeno organizacije je pÅ™edoÅ‚ho (maks. 255 znamjeÅ¡kow)." #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" +msgstr "Startowa strona organizacije je trÄ›bna." #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." @@ -1259,7 +1291,7 @@ msgstr "Aplikacija njeda so aktualizować." #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" -msgstr "" +msgstr "Skupinu %s wobdźěłać" #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 msgid "You must be logged in to create a group." @@ -1288,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ć." @@ -1404,7 +1437,7 @@ msgstr "" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:193 msgid "Send me email when someone sends me a private message." -msgstr "" +msgstr "E-mejl pósÅ‚ać, hdyž nÄ›chtó priwatnu powÄ›sć sćele." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 @@ -1442,7 +1475,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "NjepÅ‚aćiwa e-mejlowa adresa." @@ -1510,7 +1543,7 @@ msgstr "Žana adresa za dochadźace e-mejle." #: actions/emailsettings.php:504 actions/emailsettings.php:528 #: actions/smssettings.php:578 actions/smssettings.php:602 msgid "Couldn't update user record." -msgstr "" +msgstr "Datowa sadźba wužiwarja njeda so aktualizować." #. TRANS: Message given after successfully removing an incoming e-mail address. #: actions/emailsettings.php:508 actions/smssettings.php:581 @@ -1575,17 +1608,17 @@ msgstr "" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" -msgstr "" +msgstr "Nazhonići wužiwarjo" #: actions/featured.php:71 #, php-format msgid "Featured users, page %d" -msgstr "" +msgstr "Nazhonići wužiwarjo, strona %d" #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" -msgstr "" +msgstr "WubÄ›r wulkotnych wužiwarjow na %s" #: actions/file.php:34 msgid "No notice ID." @@ -1613,11 +1646,11 @@ msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" -msgstr "" +msgstr "MóžeÅ¡ lokalny abonement wužiwać!" #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." -msgstr "" +msgstr "Tutón wužiwar ći abonowanje njedowoli." #: actions/finishremotesubscribe.php:110 msgid "You are not authorized." @@ -1649,7 +1682,7 @@ msgstr "NjepÅ‚aćiwa róla." #: actions/grantrole.php:66 actions/revokerole.php:66 msgid "This role is reserved and cannot be set." -msgstr "" +msgstr "Tuta róla je wumÄ›njena a njeda so stajić." #: actions/grantrole.php:75 msgid "You cannot grant user roles on this site." @@ -1661,13 +1694,13 @@ msgstr "Wužiwar hižo ma tutu rólu." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Žadyn profil podaty." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Žadyn profil z tym ID." @@ -1712,7 +1745,7 @@ msgstr "Tutoho wužiwarja za tutu skupinu blokować" #: actions/groupblock.php:206 msgid "Database error blocking user from group." -msgstr "" +msgstr "Zmylk datoweje banki blokuje wužiwarja za skupinu." #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." @@ -1763,7 +1796,7 @@ msgstr "Logo zaktualizowane." #: actions/grouplogo.php:401 msgid "Failed updating logo." -msgstr "" +msgstr "Aktualizowanje loga je so njeporadźiÅ‚o." #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format @@ -1803,7 +1836,7 @@ msgstr "Tutoho wužiwarja k administratorej Äinić" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "" @@ -1812,7 +1845,7 @@ msgstr "" #: actions/grouprss.php:142 #, php-format msgid "Updates from members of %1$s on %2$s!" -msgstr "" +msgstr "Aktualizacije wot %1$s na %2$s!" #: actions/groups.php:62 lib/profileaction.php:223 lib/profileaction.php:249 #: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98 @@ -1860,6 +1893,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"Jeli njemóžeÅ¡ skupinu namakać, kotruž pytaÅ¡, móžeÅ¡ [ju wutworić] (%%action." +"newgroup%%)." #: actions/groupsearch.php:85 #, php-format @@ -1870,7 +1905,7 @@ msgstr "" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "Jenož administrator móže skupinskich ÄÅ‚onow wotblokować." #: actions/groupunblock.php:95 msgid "User is not blocked from group." @@ -1878,7 +1913,7 @@ msgstr "Wužiwar njeje zablokowany za skupinu." #: actions/groupunblock.php:128 actions/unblock.php:86 msgid "Error removing the block." -msgstr "" +msgstr "Zmylk pÅ™i wotstronjenju blokowanja." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 @@ -2021,16 +2056,17 @@ msgstr "IM-adresa bu wotstronjena." #: actions/inbox.php:59 #, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "" +msgstr "Dochadny póst za %1$s - strona %2$d" #: actions/inbox.php:62 #, php-format msgid "Inbox for %s" -msgstr "" +msgstr "Dochadny póst za %s" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." msgstr "" +"To je twój dochadny póst, kotryž twoje priwatne dochadne powÄ›sće nalistuje." #: actions/invite.php:39 msgid "Invites have been disabled." @@ -2070,11 +2106,11 @@ msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" "These people are already users and you were automatically subscribed to them:" -msgstr "" +msgstr "Tući ludźo su hižo wužiwarjo a ty sy jich awtomatisce abonowaÅ‚:" #: actions/invite.php:144 msgid "Invitation(s) sent to the following people:" -msgstr "" +msgstr "PÅ™eproÅ¡enja, kotrež buchu na slÄ›dowacych ludźi pósÅ‚ane:" #: actions/invite.php:150 msgid "" @@ -2151,7 +2187,7 @@ msgstr "" #: actions/joingroup.php:60 msgid "You must be logged in to join a group." -msgstr "" +msgstr "DyrbiÅ¡ pÅ™izjewjeny być, zo by do skupiny zastupiÅ‚." #: actions/joingroup.php:88 actions/leavegroup.php:88 msgid "No nickname or ID." @@ -2162,7 +2198,7 @@ msgstr "Žane pÅ™imjeno abo žadyn ID." #: actions/joingroup.php:141 lib/command.php:346 #, php-format msgid "%1$s joined group %2$s" -msgstr "" +msgstr "%1$s je do %2$s zastupiÅ‚" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." @@ -2177,55 +2213,58 @@ msgstr "Njejsy ÄÅ‚on teje skupiny." #: actions/leavegroup.php:137 lib/command.php:392 #, php-format msgid "%1$s left group %2$s" -msgstr "" +msgstr "%1$s je skupinu %2$s wopušćiÅ‚" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Hižo pÅ™izjewjeny." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "WopaÄne wužiwarske mjeno abo hesÅ‚o." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Zmylk pÅ™i nastajenju wužiwarja. Snano njejsy awtorizowany." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "PÅ™izjewić" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "PÅ™i sydle pÅ™izjewić" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "SkÅ‚adować" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "HesÅ‚o zhubjene abo zabyte?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" +"ProÅ¡u zapodaj z pÅ™iÄinow wÄ›stoty swoje wužiwarske mjeno znowa, prjedy haÄ " +"zmÄ›niÅ¡ swoje nastajenja." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "PÅ™izjewjenje z twojim wužiwarskim mjenom a hesÅ‚om." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" +"Hišće nimaÅ¡ wužiwarske mjeno? [Zregistruj (%%action.register%%) nowe konto." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2239,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." @@ -2335,7 +2374,7 @@ msgstr "Tekstowe pytanje" #: actions/noticesearch.php:91 #, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "" +msgstr "Pytanske wuslÄ›dki za \"%1$s\" na %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2363,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 @@ -2384,12 +2423,12 @@ msgstr "Aplikacije OAuth" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Aplikacije, za kotrež sy zregistrowaÅ‚" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "Hišće njejsy aplikacije zregistrowaÅ‚." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" @@ -2416,30 +2455,30 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Zdźělenka nima profil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: 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:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Wobsahowy typ %s so njepodpÄ›ruje." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2506,12 +2545,12 @@ msgstr "PÅ™izjewjenske znamjeÅ¡ko spadnjene." #: actions/outbox.php:58 #, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "" +msgstr "Wuchadny póst za %1$s - strona %2$d" #: actions/outbox.php:61 #, php-format msgid "Outbox for %s" -msgstr "" +msgstr "Wuchadny póst za %s" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." @@ -2542,23 +2581,23 @@ msgid "6 or more characters" msgstr "6 abo wjace znamjeÅ¡kow" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Wobkrućić" #: actions/passwordsettings.php:113 actions/recoverpassword.php:240 msgid "Same as password above" -msgstr "" +msgstr "Samsne hesÅ‚o kaž horjeka" #: actions/passwordsettings.php:117 msgid "Change" msgstr "ZmÄ›nić" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "HesÅ‚o dyrbi 6 abo wjace znamjeÅ¡kow měć." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Hesle so njekryjetej." @@ -2579,7 +2618,7 @@ msgid "Password saved." msgstr "HesÅ‚o skÅ‚adowane." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Šćežki" @@ -2769,6 +2808,8 @@ msgstr "Profilowe nastajenja" msgid "" "You can update your personal profile info here so people know more about you." msgstr "" +"MóžeÅ¡ swoje wosobinske profilowe informacije aktualizować, zo bychu ludźo " +"wjace wo tebi zhonili." #: actions/profilesettings.php:99 msgid "Profile information" @@ -2778,45 +2819,45 @@ msgstr "Profilowe informacije" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "DospoÅ‚ne mjeno" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Startowa strona" -#: actions/profilesettings.php:117 actions/register.php:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "" +msgstr "Wopisaj sebje a swoje zajimy z %d znamjeÅ¡kami" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" -msgstr "" +msgstr "Wopisaj sebje a swoje zajimy" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Biografija" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "MÄ›stno" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" -msgstr "" +msgstr "Hdźež sy, na pÅ™. \"mÄ›sto, zwjazkowy kraj (abo region) , kraj\"" #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" @@ -2854,7 +2895,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Biografija je pÅ™edoÅ‚ha (maks. %d znamjeÅ¡kow)." @@ -2896,7 +2937,7 @@ msgstr "Nastajenja skÅ‚adowane." #: actions/public.php:83 #, php-format msgid "Beyond the page limit (%s)." -msgstr "" +msgstr "Limit stronow (%s) pÅ™ekroÄeny." #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3004,11 +3045,11 @@ msgstr "" #: actions/recoverpassword.php:86 msgid "Error with confirmation code." -msgstr "" +msgstr "Zmylk z wobkrućenskim kodom." #: actions/recoverpassword.php:97 msgid "This confirmation code is too old. Please start again." -msgstr "" +msgstr "Tutón wobkrućenski kod je pÅ™estary. ProÅ¡u zapoÄÅ„ hišće raz." #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." @@ -3026,11 +3067,11 @@ msgstr "Sy so identifikowaÅ‚. Zapodaj deleka nowe hesÅ‚o. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "" +msgstr "Wobnowjenje hesÅ‚a" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "" +msgstr "PÅ™imjeno abo e-mejlowa adresa" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3039,7 +3080,7 @@ msgstr "" #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" -msgstr "" +msgstr "Wobnowić" #: actions/recoverpassword.php:208 msgid "Reset password" @@ -3047,11 +3088,11 @@ msgstr "HesÅ‚o wróćo stajić" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "" +msgstr "HesÅ‚o wobnowić" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" -msgstr "" +msgstr "Wobnowjenje hesÅ‚a požadane" #: actions/recoverpassword.php:213 msgid "Unknown action" @@ -3080,7 +3121,7 @@ msgstr "Wužiwar nima žanu zregistrowanu e-mejlowu adresu." #: actions/recoverpassword.php:313 msgid "Error saving address confirmation." -msgstr "" +msgstr "Zmylk pÅ™i skÅ‚adowanju adresoweho wobkrućenja." #: actions/recoverpassword.php:338 msgid "" @@ -3098,110 +3139,110 @@ msgstr "HesÅ‚o dyrbi 6 znamjeÅ¡kow abo wjace měć." #: actions/recoverpassword.php:369 msgid "Password and confirmation do not match." -msgstr "" +msgstr "HesÅ‚o a jeho wobkrućenje so njekryjetej." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." -msgstr "" +msgstr "Zmylk pÅ™i nastajenju wužiwarja." #: actions/recoverpassword.php:395 msgid "New password successfully saved. You are now logged in." -msgstr "" +msgstr "Nowe hesÅ‚o bu wuspěšnje skÅ‚adowane. Sy nÄ›tko pÅ™izjewjeny." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Wodaj, jenož pÅ™eproÅ¡eni ludźo móžeja so registrować." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Wodaj, njepÅ‚aćiwy pÅ™eproÅ¡enski kod." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registrowanje wuspěšne" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrować" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registracija njedowolena." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." -msgstr "" +msgstr "NjemóžeÅ¡ so registrować, jeli njepÅ™izwoleÅ¡ do licency." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "E-mejlowa adresa hižo eksistuje." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "NjepÅ‚aćiwe wužiwarske mjeno abo hesÅ‚o." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 abo wjace znamjeÅ¡kow. TrÄ›bne." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Jenake kaž hesÅ‚o horjeka. TrÄ›bne." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-mejl" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Dlěše mjeno, wosebje twoje \"woprawdźite\" mjeno" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "WÅ¡Ä› prawa wumÄ›njenjene." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3220,7 +3261,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3236,11 +3277,11 @@ msgstr "" #: actions/remotesubscribe.php:112 msgid "Remote subscribe" -msgstr "" +msgstr "Zdaleny abonement" #: actions/remotesubscribe.php:124 msgid "Subscribe to a remote user" -msgstr "" +msgstr "Zdaleneho wužiwarja abonować" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3273,7 +3314,7 @@ msgstr "" #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." -msgstr "" +msgstr "To je lokalny profil! PÅ™izjew so, zo by abonowaÅ‚." #: actions/remotesubscribe.php:183 msgid "Couldn’t get a request token." @@ -3295,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" @@ -3333,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 @@ -3346,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 @@ -3363,7 +3404,7 @@ msgstr "NjemóžeÅ¡ wužiwarske róle na tutym sydle wotwoÅ‚ać." msgid "User doesn't have this role." msgstr "Wužiwar nima tutu rólu." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3377,7 +3418,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Posedźenja" @@ -3417,10 +3458,10 @@ msgstr "Aplikaciski profil" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 msgid "Icon" -msgstr "" +msgstr "Symbol" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Mjeno" @@ -3431,12 +3472,12 @@ msgid "Organization" msgstr "Organizacija" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3448,7 +3489,7 @@ msgstr "" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Aplikaciske akcije" #: actions/showapplication.php:236 msgid "Reset key & secret" @@ -3456,7 +3497,7 @@ msgstr "" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Aplikaciske informacije" #: actions/showapplication.php:263 msgid "Consumer key" @@ -3521,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 @@ -3589,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" @@ -3603,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." @@ -3617,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." @@ -3626,7 +3667,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratorojo" @@ -3641,12 +3682,12 @@ msgstr "" #: actions/showmessage.php:108 #, php-format msgid "Message to %1$s on %2$s" -msgstr "" +msgstr "PowÄ›sć do %1$s na %2$s" #: actions/showmessage.php:113 #, php-format msgid "Message from %1$s on %2$s" -msgstr "" +msgstr "PowÄ›sć wot %1$s na %2$s" #: actions/shownotice.php:90 msgid "Notice deleted." @@ -3701,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 @@ -3770,7 +3811,7 @@ msgstr "SydÅ‚owe mjeno" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "" +msgstr "Mjeno twojeho sydÅ‚a, kaž \"TwojePÅ™edewzaće Microblog\"" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -3802,7 +3843,7 @@ msgstr "Standardne Äasowe pasmo" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "" +msgstr "Standardne Äasowe pasmo za sydÅ‚o; zwjetÅ¡a UTC." #: actions/siteadminpanel.php:262 msgid "Default language" @@ -3895,7 +3936,7 @@ msgstr "" #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 msgid "Confirmation code" -msgstr "" +msgstr "Wobkrućenski kod" #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 @@ -3965,7 +4006,7 @@ 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 "" +msgstr "To je wopaÄne wobkrućenske ÄisÅ‚o." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 @@ -4009,7 +4050,7 @@ msgstr "Žadyn kod zapodaty" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4069,9 +4110,10 @@ 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 "" +msgstr "Abonement njeda so skÅ‚adować." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." @@ -4117,7 +4159,7 @@ msgstr "" #: actions/subscribers.php:110 #, php-format msgid "%s has no subscribers. Want to be the first?" -msgstr "" +msgstr "%s abonentow nima. ChceÅ¡ prÄ›ni być?" #: actions/subscribers.php:114 #, php-format @@ -4233,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Å‚." @@ -4284,7 +4322,7 @@ msgstr "" #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "" +msgstr "NjepÅ‚aćiwy standardny abonement: '%1$s' wužiwar njeje." #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 @@ -4334,7 +4372,7 @@ msgstr "" #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "" +msgstr "Abonement awtorizować" #: actions/userauthorization.php:110 msgid "" @@ -4343,7 +4381,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licenca" @@ -4366,7 +4404,7 @@ msgstr "Tutón abonement wotpokazać" #: actions/userauthorization.php:232 msgid "No authorization request!" -msgstr "" +msgstr "Žane awtorizaciske napraÅ¡owanje!" #: actions/userauthorization.php:254 msgid "Subscription authorized" @@ -4413,7 +4451,7 @@ msgstr "" #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "URL awatara '%s' njeje pÅ‚aćiwy" #: actions/userauthorization.php:350 #, php-format @@ -4423,7 +4461,7 @@ msgstr "" #: actions/userauthorization.php:355 #, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "" +msgstr "WopaÄny wobrazowy typ za awatarowy URL '%s'." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" @@ -4447,12 +4485,12 @@ msgstr "%1$s skupinow, strona %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" -msgstr "" +msgstr "DalÅ¡e skupiny pytać" #: actions/usergroups.php:159 #, php-format msgid "%s is not a member of any group." -msgstr "" +msgstr "%s ÄÅ‚on w žanej skupinje njeje." #: actions/usergroups.php:164 #, php-format @@ -4464,29 +4502,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" -msgstr "" +msgstr "Aktualizacije wot %1$s na %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" -msgstr "" +msgstr "Sobuskutkowarjo" -#: actions/version.php:168 +#: 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 " @@ -4494,7 +4532,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4502,183 +4540,276 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" -msgstr "" +msgstr "TykaÄe" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Wersija" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Awtorojo" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "" +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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "" +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 "" +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 "" +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ć." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" -msgstr "" +msgstr "Twoje profilowe nastajenja zmÄ›nić" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 msgid "Upload an avatar" -msgstr "" +msgstr "Awatar nahrać" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 msgid "Change your password" -msgstr "" +msgstr "Twoje hesÅ‚o zmÄ›nić" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:130 @@ -4712,188 +4843,188 @@ msgid "Untitled page" msgstr "Strona bjez titula" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Wosobinski" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "WaÅ¡u e-mejl, waÅ¡ awatar, waÅ¡e hesÅ‚o, waÅ¡ profil zmÄ›nić" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Ze sÅ‚užbami zwjazać" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Zwjazać" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "SydÅ‚owu konfiguraciju zmÄ›nić" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "PÅ™ećelow a kolegow pÅ™eprosyć, so tebi na %s pÅ™idružić" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "PÅ™eprosyć" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Ze sydÅ‚a wotzjewić" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Wotzjewić" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Konto zaÅ‚ožić" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrować" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "PÅ™i sydle pÅ™izjewić" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "PÅ™izjewjenje" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Pomhaj!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Pomoc" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Za ludźimi abo tekstom pytać" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Pytać" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Pomoc" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Wo" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Huste praÅ¡enja" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Priwatnosć" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "ŽórÅ‚o" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4901,13 +5032,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: 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:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4916,51 +5047,51 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: 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 @@ -4982,7 +5113,7 @@ 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 "" +msgstr "NjemóžeÅ¡ tute sydÅ‚o zmÄ›nić." #. TRANS: Client error message throw when a certain panel's settings cannot be changed. #: lib/adminpanelaction.php:110 @@ -4992,12 +5123,12 @@ msgstr "ZmÄ›ny na tutym woknje njejsu dowolene." #. TRANS: Client error message. #: lib/adminpanelaction.php:229 msgid "showForm() not implemented." -msgstr "" +msgstr "showForm() njeimplementowany." #. TRANS: Client error message #: lib/adminpanelaction.php:259 msgid "saveSettings() not implemented." -msgstr "" +msgstr "saveSettings() njeimplementowany." #. TRANS: Client error message thrown if design settings could not be deleted in #. TRANS: the admin panel Design. @@ -5006,76 +5137,76 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" -msgstr "" +msgstr "ZakÅ‚adna sydÅ‚owa konfiguracija" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "SydÅ‚o" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Design" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Wužiwarska konfiguracija" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Wužiwar" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "PÅ™istupna konfiguracija" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Konfiguracija posedźenjow" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "SydÅ‚owu zdźělenku wobdźěłać" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Konfiguracija wobrazowkowych fotow" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: 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 "" +msgstr "Aplikaciju wobdźěłać" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "Symbol za tutu aplikaciju" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 @@ -5101,12 +5232,12 @@ msgstr "URL žórÅ‚a" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "Organizacija, kotraž je za tutu aplikaciju zamoÅ‚wita" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 msgid "URL for the homepage of the organization" -msgstr "" +msgstr "URL za startowu stronu organizacije" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5121,7 +5252,7 @@ msgstr "Wobhladowak" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:295 msgid "Desktop" -msgstr "" +msgstr "Desktop" #. TRANS: Form guide. #: lib/applicationeditform.php:297 @@ -5131,12 +5262,12 @@ msgstr "" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 msgid "Read-only" -msgstr "" +msgstr "Jenož Äitajomny" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:339 msgid "Read-write" -msgstr "" +msgstr "Popisujomny" #. TRANS: Form guide. #: lib/applicationeditform.php:341 @@ -5151,12 +5282,12 @@ msgstr "PÅ™etorhnyć" #. TRANS: Application access type #: lib/applicationlist.php:136 msgid "read-write" -msgstr "" +msgstr "popisujomny" #. TRANS: Application access type #: lib/applicationlist.php:138 msgid "read-only" -msgstr "" +msgstr "jenož Äitajomny" #. 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 @@ -5173,7 +5304,7 @@ msgstr "WotwoÅ‚ać" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 msgid "Attachments" -msgstr "" +msgstr "PÅ™iwěški" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 @@ -5183,7 +5314,7 @@ msgstr "Awtor" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 msgid "Provider" -msgstr "" +msgstr "Poskićowar" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" @@ -5193,17 +5324,17 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "ZmÄ›njenje hesÅ‚a je so njeporadźiÅ‚o" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "ZmÄ›njenje hesÅ‚a njeje dowolene" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" -msgstr "" +msgstr "PÅ™ikazowe wuslÄ›dki" #: lib/channel.php:229 lib/mailhandler.php:142 msgid "Command complete" @@ -5211,7 +5342,7 @@ msgstr "" #: lib/channel.php:240 msgid "Command failed" -msgstr "" +msgstr "PÅ™ikaz je so njeporadźiÅ‚" #: lib/command.php:83 lib/command.php:105 msgid "Notice with that id does not exist" @@ -5226,18 +5357,18 @@ msgstr "Wužiwar nima poslednju powÄ›sć" #: lib/command.php:127 #, php-format msgid "Could not find a user with nickname %s" -msgstr "" +msgstr "Wužiwar z pÅ™imjenom %s njeda so namakać" #. 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 "" +msgstr "Lokalny wužiwar z pÅ™imjenom %s njeda so namakać" #: lib/command.php:180 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Tutón pÅ™ikaz hišće njeje implementowany." #: lib/command.php:225 msgid "It does not make a lot of sense to nudge yourself!" @@ -5288,17 +5419,17 @@ msgstr "DospoÅ‚ne mjeno: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "MÄ›stno: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" -msgstr "" +msgstr "Startowa strona: %s" #. TRANS: Whois output. %s is the bio information of the queried user. #: lib/command.php:430 @@ -5319,6 +5450,7 @@ msgstr "" #, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d" msgstr "" +"PowÄ›sć pÅ™edoÅ‚ho - maksimalna wulkosć je %1$d znamjeÅ¡kow, ty sy %2$d pósÅ‚aÅ‚" #. TRANS: Message given have sent a direct message to another user. #. TRANS: %s is the name of the other user. @@ -5329,7 +5461,7 @@ msgstr "Direktna powÄ›sć do %s pósÅ‚ana" #: lib/command.php:494 msgid "Error sending direct message." -msgstr "" +msgstr "Zmylk pÅ™i sÅ‚anju direktneje powÄ›sće," #: lib/command.php:514 msgid "Cannot repeat your own notice" @@ -5366,7 +5498,7 @@ msgstr "" #: lib/command.php:620 msgid "Specify the name of the user to subscribe to" -msgstr "" +msgstr "Podaj mjeno wužiwarja, kotrehož chceÅ¡ abonować" #: lib/command.php:628 msgid "Can't subscribe to OMB profiles by command." @@ -5375,20 +5507,20 @@ msgstr "OMB-profile njedadźa so pÅ™ez pÅ™ikaz abonować." #: lib/command.php:634 #, php-format msgid "Subscribed to %s" -msgstr "" +msgstr "%s abonowany" #: lib/command.php:655 lib/command.php:754 msgid "Specify the name of the user to unsubscribe from" -msgstr "" +msgstr "Podaj mjeno wužiwarja, kotrehož chceÅ¡ wotskazać" #: lib/command.php:664 #, php-format msgid "Unsubscribed from %s" -msgstr "" +msgstr "%s wotskazany" #: lib/command.php:682 lib/command.php:705 msgid "Command not yet implemented." -msgstr "" +msgstr "PÅ™ikaz hišće njeimplementowany." #: lib/command.php:685 msgid "Notification off." @@ -5408,7 +5540,7 @@ msgstr "" #: lib/command.php:723 msgid "Login command is disabled" -msgstr "" +msgstr "PÅ™izjewjenski pÅ™ikaz je znjemóžnjeny" #: lib/command.php:734 #, php-format @@ -5422,7 +5554,7 @@ msgstr "%s wotskazany" #: lib/command.php:778 msgid "You are not subscribed to anyone." -msgstr "" +msgstr "Njejsy nikoho abonowaÅ‚." #: lib/command.php:780 msgid "You are subscribed to this person:" @@ -5434,7 +5566,7 @@ msgstr[3] "Sy tute wosoby abonowaÅ‚:" #: lib/command.php:800 msgid "No one is subscribed to you." -msgstr "" +msgstr "Nichtó njeje će abonowaÅ‚." #: lib/command.php:802 msgid "This person is subscribed to you:" @@ -5446,7 +5578,7 @@ msgstr[3] "Tute wosoby su će abonowali:" #: lib/command.php:822 msgid "You are not a member of any groups." -msgstr "" +msgstr "Njejsy ÄÅ‚on w žanej skupinje." #: lib/command.php:824 msgid "You are a member of this group:" @@ -5504,15 +5636,15 @@ msgstr "Žana konfiguraciska dataja namakana. " #: lib/common.php:136 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "Sym na slÄ›dowacych mÄ›stnach za konfiguraciskimi datajemi pytaÅ‚: " #: lib/common.php:138 msgid "You may wish to run the installer to fix this." -msgstr "" +msgstr "Móže być, zo chceÅ¡ instalaciski program startować, zo by to porjedźiÅ‚." #: lib/common.php:139 msgid "Go to the installer." -msgstr "" +msgstr "K instalaciji" #: lib/connectsettingsaction.php:110 msgid "IM" @@ -5520,11 +5652,11 @@ msgstr "IM" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "" +msgstr "Aktualizacije pÅ™ez Instant Messenger (IM)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "" +msgstr "Aktualizacije pÅ™ez SMS" #: lib/connectsettingsaction.php:120 msgid "Connections" @@ -5532,7 +5664,7 @@ msgstr "Zwiski" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Awtorizowane zwjazane aplikacije" #: lib/dberroraction.php:60 msgid "Database error" @@ -5546,6 +5678,8 @@ msgstr "Dataju nahrać" msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" +"MóžeÅ¡ swój wosobinski pozadkowy wobraz nahrać. Maksimalna datajowa wulkosć " +"je 2 MB." #: lib/designsettings.php:418 msgid "Design defaults restored." @@ -5605,7 +5739,7 @@ msgstr "" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "Start" #: lib/grantroleform.php:91 #, php-format @@ -5629,6 +5763,8 @@ msgstr "Skupinu abo temu w %d znamjeÅ¡kach wopisać" msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" msgstr "" +"MÄ›stno za skupinu, jeli eksistuje, na pÅ™. \"mÄ›sto, zwjazkowy kraj (abo " +"region), kraj\"" #: lib/groupeditform.php:187 #, php-format @@ -5651,7 +5787,7 @@ msgstr "" #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Kajkosće skupiny %s wobdźěłać" #: lib/groupnav.php:113 msgid "Logo" @@ -5684,15 +5820,17 @@ msgstr "" #: lib/htmloutputter.php:104 msgid "This page is not available in a media type you accept" msgstr "" +"Tuta strona we wot tebje akceptowanym medijowym typje k dispoziciji " +"njesteji." #: lib/imagefile.php:72 msgid "Unsupported image file format." -msgstr "" +msgstr "NjepodpÄ›rowany wobrazowy format." #: lib/imagefile.php:88 #, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" +msgstr "Tuta dataja je pÅ™ewulka. Maksimalna datajowa wulkosć je %s." #: lib/imagefile.php:93 msgid "Partial upload." @@ -5700,11 +5838,11 @@ msgstr "Dźělne nahraće." #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." -msgstr "" +msgstr "Systemowy zmylk pÅ™i nahrawanju dataje." #: lib/imagefile.php:109 msgid "Not an image or corrupt file." -msgstr "" +msgstr "Žady wobraz abo žana wobÅ¡kodźena dataja." #: lib/imagefile.php:122 msgid "Lost our file." @@ -5734,7 +5872,7 @@ msgstr "Njeznate žórÅ‚o postoweho kašćika %d." #: lib/joinform.php:114 msgid "Join" -msgstr "" +msgstr "Zastupić" #: lib/leaveform.php:114 msgid "Leave" @@ -5777,8 +5915,15 @@ msgstr "" 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5794,19 +5939,19 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Biografija: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -5820,30 +5965,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS-wobkrućenje" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -5860,13 +6005,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nowa priwatna powÄ›sć wot %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -5886,13 +6031,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) je twoju zdźělenku jako faworit pÅ™idaÅ‚" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -5914,21 +6059,24 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" "\n" "\t%s" msgstr "" +"DospoÅ‚nu rozmoÅ‚wu móžes tu Äitać:\n" +"\n" +"%s" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -5957,7 +6105,7 @@ msgstr "" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "" +msgstr "Jenož wužiwar móže swoje póstowe kašćiki Äitać." #: lib/mailbox.php:139 msgid "" @@ -5965,13 +6113,13 @@ 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" #: lib/mailhandler.php:37 msgid "Could not parse message." -msgstr "" +msgstr "PowÄ›sć njeda so analyzować." #: lib/mailhandler.php:42 msgid "Not a registered user." @@ -5993,6 +6141,8 @@ msgstr "NjepodpÄ›rany powÄ›sćowy typ: %s" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" +"PÅ™i skÅ‚adowanju twojeje dataje je zmylk w datowej bance wustupiÅ‚. ProÅ¡u " +"spytaj hišće raz." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." @@ -6014,30 +6164,30 @@ msgstr "Temporerny rjadowka faluje." #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "Dataju njeda so na taÄel pisać." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +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 "" +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 "" +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 "" +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." @@ -6066,7 +6216,7 @@ msgstr "Zdźělenku pósÅ‚ać" #: lib/noticeform.php:173 #, php-format msgid "What's up, %s?" -msgstr "" +msgstr "Å to je, %s?" #: lib/noticeform.php:192 msgid "Attach" @@ -6091,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 "" +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" @@ -6161,7 +6311,7 @@ msgstr "Zmylk pÅ™i zasunjenju awatara" #: lib/oauthstore.php:306 msgid "Error updating remote profile" -msgstr "" +msgstr "Zmylk pÅ™i aktualizowanju zdaleneho profila" #: lib/oauthstore.php:311 msgid "Error inserting remote profile" @@ -6173,7 +6323,7 @@ msgstr "Dwójna zdźělenka" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." -msgstr "" +msgstr "Nowy abonement njeda so zasunyć." #: lib/personalgroupnav.php:99 msgid "Personal" @@ -6189,7 +6339,7 @@ msgstr "Fawority" #: lib/personalgroupnav.php:125 msgid "Inbox" -msgstr "" +msgstr "Dochadny póst" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" @@ -6197,7 +6347,7 @@ msgstr "Twoje dochadźace powÄ›sće" #: lib/personalgroupnav.php:130 msgid "Outbox" -msgstr "" +msgstr "Wuchadny póst" #: lib/personalgroupnav.php:131 msgid "Your sent messages" @@ -6239,15 +6389,15 @@ msgstr "Čłon wot" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "" +msgstr "Dnjowy pÅ™erÄ›zk" #: lib/profileaction.php:264 msgid "All groups" msgstr "WÅ¡Ä› skupiny" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." -msgstr "" +msgstr "Njeimplementowana metoda." #: lib/publicgroupnav.php:78 msgid "Public" @@ -6269,7 +6419,7 @@ msgstr "" msgid "Popular" msgstr "Woblubowany" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Žane wróćenske argumenty." @@ -6290,9 +6440,9 @@ msgstr "Tutu zdźělenku wospjetować" msgid "Revoke the \"%s\" role from this user" msgstr "Rólu \"%s\" tutoho wužiwarja wotwoÅ‚ać" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." -msgstr "" +msgstr "Žadyn jednotliwy wužiwar za modus jednotliweho wužiwarja definowany." #: lib/sandboxform.php:67 msgid "Sandbox" @@ -6353,7 +6503,7 @@ msgstr "" #: lib/subgroupnav.php:83 #, php-format msgid "People %s subscribes to" -msgstr "" +msgstr "Ludźo, kotrychž %s abonuje" #: lib/subgroupnav.php:91 #, php-format @@ -6363,7 +6513,7 @@ msgstr "Ludźo, kotÅ™iž su %s abonowali" #: lib/subgroupnav.php:99 #, php-format msgid "Groups %s is a member of" -msgstr "" +msgstr "Skupiny, w kotrychž %s je ÄÅ‚on" #: lib/subgroupnav.php:105 msgid "Invite" @@ -6388,6 +6538,48 @@ msgstr "" msgid "None" msgstr "Žadyn" +#: 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 "SkÅ‚adowanje Å¡ata je so njeporadźiÅ‚o." + +#: 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 "Zmylk pÅ™i woÄinjenju Å¡atoweho archiwa." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6431,7 +6623,7 @@ msgstr "Wužiwarske akcije" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "Wužiwar so haÅ¡a..." #: lib/userprofile.php:263 msgid "Edit profile settings" @@ -6451,7 +6643,7 @@ msgstr "PowÄ›sć" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +msgstr "ModerÄ›rować" #: lib/userprofile.php:364 msgid "User role" @@ -6465,59 +6657,59 @@ msgstr "Administrator" #: lib/userprofile.php:367 msgctxt "role" msgid "Moderator" -msgstr "" +msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "pÅ™ed něšto sekundami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "pÅ™ed nÄ›hdźe jednej mjeÅ„Å¡inu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "pÅ™ed %d mjeÅ„Å¡inami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "pÅ™ed nÄ›hdźe jednej hodźinu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "pÅ™ed nÄ›hdźe %d hodźinami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "pÅ™ed nÄ›hdźe jednym dnjom" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "pÅ™ed nÄ›hdźe %d dnjemi" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "pÅ™ed nÄ›hdźe jednym mÄ›sacom" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "pÅ™ed nÄ›hdźe %d mÄ›sacami" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "pÅ™ed nÄ›hdźe jednym lÄ›tom" @@ -6537,3 +6729,5 @@ msgstr "" #, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" +"PowÄ›sć je pÅ™edoÅ‚ho - maksimalna wulkosć je %1$d znamjeÅ¡kow, ty sy %2$d " +"pósÅ‚aÅ‚." diff --git a/locale/ia/LC_MESSAGES/statusnet.po b/locale/ia/LC_MESSAGES/statusnet.po index 18617e5c5..ccde993d4 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:20+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:12:24+0000\n" "Language-Team: Interlingua\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -21,7 +21,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Accesso" @@ -83,24 +83,24 @@ msgid "Save" msgstr "Salveguardar" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Pagina non existe." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -113,7 +113,7 @@ msgid "No such user." msgstr "Usator non existe." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s e amicos, pagina %2$d" @@ -121,33 +121,33 @@ msgstr "%1$s e amicos, pagina %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 e amicos" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Syndication pro le amicos de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Syndication pro le amicos de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Syndication pro le amicos de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -155,7 +155,7 @@ msgstr "" "Isto es le chronologia pro %s e su amicos, ma necuno ha ancora publicate " "alique." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -165,77 +165,77 @@ msgstr "" "action.groups%%) o publica alique tu mesme." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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)." -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 +#: 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 "" "Proque non [registrar un conto](%%%%action.register%%%%) e postea dar un " "pulsata a %s o publicar un message a su attention." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Tu e amicos" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Actualisationes de %1$s e su amicos in %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Methodo API non trovate." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Iste methodo require un POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -243,7 +243,7 @@ msgstr "" "Tu debe specificar un parametro nominate 'device' con un del valores: sms, " "im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Non poteva actualisar le usator." @@ -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:210 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 @@ -339,30 +339,30 @@ msgstr "Usator destinatario non trovate." msgid "Can't send direct messages to users who aren't your friend." msgstr "Non pote inviar messages directe a usatores que non es tu amicos." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Nulle stato trovate con iste ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Iste stato es ja favorite." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Non poteva crear le favorite." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Iste stato non es favorite." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -389,123 +389,127 @@ msgstr "Non poteva determinar le usator de origine." msgid "Could not find target user." msgstr "Non poteva trovar le usator de destination." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Le pseudonymo pote solmente haber minusculas e numeros, sin spatios." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Pseudonymo ja in uso. Proba un altere." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Non un pseudonymo valide." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Le pagina personal non es un URL valide." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Le nomine complete es troppo longe (max. 255 characteres)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Description es troppo longe (max %d charachteres)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Loco es troppo longe (max. 255 characteres)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Troppo de aliases! Maximo: %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Alias invalide: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Le alias \"%s\" es ja in uso. Proba un altere." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Le alias non pote esser identic al pseudonymo." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Gruppo non trovate." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Tu es ja membro de iste gruppo." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Le administrator te ha blocate de iste gruppo." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Non poteva inscriber le usator %1$s in le gruppo %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Tu non es membro de iste gruppo." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Non poteva remover le usator %1$s del gruppo %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Gruppos de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Gruppos de %1$s del quales %2$s es membro." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Gruppos de %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -516,15 +520,15 @@ msgstr "Indicio invalide." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -593,12 +597,12 @@ msgstr "" "accesso a tu conto de %4$s a tertie personas in le quales tu ha confidentia." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Conto" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -606,8 +610,8 @@ msgid "Nickname" msgstr "Pseudonymo" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Contrasigno" @@ -623,11 +627,11 @@ msgstr "Permitter" msgid "Allow or deny access to your account information." msgstr "Permitter o refusar accesso al informationes de tu conto." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Iste methodo require un commando POST o DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Tu non pote deler le stato de un altere usator." @@ -644,63 +648,67 @@ msgstr "Non pote repeter tu proprie nota." msgid "Already repeated that notice." msgstr "Iste nota ha ja essite repetite." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Stato delite." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Nulle stato trovate con iste ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trovate." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favorites de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s actualisationes favoritisate per %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Actualisationes que mentiona %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" "Actualisationes de %1$s que responde al actualisationes de %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Chronologia public de %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "Actualisationes de totes in %s!" @@ -715,16 +723,20 @@ msgstr "Repetite a %s" msgid "Repeats of %s" msgstr "Repetitiones de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notas con etiquetta %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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:657 msgid "Delete" msgstr "Deler" @@ -818,11 +830,11 @@ msgstr "Avatar delite." msgid "You already blocked that user." msgstr "Tu ha ja blocate iste usator." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Blocar usator" -#: actions/block.php:130 +#: 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 " @@ -837,7 +849,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -846,7 +858,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Non blocar iste usator" @@ -855,7 +867,7 @@ msgstr "Non blocar iste usator" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -863,11 +875,11 @@ msgid "Yes" msgstr "Si" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Blocar iste usator" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Falleva de salveguardar le information del blocada." @@ -994,7 +1006,7 @@ msgstr "Tu non es le proprietario de iste application." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Il habeva un problema con tu indicio de session." @@ -1028,10 +1040,10 @@ msgstr "Deler iste application" #: 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:63 +#: 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:657 msgid "Delete this notice" msgstr "Deler iste nota" @@ -1099,45 +1111,55 @@ msgstr "Apparentia" msgid "Design settings for this StatusNet site." msgstr "Configuration del apparentia de iste sito StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL de logotypo invalide." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Thema non disponibile: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Cambiar logotypo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logotypo del sito" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Cambiar thema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Thema del sito" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Le thema de apparentia pro le sito." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Apparentia personalisate" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" +"Es possibile incargar un apparentia personalisate de StatusNet in un " +"archivo .ZIP." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Cambiar imagine de fundo" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Fundo" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1147,57 +1169,65 @@ msgstr "" "file es %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Active" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Non active" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Activar o disactivar le imagine de fundo." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Tegular le imagine de fundo" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Cambiar colores" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Contento" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra lateral" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Ligamines" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avantiate" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personalisate" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Usar predefinitiones" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaurar apparentias predefinite" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Revenir al predefinitiones" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1207,7 +1237,7 @@ msgstr "Revenir al predefinitiones" msgid "Save" msgstr "Salveguardar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Salveguardar apparentia" @@ -1321,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." @@ -1478,7 +1509,7 @@ msgid "Cannot normalize that email address" msgstr "Non pote normalisar iste adresse de e-mail" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Adresse de e-mail invalide." @@ -1705,13 +1736,13 @@ msgstr "Le usator ha ja iste rolo." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Nulle profilo specificate." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Non existe un profilo con iste ID." @@ -1852,7 +1883,7 @@ msgstr "Facer iste usator administrator" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Chronologia de %s" @@ -2279,42 +2310,42 @@ msgstr "Tu non es membro de iste gruppo." msgid "%1$s left group %2$s" msgstr "%1$s quitava le gruppo %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: 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:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nomine de usator o contrasigno incorrecte." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Error de acceder al conto de usator. Tu probabilemente non es autorisate." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Aperir session" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" -msgstr "Identificar te a iste sito" +msgstr "Authenticar te a iste sito" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Memorar me" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Aperir session automaticamente in le futuro; non pro computatores usate in " "commun!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Contrasigno perdite o oblidate?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2322,11 +2353,11 @@ msgstr "" "Pro motivos de securitate, per favor re-entra tu nomine de usator e " "contrasigno ante de cambiar tu configurationes." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Aperi un session con tu nomine de usator e contrasigno." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2478,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." @@ -2535,30 +2566,30 @@ msgstr "" "Le programmatores pote modificar le parametros de registration pro lor " "applicationes " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Le nota ha nulle profilo." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Le stato de %1$s in %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Le typo de contento %s non es supportate." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2662,7 +2693,7 @@ msgid "6 or more characters" msgstr "6 o plus characteres" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmar" @@ -2674,11 +2705,11 @@ msgstr "Identic al contrasigno hic supra" msgid "Change" msgstr "Cambiar" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Le contrasigno debe haber al minus 6 characteres." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Le contrasignos non corresponde." @@ -2699,7 +2730,7 @@ msgid "Password saved." msgstr "Contrasigno salveguardate." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Camminos" @@ -2904,43 +2935,43 @@ msgstr "Information de profilo" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 minusculas o numeros, sin punctuation o spatios" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nomine complete" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Pagina personal" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL de tu pagina personal, blog o profilo in un altere sito" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Describe te e tu interesses in %d characteres" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Describe te e tu interesses" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Bio" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Loco" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Ubi tu es, como \"Citate, Stato (o Region), Pais\"" @@ -2983,7 +3014,7 @@ msgid "" msgstr "" "Subscriber me automaticamente a qui se subscribe a me (utile pro non-humanos)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Bio es troppo longe (max %d chars)." @@ -3130,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." @@ -3244,7 +3275,7 @@ msgstr "Le contrasigno debe haber 6 characteres o plus." msgid "Password and confirmation do not match." msgstr "Contrasigno e confirmation non corresponde." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Error durante le configuration del usator." @@ -3252,39 +3283,39 @@ msgstr "Error durante le configuration del usator." msgid "New password successfully saved. You are now logged in." msgstr "Nove contrasigno salveguardate con successo. Tu session es ora aperte." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Pardono, solmente le personas invitate pote registrar se." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Pardono, le codice de invitation es invalide." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registration succedite" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Crear conto" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registration non permittite." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Tu non pote crear un conto si tu non accepta le licentia." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Le adresse de e-mail existe ja." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Nomine de usator o contrasigno invalide." -#: actions/register.php:343 +#: 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. " @@ -3292,57 +3323,58 @@ msgstr "" "Con iste formulario tu pote crear un nove conto. Postea, tu pote publicar " "notas e mitter te in contacto con amicos e collegas. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "1-64 minusculas o numeros, sin punctuation o spatios. Requirite." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 o plus characteres. Requirite." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Identic al contrasigno hic supra. Requirite." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-mail" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Usate solmente pro actualisationes, notificationes e recuperation de " "contrasigno" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nomine plus longe, preferibilemente tu nomine \"real\"" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Le contento e datos de %1$s es private e confidential." +msgstr "" +"io comprende que le contento e datos de %1$s es private e confidential." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Le derecto de autor pro mi texto e files es in possession de %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Le derecto de autor pro mi texto e files resta in mi possession." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Tote le derectos reservate." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3352,7 +3384,7 @@ msgstr "" "contrasigno, adresse de e-mail, adresse de messageria instantanee, numero de " "telephono." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3384,7 +3416,7 @@ msgstr "" "\n" "Gratias pro inscriber te, e nos spera que iste servicio te place." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3453,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." @@ -3467,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:676 msgid "Repeated" msgstr "Repetite" @@ -3505,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 @@ -3522,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)." @@ -3541,7 +3573,7 @@ msgstr "Tu non pote revocar rolos de usatores in iste sito." msgid "User doesn't have this role." msgstr "Le usator non ha iste rolo." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3555,7 +3587,7 @@ msgstr "Usator es ja in cassa de sablo." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessiones" @@ -3598,7 +3630,7 @@ msgid "Icon" msgstr "Icone" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nomine" @@ -3609,12 +3641,12 @@ msgid "Organization" msgstr "Organisation" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3704,22 +3736,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 non ha ancora addite alcun nota a su favorites. Publica alique " -"interessante que ille favoritisarea :)" +"%s non ha ancora addite un nota favorite. Publica alique interessante que " +"ille adderea a su favorites :)" #: 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 non ha ancora addite alcun nota a su favorites. Proque non [registrar un " -"conto](%%%%action.register%%%%) e postea publicar alique interessante que " -"ille favoritisarea :)" +"%s non ha ancora addite un nota favorite. Proque non [crear un conto](%%%%" +"action.register%%%%) e postea publicar alique interessante que ille adderea " +"a su favorites :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3777,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" @@ -3791,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." @@ -3810,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." @@ -3823,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" @@ -3901,11 +3933,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 "" -"Tu pote tentar pulsar %1$s o [publicar un nota a su attention](%%%%action." -"newnotice%%%%?status_textarea=%2$s)." +"Tu pote tentar dar un pulsata a %1$s o [publicar un nota a su attention](%%%%" +"action.newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -4034,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" @@ -4231,7 +4263,7 @@ msgstr "Nulle codice entrate" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Instantaneos" @@ -4291,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." @@ -4470,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." @@ -4584,7 +4613,7 @@ msgstr "" "Per favor verifica iste detalios pro assecurar te que tu vole subscriber te " "al notas de iste usator. Si tu non ha requestate isto, clicca \"Rejectar\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licentia" @@ -4595,7 +4624,7 @@ msgstr "Acceptar" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 msgid "Subscribe to this user" -msgstr "Subscriber me a iste usator" +msgstr "Subscriber a iste usator" #: actions/userauthorization.php:219 msgid "Reject" @@ -4714,18 +4743,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Actualisationes de %1$s in %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4734,11 +4763,11 @@ msgstr "" "Iste sito es realisate per %1$s version %2$s, copyright 2008-2010 StatusNet, " "Inc. e contributores." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Contributores" -#: actions/version.php:168 +#: 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 " @@ -4750,7 +4779,7 @@ msgstr "" "Free Software Foundation, o version 3 de iste licentia, o (a vostre " "election) omne version plus recente. " -#: actions/version.php:174 +#: 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 " @@ -4762,7 +4791,7 @@ msgstr "" "USABILITATE PRO UN PARTICULAR SCOPO. Vide le GNU Affero General Public " "License pro ulterior detalios. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4771,93 +4800,140 @@ msgstr "" "Un copia del GNU Affero General Public License deberea esser disponibile " "insimul con iste programma. Si non, vide %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Plug-ins" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Version" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autor(es)" -#: classes/File.php:169 +#. TRANS: Server exception thrown when a URL cannot be processed. +#: classes/File.php:143 +#, php-format +msgid "Cannot process URL '%s'" +msgstr "Impossibile processar le URL '%s'" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin pensa que alique es impossibile." + +#. 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 "" -"Nulle file pote esser plus grande que %d bytes e le file que tu inviava ha %" -"d bytes. Tenta incargar un version minus grande." +"Nulle file pote esser plus grande que %1$d bytes e le file que tu inviava ha " +"%2$d bytes. Tenta incargar un version minus grande." -#: classes/File.php:179 +#. 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:186 +#. 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 +msgid "Invalid filename." +msgstr "Nomine de file 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 "Nulle nomine de base de datos o DSN trovate." + +#. 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 "Nulle profilo (%1$d) trovate pro le nota (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4865,71 +4941,119 @@ msgstr "" "Troppo de messages duplicate 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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 typo fornite a saveKnownGroups" + +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." +msgstr "Non pote revocar le rolo \"%1$s\" del usator #%2$d; non 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:746 +#, php-format +msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error." +msgstr "" +"Non pote revocar le rolo \"%1$s\" del usator #%2$d; error in le 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 "Profilo mancante." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:346 +msgid "Unable to save tag." +msgstr "Impossibile salveguardar le etiquetta." + +#. 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 +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 +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 +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." @@ -4980,188 +5104,188 @@ msgid "Untitled page" msgstr "Pagina sin titulo" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navigation primari del sito" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Profilo personal e chronologia de amicos" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Cambiar tu e-mail, avatar, contrasigno, profilo" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Connecter a servicios" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Connecter" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Modificar le configuration del sito" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Invitar amicos e collegas a accompaniar te in %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Invitar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Terminar le session del sito" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Clauder session" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Crear un conto" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Crear conto" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: 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:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Aperir session" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Adjuta me!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Adjuta" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Cercar personas o texto" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Cercar" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Aviso del sito" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Vistas local" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Aviso de pagina" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navigation secundari del sito" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Adjuta" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "A proposito" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "CdS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Confidentialitate" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Insignia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licentia del software StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5171,13 +5295,13 @@ msgstr "" "%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** es un servicio de microblog." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5189,50 +5313,50 @@ msgstr "" "(http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licentia del contento del sito" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Le contento e datos de %1$s es private e confidential." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "Contento e datos sub copyright de %1$s. Tote le derectos reservate." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Contento e datos sub copyright del contributores. Tote le derectos reservate." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "Tote le contento e datos de %1$s es disponibile sub le licentia %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Pagination" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Post" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Ante" @@ -5282,64 +5406,64 @@ msgid "Unable to delete design setting." msgstr "Impossibile deler configuration de apparentia." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuration basic del sito" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Sito" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuration del apparentia" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Apparentia" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuration del usator" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Usator" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuration del accesso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuration del camminos" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuration del sessiones" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Modificar aviso del sito" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configuration del instantaneos" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "Le ressource de API require accesso pro lectura e scriptura, ma tu ha " @@ -5473,11 +5597,11 @@ msgstr "Notas ubi iste annexo appare" msgid "Tags for this attachment" msgstr "Etiquettas pro iste annexo" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Cambio del contrasigno fallite" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Cambio del contrasigno non permittite" @@ -5571,14 +5695,14 @@ msgstr "Nomine complete: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Loco: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Pagina personal: %s" @@ -6112,8 +6236,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s seque ora tu notas in %2$s." +#: 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 "" +"Si tu crede que iste conto es usate abusivemente, tu pote blocar lo de tu " +"lista de subscriptores e reportar lo como spam al administratores del sito a " +"%s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6139,19 +6273,19 @@ msgstr "" "Cambia tu adresse de e-mail o optiones de notification a %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Bio: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nove adresse de e-mail pro publicar in %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6173,30 +6307,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Stato de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmation SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: confirma que tu possede iste numero de telephono con iste codice:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s te ha pulsate" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6224,13 +6358,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nove message private de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6264,13 +6398,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) ha addite tu nota como favorite" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6309,7 +6443,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6320,13 +6454,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) ha inviate un nota a tu attention" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6388,7 +6522,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:228 lib/noticelist.php:506 msgid "from" msgstr "de" @@ -6447,24 +6581,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." @@ -6520,51 +6654,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:568 msgid "in context" msgstr "in contexto" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetite per" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Responder a iste nota" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Nota repetite" @@ -6674,7 +6808,7 @@ msgstr "Media de cata die" msgid "All groups" msgstr "Tote le gruppos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Methodo non implementate." @@ -6698,7 +6832,7 @@ msgstr "In evidentia" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Nulle parametro return-to." @@ -6719,7 +6853,7 @@ msgstr "Repeter iste nota" msgid "Revoke the \"%s\" role from this user" msgstr "Revocar le rolo \"%s\" de iste usator" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Nulle signule usator definite pro le modo de singule usator." @@ -6817,6 +6951,55 @@ msgstr "Nube de etiquetta de personas como etiquettate" msgid "None" msgstr "Nulle" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" +"Iste servitor non pote manear le incargamento de apparentias sin supporto de " +"ZIP." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +#: lib/themeuploader.php:253 lib/themeuploader.php:257 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Salveguarda del apparentia fallite." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "Apparentia invalide: mal structura de directorios." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"Le apparentia incargate es troppo voluminose; debe occupar minus de %d bytes " +"in forma non comprimite." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Archivo de apparentia invalide: manca le file 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 "" +"Le apparentia contine un nomine de file o dossier invalide. Limita te a " +"litteras ASCII, digitos, sublineamento, e signo minus." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" +"Le apparentia contine un file del typo '.%s', le qual non es permittite." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Error durante le apertura del archivo del apparentia." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Qui scribe le plus" @@ -6897,56 +7080,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "alcun secundas retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "circa un minuta retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "circa %d minutas retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "circa un hora retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "circa %d horas retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "circa un die retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "circa %d dies retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "circa un mense retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "circa %d menses retro" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "circa un anno retro" diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po index b3ced814d..701d0f1d4 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:24+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:37+0000\n" "Language-Team: Icelandic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "Samþykkja" @@ -92,25 +92,25 @@ msgid "Save" msgstr "Vista" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Ekkert þannig merki." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -123,7 +123,7 @@ msgid "No such user." msgstr "Enginn svoleiðis notandi." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s og vinirnir, sÃða %d" @@ -131,39 +131,39 @@ msgstr "%s og vinirnir, sÃða %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 vinirnir" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -171,80 +171,80 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "Færslur frá %1$s og vinum á %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "Aðferð à forritsskilum fannst ekki!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Þessi aðferð krefst POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Gat ekki uppfært notanda." @@ -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:210 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 @@ -342,31 +342,32 @@ msgstr "Móttakandi fannst ekki." msgid "Can't send direct messages to users who aren't your friend." msgstr "Gat ekki sent bein skilaboð til notenda sem eru ekki vinir þÃnir." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Engin staða fundin með þessu kenni." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Þetta babl er nú þegar à uppáhaldi!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Gat ekki búið til uppáhald." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 #, fuzzy msgid "That status is not a favorite." msgstr "Þetta babl er ekki à uppáhaldi!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -397,126 +399,131 @@ msgstr "" msgid "Could not find target user." msgstr "" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Stuttnefni geta bara verið lágstafir og tölustafir en engin bil." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Stuttnefni nú þegar à notkun. Prófaðu eitthvað annað." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ekki tækt stuttnefni." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "HeimasÃða er ekki gild vefslóð." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Fullt nafn er of langt (à mesta lagi 255 stafir)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "Lýsing er of löng (à mesta lagi 140 tákn)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Staðsetning er of löng (à mesta lagi 255 stafir)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Ógilt merki: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Aðferð à forritsskilum fannst ekki!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "Þú ert nú þegar meðlimur à þessum hópi" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Gat ekki bætt notandanum %s à hópinn %s" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "Þú ert ekki meðlimur à þessum hópi." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "Hópar %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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Hópar sem %s er meðlimur Ã" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Hópar %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, fuzzy, php-format 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 "" @@ -528,15 +535,15 @@ msgstr "Ótæk stærð." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -600,12 +607,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Aðgangur" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -613,8 +620,8 @@ msgid "Nickname" msgstr "Stuttnefni" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Lykilorð" @@ -631,11 +638,11 @@ msgstr "Allt" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Þessi aðferð krefst POST eða DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Þú getur ekki eytt stöðu annars notanda." @@ -654,60 +661,64 @@ msgstr "Get ekki kveikt á tilkynningum." msgid "Already repeated that notice." msgstr "Eyða þessu babli" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "" -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Engin staða með þessu kenni fannst." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Fannst ekki." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%s / Uppáhaldsbabl frá %s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%s færslur gerðar að uppáhaldsbabli af %s / %s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s færslur sem svara færslum frá %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Almenningsrás %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s færslur frá öllum!" @@ -722,16 +733,20 @@ msgstr "Svör við %s" msgid "Repeats of %s" msgstr "Svör við %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Babl merkt með %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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" @@ -828,11 +843,11 @@ msgstr "" msgid "You already blocked that user." msgstr "Þú hefur nú þegar lokað á þennan notanda." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Loka á notanda" -#: actions/block.php:130 +#: 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 " @@ -844,7 +859,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -854,7 +869,7 @@ msgstr "Nei" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "Opna á þennan notanda" @@ -864,7 +879,7 @@ msgstr "Opna á þennan notanda" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -873,11 +888,11 @@ msgid "Yes" msgstr "Já" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Loka á þennan notanda" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Mistókst að vista upplýsingar um notendalokun" @@ -1009,7 +1024,7 @@ msgstr "Þú ert ekki meðlimur à þessum hópi." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Það komu upp vandamál varðandi setutókann þinn." @@ -1043,7 +1058,7 @@ msgstr "Eyða þessu babli" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Ekki innskráð(ur)." @@ -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" @@ -1114,51 +1129,60 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Ótæk stærð." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Þessi sÃða er ekki aðgengileg à " -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Breyta" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "Bjóða" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "Breyta" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Babl vefsÃðunnar" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 #, fuzzy msgid "Theme for the site." msgstr "Skrá þig út af sÃðunni" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Babl vefsÃðunnar" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1166,57 +1190,65 @@ msgid "" msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texti" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1226,7 +1258,7 @@ msgstr "" msgid "Save" msgstr "Vista" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1352,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 "" @@ -1516,7 +1549,7 @@ msgid "Cannot normalize that email address" msgstr "Get ekki staðlað þetta tölvupóstfang" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ekki tækt tölvupóstfang." @@ -1754,13 +1787,13 @@ msgstr "Notandi hefur enga persónulega sÃðu." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Engin persónuleg sÃða tilgreind" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Engin persónulega sÃða með þessu einkenni" @@ -1895,7 +1928,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Rás %s" @@ -2320,42 +2353,42 @@ msgstr "Þú ert ekki meðlimur à þessum hópi." msgid "%1$s left group %2$s" msgstr "%s gekk úr hópnum %s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Þú hefur nú þegar skráð þig inn." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Rangt notendanafn eða lykilorð." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "Engin heimild." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Innskráning" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Skrá þig inn á sÃðuna" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Muna eftir mér" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Sjálfvirk innskráning à framtÃðinni. Ekki nota þetta á tölvu sem aðrir deila " "með þér!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Tapað eða gleymt lykilorð?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2363,12 +2396,12 @@ msgstr "" "Af öryggisástæðum, vinsamlegast sláðu aftur inn notendanafnið þitt og " "lykilorð áður en þú breytir stillingunum þÃnum." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Skráðu þig inn með notendanafni og lykilorði" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2521,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." @@ -2580,31 +2614,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Babl hefur enga persónulega sÃðu" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Staða %1$s á %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: 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:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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ð." @@ -2715,7 +2749,7 @@ msgid "6 or more characters" msgstr "6 eða fleiri tákn" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Staðfesta" @@ -2727,11 +2761,11 @@ msgstr "Sama og lykilorðið hér fyrir ofan" msgid "Change" msgstr "Breyta" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Lykilorð verður að vera að minnsta kosti 6 tákn." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Lykilorðin passa ekki saman." @@ -2752,7 +2786,7 @@ msgid "Password saved." msgstr "Lykilorð vistað." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2967,46 +3001,46 @@ msgstr "Upplýsingar á persónulegri sÃðu" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 lágstafir eða tölustafir, engin greinarmerki eða bil" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Fullt nafn" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "HeimasÃða" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "" "Veffang heimasÃðunnar þinnar, bloggsins þÃns eða persónulegrar sÃðu á öðru " "vefsvæði" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Lýstu þér og áhugamálum þÃnum à 140 táknum" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "Lýstu þér og þÃnum " -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Lýsing" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Staðsetning" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Staðsetning þÃn, eins og \"borg, sýsla, land\"" @@ -3050,7 +3084,7 @@ msgstr "" "Gerast sjálfkrafa áskrifandi að hverjum þeim sem gerist áskrifandi að þér " "(best fyrir ómannlega notendur)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "Lýsingin er of löng (à mesta lagi 140 tákn)." @@ -3299,7 +3333,7 @@ msgstr "Lykilorð verður að vera 6 tákn eða fleiri." msgid "Password and confirmation do not match." msgstr "Lykilorð og staðfesting passa ekki saman." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Villa kom upp à stillingu notanda." @@ -3307,102 +3341,102 @@ msgstr "Villa kom upp à stillingu notanda." msgid "New password successfully saved. You are now logged in." msgstr "Tókst að vista nýtt lykilorð. Þú ert núna innskráð(ur)" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Afsakið en aðeins fólki sem er boðið getur nýskráð sig." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Nýskráning tókst" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Nýskrá" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Nýskráning ekki leyfð." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Þú getur ekki nýskráð þig nema þú samþykkir leyfið." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Tölvupóstfang er nú þegar skráð." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ótækt notendanafn eða lykilorð." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 lágstafir eða tölustafir, engin greinarmerki eða bil. Nauðsynlegt." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 eða fleiri tákn. Nauðsynlegt" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Sama og lykilorðið hér fyrir ofan. Nauðsynlegt." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Tölvupóstur" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Aðeins notað fyrir uppfærslur, tilkynningar og endurheimtingu lykilorða." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Lengra nafn, ákjósalegast að það sé \"rétta\" nafnið þitt" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, fuzzy, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3435,7 +3469,7 @@ msgstr "" "\n" "Takk fyrir að skrá þig og við vonum að þú njótir þjónustunnar." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3525,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" @@ -3564,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 @@ -3577,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 @@ -3596,7 +3630,7 @@ msgstr "Þú getur ekki sent þessum notanda skilaboð." msgid "User doesn't have this role." msgstr "Notandi með enga persónulega sÃðu sem passar við" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Tölfræði" @@ -3612,7 +3646,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3658,7 +3692,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3671,12 +3705,12 @@ msgid "Organization" msgstr "Uppröðun" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3762,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 @@ -3830,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" @@ -3844,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." @@ -3858,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." @@ -3867,7 +3901,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3943,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 @@ -4276,7 +4310,7 @@ msgstr "Enginn lykill sleginn inn" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4338,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." @@ -4511,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." @@ -4637,7 +4668,7 @@ msgstr "" "gerast áskrifandi að babli þessa notanda. Ef þú baðst ekki um að gerast " "áskrifandi að babli, smelltu þá á \"Hætta við\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4765,29 +4796,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Færslur frá %1$s á %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "Tölfræði" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4795,7 +4826,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4803,180 +4834,277 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "Persónulegt" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5028,26 +5156,26 @@ msgid "Untitled page" msgstr "Ónafngreind sÃða" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Stikl aðalsÃðu" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 #, fuzzy msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Persónuleg sÃða og vinarás" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "Persónulegt" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" @@ -5056,107 +5184,107 @@ msgstr "" "persónulegu sÃðunni þinni" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Gat ekki framsent til vefþjóns: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Tengjast" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Stikl aðalsÃðu" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "Stjórnandi" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Bjóða vinum og vandamönnum að slást à hópinn á %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Bjóða" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 #, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Skrá þig út af sÃðunni" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Útskráning" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "Búa til aðgang" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Nýskrá" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 #, fuzzy msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Skrá þig inn á sÃðuna" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "Innskráning" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hjálp!" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "Hjálp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 #, fuzzy msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Leita að fólki eða texta" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5164,71 +5292,71 @@ msgstr "Leita" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Babl vefsÃðunnar" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Staðbundin sýn" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Babl sÃðunnar" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Stikl undirsÃðu" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Hjálp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Um" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Spurt og svarað" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Friðhelgi" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Frumþula" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Tengiliður" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Hugbúnaðarleyfi StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5238,13 +5366,13 @@ msgstr "" "broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** er örbloggsþjónusta." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5256,50 +5384,50 @@ msgstr "" "licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "Hugbúnaðarleyfi StatusNet" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Uppröðun" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Eftir" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Ãður" @@ -5351,74 +5479,74 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Staðfesting tölvupóstfangs" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "Bjóða" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "SMS staðfesting" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Persónulegt" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "SMS staðfesting" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Notandi" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "SMS staðfesting" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "SMS staðfesting" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "SMS staðfesting" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Babl vefsÃðunnar" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "SMS staðfesting" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5553,12 +5681,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Lykilorðabreyting" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Lykilorðabreyting" @@ -5651,14 +5779,14 @@ msgstr "Fullt nafn: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Staðsetning: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "HeimasÃða: %s" @@ -6149,8 +6277,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s er að hlusta á bablið þitt á %2$s." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6166,7 +6301,7 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "" @@ -6174,13 +6309,13 @@ msgstr "" "\n" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nýtt tölvupóstfang til að senda á %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6202,30 +6337,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Staða %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS staðfesting" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "Býð eftir staðfestingu varðandi þetta sÃmanúmer." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s ýtti við þér" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6242,13 +6377,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ný persónuleg skilaboð frá %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6268,13 +6403,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s heldur upp á babl frá þér" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6296,7 +6431,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6304,13 +6439,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6347,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á" @@ -6403,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 "" @@ -6478,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" @@ -6637,7 +6772,7 @@ msgstr "" msgid "All groups" msgstr "Allir hópar" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6661,7 +6796,7 @@ msgstr "à sviðsljósinu" msgid "Popular" msgstr "Vinsælt" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Ekkert einkenni gefið upp." @@ -6685,7 +6820,7 @@ msgstr "Svara þessu babli" msgid "Revoke the \"%s\" role from this user" msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6787,6 +6922,50 @@ msgstr "" msgid "None" msgstr "Ekkert" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Mistókst að uppfæra mynd" + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Villa kom upp à uppfærslu persónulegrar fjarsÃðu" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Aðalbablararnir" @@ -6870,56 +7049,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "fyrir nokkrum sekúndum" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "fyrir um einni mÃnútu sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "fyrir um %d mÃnútum sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "fyrir um einum klukkutÃma sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "fyrir um %d klukkutÃmum sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "fyrir um einum degi sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "fyrir um %d dögum sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "fyrir um einum mánuði sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "fyrir um %d mánuðum sÃðan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "fyrir um einu ári sÃðan" diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po index ed159ea92..5bb079af7 100644 --- a/locale/it/LC_MESSAGES/statusnet.po +++ b/locale/it/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Italian # +# Author@translatewiki.net: HalphaZ # Author@translatewiki.net: Milocasagrande # Author@translatewiki.net: Nemo bis # -- @@ -9,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:28+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:38+0000\n" "Language-Team: Italian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Accesso" @@ -86,24 +87,24 @@ msgid "Save" msgstr "Salva" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Pagina inesistente." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -116,7 +117,7 @@ msgid "No such user." msgstr "Utente inesistente." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s e amici, pagina %2$d" @@ -124,33 +125,33 @@ msgstr "%1$s e amici, pagina %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 e amici" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Feed degli amici di %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Feed degli amici di %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Feed degli amici di %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -158,7 +159,7 @@ msgstr "" "Questa è l'attività di %s e i suoi amici, ma nessuno ha ancora scritto " "qualche cosa." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -168,78 +169,78 @@ msgstr "" "scrivi un messaggio." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" "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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Tu e i tuoi amici" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Messaggi da %1$s e amici su %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Metodo delle API non trovato." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Questo metodo richiede POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -247,7 +248,7 @@ msgstr "" "È necessario specificare un parametro chiamato \"device\" con un valore tra: " "\"sms\", \"im\" o \"none\"." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Impossibile aggiornare l'utente." @@ -267,7 +268,7 @@ msgstr "Impossibile salvare il profilo." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -343,29 +344,30 @@ msgstr "Destinatario non trovato." msgid "Can't send direct messages to users who aren't your friend." msgstr "Non puoi inviare messaggi diretti a utenti che non sono tuoi amici." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Nessuno messaggio trovato con quel ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Questo messaggio è già un preferito." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Impossibile creare un preferito." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Questo messaggio non è un preferito." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -381,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 @@ -393,125 +396,130 @@ msgstr "Impossibile determinare l'utente sorgente." msgid "Could not find target user." msgstr "Impossibile trovare l'utente destinazione." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Il soprannome deve essere composto solo da lettere minuscole e numeri, senza " "spazi." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Soprannome già in uso. Prova con un altro." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Non è un soprannome valido." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "L'indirizzo della pagina web non è valido." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Nome troppo lungo (max 255 caratteri)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "La descrizione è troppo lunga (max %d caratteri)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Ubicazione troppo lunga (max 255 caratteri)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Troppi alias! Massimo %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Alias non valido: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "L'alias \"%s\" è già in uso. Prova con un altro." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "L'alias non può essere lo stesso del soprannome." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Gruppo non trovato." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Fai già parte di quel gruppo." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "L'amministratore ti ha bloccato l'accesso a quel gruppo." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Impossibile iscrivere l'utente %1$s al gruppo %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Non fai parte di questo gruppo." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Impossibile rimuovere l'utente %1$s dal gruppo %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Gruppi di %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Gruppi del sito %1$s a cui %2$s è iscritto." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Gruppi di %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -522,15 +530,15 @@ msgstr "Token non valido." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -597,12 +605,12 @@ msgstr "" "accesso al proprio account %4$s solo ad applicazioni di cui ci si può fidare." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Account" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -610,8 +618,8 @@ msgid "Nickname" msgstr "Soprannome" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Password" @@ -627,11 +635,11 @@ msgstr "Consenti" msgid "Allow or deny access to your account information." msgstr "Consenti o nega l'accesso alle informazioni del tuo account." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Questo metodo richiede POST o DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Non puoi eliminare il messaggio di un altro utente." @@ -648,60 +656,64 @@ msgstr "Non puoi ripetere un tuo messaggio." msgid "Already repeated that notice." msgstr "Hai già ripetuto quel messaggio." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Messaggio eliminato." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Nessuno stato trovato con quel ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trovato." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Preferiti da %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s aggiornamenti preferiti da %2$s / %3$s" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Messaggi che citano %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s messaggi in risposta a quelli da %2$s / %3$s" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Attività pubblica di %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "Aggiornamenti di %s da tutti!" @@ -716,16 +728,20 @@ msgstr "Ripetuto a %s" msgid "Repeats of %s" msgstr "Ripetizioni di %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Messaggi etichettati con %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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." @@ -779,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" @@ -819,11 +835,11 @@ msgstr "Immagine eliminata." msgid "You already blocked that user." msgstr "Hai già bloccato quell'utente." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Blocca utente" -#: actions/block.php:130 +#: 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 " @@ -838,7 +854,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -847,7 +863,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Non bloccare questo utente" @@ -856,7 +872,7 @@ msgstr "Non bloccare questo utente" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -864,11 +880,11 @@ msgid "Yes" msgstr "Sì" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Blocca questo utente" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Salvataggio delle informazioni per il blocco non riuscito." @@ -995,7 +1011,7 @@ msgstr "Questa applicazione non è di tua proprietà ." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Si è verificato un problema con il tuo token di sessione." @@ -1028,7 +1044,7 @@ msgstr "Elimina l'applicazione" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Accesso non effettuato." @@ -1059,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" @@ -1099,45 +1115,53 @@ msgstr "Aspetto" msgid "Design settings for this StatusNet site." msgstr "Impostazioni dell'aspetto per questo sito di StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL del logo non valido." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema non disponibile: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Modifica logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo del sito" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Modifica tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Tema del sito" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema per questo sito." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Tema personalizzato" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Puoi caricare un tema per StatusNet personalizzato come un file ZIP." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Modifica l'immagine di sfondo" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Sfondo" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1147,57 +1171,65 @@ msgstr "" "file è di %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "On" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Off" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Abilita o disabilita l'immagine di sfondo." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Affianca l'immagine di sfondo" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Modifica colori" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Contenuto" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra laterale" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Testo" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Collegamenti" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avanzate" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personalizzato" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Usa predefiniti" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Ripristina i valori predefiniti" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Reimposta i valori predefiniti" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1207,7 +1239,7 @@ msgstr "Reimposta i valori predefiniti" msgid "Save" msgstr "Salva" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Salva aspetto" @@ -1321,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." @@ -1481,7 +1514,7 @@ msgid "Cannot normalize that email address" msgstr "Impossibile normalizzare quell'indirizzo email" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Non è un indirizzo email valido." @@ -1709,13 +1742,13 @@ msgstr "L'utente ricopre già questo ruolo." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Nessun profilo specificato." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Nessun profilo con quel ID." @@ -1856,7 +1889,7 @@ msgstr "Rende questo utente un amministratore" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Attività di %s" @@ -2282,39 +2315,39 @@ msgstr "Non fai parte di quel gruppo." msgid "%1$s left group %2$s" msgstr "%1$s ha lasciato il gruppo %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Accesso già effettuato." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nome utente o password non corretto." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Errore nell'impostare l'utente. Forse non hai l'autorizzazione." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Accedi" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Accedi al sito" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Ricordami" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Accedi automaticamente in futuro; non per computer condivisi!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Password persa o dimenticata?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2322,11 +2355,11 @@ msgstr "" "Per motivi di sicurezza, è necessario che tu inserisca il tuo nome utente e " "la tua password prima di modificare le impostazioni." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Accedi con nome utente e password." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2475,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." @@ -2533,30 +2567,30 @@ msgstr "" "Gli sviluppatori possono modificare le impostazioni di registrazione per le " "loro applicazioni " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Il messaggio non ha un profilo." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Stato di %1$s su %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Tipo di contenuto %s non supportato." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2661,7 +2695,7 @@ msgid "6 or more characters" msgstr "6 o più caratteri" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Conferma" @@ -2673,11 +2707,11 @@ msgstr "Stessa password di sopra" msgid "Change" msgstr "Modifica" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "La password deve essere di 6 o più caratteri." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Le password non corrispondono." @@ -2698,7 +2732,7 @@ msgid "Password saved." msgstr "Password salvata." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Percorsi" @@ -2904,43 +2938,43 @@ msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" "1-64 lettere minuscole o numeri, senza spazi o simboli di punteggiatura" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nome" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Pagina web" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL della tua pagina web, blog o profilo su un altro sito" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Descriviti assieme ai tuoi interessi in %d caratteri" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Descrivi te e i tuoi interessi" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Biografia" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Ubicazione" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Dove ti trovi, tipo \"città , regione, stato\"" @@ -2983,7 +3017,7 @@ msgstr "" "Abbonami automaticamente a chi si abbona ai miei messaggi (utile per i non-" "umani)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "La biografia è troppo lunga (max %d caratteri)." @@ -3242,7 +3276,7 @@ msgstr "La password deve essere lunga almeno 6 caratteri." msgid "Password and confirmation do not match." msgstr "La password e la conferma non corrispondono." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Errore nell'impostare l'utente." @@ -3250,39 +3284,39 @@ msgstr "Errore nell'impostare l'utente." msgid "New password successfully saved. You are now logged in." msgstr "Nuova password salvata con successo. Hai effettuato l'accesso." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Solo le persone invitate possono registrarsi." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Codice di invito non valido." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registrazione riuscita" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrati" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registrazione non consentita." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Non puoi registrarti se non accetti la licenza." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Indirizzo email già esistente." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Nome utente o password non valido." -#: actions/register.php:343 +#: 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. " @@ -3291,56 +3325,57 @@ msgstr "" "successivamente inviare messaggi e metterti in contatto con i tuoi amici e " "colleghi. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 lettere minuscole o numeri, niente punteggiatura o spazi; richiesto" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 o più caratteri; richiesta" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Stessa password di sopra; richiesta" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Email" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Usata solo per aggiornamenti, annunci e recupero password" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nome completo, preferibilmente il tuo \"vero\" nome" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "I contenuti e i dati di %1$s sono privati e confidenziali." +msgstr "" +"Comprendo che i contenuti e i dati di %1$s sono privati e confidenziali." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "I miei testi e i miei file sono copyright di %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "I miei testi e file restano sotto il mio diretto copyright." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Tutti i diritti riservati." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3350,7 +3385,7 @@ msgstr "" "dati personali: password, indirizzo email, indirizzo messaggistica " "istantanea e numero di telefono." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3384,7 +3419,7 @@ msgstr "" "Grazie per la tua iscrizione e speriamo tu possa divertiti usando questo " "servizio." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3467,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" @@ -3502,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." @@ -3520,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)." @@ -3541,7 +3576,7 @@ msgstr "Non puoi revocare i ruoli degli utenti su questo sito." msgid "User doesn't have this role." msgstr "L'utente non ricopre questo ruolo." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3555,7 +3590,7 @@ msgstr "L'utente è già nella \"sandbox\"." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessioni" @@ -3598,7 +3633,7 @@ msgid "Icon" msgstr "Icona" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nome" @@ -3609,12 +3644,12 @@ msgid "Organization" msgstr "Organizzazione" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3701,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 " @@ -3776,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" @@ -3790,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." @@ -3810,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." @@ -3822,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" @@ -3897,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)." @@ -4228,7 +4263,7 @@ msgstr "Nessun codice inserito" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Snapshot" @@ -4288,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." @@ -4468,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." @@ -4583,7 +4615,7 @@ msgstr "" "Controlla i dettagli seguenti per essere sicuro di volerti abbonare ai " "messaggi di questo utente. Se non hai richiesto ciò, fai clic su \"Rifiuta\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licenza" @@ -4712,18 +4744,18 @@ msgstr "Prova a [cercare dei gruppi](%%action.groupsearch%%) e iscriviti." #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Messaggi da %1$s su %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4732,11 +4764,11 @@ msgstr "" "Questo sito esegue il software %1$s versione %2$s, Copyright 2008-2010 " "StatusNet, Inc. e collaboratori." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Collaboratori" -#: actions/version.php:168 +#: 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 " @@ -4748,7 +4780,7 @@ msgstr "" "Software Foundation, versione 3 o (a scelta) una qualsiasi versione " "successiva. " -#: actions/version.php:174 +#: 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 " @@ -4760,7 +4792,7 @@ msgstr "" "o di UTILIZZABILITÀ PER UN PARTICOLARE SCOPO. Per maggiori informazioni " "consultare la GNU Affero General Public License. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4769,95 +4801,143 @@ msgstr "" "Una copia della GNU Affero General Plublic License dovrebbe essere " "disponibile assieme a questo programma. Se così non fosse, consultare %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Plugin" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versione" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autori" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Errore del database nell'inserire un hashtag: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4865,71 +4945,122 @@ msgstr "" "Troppi messaggi duplicati 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -4980,188 +5111,188 @@ msgid "Untitled page" msgstr "Pagina senza nome" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Esplorazione sito primaria" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Profilo personale e attività degli amici" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personale" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Modifica la tua email, immagine, password o il tuo profilo" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Connettiti con altri servizi" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Connetti" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Modifica la configurazione del sito" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Amministra" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Invita amici e colleghi a seguirti su %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Invita" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Termina la tua sessione sul sito" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Esci" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Crea un account" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrati" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Accedi al sito" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Accedi" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Aiutami!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Aiuto" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Cerca persone o del testo" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Cerca" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Messaggio del sito" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Viste locali" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Pagina messaggio" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Esplorazione secondaria del sito" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Aiuto" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Informazioni" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacy" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Sorgenti" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contatti" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Badge" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licenza del software StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5171,13 +5302,13 @@ msgstr "" "(%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** è un servizio di microblog." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5189,34 +5320,34 @@ msgstr "" "(http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licenza del contenuto del sito" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "I contenuti e i dati di %1$s sono privati e confidenziali." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" "I contenuti e i dati sono copyright di %1$s. Tutti i diritti riservati." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "I contenuti e i dati sono forniti dai collaboratori. Tutti i diritti " "riservati." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5224,19 +5355,19 @@ msgstr "" "licenza %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginazione" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Successivi" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Precedenti" @@ -5284,64 +5415,64 @@ msgid "Unable to delete design setting." msgstr "Impossibile eliminare le impostazioni dell'aspetto." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configurazione di base" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Sito" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configurazione aspetto" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Aspetto" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configurazione utente" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Utente" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configurazione di accesso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configurazione percorsi" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configurazione sessioni" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Modifica messaggio del sito" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configurazione snapshot" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "Le risorse API richiedono accesso lettura-scrittura, ma si dispone del solo " @@ -5474,11 +5605,11 @@ msgstr "Messaggi in cui appare questo allegato" msgid "Tags for this attachment" msgstr "Etichette per questo allegato" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Modifica della password non riuscita" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "La modifica della password non è permessa" @@ -5572,14 +5703,14 @@ msgstr "Nome completo: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Posizione: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Pagina web: %s" @@ -6117,8 +6248,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s sta ora seguendo i tuoi messaggi su %2$s." +#: 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 "" +"Se credi che questo account non sia usato correttamente, puoi bloccarlo " +"dall'elenco dei tuoi abbonati e segnalarlo come spam all'amministratore del " +"sito presso %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6144,19 +6285,19 @@ msgstr "" "Modifica il tuo indirizzo email o le opzioni di notifica presso %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Biografia: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nuovo indirizzo email per inviare messaggi a %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6178,31 +6319,31 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "stato di %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Conferma SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "" "%s: conferma che questo numero di telefono sia tuo utilizzando questo codice:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s ti ha richiamato" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6230,13 +6371,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nuovo messaggio privato da %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6270,13 +6411,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) ha aggiunto il tuo messaggio tra i suoi preferiti" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6315,7 +6456,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6326,13 +6467,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) ti ha inviato un messaggio" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6395,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" @@ -6453,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." @@ -6526,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" @@ -6680,7 +6821,7 @@ msgstr "Media giornaliera" msgid "All groups" msgstr "Tutti i gruppi" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Metodo non implementato" @@ -6704,7 +6845,7 @@ msgstr "In evidenza" msgid "Popular" msgstr "Famosi" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Nessun argomento return-to." @@ -6725,7 +6866,7 @@ msgstr "Ripeti questo messaggio" msgid "Revoke the \"%s\" role from this user" msgstr "Revoca il ruolo \"%s\" a questo utente" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Nessun utente singolo definito per la modalità single-user." @@ -6823,6 +6964,52 @@ msgstr "Insieme delle etichette delle persone come etichettate" msgid "None" msgstr "Nessuno" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" +"Questo server non è in grado di gestire caricamenti senza il supporto ZIP." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Salvataggio del tema non riuscito." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "Tema non valido: struttura directory non corretta." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"Il tema caricato è troppo grande, deve essere meno di %d byte non compresso." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "File di tema non valido: manca il file 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 "" +"Il tema contiene file non o nomi di cartelle non validi. Utilizzare " +"solamente caratteri ASCII, numeri, il trattino basso e il segno meno." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Il tema contiene file di tipo \".%s\" che non sono supportati." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Errore nell'aprire il file del tema." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Chi scrive più messaggi" @@ -6903,56 +7090,56 @@ msgid "Moderator" msgstr "Moderatore" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "pochi secondi fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "circa un minuto fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "circa %d minuti fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "circa un'ora fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "circa %d ore fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "circa un giorno fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "circa %d giorni fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "circa un mese fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "circa %d mesi fa" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "circa un anno fa" diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po index 36b810524..fab6b3d78 100644 --- a/locale/ja/LC_MESSAGES/statusnet.po +++ b/locale/ja/LC_MESSAGES/statusnet.po @@ -1,5 +1,6 @@ # Translation of StatusNet to Japanese # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Fryed-peach # Author@translatewiki.net: Sonoda # Author@translatewiki.net: Whym @@ -10,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:31+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:41+0000\n" "Language-Team: Japanese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "アクセス" @@ -87,25 +88,25 @@ msgid "Save" msgstr "ä¿å˜" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "ãã®ã‚ˆã†ãªãƒšãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -118,7 +119,7 @@ msgid "No such user." msgstr "ãã®ã‚ˆã†ãªãƒ¦ãƒ¼ã‚¶ã¯ã„ã¾ã›ã‚“。" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s ã¨å‹äººã€ãƒšãƒ¼ã‚¸ %2$d" @@ -126,39 +127,39 @@ msgstr "%1$s ã¨å‹äººã€ãƒšãƒ¼ã‚¸ %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 ã¨å‹äºº" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "%s ã®å‹äººã®ãƒ•ã‚£ãƒ¼ãƒ‰ (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "%s ã®å‹äººã®ãƒ•ã‚£ãƒ¼ãƒ‰ (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "%s ã®å‹äººã®ãƒ•ã‚£ãƒ¼ãƒ‰ (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "ã“れ㯠%s ã¨å‹äººã®ã‚¿ã‚¤ãƒ ラインã§ã™ã€‚ã¾ã 誰も投稿ã—ã¦ã„ã¾ã›ã‚“。" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -168,77 +169,77 @@ msgstr "" "ã—ã¦ã¿ãŸã‚Šã€ä½•ã‹æŠ•ç¨¿ã—ã¦ã¿ã¾ã—ょã†ã€‚" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã‹ã‚‰ [%1$s ã•ã‚“ã«åˆå›³](../%2$s) ã—ãŸã‚Šã€[知らã›ãŸã„ã“ã¨ã«ã¤ã„ã¦æŠ•" "稿](%%%%action.newnotice%%%%?status_textarea=%3$s) ã—ãŸã‚Šã§ãã¾ã™ã€‚" -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 his or her attention." +"post a notice to them." msgstr "" "[アカウントを登録](%%%%action.register%%%%) ã—㦠%s ã•ã‚“ã«åˆå›³ã—ãŸã‚Šã€ãŠçŸ¥ã‚‰" "ã›ã‚’é€ã£ã¦ã¿ã¾ã›ã‚“ã‹ã€‚" #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "%2$s ã« %1$s ã¨å‹äººã‹ã‚‰ã®æ›´æ–°ãŒã‚ã‚Šã¾ã™ï¼" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API メソッドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«ã¯ POST ãŒå¿…è¦ã§ã™ã€‚" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 #, fuzzy msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " @@ -247,7 +248,7 @@ msgstr "" "「deviceã€ã¨ã„ã†åå‰ã®å¼•æ•°ã‚’ã€æ¬¡ã®ä¸ã‹ã‚‰å€¤ã‚’é¸ã‚“ã§ã€æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™: " "sms, im, none" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "ユーザを更新ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" @@ -267,7 +268,7 @@ msgstr "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’ä¿å˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -343,29 +344,30 @@ msgstr "å—ã‘å–り手ã®ãƒ¦ãƒ¼ã‚¶ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" msgid "Can't send direct messages to users who aren't your friend." msgstr "å‹äººã§ãªã„ユーザã«ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "ãã®ï¼©ï¼¤ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "ã“ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã™ã§ã«ãŠæ°—ã«å…¥ã‚Šã§ã™ã€‚" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’作æˆã§ãã¾ã›ã‚“。" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "ãã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ãŠæ°—ã«å…¥ã‚Šã§ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -382,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 @@ -394,126 +397,131 @@ msgstr "ソースユーザーを決定ã§ãã¾ã›ã‚“。" msgid "Could not find target user." msgstr "ターゲットユーザーを見ã¤ã‘られã¾ã›ã‚“。" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "ニックãƒãƒ¼ãƒ ã«ã¯ã€å°æ–‡å—アルファベットã¨æ•°å—ã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚スペースã¯ä½¿ç”¨" "ã§ãã¾ã›ã‚“。" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "ãã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯æ—¢ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚ä»–ã®ã‚‚ã®ã‚’試ã—ã¦ã¿ã¦ä¸‹ã•ã„。" -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "有効ãªãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "ホームページã®URLãŒä¸é©åˆ‡ã§ã™ã€‚" -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "フルãƒãƒ¼ãƒ ãŒé•·ã™ãŽã¾ã™ã€‚(255å—ã¾ã§ï¼‰" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "記述ãŒé•·ã™ãŽã¾ã™ã€‚(最長140å—)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "å ´æ‰€ãŒé•·ã™ãŽã¾ã™ã€‚(255å—ã¾ã§ï¼‰" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "別åãŒå¤šã™ãŽã¾ã™! 最大 %d。" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "ä¸æ£ãªåˆ¥å: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "別å \"%s\" ã¯æ—¢ã«ä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™ã€‚ä»–ã®ã‚‚ã®ã‚’試ã—ã¦ã¿ã¦ä¸‹ã•ã„。" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "別åã¯ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¨åŒã˜ã§ã¯ã„ã‘ã¾ã›ã‚“。" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "グループãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "ã™ã§ã«ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "管ç†è€…ã«ã‚ˆã£ã¦ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãƒ–ãƒãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "ユーザ %1$s ã¯ã‚°ãƒ«ãƒ¼ãƒ— %2$s ã«å‚åŠ ã§ãã¾ã›ã‚“。" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "ユーザ %1$s をグループ %2$s ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "グループ %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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s グループ" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 パラメータã¯æä¾›ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚" @@ -524,15 +532,15 @@ msgstr "ä¸æ£ãªãƒˆãƒ¼ã‚¯ãƒ³ã€‚" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -595,12 +603,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "アカウント" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -608,8 +616,8 @@ msgid "Nickname" msgstr "ニックãƒãƒ¼ãƒ " #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "パスワード" @@ -625,11 +633,11 @@ msgstr "許å¯" msgid "Allow or deny access to your account information." msgstr "ã‚¢ã‚«ã‚¦ãƒ³ãƒˆæƒ…å ±ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã™ã‚‹ã‹ã€ã¾ãŸã¯æ‹’絶ã—ã¦ãã ã•ã„。" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«ã¯ POST ã‹ DELETE ãŒå¿…è¦ã§ã™ã€‚" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "ä»–ã®ãƒ¦ãƒ¼ã‚¶ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。" @@ -646,59 +654,63 @@ msgstr "ã‚ãªãŸã®ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã›ã¾ã›ã‚“。" msgid "Already repeated that notice." msgstr "ã™ã§ã«ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¦ã„ã¾ã™ã€‚" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "ステータスを削除ã—ã¾ã—ãŸã€‚" -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "ãã®ï¼©ï¼¤ã§ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: actions/apistatusesupdate.php:304 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 "サãƒãƒ¼ãƒˆå¤–ã®å½¢å¼ã§ã™ã€‚" -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / %2$s ã‹ã‚‰ã®ãŠæ°—ã«å…¥ã‚Š" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s 㯠%2$s ã§ãŠæ°—ã«å…¥ã‚Šã‚’æ›´æ–°ã—ã¾ã—㟠/ %2$s。" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / %2$s ã«ã¤ã„ã¦æ›´æ–°" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%2$s ã‹ã‚‰ã‚¢ãƒƒãƒ—デートã«ç”ãˆã‚‹ %1$s アップデート" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s ã®ãƒ‘ブリックタイムライン" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "皆ã‹ã‚‰ã® %s アップデート!" @@ -713,16 +725,20 @@ msgstr "%s ã¸ã®è¿”ä¿¡" msgid "Repeats of %s" msgstr "%s ã®è¿”ä¿¡" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "%s ã¨ã‚¿ã‚°ä»˜ã‘ã•ã‚ŒãŸã¤ã¶ã‚„ã" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "ãã®ã‚ˆã†ãªæ·»ä»˜ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -775,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 "削除" @@ -816,11 +832,11 @@ msgstr "ã‚¢ãƒã‚¿ãƒ¼ãŒå‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚" msgid "You already blocked that user." msgstr "ãã®ãƒ¦ãƒ¼ã‚¶ã¯ã™ã§ã«ãƒ–ãƒãƒƒã‚¯æ¸ˆã¿ã§ã™ã€‚" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "ユーザをブãƒãƒƒã‚¯" -#: actions/block.php:130 +#: actions/block.php:138 #, fuzzy msgid "" "Are you sure you want to block this user? Afterwards, they will be " @@ -836,7 +852,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -846,7 +862,7 @@ msgstr "No" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’アンブãƒãƒƒã‚¯ã™ã‚‹" @@ -855,7 +871,7 @@ msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’アンブãƒãƒƒã‚¯ã™ã‚‹" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -864,11 +880,11 @@ msgid "Yes" msgstr "Yes" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’ブãƒãƒƒã‚¯ã™ã‚‹" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "ブãƒãƒƒã‚¯æƒ…å ±ã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" @@ -995,7 +1011,7 @@ msgstr "ã“ã®ã‚¢ãƒ—リケーションã®ã‚ªãƒ¼ãƒŠãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "ã‚ãªãŸã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ã«é–¢ã™ã‚‹å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸã€‚" @@ -1029,7 +1045,7 @@ msgstr "ã“ã®ã‚¢ãƒ—リケーションを削除" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã›ã‚“。" @@ -1060,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 "ã“ã®ã¤ã¶ã‚„ãを削除" @@ -1100,45 +1116,54 @@ msgstr "デザイン" msgid "Design settings for this StatusNet site." msgstr "ã“ã® StatusNet サイトã®ãƒ‡ã‚¶ã‚¤ãƒ³è¨å®šã€‚" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "ä¸æ£ãªãƒã‚´ URL" -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "テーマãŒåˆ©ç”¨ã§ãã¾ã›ã‚“: %s" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "ãƒã‚´ã®å¤‰æ›´" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "サイトãƒã‚´" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "テーマ変更" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "サイトテーマ" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "サイトã®ãƒ†ãƒ¼ãƒž" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "サイトテーマ" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¤ãƒ¡ãƒ¼ã‚¸ã®å¤‰æ›´" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1148,57 +1173,65 @@ msgstr "" "イズ㯠%1$s。" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "オン" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "オフ" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¤ãƒ¡ãƒ¼ã‚¸ã®ã‚ªãƒ³ã¾ãŸã¯ã‚ªãƒ•ã€‚" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "タイルãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã‚¤ãƒ¡ãƒ¼ã‚¸" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "色ã®å¤‰æ›´" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "内容" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "サイドãƒãƒ¼" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "テã‚スト" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "リンク" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "デフォルトを使用" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "デフォルトデザインã«æˆ»ã™ã€‚" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "デフォルトã¸ãƒªã‚»ãƒƒãƒˆã™ã‚‹" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1208,7 +1241,7 @@ msgstr "デフォルトã¸ãƒªã‚»ãƒƒãƒˆã™ã‚‹" msgid "Save" msgstr "ä¿å˜" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "デザインã®ä¿å˜" @@ -1322,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 "別åを作æˆã§ãã¾ã›ã‚“。" @@ -1487,7 +1521,7 @@ msgid "Cannot normalize that email address" msgstr "ãã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’æ£è¦åŒ–ã§ãã¾ã›ã‚“" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -1723,13 +1757,13 @@ msgstr "ユーザã¯æ—¢ã«é»™ã£ã¦ã„ã¾ã™ã€‚" #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "プãƒãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°ãŒã‚ã‚Šã¾ã›ã‚“。" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "ãã®ï¼©ï¼¤ã®ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“。" @@ -1869,7 +1903,7 @@ msgstr "ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’管ç†è€…ã«ã™ã‚‹" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s ã®ã‚¿ã‚¤ãƒ ライン" @@ -2300,39 +2334,39 @@ msgstr "ã‚ãªãŸã¯ãã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" msgid "%1$s left group %2$s" msgstr "%1$s ã¯ã‚°ãƒ«ãƒ¼ãƒ— %2$s ã«æ®‹ã‚Šã¾ã—ãŸã€‚" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "æ—¢ã«ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™ã€‚" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "ユーザåã¾ãŸã¯ãƒ‘スワードãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "ユーザè¨å®šã‚¨ãƒ©ãƒ¼ã€‚ ã‚ãªãŸã¯ãŸã¶ã‚“承èªã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "ãƒã‚°ã‚¤ãƒ³" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "サイトã¸ãƒã‚°ã‚¤ãƒ³" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "ãƒã‚°ã‚¤ãƒ³çŠ¶æ…‹ã‚’ä¿æŒ" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "以é™ã¯è‡ªå‹•çš„ã«ãƒã‚°ã‚¤ãƒ³ã™ã‚‹ã€‚共用コンピューターã§ã¯é¿ã‘ã¾ã—ょã†ï¼" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "パスワードを紛失ã€å¿˜ã‚ŒãŸï¼Ÿ" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2340,12 +2374,12 @@ msgstr "" "ã‚»ã‚ュリティー上ã®ç†ç”±ã«ã‚ˆã‚Šã€è¨å®šã‚’変更ã™ã‚‹å‰ã«ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを入力ã—" "ã¦ä¸‹ã•ã„。" -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "ユーザåã¨ãƒ‘スワードã§ãƒã‚°ã‚¤ãƒ³" -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2495,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 "" "ã“ã®ãƒ¦ãƒ¼ã‚¶ã¯ã€åˆå›³ã‚’許å¯ã—ã¦ã„ãªã„ã‹ã€ç¢ºèªã•ã‚Œã¦ã„ãŸçŠ¶æ…‹ã§ãªã„ã‹ã€ãƒ¡ãƒ¼ãƒ«è¨å®š" "ã‚’ã—ã¦ã„ã¾ã›ã‚“。" @@ -2553,31 +2588,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "開発者ã¯å½¼ã‚‰ã®ã‚¢ãƒ—リケーションã®ãŸã‚ã«ç™»éŒ²è¨å®šã‚’編集ã§ãã¾ã™ " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "ã¤ã¶ã‚„ãã«ã¯ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" -msgstr "%2$s ã«ãŠã‘ã‚‹ %1$ ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹" +msgstr "%2$s ã«ãŠã‘ã‚‹ %1$s ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "内容種別 " #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„データ形å¼ã€‚" @@ -2682,7 +2717,7 @@ msgid "6 or more characters" msgstr "6æ–‡å—以上" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "パスワード確èª" @@ -2694,11 +2729,11 @@ msgstr "上ã¨åŒã˜ãƒ‘スワード" msgid "Change" msgstr "変更" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "パスワードã¯6æ–‡å—以上ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“。" @@ -2719,7 +2754,7 @@ msgid "Password saved." msgstr "パスワードãŒä¿å˜ã•ã‚Œã¾ã—ãŸã€‚" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "パス" @@ -2924,43 +2959,43 @@ msgstr "プãƒãƒ•ã‚¡ã‚¤ãƒ«æƒ…å ±" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64æ–‡å—ã®ã€å°æ–‡å—アルファベットã‹æ•°å—ã§ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚„å¥èªç‚¹ã¯é™¤ã" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "ホームページã€ãƒ–ãƒã‚°ã€ãƒ—ãƒãƒ•ã‚¡ã‚¤ãƒ«ã€ãã®ä»–サイト㮠URL" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "%då—以内ã§è‡ªåˆ†è‡ªèº«ã¨è‡ªåˆ†ã®èˆˆå‘³ã«ã¤ã„ã¦æ›¸ã„ã¦ãã ã•ã„" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "自分自身ã¨è‡ªåˆ†ã®èˆˆå‘³ã«ã¤ã„ã¦æ›¸ã„ã¦ãã ã•ã„" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "自己紹介" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "自分ã®ã„ã‚‹å ´æ‰€ã€‚ä¾‹ï¼šã€Œéƒ½å¸‚, 都é“府県 (ã¾ãŸã¯åœ°åŸŸ), 国ã€" @@ -3002,7 +3037,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "自分をフォãƒãƒ¼ã—ã¦ã„る者を自動的ã«ãƒ•ã‚©ãƒãƒ¼ã™ã‚‹ (BOTã«æœ€é©)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "自己紹介ãŒé•·ã™ãŽã¾ã™ (最長140æ–‡å—)。" @@ -3263,7 +3298,7 @@ msgstr "パスワードã¯6å—以上ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。" msgid "Password and confirmation do not match." msgstr "パスワードã¨ç¢ºèªãŒä¸€è‡´ã—ã¾ã›ã‚“。" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "ユーザè¨å®šã‚¨ãƒ©ãƒ¼" @@ -3271,39 +3306,39 @@ msgstr "ユーザè¨å®šã‚¨ãƒ©ãƒ¼" msgid "New password successfully saved. You are now logged in." msgstr "æ–°ã—ã„パスワードã®ä¿å˜ã«æˆåŠŸã—ã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™ã€‚" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "ã™ã¿ã¾ã›ã‚“ã€æ‹›å¾…ã•ã‚ŒãŸäººã€…ã ã‘ãŒç™»éŒ²ã§ãã¾ã™ã€‚" -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "ã™ã¿ã¾ã›ã‚“ã€ä¸æ£ãªæ‹›å¾…コード。" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "登録æˆåŠŸ" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "登録" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "登録ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "ライセンスã«åŒæ„é ‚ã‘ãªã„å ´åˆã¯ç™»éŒ²ã§ãã¾ã›ã‚“。" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "メールアドレスãŒæ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚" -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "ä¸æ£ãªãƒ¦ãƒ¼ã‚¶åã¾ãŸã¯ãƒ‘スワード。" -#: actions/register.php:343 +#: actions/register.php:350 #, fuzzy msgid "" "With this form you can create a new account. You can then post notices and " @@ -3312,63 +3347,63 @@ msgstr "" "ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã§æ–°ã—ã„アカウントを作æˆã§ãã¾ã™ã€‚ 次ã«ã¤ã¶ã‚„ãを投稿ã—ã¦ã€å‹äººã‚„" "åŒåƒšã«ãƒªãƒ³ã‚¯ã§ãã¾ã™ã€‚ " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64æ–‡å—ã®ã€å°æ–‡å—アルファベットã‹æ•°å—ã§ã€ã‚¹ãƒšãƒ¼ã‚¹ã‚„å¥èªç‚¹ã¯é™¤ãã€‚å¿…é ˆã§ã™ã€‚" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6æ–‡å—ä»¥ä¸Šã€‚å¿…é ˆã§ã™ã€‚" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "上ã®ãƒ‘スワードã¨åŒã˜ã§ã™ã€‚ å¿…é ˆã€‚" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "メール" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "æ›´æ–°ã€ã‚¢ãƒŠã‚¦ãƒ³ã‚¹ã€ãƒ‘スワードリカãƒãƒªãƒ¼ã§ã®ã¿ä½¿ç”¨ã•ã‚Œã¾ã™ã€‚" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "é•·ã„åå‰" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " "email address, IM address, and phone number." msgstr "å€‹äººæƒ…å ±ã‚’é™¤ã: パスワードã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã€IMアドレスã€é›»è©±ç•ªå·" -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3401,7 +3436,7 @@ msgstr "" "å‚åŠ ã—ã¦ãã ã•ã£ã¦ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ç§ãŸã¡ã¯ã‚ãªãŸãŒã“ã®ã‚µãƒ¼ãƒ“スを楽ã—ã‚“" "ã§ä½¿ã£ã¦ãれるã“ã¨ã‚’願ã£ã¦ã„ã¾ã™ã€‚" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3485,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 "ç¹°ã‚Šè¿”ã•ã‚ŒãŸ" @@ -3520,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 ã¯ã¾ã ã¤ã¶ã‚„ãã‚’" "å—ã‘å–ã£ã¦ã„ã¾ã›ã‚“。" @@ -3538,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)ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" @@ -3561,7 +3596,7 @@ msgstr "ã‚ãªãŸã¯ã“ã®ã‚µã‚¤ãƒˆã§ãƒ¦ãƒ¼ã‚¶ã‚’黙らã›ã‚‹ã“ã¨ãŒã§ãã¾ msgid "User doesn't have this role." msgstr "åˆã£ã¦ã„るプãƒãƒ•ã‚£ãƒ¼ãƒ«ã®ãªã„ユーザ" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3575,7 +3610,7 @@ msgstr "ユーザã¯ã™ã§ã«ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ã§ã™ã€‚" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "セッション" @@ -3618,7 +3653,7 @@ msgid "Icon" msgstr "アイコン" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "åå‰" @@ -3629,12 +3664,12 @@ msgid "Organization" msgstr "組織" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "統計データ" @@ -3723,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%%%%) ã—ãªã„ã®ã§ã™ã‹ã€‚ãã—ã¦ã€å½¼ã‚‰ãŒãŠæ°—ã«å…¥ã‚Šã«åŠ ãˆã‚‹ãŠã‚‚" @@ -3798,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 "メンãƒãƒ¼" @@ -3812,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." @@ -3831,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." @@ -3844,7 +3879,7 @@ msgstr "" "wikipedia.org/wiki/Micro-blogging) サービス。メンãƒãƒ¼ã¯å½¼ã‚‰ã®æš®ã‚‰ã—ã¨èˆˆå‘³ã«é–¢" "ã™ã‚‹çŸã„メッセージを共有ã—ã¾ã™ã€‚" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "管ç†è€…" @@ -3919,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) ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" @@ -4267,7 +4302,7 @@ msgstr "コードãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "スナップショット" @@ -4329,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 "フォãƒãƒ¼ã‚’ä¿å˜ã§ãã¾ã›ã‚“。" @@ -4508,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 "ã‚ãªãŸã¯ãã®ãƒ¦ãƒ¼ã‚¶ã‚’ブãƒãƒƒã‚¯ã—ã¦ã„ã¾ã›ã‚“。" @@ -4624,7 +4656,7 @@ msgstr "" "ユーザã®ã¤ã¶ã‚„ãをフォãƒãƒ¼ã™ã‚‹ã«ã¯è©³ç´°ã‚’確èªã—ã¦ä¸‹ã•ã„。ã ã‚Œã‹ã®ã¤ã¶ã‚„ãã‚’" "フォãƒãƒ¼ã™ã‚‹ãŸã‚ã«å°‹ããªã„å ´åˆã¯ã€\"Reject\" をクリックã—ã¦ä¸‹ã•ã„。" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "ライセンス" @@ -4754,18 +4786,18 @@ msgstr "[グループを探ã—ã¦](%%action.groupsearch%%)ãã‚Œã«åŠ å…¥ã—ã¦ã #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "%1$s ã‹ã‚‰ %2$s 上ã®æ›´æ–°ã‚’ã—ã¾ã—ãŸ!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4774,11 +4806,11 @@ msgstr "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " "Inc. and contributors." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "コントリビュータ" -#: actions/version.php:168 +#: 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 " @@ -4786,7 +4818,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4794,103 +4826,151 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "プラグイン" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "作者" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°è¿½åŠ DB エラー: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4898,73 +4978,123 @@ msgstr "" "多ã™ãŽã‚‹é‡è¤‡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒé€Ÿã™ãŽã¾ã™; 数分間休ã¿ã‚’å–ã£ã¦ã‹ã‚‰å†åº¦æŠ•ç¨¿ã—ã¦ãã ã•" "ã„。" -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "フォãƒãƒ¼ã‚’ä¿å˜ã§ãã¾ã›ã‚“。" @@ -5016,133 +5146,133 @@ msgid "Untitled page" msgstr "å称未è¨å®šãƒšãƒ¼ã‚¸" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "プライマリサイトナビゲーション" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 #, fuzzy 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "パーソナル" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "メールアドレスã€ã‚¢ãƒã‚¿ãƒ¼ã€ãƒ‘スワードã€ãƒ—ãƒãƒ‘ティã®å¤‰æ›´" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "接続" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy 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:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "管ç†è€…" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "å‹äººã‚„åŒåƒšãŒ %s ã§åŠ ã‚るよã†èª˜ã£ã¦ãã ã•ã„。" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "招待" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 #, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "サイトã‹ã‚‰ãƒã‚°ã‚¢ã‚¦ãƒˆ" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "ãƒã‚°ã‚¢ã‚¦ãƒˆ" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "アカウントを作æˆ" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "登録" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 #, fuzzy msgctxt "TOOLTIP" msgid "Login to the site" msgstr "サイトã¸ãƒã‚°ã‚¤ãƒ³" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "ãƒã‚°ã‚¤ãƒ³" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "助ã‘ã¦ï¼" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "ヘルプ" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 #, fuzzy msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "人々ã‹ãƒ†ã‚ストを検索" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5150,71 +5280,71 @@ msgstr "検索" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "ãƒãƒ¼ã‚«ãƒ«ãƒ“ュー" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "ページã¤ã¶ã‚„ã" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "セカンダリサイトナビゲーション" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "ヘルプ" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "About" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "よãã‚る質å•" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "プライãƒã‚·ãƒ¼" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "ソース" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "連絡先" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "ãƒãƒƒã‚¸" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet ソフトウェアライセンス" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5224,13 +5354,13 @@ msgstr "" "イクãƒãƒ–ãƒã‚°ã‚µãƒ¼ãƒ“スã§ã™ã€‚ " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** ã¯ãƒžã‚¤ã‚¯ãƒãƒ–ãƒã‚°ã‚µãƒ¼ãƒ“スã§ã™ã€‚" #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5242,49 +5372,49 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)。" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "å‰>>" @@ -5332,68 +5462,68 @@ msgid "Unable to delete design setting." msgstr "デザインè¨å®šã‚’削除ã§ãã¾ã›ã‚“。" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "基本サイトè¨å®š" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "サイト" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "デザインè¨å®š" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "デザイン" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "ユーザè¨å®š" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "ユーザ" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "アクセスè¨å®š" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "パスè¨å®š" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "セッションè¨å®š" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "サイトã¤ã¶ã‚„ã" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "パスè¨å®š" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "APIリソースã¯èªã¿æ›¸ãアクセスãŒå¿…è¦ã§ã™ã€ã—ã‹ã—ã‚ãªãŸã¯èªã¿ã‚¢ã‚¯ã‚»ã‚¹ã—ã‹æŒã£ã¦" @@ -5530,11 +5660,11 @@ msgstr "ã“ã®æ·»ä»˜ãŒç¾ã‚Œã‚‹ã¤ã¶ã‚„ã" msgid "Tags for this attachment" msgstr "ã“ã®æ·»ä»˜ã®ã‚¿ã‚°" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "パスワード変更ã«å¤±æ•—ã—ã¾ã—ãŸ" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "パスワード変更ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" @@ -5628,14 +5758,14 @@ msgstr "フルãƒãƒ¼ãƒ : %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "å ´æ‰€: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "ホームページ: %s" @@ -6125,8 +6255,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s 㯠%2$s ã§ã‚ãªãŸã®ã¤ã¶ã‚„ãã‚’èžã„ã¦ã„ã¾ã™ã€‚" +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6152,19 +6289,19 @@ msgstr "" "%8$s ã§ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‹é€šçŸ¥ã‚ªãƒ—ションを変ãˆã¦ãã ã•ã„。\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "自己紹介: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "%s ã¸æŠ•ç¨¿ã®ãŸã‚ã®æ–°ã—ã„メールアドレス" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, fuzzy, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6186,30 +6323,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s ã®çŠ¶æ…‹" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS確èª" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "ã“ã®é›»è©±ç•ªå·ã¯ç¢ºèªå¾…ã¡ã§ã™ã€‚" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "ã‚ãªãŸã¯ %s ã«åˆå›³ã•ã‚Œã¦ã„ã¾ã™" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, fuzzy, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6237,13 +6374,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "%s ã‹ã‚‰ã®æ–°ã—ã„プライベートメッセージ" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, fuzzy, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6277,13 +6414,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦ã‚ãªãŸã®ã¤ã¶ã‚„ãã‚’åŠ ãˆã¾ã—ãŸ" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, fuzzy, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6322,7 +6459,7 @@ msgstr "" "%6%s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6330,13 +6467,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) ã¯ã‚ãªãŸå®›ã¦ã«ã¤ã¶ã‚„ãã‚’é€ã‚Šã¾ã—ãŸ" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6376,7 +6513,7 @@ msgstr "" "ã«å¼•ã込むプライベートメッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚人々ã¯ã‚ãªãŸã ã‘ã¸ã®" "メッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "from" @@ -6437,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 ã¯ã“ã®ã‚µãƒ¼ãƒã®ã‚µãƒãƒ¼ãƒˆã—ã¦ã„るファイルタイプã§ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -6511,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 "ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¾ã—ãŸ" @@ -6669,7 +6806,7 @@ msgstr "" msgid "All groups" msgstr "å…¨ã¦ã®ã‚°ãƒ«ãƒ¼ãƒ—" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "未実装ã®ãƒ¡ã‚½ãƒƒãƒ‰ã€‚" @@ -6693,7 +6830,7 @@ msgstr "フィーãƒãƒ£ãƒ¼ã•ã‚ŒãŸ" msgid "Popular" msgstr "人気" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "return-to 引数ãŒã‚ã‚Šã¾ã›ã‚“。" @@ -6714,7 +6851,7 @@ msgstr "ã“ã®ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã™" msgid "Revoke the \"%s\" role from this user" msgstr "ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’ブãƒãƒƒã‚¯" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "single-user モードã®ãŸã‚ã®ã‚·ãƒ³ã‚°ãƒ«ãƒ¦ãƒ¼ã‚¶ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。" @@ -6812,6 +6949,50 @@ msgstr "タグ付ã‘ã¨ã—ã¦ã®äººã€…タグクラウド" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "リモートプãƒãƒ•ã‚¡ã‚¤ãƒ«æ›´æ–°ã‚¨ãƒ©ãƒ¼" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "上ä½æŠ•ç¨¿è€…" @@ -6896,56 +7077,56 @@ msgid "Moderator" msgstr "管ç†" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "ç´„ 1 分å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "ç´„ %d 分å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "ç´„ 1 時間å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "ç´„ %d 時間å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "ç´„ 1 æ—¥å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "ç´„ %d æ—¥å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "ç´„ 1 ヵ月å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "ç´„ %d ヵ月å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "ç´„ 1 å¹´å‰" diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po index bd688f756..8ba2443a6 100644 --- a/locale/ko/LC_MESSAGES/statusnet.po +++ b/locale/ko/LC_MESSAGES/statusnet.po @@ -1,5 +1,7 @@ # Translation of StatusNet to Korean # +# Author@translatewiki.net: Brion +# Author@translatewiki.net: Changwoo # Author@translatewiki.net: Twkang # -- # This file is distributed under the same license as the StatusNet package. @@ -8,12 +10,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:35+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:12:37+0000\n" "Language-Team: Korean\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -21,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "ì ‘ê·¼" @@ -83,24 +85,24 @@ msgid "Save" msgstr "ì €ìž¥" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "해당하는 페ì´ì§€ ì—†ìŒ" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -113,7 +115,7 @@ msgid "No such user." msgstr "해당하는 ì´ìš©ìž ì—†ìŒ" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" @@ -121,39 +123,39 @@ msgstr "%s ë° ì¹œêµ¬ë“¤, %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 ë° ì¹œêµ¬ë“¤" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "%sì˜ ì¹œêµ¬ë“¤ì— ëŒ€í•œ 피드 (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "%sì˜ ì¹œêµ¬ë“¤ì— ëŒ€í•œ 피드 (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "%sì˜ ì¹œêµ¬ë“¤ì— ëŒ€í•œ 피드 (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "%s ë° ì¹œêµ¬ë“¤ì˜ íƒ€ìž„ë¼ì¸ì´ì§€ë§Œ, ì•„ì§ ì•„ë¬´ë„ ê¸€ì„ ìž‘ì„±í•˜ì§€ 않았습니다." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -163,79 +165,79 @@ msgstr "" "ê°€ ê¸€ì„ ì¨ë³´ì„¸ìš”." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "%2$sì— ìžˆëŠ” %1$s ë° ì¹œêµ¬ë“¤ì˜ ì—…ë°ì´íŠ¸!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API 메서드 발견 안 ë¨." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "ì´ ë©”ì„œë“œëŠ” POST를 요구합니다." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "ì´ìš©ìžë¥¼ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." @@ -255,7 +257,7 @@ msgstr "í”„ë¡œí•„ì„ ì €ìž¥ í• ìˆ˜ 없습니다." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -321,7 +323,7 @@ msgstr "메시지 ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" #: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." -msgstr "너무 ê¹ë‹ˆë‹¤. 최대 메시지 길ì´ëŠ” %d ìžê¹Œì§€ìž…니다." +msgstr "너무 ê¹ë‹ˆë‹¤. 최대 메시지 길ì´ëŠ” %dìž ê¹Œì§€ìž…ë‹ˆë‹¤." #: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." @@ -331,30 +333,31 @@ msgstr "받는 사용ìžê°€ 없습니다." msgid "Can't send direct messages to users who aren't your friend." msgstr "ë‹¹ì‹ ì˜ ì¹œêµ¬ê°€ ì•„ë‹Œ 사용ìžì—게 ì§ì ‘ 메시지를 보낼 수 없습니다." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "ê·¸ IDë¡œ ë°œê²¬ëœ ìƒíƒœê°€ 없습니다." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "ì´ ì†Œì‹ì€ ì´ë¯¸ 관심소ì‹ìœ¼ë¡œ 등ë¡ë˜ì–´ 있습니다." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "관심소ì‹ì„ ìƒì„±í• 수 없습니다." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "ì´ ì†Œì‹ì€ 관심소ì‹ì´ 아닙니다." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -369,9 +372,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 "" #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -381,125 +384,131 @@ msgstr "소스 ì´ìš©ìžë¥¼ 확ì¸í• 수 없습니다." msgid "Could not find target user." msgstr "타겟 ì´ìš©ìžë¥¼ ì°¾ì„ ìˆ˜ 없습니다." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "ë³„ëª…ì€ ë°˜ë“œì‹œ ì˜ì†Œë¬¸ìžì™€ 숫ìžë¡œë§Œ ì´ë£¨ì–´ì ¸ì•¼ 하며 스페ì´ìŠ¤ì˜ ì‚¬ìš©ì´ ë¶ˆê°€ 합니" "다." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "ë³„ëª…ì´ ì´ë¯¸ 사용중 입니다. 다른 ë³„ëª…ì„ ì‹œë„í•´ ë³´ì‹ì‹œì˜¤." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "ìœ íš¨í•œ ë³„ëª…ì´ ì•„ë‹™ë‹ˆë‹¤" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "홈페ì´ì§€ 주소형ì‹ì´ 올바르지 않습니다." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "ì‹¤ëª…ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대 255글ìž)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "ì„¤ëª…ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대 %d 글ìž)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "위치가 너무 ê¹ë‹ˆë‹¤. (최대 255글ìž)" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "ì‚¬ìš©í• ìˆ˜ 없는 별명 : \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "별명 \"%s\" ì´ ì´ë¯¸ 사용중 입니다. 다른 ë³„ëª…ì„ ì‹œë„í•´ ë³´ì‹ì‹œì˜¤." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "ê·¸ë£¹ì„ ì°¾ì„ ìˆ˜ 없습니다." +msgstr "ì°¾ì„ ìˆ˜ê°€ 없습니다." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "ë‹¹ì‹ ì€ ì´ë¯¸ ì´ ê·¸ë£¹ì˜ ë©¤ë²„ìž…ë‹ˆë‹¤." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 +#, fuzzy msgid "You have been blocked from that group by the admin." -msgstr "" +msgstr "귀하는 구ë…ì´ ê¸ˆì§€ë˜ì—ˆìŠµë‹ˆë‹¤." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "ì´ìš©ìž %1$s ì˜ ê·¸ë£¹ %2$s ê°€ìž…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "그룹 %sì—ì„œ %s 사용ìžë¥¼ ì œê±°í• ìˆ˜ 없습니다." +msgstr "ì´ìš©ìž %1$s ì˜ ê·¸ë£¹ %2$s ê°€ìž…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" -msgstr "%sì˜ ê·¸ë£¹ë“¤" +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:107 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, 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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s 그룹" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" -msgstr "%s ìƒì˜ 그룹들" +msgstr "%s 사ì´íŠ¸ì˜ 그룹" + +#: actions/apimediaupload.php:99 +#, fuzzy +msgid "Upload failed." +msgstr "실행 실패" #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." @@ -512,21 +521,21 @@ msgstr "옳지 ì•Šì€ í¬ê¸°" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 "ì„¸ì…˜í† í°ì— ë¬¸ì œê°€ 있습니다. 다시 ì‹œë„해주세요." +msgstr "ì„¸ì…˜í† í°ì— ë¬¸ì œê°€ 있습니다. 다시 ì‹œë„해주ì‹ì‹œì˜¤." #: actions/apioauthauthorize.php:135 #, fuzzy @@ -585,12 +594,12 @@ msgstr "" "$s ê³„ì •ì˜ ì ‘ê·¼ì„ í—ˆìš©í•´ì•¼ 합니다." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "ê³„ì •" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -598,8 +607,8 @@ msgid "Nickname" msgstr "별명" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "비밀 번호" @@ -615,11 +624,11 @@ msgstr "허용" msgid "Allow or deny access to your account information." msgstr "ê³„ì • ì •ë³´ì— ëŒ€í•œ ì ‘ê·¼ì„ í—ˆìš© ë˜ëŠ” 거부합니다." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "ì´ ë©”ì„œë“œëŠ” POST ë˜ëŠ” DELETE를 요구합니다." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "ë‹¹ì‹ ì€ ë‹¤ë¥¸ 사용ìžì˜ ìƒíƒœë¥¼ ì‚ì œí•˜ì§€ ì•Šì•„ë„ ëœë‹¤." @@ -636,59 +645,63 @@ msgstr "ìžê¸° ìžì‹ ì˜ ì†Œì‹ì€ ìž¬ì „ì†¡í• ìˆ˜ 없습니다." msgid "Already repeated that notice." msgstr "ì´ë¯¸ ìž¬ì „ì†¡ëœ ì†Œì‹ìž…니다." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "ì‚ì œëœ ì†Œì‹ìž…니다." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "ë°œê²¬ëœ IDì˜ ìƒíƒœê°€ 없습니다." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "ì°¾ì„ ìˆ˜ê°€ 없습니다." -#: actions/apistatusesupdate.php:304 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 "지ì›í•˜ì§€ 않는 형ì‹ìž…니다." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / %sì˜ ì¢‹ì•„í•˜ëŠ” 글들" +msgstr "%1$sì˜ ìƒíƒœ (%2$sì—ì„œ)" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "%s 좋아하는 ê¸€ì´ ì—…ë°ì´íŠ¸ ë습니다. %Sì— ì˜í•´ / %s." +msgstr "%1$së‹˜ì´ %2$s/%3$sì˜ ì—…ë°ì´íŠ¸ì— 답변했습니다." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / %2$sì—게 ë‹µì‹ ì—…ë°ì´íŠ¸" +msgstr "%1$sì˜ ìƒíƒœ (%2$sì—ì„œ)" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$së‹˜ì´ %2$s/%3$sì˜ ì—…ë°ì´íŠ¸ì— 답변했습니다." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s 공개 타임ë¼ì¸" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "모ë‘ë¡œë¶€í„°ì˜ ì—…ë°ì´íŠ¸ %sê°œ!" @@ -703,16 +716,20 @@ msgstr "%sì— ë‹µì‹ " msgid "Repeats of %s" msgstr "%sì— ë‹µì‹ " -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "%s íƒœê·¸ëœ í†µì§€" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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 "해당하는 첨부파ì¼ì´ 없습니다." @@ -748,7 +765,7 @@ msgstr "ë‹¹ì‹ ì˜ ê°œì¸ ì•„ë°”íƒ€ë¥¼ ì—…ë¡œë“œí• ìˆ˜ 있습니다. 최대 파ì #: actions/userauthorization.php:72 actions/userrss.php:108 #, fuzzy msgid "User without matching profile." -msgstr "프로필 매ì¹ì´ 없는 사용ìž" +msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³ ìžˆì§€ 않습니다." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -766,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:657 msgid "Delete" msgstr "ì‚ì œ" @@ -785,7 +802,7 @@ msgstr "í”„ë¡œí•„ì„ ì§€ì •í•˜ì§€ 않았습니다." #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" -msgstr "ë‹¹ì‹ ì˜ ì•„ë°”íƒ€ê°€ ë ì´ë¯¸ì§€ì˜ì—ì„ ì§€ì •í•˜ì„¸ìš”." +msgstr "그림ì—ì„œ ë‹¹ì‹ ì˜ ì•„ë°”íƒ€ë¡œ ì‚¬ìš©í• ì˜ì—ì„ ì§€ì •í•˜ì‹ì‹œì˜¤." #: actions/avatarsettings.php:347 actions/grouplogo.php:380 msgid "Lost our file data." @@ -807,11 +824,11 @@ msgstr "아바타가 ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤." msgid "You already blocked that user." msgstr "ì´ë¯¸ ì°¨ë‹¨ëœ ì´ìš©ìžìž…니다." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "사용ìžë¥¼ 차단합니다." -#: actions/block.php:130 +#: 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 " @@ -825,17 +842,16 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 -#, fuzzy msgctxt "BUTTON" msgid "No" msgstr "아니오" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "ì´ìš©ìžë¥¼ 차단하지 않는다." @@ -844,20 +860,19 @@ msgstr "ì´ìš©ìžë¥¼ 차단하지 않는다." #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 -#, fuzzy msgctxt "BUTTON" msgid "Yes" -msgstr "네, 맞습니다." +msgstr "예" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "ì´ ì‚¬ìš©ìž ì°¨ë‹¨í•˜ê¸°" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "ì •ë³´ì°¨ë‹¨ì„ ì €ìž¥í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." @@ -883,7 +898,7 @@ msgstr "ì´ìš©ìž 프로필" #: actions/blockedfromgroup.php:100 #, fuzzy, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s 와 친구들, %d 페ì´ì§€" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/blockedfromgroup.php:115 #, fuzzy @@ -906,7 +921,7 @@ msgstr "ì´ ì‚¬ìš©ìžë¥¼ ì°¨ë‹¨í•´ì œí•©ë‹ˆë‹¤." #: actions/bookmarklet.php:51 #, fuzzy, php-format msgid "Post to %s" -msgstr "사진" +msgstr "%s 사ì´íŠ¸ì˜ 그룹" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -922,9 +937,9 @@ msgstr "ê·¸ ì¸ì¦ 코드는 ê·€í•˜ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤!" #. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. #: actions/confirmaddress.php:91 -#, fuzzy, php-format +#, php-format msgid "Unrecognized address type %s." -msgstr "ì¸ì‹ë˜ì§€ì•Šì€ ì£¼ì†Œìœ í˜• %s" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -950,7 +965,7 @@ msgstr "사용ìžë¥¼ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." #: actions/confirmaddress.php:128 actions/emailsettings.php:433 #: actions/smssettings.php:422 msgid "Couldn't delete email confirmation." -msgstr "ì´ë©”ì¼ ìŠ¹ì¸ì„ ì‚ì œ í• ìˆ˜ 없습니다." +msgstr "ë©”ì¼ ìŠ¹ì¸ì„ ì‚ì œ í• ìˆ˜ 없습니다." #: actions/confirmaddress.php:146 msgid "Confirm address" @@ -962,9 +977,8 @@ msgid "The address \"%s\" has been confirmed for your account." msgstr "\"%s\" 는 ê·€í•˜ì˜ ê³„ì •ìœ¼ë¡œ 승ì¸ë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/conversation.php:99 -#, fuzzy msgid "Conversation" -msgstr "ì¸ì¦ 코드" +msgstr "대화" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 @@ -974,12 +988,12 @@ msgstr "통지" #: actions/deleteapplication.php:63 #, fuzzy msgid "You must be logged in to delete an application." -msgstr "ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/deleteapplication.php:71 #, fuzzy msgid "Application not found." -msgstr "í†µì§€ì— í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." +msgstr "ì¸ì¦ 코드가 없습니다." #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 @@ -989,7 +1003,7 @@ msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "ë‹¹ì‹ ì˜ ì„¸ì…˜í† í°ê´€ë ¨ ë¬¸ì œê°€ 있습니다." @@ -1008,13 +1022,13 @@ msgstr "" #: actions/deleteapplication.php:158 #, fuzzy msgid "Do not delete this application" -msgstr "ì´ í†µì§€ë¥¼ 지울 수 없습니다." +msgstr "ì‘용프로그램 ì‚ì œ" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 #, fuzzy msgid "Delete this application" -msgstr "ì´ ê²Œì‹œê¸€ ì‚ì œí•˜ê¸°" +msgstr "ì‘용프로그램 ì‚ì œ" #. 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 @@ -1022,7 +1036,7 @@ msgstr "ì´ ê²Œì‹œê¸€ ì‚ì œí•˜ê¸°" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "로그ì¸í•˜ê³ 있지 않습니다." @@ -1032,12 +1046,10 @@ msgid "Can't delete this notice." msgstr "ì´ í†µì§€ë¥¼ 지울 수 없습니다." #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" -"ì˜êµ¬ì 으로 ê²Œì‹œê¸€ì„ ì‚ì œí•˜ë ¤ê³ í•©ë‹ˆë‹¤. 한번 ì‚ì œë˜ë©´, ë³µêµ¬í• ìˆ˜ 없습니다." #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" @@ -1054,14 +1066,14 @@ 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:657 msgid "Delete this notice" msgstr "ì´ ê²Œì‹œê¸€ ì‚ì œí•˜ê¸°" #: actions/deleteuser.php:67 #, fuzzy msgid "You cannot delete users." -msgstr "사용ìžë¥¼ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." +msgstr "ì´ìš©ìžë¥¼ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." #: actions/deleteuser.php:74 #, fuzzy @@ -1080,60 +1092,67 @@ msgstr "" #. TRANS: Submit button title for 'Yes' when deleting a user. #: actions/deleteuser.php:163 lib/deleteuserform.php:77 -#, fuzzy msgid "Delete this user" -msgstr "ì´ ê²Œì‹œê¸€ ì‚ì œí•˜ê¸°" +msgstr "ì´ ì‚¬ìš©ìž ì‚ì œ" #. 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 "" +msgstr "ë””ìžì¸" #: actions/designadminpanel.php:74 msgid "Design settings for this StatusNet site." msgstr "ì´ StatusNet 사ì´íŠ¸ì— 대한 ë””ìžì¸ ì„¤ì •" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "ìž˜ëª»ëœ ë¡œê³ URL 입니다." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." -msgstr "테마를 ì´ìš©í• 수 없습니다: %s" +msgstr "ì¸ìŠ¤í„´íŠ¸ ë©”ì‹ ì €ë¥¼ ì‚¬ìš©í• ìˆ˜ 없습니다." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "ë¡œê³ ë³€ê²½" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "사ì´íŠ¸ ë¡œê³ " -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "테마 바꾸기" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "사ì´íŠ¸ 테마" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "사ì´íŠ¸ì— 대한 테마" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "ì‚¬ìš©ìž ì§€ì • 테마" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "ë°°ê²½ ì´ë¯¸ì§€ 바꾸기" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "ë°°ê²½" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1142,60 +1161,66 @@ msgstr "" "사ì´íŠ¸ì˜ ë°°ê²½ ì´ë¯¸ì§€ë¥¼ ì—…ë¡œë“œí• ìˆ˜ 있습니다. 최대 íŒŒì¼ í¬ê¸°ëŠ” %1$s 입니다." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "켜기" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "ë„기" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "ë°°ê²½ ì´ë¯¸ì§€ë¥¼ 켜거나 ëˆë‹¤." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "ë°°ê²½ ì´ë¯¸ì§€ë¥¼ 반복 나열" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "ìƒ‰ìƒ ë³€ê²½" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 -#, fuzzy +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" -msgstr "ì—°ê²°" +msgstr "만족하는" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "검색" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "문ìž" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 -#, fuzzy +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" -msgstr "로그ì¸" +msgstr "ë§í¬" + +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "ê³ ê¸‰ 검색" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "ì‚¬ìš©ìž CSS" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1205,9 +1230,10 @@ msgstr "" msgid "Save" msgstr "ì €ìž¥" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 +#, fuzzy msgid "Save design" -msgstr "" +msgstr "프로필 ë””ìžì¸" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" @@ -1220,7 +1246,7 @@ msgstr "좋아하는 게시글로 추가하기" #: actions/doc.php:158 #, fuzzy, php-format msgid "No such document \"%s\"" -msgstr "그러한 문서는 없습니다." +msgstr "해당하는 첨부파ì¼ì´ 없습니다." #: actions/editapplication.php:54 msgid "Edit Application" @@ -1234,7 +1260,7 @@ msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/showapplication.php:87 #, fuzzy msgid "No such application." -msgstr "그러한 통지는 없습니다." +msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #: actions/editapplication.php:161 #, fuzzy @@ -1262,8 +1288,9 @@ msgid "Description is required." msgstr "설명" #: actions/editapplication.php:194 +#, fuzzy msgid "Source URL is too long." -msgstr "" +msgstr "소스 코드 URL" #: actions/editapplication.php:200 actions/newapplication.php:185 #, fuzzy @@ -1327,37 +1354,38 @@ 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 "좋아하는 ê²Œì‹œê¸€ì„ ìƒì„±í• 수 없습니다." +msgstr "관심소ì‹ì„ ìƒì„±í• 수 없습니다." #: actions/editgroup.php:280 msgid "Options saved." -msgstr "ì˜µì…˜ë“¤ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "ì˜µì…˜ì„ ì €ìž¥í–ˆìŠµë‹ˆë‹¤." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 msgid "Email settings" -msgstr "ì´ë©”ì¼ ì„¤ì •" +msgstr "ë©”ì¼ ì„¤ì •" #. 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 "%%site.name%%ì—ì„œ 어떻게 ì´ë©”ì¼ì„ ë°›ì„지 ì •í•˜ì‹ì‹œì˜¤." +msgstr "%%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 "ì´ë©”ì¼ ì£¼ì†Œ" +msgstr "ë©”ì¼ ì£¼ì†Œ" #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." -msgstr "확ì¸ëœ ìµœì‹ ì˜ ì´ë©”ì¼ ê³„ì •" +msgstr "확ì¸ëœ ìµœì‹ ì˜ ë©”ì¼ ê³„ì •" #. 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. @@ -1367,10 +1395,9 @@ msgstr "확ì¸ëœ ìµœì‹ ì˜ ì´ë©”ì¼ ê³„ì •" #: 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 "ì‚ì œ" +msgstr "ì œê±°" #: actions/emailsettings.php:122 msgid "" @@ -1386,7 +1413,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 "취소" @@ -1394,14 +1420,13 @@ msgstr "취소" #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" -msgstr "\"UserName@example.org\" 와 ê°™ì€ ì´ë©”ì¼ ê³„ì •" +msgstr "\"사용ìžì´ë¦„@ì˜ˆì œ.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 -#, fuzzy msgctxt "BUTTON" msgid "Add" msgstr "추가" @@ -1410,13 +1435,13 @@ msgstr "추가" #. TRANS: Form legend for incoming SMS settings form. #: actions/emailsettings.php:147 actions/smssettings.php:171 msgid "Incoming email" -msgstr "ë°›ì€ ì´ë©”ì¼" +msgstr "ë°›ì€ ë©”ì¼" #. 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 "새로운 통지를 ì˜¬ë¦¬ë ¤ë©´ ì´ ì£¼ì†Œë¡œ ë©”ì¼ì„ ë³´ë‚´ì‹ì‹œì˜¤/" +msgstr "새로운 통지를 ì˜¬ë¦¬ë ¤ë©´ ì´ ì£¼ì†Œë¡œ ë©”ì¼ì„ ë³´ë‚´ì‹ì‹œì˜¤." #. TRANS: Instructions for incoming e-mail address input form. #. TRANS: Instructions for incoming SMS e-mail address input form. @@ -1427,84 +1452,80 @@ msgstr "í¬ìŠ¤íŒ…ì„ ìœ„í•œ 새 ì´ë©”ì¼ ê³„ì •ì˜ ìƒì„±; ì „ ì´ë©”ì¼ ê³„ì • #. 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 -#, fuzzy msgctxt "BUTTON" msgid "New" -msgstr "새로운" +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 msgid "Send me notices of new subscriptions through email." -msgstr "새로운 예약 구ë…ì˜ í†µì§€ë¥¼ ì´ë©”ì¼ë¡œ 보내주세요." +msgstr "새로운 예약 구ë…ì˜ í†µì§€ë¥¼ ë©”ì¼ë¡œ 보내주세요." #. 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 "누군가 ë‚´ ê¸€ì„ ì¢‹ì•„í•˜ëŠ” 게시글로 추가했ì„ë•Œ, ì´ë©”ì¼ì„ 보냅니다." +msgstr "누군가 ë‚´ ê¸€ì„ ì¢‹ì•„í•˜ëŠ” 게시글로 ì¶”ê°€í–ˆì„ ë•Œ, ë©”ì¼ì„ 보냅니다." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:193 msgid "Send me email when someone sends me a private message." -msgstr "누군가 내게 비밀메시지를 보냈ì„ë•Œ, ì´ë©”ì¼ì„ 보냅니다." +msgstr "누군가 내게 비밀메시지를 ë³´ëƒˆì„ ë•Œ, ë©”ì¼ì„ 보냅니다." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 -#, fuzzy msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "누군가 내게 비밀메시지를 보냈ì„ë•Œ, ì´ë©”ì¼ì„ 보냅니다." +msgstr "누군가 내게 @ ë‹µìž¥ì„ ë³´ëƒˆì„ ë•Œ, ë©”ì¼ì„ 보냅니다." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." -msgstr "ì¹œêµ¬ë“¤ì´ ë‚´ê²Œ ì´ë©”ì¼ì´ë‚˜ 쪽지를 보낼 수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤." +msgstr "ì¹œêµ¬ë“¤ì´ ë‚´ê²Œ ë©”ì¼ì´ë‚˜ 쪽지를 보낼 수 있ë„ë¡ í—ˆìš©í•©ë‹ˆë‹¤." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:212 msgid "I want to post notices by email." -msgstr "ì´ë©”ì¼ë¡œ 통보를 í¬ìŠ¤íŠ¸ 하길 ì›í•©ë‹ˆë‹¤." +msgstr "ë©”ì¼ë¡œ 통보를 í¬ìŠ¤íŠ¸í•©ë‹ˆë‹¤." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 msgid "Publish a MicroID for my email address." -msgstr "ì´ë©”ì¼ ì£¼ì†Œë¥¼ 위한 MicroIDì˜ ìƒì„±" +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 msgid "No email address." -msgstr "ì´ë©”ì¼ì´ 추가 ë˜ì§€ 않았습니다." +msgstr "ë©”ì¼ ì£¼ì†Œê°€ 없습니다." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 msgid "Cannot normalize that email address" -msgstr "ê·¸ ì´ë©”ì¼ ì£¼ì†Œë¥¼ ì •ê·œí™” í• ìˆ˜ 없습니다." +msgstr "ë©”ì¼ ì£¼ì†Œë¥¼ ì •ê·œí™” í• ìˆ˜ 없습니다." #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." -msgstr "ìœ íš¨í•œ ì´ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." +msgstr "올바른 ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." #. TRANS: Message given saving e-mail address that is already set. #: actions/emailsettings.php:370 msgid "That is already your email address." -msgstr "ê·¸ ì´ë©”ì¼ ì£¼ì†ŒëŠ” ì´ë¯¸ ê·€í•˜ì˜ ê²ƒìž…ë‹ˆë‹¤." +msgstr "ê·¸ ë©”ì¼ ì£¼ì†ŒëŠ” ì´ë¯¸ ê·€í•˜ì˜ ê²ƒìž…ë‹ˆë‹¤." #. 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 "ê·¸ ì´ë©”ì¼ ì£¼ì†ŒëŠ” ì´ë¯¸ 다른 사용ìžì˜ ì†Œìœ ìž…ë‹ˆë‹¤." +msgstr "ê·¸ ë©”ì¼ ì£¼ì†ŒëŠ” ì´ë¯¸ 다른 사용ìžì˜ ì†Œìœ ìž…ë‹ˆë‹¤." #. TRANS: Server error thrown on database error adding e-mail confirmation code. #. TRANS: Server error thrown on database error adding IM confirmation code. @@ -1520,7 +1541,7 @@ 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 "" -"추가한 ì´ë©”ì¼ë¡œ ì¸ì¦ 코드를 보냈습니다. ìˆ˜ì‹ í•¨(ë˜ëŠ” 스팸함)ì„ í™•ì¸í•˜ì…”ì„œ 코드" +"추가한 ë©”ì¼ë¡œ ì¸ì¦ 코드를 보냈습니다. ìˆ˜ì‹ í•¨(ë˜ëŠ” 스팸함)ì„ í™•ì¸í•˜ì…”ì„œ 코드" "와 ì‚¬ìš©ë²•ì„ í™•ì¸í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤." #. TRANS: Message given canceling e-mail address confirmation that is not pending. @@ -1541,23 +1562,22 @@ msgstr "옳지 ì•Šì€ ë©”ì‹ ì € ê³„ì • 입니다." #: actions/emailsettings.php:438 #, fuzzy msgid "Email confirmation cancelled." -msgstr "ì¸ì¦ 취소" +msgstr "취소 í• ëŒ€ê¸°ì¤‘ì¸ ì¸ì¦ì´ 없습니다." #. 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 "ê·¸ ì´ë©”ì¼ ì£¼ì†ŒëŠ” ê·€í•˜ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤." +msgstr "ê·¸ ë©”ì¼ ì£¼ì†ŒëŠ” ê·€í•˜ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "주소가 ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "ë©”ì¼ ì£¼ì†Œë¥¼ ì§€ì› ìŠµë‹ˆë‹¤." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." -msgstr "ì´ë©”ì¼ ì£¼ì†Œê°€ 없습니다." +msgstr "받는 ë©”ì¼ ì£¼ì†Œê°€ 없습니다." #. TRANS: Server error thrown on database error removing incoming e-mail address. #. TRANS: Server error thrown on database error adding incoming e-mail address. @@ -1569,12 +1589,12 @@ msgstr "ì‚¬ìš©ìž ê¸°ë¡ì„ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." #. 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 "ë°›ì€ ì´ë©”ì¼ ê³„ì • ì‚ì œ" +msgstr "받는 ë©”ì¼ ì£¼ì†Œë¥¼ ì§€ì› ìŠµë‹ˆë‹¤." #. 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 "새로운 ì´ë©”ì¼ ì£¼ì†Œê°€ 추가 ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "새로운 받는 ë©”ì¼ ì£¼ì†Œë¥¼ 추가했습니다." #: actions/favor.php:79 msgid "This notice is already a favorite!" @@ -1619,7 +1639,7 @@ msgstr "" #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "%s ë‹˜ì˜ ì¢‹ì•„í•˜ëŠ” 글들" +msgstr "%s ë‹˜ì˜ ì¢‹ì•„í•˜ëŠ” 글" #: actions/favoritesrss.php:115 #, fuzzy, php-format @@ -1637,19 +1657,19 @@ msgid "Featured users, page %d" msgstr "ì¸ê¸°ìžˆëŠ” 회ì›, %d페ì´ì§€" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" -msgstr "%sì˜ í›Œë¥í•œ 회ì›ì˜ ì¼ë¶€ ì„ íƒ" +msgstr "" #: actions/file.php:34 #, fuzzy msgid "No notice ID." -msgstr "새로운 통지" +msgstr "그러한 통지는 없습니다." #: actions/file.php:38 #, fuzzy msgid "No notice." -msgstr "새로운 통지" +msgstr "그러한 통지는 없습니다." #: actions/file.php:42 msgid "No attachments." @@ -1658,16 +1678,15 @@ msgstr "첨부문서 ì—†ìŒ" #: actions/file.php:51 #, fuzzy msgid "No uploaded attachments." -msgstr "그러한 문서는 없습니다." +msgstr "첨부문서 ì—†ìŒ" #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "예ìƒì¹˜ 못한 ë°˜ì‘ ìž…ë‹ˆë‹¤." #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "살펴 ë³´ê³ ìžˆëŠ” 사용ìžê°€ 없습니다." +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1675,22 +1694,20 @@ msgstr "ë‹¹ì‹ ì€ ë¡œì»¬ 구ë…ì„ ì‚¬ìš©í• ìˆ˜ 있습니다." #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." -msgstr "ì´ íšŒì›ì€ 구ë…으로부터 ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ë‹¤." +msgstr "ì´ ì‚¬ìš©ìžëŠ” ê·€í•˜ì˜ êµ¬ë…ì„ ì°¨ë‹¨í–ˆìŠµë‹ˆë‹¤." #: actions/finishremotesubscribe.php:110 #, fuzzy msgid "You are not authorized." -msgstr "ì¸ì¦ì´ ë˜ì§€ 않았습니다." +msgstr "ë‹¹ì‹ ì€ ì´ í”„ë¡œí•„ì— êµ¬ë…ë˜ì§€ ì•Šê³ ìžˆìŠµë‹ˆë‹¤." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "리퀘스트 í† í°ì„ 엑세스 í† í°ìœ¼ë¡œ 변환 í• ìˆ˜ 없습니다." +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "OMB í”„ë¡œí† ì½œì˜ ì•Œë ¤ì§€ì§€ ì•Šì€ ë²„ì „" +msgstr "" #: actions/finishremotesubscribe.php:138 #, fuzzy @@ -1717,22 +1734,22 @@ msgstr "" #: actions/grantrole.php:75 #, fuzzy msgid "You cannot grant user roles on this site." -msgstr "ë‹¹ì‹ ì€ ì´ ì‚¬ìš©ìžì—게 메시지를 보낼 수 없습니다." +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 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "í”„ë¡œí•„ì„ ì§€ì •í•˜ì§€ 않았습니다." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "해당 IDì˜ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." @@ -1749,7 +1766,7 @@ msgstr "" #: actions/groupblock.php:95 #, fuzzy msgid "User is already blocked from group." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "사용ìžê°€ 귀하를 차단했습니다." #: actions/groupblock.php:100 #, fuzzy @@ -1759,34 +1776,36 @@ msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." #: actions/groupblock.php:134 actions/groupmembers.php:360 #, fuzzy msgid "Block user from group" -msgstr "사용ìžë¥¼ 차단합니다." +msgstr "그룹 ì´ìš©ìžëŠ” ì°¨ë‹¨í•´ì œ" #: actions/groupblock.php:160 -#, php-format +#, fuzzy, 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 "" +"ì •ë§ ì´ìš©ìžë¥¼ ì°¨ë‹¨í•˜ì‹œê² ìŠµë‹ˆê¹Œ? ì°¨ë‹¨ëœ ì´ìš©ìžëŠ” 구ë…í•´ì œë˜ê³ , ì´í›„ ë‹¹ì‹ ì„ êµ¬" +"ë…í• ìˆ˜ 없으며, ì°¨ë‹¨ëœ ì´ìš©ìžë¡œë¶€í„° @-ë‹µìž¥ì˜ í†µë³´ë¥¼ 받지 않게 ë©ë‹ˆë‹¤." #. TRANS: Submit button title for 'No' when blocking a user from a group. #: actions/groupblock.php:182 #, fuzzy msgid "Do not block this user from this group" -msgstr "ì´ ê·¸ë£¹ì˜ íšŒì›ë¦¬ìŠ¤íŠ¸" +msgstr "ì´ìš©ìžë¥¼ 차단하지 않는다." #. TRANS: Submit button title for 'Yes' when blocking a user from a group. #: actions/groupblock.php:189 #, fuzzy msgid "Block this user from this group" -msgstr "ì´ ê·¸ë£¹ì˜ íšŒì›ë¦¬ìŠ¤íŠ¸" +msgstr "그룹 ì´ìš©ìžëŠ” ì°¨ë‹¨í•´ì œ" #: actions/groupblock.php:206 +#, fuzzy msgid "Database error blocking user from group." -msgstr "" +msgstr "그룹 ì´ìš©ìžëŠ” ì°¨ë‹¨í•´ì œ" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." msgstr "IDê°€ 없습니다." @@ -1798,7 +1817,7 @@ msgstr "ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." #: actions/groupdesignsettings.php:144 #, fuzzy msgid "Group design" -msgstr "그룹" +msgstr "프로필 ë””ìžì¸" #: actions/groupdesignsettings.php:155 msgid "" @@ -1814,7 +1833,7 @@ msgstr "ë””ìžì¸ì„ ìˆ˜ì •í• ìˆ˜ 없습니다." #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." -msgstr "싱í¬ì„¤ì •ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "ë©”ì¼ ì„¤ì •ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" @@ -1824,7 +1843,8 @@ msgstr "그룹 ë¡œê³ " #, fuzzy, php-format msgid "" "You can upload a logo image for your group. The maximum file size is %s." -msgstr "ë‹¹ì‹ ê·¸ë£¹ì˜ ë¡œê³ ì´ë¯¸ì§€ë¥¼ ì—…ë¡œë“œí• ìˆ˜ 있습니다." +msgstr "" +"사ì´íŠ¸ì˜ ë°°ê²½ ì´ë¯¸ì§€ë¥¼ ì—…ë¡œë“œí• ìˆ˜ 있습니다. 최대 íŒŒì¼ í¬ê¸°ëŠ” %1$s 입니다." #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." @@ -1846,7 +1866,7 @@ msgstr "%s 그룹 회ì›" #: actions/groupmembers.php:103 #, fuzzy, php-format msgid "%1$s group members, page %2$d" -msgstr "%s 그룹 회ì›, %d페ì´ì§€" +msgstr "%s 그룹 회ì›" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1878,7 +1898,7 @@ msgstr "ì´ ì´ìš©ìžë¥¼ 관리ìžë¡œ 만듦" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s 타임ë¼ì¸" @@ -1919,8 +1939,8 @@ 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 "" -"%%site.name%% ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, í¥ë¯¸ë¡œ 검색. 검색어는 스페ì´ìŠ¤ 구분한다; " -"ì ì–´ë„ 3ê¸€ìž ì´ìƒ í•„ìš”." +"%%site.name%%ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, 관심 거리로 검색합니다. 검색어는 공백으로 " +"êµ¬ë¶„í•˜ê³ , ì ì–´ë„ 3ê¸€ìž ì´ìƒ 필요합니다." #: actions/groupsearch.php:58 msgid "Group search" @@ -1928,7 +1948,6 @@ msgstr "그룹 찾기" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." msgstr "ê²°ê³¼ ì—†ìŒ" @@ -1953,7 +1972,7 @@ msgstr "" #: actions/groupunblock.php:95 #, fuzzy msgid "User is not blocked from group." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "그룹 ì´ìš©ìžëŠ” ì°¨ë‹¨í•´ì œ" #: actions/groupunblock.php:128 actions/unblock.php:86 msgid "Error removing the block." @@ -1963,7 +1982,7 @@ msgstr "차단 ì œê±° ì—러!" #: actions/imsettings.php:60 #, fuzzy msgid "IM settings" -msgstr "ë©”ì‹ ì € ì„¤ì •" +msgstr "ë©”ì¼ ì„¤ì •" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -1987,7 +2006,7 @@ msgstr "ì¸ìŠ¤í„´íŠ¸ ë©”ì‹ ì €ë¥¼ ì‚¬ìš©í• ìˆ˜ 없습니다." #: actions/imsettings.php:106 actions/imsettings.php:136 #, fuzzy msgid "IM address" -msgstr "ë©”ì‹ ì € 주소" +msgstr "SMS 주소" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2019,7 +2038,7 @@ msgstr "" #: actions/imsettings.php:155 #, fuzzy msgid "IM preferences" -msgstr "ì„¤ì •" +msgstr "ë©”ì¼ ì„¤ì •" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2090,15 +2109,14 @@ msgstr "옳지 ì•Šì€ ë©”ì‹ ì € ê³„ì • 입니다." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "ì´ë©”ì¼ ìŠ¹ì¸ì„ ì‚ì œ í• ìˆ˜ 없습니다." +msgstr "ë©”ì‹ ì € 승ì¸ì„ ì‚ì œ í• ìˆ˜ 없습니다." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 #, fuzzy msgid "IM confirmation cancelled." -msgstr "ì¸ì¦ 취소" +msgstr "í™•ì¸ ì½”ë“œê°€ 없습니다." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2110,7 +2128,7 @@ msgstr "ê·¸ Jabber ID는 ê·€í•˜ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤." #: actions/imsettings.php:447 #, fuzzy msgid "The IM address was removed." -msgstr "주소가 ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "ë©”ì¼ ì£¼ì†Œë¥¼ ì§€ì› ìŠµë‹ˆë‹¤." #: actions/inbox.php:59 #, fuzzy, php-format @@ -2133,12 +2151,12 @@ msgstr "" #: actions/invite.php:41 #, fuzzy, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "로그ì¸ì„ 해야 다른 사용ìžë¥¼ %sì— ì´ˆëŒ€í• ìˆ˜ 있습니다." +msgstr "ê·¸ë£¹ê°€ìž…ì„ ìœ„í•´ì„œëŠ” 로그ì¸ì´ 필요합니다." #: actions/invite.php:72 #, php-format msgid "Invalid email address: %s" -msgstr "옳지 ì•Šì€ ì´ë©”ì¼ ì£¼ì†Œ : %s" +msgstr "올바르지 ì•Šì€ ë©”ì¼ ì£¼ì†Œ : %s" #: actions/invite.php:110 msgid "Invitation(s) sent" @@ -2183,15 +2201,15 @@ msgstr "ë‹¤ìŒ ì–‘ì‹ì„ ì´ìš©í•´ 친구와 ë™ë£Œë¥¼ ì´ ì„œë¹„ìŠ¤ì— ì´ˆëŒ€í• #: actions/invite.php:187 msgid "Email addresses" -msgstr "ì´ë©”ì¼ ì£¼ì†Œ" +msgstr "ë©”ì¼ ì£¼ì†Œ" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" -msgstr "ì´ˆì²í• ì¹œêµ¬ë“¤ì˜ ì£¼ì†Œ (í•œ ì¤„ì— í•œ 명씩)" +msgstr "ì´ˆì²í• 친구 주소 (í•œ ì¤„ì— í•œ 명씩)" #: actions/invite.php:192 msgid "Personal message" -msgstr "ê°œì¸ì ì¸ ë©”ì‹œì§€" +msgstr "ê°œì¸ ë©”ì‹œì§€" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." @@ -2199,7 +2217,6 @@ msgstr "ì´ˆëŒ€ìž¥ì— ë©”ì‹œì§€ 첨부하기." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" msgstr "보내기" @@ -2275,9 +2292,9 @@ 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 -#, fuzzy, php-format +#, php-format msgid "%1$s joined group %2$s" -msgstr "%s 는 그룹 %sì— ê°€ìž…í–ˆìŠµë‹ˆë‹¤." +msgstr "" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." @@ -2292,85 +2309,81 @@ msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." #: actions/leavegroup.php:137 lib/command.php:392 #, fuzzy, php-format msgid "%1$s left group %2$s" -msgstr "%sê°€ 그룹%s를 ë– ë‚¬ìŠµë‹ˆë‹¤." +msgstr "%1$sì˜ ìƒíƒœ (%2$sì—ì„œ)" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "ì´ë¯¸ ë¡œê·¸ì¸ í•˜ì…¨ìŠµë‹ˆë‹¤." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "틀린 ê³„ì • ë˜ëŠ” 비밀 번호" -#: actions/login.php:132 actions/otp.php:120 -#, fuzzy +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." -msgstr "ì¸ì¦ì´ ë˜ì§€ 않았습니다." +msgstr "" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "로그ì¸" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "사ì´íŠ¸ì— 로그ì¸í•˜ì„¸ìš”." -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "ìžë™ 로그ì¸" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "앞으로는 ìžë™ìœ¼ë¡œ 로그ì¸í•©ë‹ˆë‹¤. 공용 컴퓨터ì—서는 ì´ìš©í•˜ì§€ 마ì‹ì‹œì˜¤!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "비밀 번호를 잊으셨나요?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" "ë³´ì•ˆì„ ìœ„í•´ ì„¸íŒ…ì„ ì €ìž¥í•˜ê¸° ì „ì— ê³„ì •ê³¼ 비밀 번호를 다시 ìž…ë ¥ í•´ 주ì‹ì‹œì˜¤." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "ì‚¬ìš©ìž ì´ë¦„ê³¼ 비밀번호로 로그ì¸" -#: actions/login.php:273 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"ê·€í•˜ì˜ ê³„ì •ê³¼ 비밀 번호로 ë¡œê·¸ì¸ í•˜ì„¸ìš”. ê³„ì •ì´ ì•„ì§ ì—†ìœ¼ì„¸ìš”? [가입](%%" -"action.register%%) 새 ê³„ì •ì„ ìƒì„± ë˜ëŠ” [OpenID](%%action.openidlogin%%)를 사" -"ìš©í•´ 보세요." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "" #: actions/makeadmin.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "" #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "그룹 %sì—ì„œ %s 사용ìžë¥¼ ì œê±°í• ìˆ˜ 없습니다." +msgstr "" #: actions/makeadmin.php:146 #, fuzzy, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "관리ìžë§Œ ê·¸ë£¹ì„ íŽ¸ì§‘í• ìˆ˜ 있습니다." +msgstr "ì´ìš©ìž %1$s ì˜ ê·¸ë£¹ %2$s ê°€ìž…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: actions/microsummary.php:69 #, fuzzy msgid "No current status." -msgstr "현재 ìƒíƒœê°€ 없습니다." +msgstr "ê²°ê³¼ ì—†ìŒ" #: actions/newapplication.php:52 msgid "New Application" @@ -2379,7 +2392,7 @@ msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #: actions/newapplication.php:64 #, fuzzy msgid "You must be logged in to register an application." -msgstr "ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/newapplication.php:143 #, fuzzy @@ -2387,13 +2400,14 @@ msgid "Use this form to register a new application." msgstr "새 ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해 ì´ ì–‘ì‹ì„ 사용하세요." #: actions/newapplication.php:176 +#, fuzzy msgid "Source URL is required." -msgstr "" +msgstr "소스 코드 URL" #: actions/newapplication.php:258 actions/newapplication.php:267 #, fuzzy msgid "Could not create application." -msgstr "좋아하는 ê²Œì‹œê¸€ì„ ìƒì„±í• 수 없습니다." +msgstr "관심소ì‹ì„ ìƒì„±í• 수 없습니다." #: actions/newgroup.php:53 msgid "New group" @@ -2427,9 +2441,8 @@ msgstr "" "ìžì‹ ì—게 메시지를 보내지 마세요. ëŒ€ì‹ ì¡°ìš©í•˜ê²Œ 스스로ì—게 ê·¸ê²ƒì„ ë§í•˜ì„¸ìš”;;" #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "메시지" +msgstr "쪽지가 ì „ì†¡ë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/newmessage.php:185 #, fuzzy, php-format @@ -2454,8 +2467,8 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"%%site.name%% ì˜ í†µì§€ë¥¼ 내용으로부터 검색. 검색어는 스페ì´ìŠ¤ë¡œ 구분한다; ì ì–´" -"ë„ 3ê¸€ìž ì´ìƒ í•„ìš”." +"%%site.name%%ì˜ ê¸€ ë‚´ìš©ì„ ê²€ìƒ‰í•©ë‹ˆë‹¤. 검색어는 공백으로 êµ¬ë¶„í•˜ê³ , ì ì–´ë„ 3글" +"ìž ì´ìƒ 필요합니다." #: actions/noticesearch.php:78 msgid "Text search" @@ -2464,7 +2477,7 @@ msgstr "ë¬¸ìž ê²€ìƒ‰" #: actions/noticesearch.php:91 #, fuzzy, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "스트림ì—ì„œ \"%s\" 검색" +msgstr "%1$sì—ì„œ %2$s까지 메시지" #: actions/noticesearch.php:121 #, php-format @@ -2481,20 +2494,19 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "%2$sì— ìžˆëŠ” %1$sì˜ ì—…ë°ì´íŠ¸!" +msgstr "" #: actions/noticesearchrss.php:98 #, fuzzy, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "\"%s\" ì— ì¼ì¹˜í•˜ëŠ” ëª¨ë“ ì—…ë°ì´íŠ¸" +msgstr "%2$sì— ìžˆëŠ” %1$sì˜ ì—…ë°ì´íŠ¸!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" -"ì´ ì‚¬ìš©ìžëŠ” nudge를 허용하지 ì•Šì•˜ê³ , ì•„ì§ ê·¸ì˜ ì´ë©”ì¼ì„ ì¸ì¦í•˜ì§€ 않았습니다." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2507,25 +2519,26 @@ msgstr "찔러 보기를 보냈습니다!" #: actions/oauthappssettings.php:59 #, fuzzy msgid "You must be logged in to list your applications." -msgstr "ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/oauthappssettings.php:74 #, fuzzy msgid "OAuth applications" -msgstr "다른 옵션들" +msgstr "ì‘용프로그램 ì‚ì œ" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" #: actions/oauthappssettings.php:135 -#, php-format +#, fuzzy, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/oauthconnectionssettings.php:72 +#, fuzzy msgid "Connected applications" -msgstr "" +msgstr "ì‘용프로그램 ì‚ì œ" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." @@ -2542,38 +2555,39 @@ msgid "Unable to revoke access for app: %s." msgstr "" #: actions/oauthconnectionssettings.php:198 +#, fuzzy msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "ë‹¤ìŒ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ê³„ì •ì— ì ‘ê·¼í•˜ë„ë¡ í—ˆìš©ë˜ì–´ 있습니다." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." -msgstr "í†µì§€ì— í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." +msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³ ìžˆì§€ 않습니다." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$sì˜ ìƒíƒœ (%2$sì—ì„œ)" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "ì—°ê²°" +msgstr "" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "지ì›í•˜ëŠ” 형ì‹ì˜ ë°ì´í„°ê°€ 아닙니다." @@ -2588,11 +2602,11 @@ msgstr "통지 검색" #: actions/othersettings.php:60 #, fuzzy msgid "Other settings" -msgstr "기타 ì„¤ì •" +msgstr "아바타 ì„¤ì •" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "다양한 다른 옵션관리" +msgstr "여러가지 기타 ì˜µì…˜ì„ ê´€ë¦¬í•©ë‹ˆë‹¤." #: actions/othersettings.php:108 msgid " (free service)" @@ -2600,20 +2614,20 @@ msgstr "" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "URL 줄ì´ê¸° 기능" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "ì‚¬ìš©í• URL ìžë™ 줄ì´ê¸° 서비스" +msgstr "ì‚¬ìš©í• URL ìžë™ 줄ì´ê¸° 서비스." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "프로필 세팅" +msgstr "프로필 ë””ìžì¸ 보기" #: actions/othersettings.php:123 +#, fuzzy msgid "Show or hide profile designs." -msgstr "" +msgstr "프로필 ë””ìžì¸ 보기" #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." @@ -2632,12 +2646,11 @@ msgstr "í”„ë¡œí•„ì„ ì§€ì •í•˜ì§€ 않았습니다." #: actions/otp.php:90 #, fuzzy msgid "No login token requested." -msgstr "ìš”ì²í•œ 프로필idê°€ 없습니다." +msgstr "허용ë˜ì§€ 않는 ìš”ì²ìž…니다." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "옳지 ì•Šì€ í†µì§€ ë‚´ìš©" +msgstr "" #: actions/otp.php:104 #, fuzzy @@ -2683,7 +2696,7 @@ msgid "6 or more characters" msgstr "6ê¸€ìž ì´ìƒ" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "ì¸ì¦" @@ -2693,13 +2706,13 @@ msgstr "위와 ê°™ì€ ë¹„ë°€ 번호" #: actions/passwordsettings.php:117 msgid "Change" -msgstr "변환" +msgstr "변경" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "비밀번호는 6ìžë¦¬ ì´ìƒì´ì–´ì•¼ 합니다." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "비밀 번호가 ì¼ì¹˜í•˜ì§€ 않습니다." @@ -2720,33 +2733,35 @@ msgid "Password saved." msgstr "비밀 번호 ì €ìž¥" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 +#, fuzzy msgid "Paths" -msgstr "" +msgstr "경로" #: actions/pathsadminpanel.php:70 +#, fuzzy msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "ì´ StatusNet 사ì´íŠ¸ì— 대한 ë””ìžì¸ ì„¤ì •" #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "ì´ íŽ˜ì´ì§€ëŠ” 귀하가 승ì¸í•œ 미디어 타입ì—서는 ì´ìš©í• 수 없습니다." +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "아바타 ë””ë ‰í† ë¦¬ì— ì“¸ 수 없습니다 : %s" +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "아바타 ë””ë ‰í† ë¦¬ì— ì“¸ 수 없습니다 : %s" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "ì´ íŽ˜ì´ì§€ëŠ” 귀하가 승ì¸í•œ 미디어 타입ì—서는 ì´ìš©í• 수 없습니다." +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2755,12 +2770,12 @@ msgstr "" #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 #, fuzzy msgid "Site" -msgstr "초대" +msgstr "사ì´íŠ¸" #: actions/pathsadminpanel.php:238 #, fuzzy msgid "Server" -msgstr "복구" +msgstr "SSL 서버" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." @@ -2768,12 +2783,12 @@ msgstr "" #: actions/pathsadminpanel.php:242 msgid "Path" -msgstr "" +msgstr "경로" #: actions/pathsadminpanel.php:242 #, fuzzy msgid "Site path" -msgstr "사ì´íŠ¸ 공지" +msgstr "사ì´íŠ¸ 테마" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2796,12 +2811,14 @@ msgid "Theme" msgstr "테마" #: actions/pathsadminpanel.php:264 +#, fuzzy msgid "Theme server" -msgstr "" +msgstr "SSL 서버" #: actions/pathsadminpanel.php:268 +#, fuzzy msgid "Theme path" -msgstr "" +msgstr "테마" #: actions/pathsadminpanel.php:272 msgid "Theme directory" @@ -2825,28 +2842,31 @@ msgstr "아바타가 ì—…ë°ì´íŠ¸ ë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/pathsadminpanel.php:292 #, fuzzy msgid "Avatar directory" -msgstr "아바타가 ì—…ë°ì´íŠ¸ ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "아바타가 ì‚ì œë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/pathsadminpanel.php:301 +#, fuzzy msgid "Backgrounds" -msgstr "" +msgstr "ë°°ê²½" #: actions/pathsadminpanel.php:305 +#, fuzzy msgid "Background server" -msgstr "" +msgstr "ë°°ê²½" #: actions/pathsadminpanel.php:309 +#, fuzzy msgid "Background path" -msgstr "" +msgstr "ë°°ê²½" #: actions/pathsadminpanel.php:313 +#, fuzzy msgid "Background directory" -msgstr "" +msgstr "ë°°ê²½" #: actions/pathsadminpanel.php:320 -#, fuzzy msgid "SSL" -msgstr "SMS" +msgstr "SSL" #: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 #, fuzzy @@ -2871,18 +2891,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "복구" +msgstr "SSL 서버" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "사ì´íŠ¸ 공지" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2890,8 +2908,8 @@ msgid "" "Search for people on %%site.name%% by their name, location, or interests. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"%%site.name%% ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, í¥ë¯¸ë¡œ 검색. 검색어는 스페ì´ìŠ¤ 구분한다; " -"ì ì–´ë„ 3ê¸€ìž ì´ìƒ í•„ìš”." +"%%site.name%%ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, 관심 거리로 검색합니다. 검색어는 공백으로 " +"êµ¬ë¶„í•˜ê³ , ì ì–´ë„ 3ê¸€ìž ì´ìƒ 필요합니다." #: actions/peoplesearch.php:58 msgid "People search" @@ -2900,17 +2918,17 @@ msgstr "사람 찾기" #: actions/peopletag.php:68 #, fuzzy, php-format msgid "Not a valid people tag: %s." -msgstr "ìœ íš¨í•œ 태그가 아닙니다: %s" +msgstr "올바른 ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "ì´ìš©ìž 셀프 í…Œí¬ %s - %d 페ì´ì§€" +msgstr "" #: actions/postnotice.php:95 #, fuzzy msgid "Invalid notice content." -msgstr "옳지 ì•Šì€ í†µì§€ ë‚´ìš©" +msgstr "옳지 ì•Šì€ í¬ê¸°" #: actions/postnotice.php:101 #, php-format @@ -2919,7 +2937,7 @@ msgstr "" #: actions/profilesettings.php:60 msgid "Profile settings" -msgstr "프로필 세팅" +msgstr "프로필 ì„¤ì •" #: actions/profilesettings.php:71 msgid "" @@ -2936,46 +2954,45 @@ msgstr "프로필 ì •ë³´" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64ìž ì‚¬ì´ì— ì˜ì†Œë¬¸ìž, 숫ìžë¡œë§Œ ì”니다. 기호나 ê³µë°±ì„ ì“°ë©´ 안 ë©ë‹ˆë‹¤." -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "ê·€í•˜ì˜ í™ˆíŽ˜ì´ì§€, 블로그 í˜¹ì€ ë‹¤ë¥¸ 사ì´íŠ¸ì˜ 프로필 페ì´ì§€ URL" -#: actions/profilesettings.php:122 actions/register.php:461 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "140ìž ì´ë‚´ì—ì„œ ìžê¸° 소개" +msgstr "" -#: actions/profilesettings.php:125 actions/register.php:464 -#, fuzzy +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" -msgstr "ë‹¹ì‹ ì— ëŒ€í•´ 소개해주세요." +msgstr "" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "ìžê¸°ì†Œê°œ" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" -msgstr "ë‹¹ì‹ ì€ ì–´ë””ì— ì‚½ë‹ˆê¹Œ? \"ì‹œ, ë„ (or êµ°,구), 나ë¼" +msgstr "ë‹¹ì‹ ì€ ì–´ë””ì— ì‚½ë‹ˆê¹Œ? \"ì‹œ, ë„ (or êµ°,구), 나ë¼\"" #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" @@ -3002,21 +3019,21 @@ msgstr "언어 ì„¤ì •" #: actions/profilesettings.php:161 msgid "Timezone" -msgstr "타임존" +msgstr "시간대" #: actions/profilesettings.php:162 msgid "What timezone are you normally in?" -msgstr "ë‹¹ì‹ ì´ ì£¼ë¡œ ìƒí™œí•˜ëŠ” ê³³ì´ ì–´ë–¤ 타임존입니까?" +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:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." -msgstr "ìžê¸°ì†Œê°œê°€ 너무 ê¹ë‹ˆë‹¤. (최대 140글ìž)" +msgstr "ì„¤ëª…ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대 %d 글ìž)" #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." @@ -3029,7 +3046,7 @@ msgstr "언어가 너무 ê¹ë‹ˆë‹¤. (최대 50글ìž)" #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format msgid "Invalid tag: \"%s\"" -msgstr "ìœ íš¨í•˜ì§€ ì•Šì€íƒœê·¸: \"%s\"" +msgstr "올바르지 ì•Šì€ íƒœê·¸: \"%s\"" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." @@ -3072,19 +3089,16 @@ msgid "Public timeline" msgstr "í¼ë¸”ë¦ íƒ€ìž„ë¼ì¸" #: actions/public.php:160 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "í¼ë¸”ë¦ ìŠ¤íŠ¸ë¦¼ 피드" +msgstr "" #: actions/public.php:164 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "í¼ë¸”ë¦ ìŠ¤íŠ¸ë¦¼ 피드" +msgstr "" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "í¼ë¸”ë¦ ìŠ¤íŠ¸ë¦¼ 피드" +msgstr "" #: actions/public.php:188 #, php-format @@ -3095,8 +3109,9 @@ msgstr "" "%%site.name%% ì˜ ê³µê°œ 타임ë¼ì¸ì´ì§€ë§Œ, ì•„ì§ ì•„ë¬´ë„ ê¸€ì„ ì“°ì§€ 않았습니다." #: actions/public.php:191 +#, fuzzy msgid "Be the first to post!" -msgstr "" +msgstr "ê¸€ì„ ì˜¬ë¦° 첫번째 ì‚¬ëžŒì´ ë˜ì„¸ìš”!" #: actions/public.php:195 #, php-format @@ -3114,14 +3129,12 @@ msgid "" msgstr "" #: actions/public.php:247 -#, fuzzy, php-format +#, php-format msgid "" "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" -"%%site.name%% 는 마ì´í¬ë¡œë¸”로깅(http://en.wikipedia.org/wiki/Micro-blogging) " -"서비스 입니다." #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -3181,22 +3194,25 @@ msgid "Could not update user with confirmed email address." msgstr "ì´ ì´ë©”ì¼ ì£¼ì†Œë¡œ 사용ìžë¥¼ ì—…ë°ì´íŠ¸ í• ìˆ˜ 없습니다." #: actions/recoverpassword.php:152 +#, fuzzy 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 "" +msgstr "ê°€ìž…í•˜ì‹ ì´ë©”ì¼ë¡œ 비밀 번호 ìž¬ë°œê¸‰ì— ê´€í•œ 안내를 보냈습니다." #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " msgstr "" #: actions/recoverpassword.php:188 +#, fuzzy msgid "Password recovery" -msgstr "" +msgstr "비밀 번호 복구가 ìš”ì²ë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/recoverpassword.php:191 +#, fuzzy msgid "Nickname or email address" -msgstr "" +msgstr "별명ì´ë‚˜ ì´ë©”ì¼ ê³„ì •ì„ ìž…ë ¥í•˜ì‹ì‹œì˜¤." #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3264,7 +3280,7 @@ msgstr "비밀 번호는 6ìž ì´ìƒì´ì–´ì•¼ 합니다." msgid "Password and confirmation do not match." msgstr "비밀 번호가 ì¼ì¹˜í•˜ì§€ 않습니다." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "ì‚¬ìš©ìž ì„¸íŒ… 오류" @@ -3273,104 +3289,104 @@ msgid "New password successfully saved. You are now logged in." msgstr "" "새로운 비밀 번호를 성공ì 으로 ì €ìž¥í–ˆìŠµë‹ˆë‹¤. 귀하는 ì´ì œ ë¡œê·¸ì¸ ë˜ì—ˆìŠµë‹ˆë‹¤." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "죄송합니다. 단지 ì´ˆëŒ€ëœ ì‚¬ëžŒë“¤ë§Œ 등ë¡í• 수 있습니다." -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "í™•ì¸ ì½”ë“œ 오류" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "íšŒì› ê°€ìž…ì´ ì„±ê³µì 입니다." -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" -msgstr "회ì›ê°€ìž…" +msgstr "등ë¡" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "ê°€ìž…ì´ í—ˆìš©ë˜ì§€ 않습니다." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "ë¼ì´ì„ ìŠ¤ì— ë™ì˜í•˜ì§€ 않는다면 등ë¡í• 수 없습니다." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "ì´ë©”ì¼ ì£¼ì†Œê°€ ì´ë¯¸ 존재 합니다." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "ì‚¬ìš©ìž ì´ë¦„ì´ë‚˜ 비밀 번호가 í‹€ë ¸ìŠµë‹ˆë‹¤." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64ìž ì‚¬ì´ì— ì˜ì†Œë¬¸ìž, 숫ìžë¡œë§Œ ì”니다. 기호나 ê³µë°±ì„ ì“°ë©´ 안 ë©ë‹ˆë‹¤. 필수 " "ìž…ë ¥." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6ê¸€ìž ì´ìƒì´ 필요합니다." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "위와 ê°™ì€ ë¹„ë°€ 번호. 필수 사í•." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "ì´ë©”ì¼" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "ì—…ë°ì´íŠ¸ë‚˜ 공지, 비밀번호 ì°¾ê¸°ì— ì‚¬ìš©í•˜ì„¸ìš”." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "ë”ìš± 긴 ì´ë¦„ì„ ìš”êµ¬í•©ë‹ˆë‹¤." -#: actions/register.php:511 -#, php-format +#: actions/register.php:518 +#, fuzzy, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "" +msgstr "%1$sì˜ ì»¨í…ì¸ ì™€ ë°ì´í„°ëŠ” 외부 ìœ ì¶œì„ ê¸ˆì§€í•©ë‹ˆë‹¤." -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 -#, fuzzy, php-format +#: 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 "ë‹¤ìŒ ê°œì¸ì •ë³´ ì œì™¸: 비밀 번호, ë©”ì¼ ì£¼ì†Œ, ë©”ì‹ ì € 주소, ì „í™” 번호" +msgstr "" -#: actions/register.php:576 -#, fuzzy, php-format +#: actions/register.php:583 +#, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " "want to...\n" @@ -3387,22 +3403,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"%s님 축하드립니다! %%%%site.name%%%%ì— ê°€ìž…í•˜ì‹ ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤!. ì´ì œë¶€í„° ì•„" -"ëž˜ì˜ ì¼ì„ í• ìˆ˜ 있습니다...\n" -"\n" -"* [ë‚˜ì˜ í”„ë¡œí•„](%s) ë¡œ 가셔서 첫 메시지를 í¬ìŠ¤íŠ¸ í•´ë³´ì‹ì‹œì˜¤.\n" -"* [Jabber ë˜ëŠ” GTalkê³„ì •](%%%%action.imsettings%%%%)ì„ ì¶”ê°€í•˜ì…”ì„œ ë©”ì‹ ì €ë¡œ 통" -"보를 받아 ë³´ì‹ì‹œì˜¤.\n" -"* [친구 찾기](%%%%action.peoplesearch%%%%) 알거나 ê°™ì€ ê´€ì‹¬ì‚¬ë¥¼ ê°€ì§€ê³ ìžˆëŠ” " -"ë¶„ë“¤ì„ ì°¾ì•„ ë³´ì‹ì‹œì˜¤. \n" -"* [프로필 셋팅](%%%%action.profilesettings%%%%)ì„ ì—…ë°ì´íŠ¸ 하셔서 다른분들ì—" -"게 ìžì‹ ì„ ì•Œë ¤ë³´ì‹ì‹œì˜¤. \n" -"* [온ë¼ì¸ ë„움ë§](%%%%doc.help%%%%)ì„ ì½ìœ¼ë©´ì„œ ë” ë§Žì€ ê¸°ëŠ¥ì„ í™•ì¸í•´ ë³´ì‹ì‹œ" -"오. \n" -"\n" -"다시 한번 ê°€ìž…í•˜ì‹ ê²ƒì„ í™˜ì˜í•˜ë©´ì„œ ì¦ê±°ìš´ 서비스가 ë˜ì…¨ìœ¼ë©´ 합니다." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3456,19 +3458,16 @@ msgid "Invalid profile URL (bad format)" msgstr "옳지 ì•Šì€ í”„ë¡œí•„ URL (ë‚˜ìœ í¬ë©§)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "ìœ íš¨í•œ 프로필 URLì´ ì•„ë‹™ë‹ˆë‹¤. (YADIS 문서가 없습니다)" +msgstr "" #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." -msgstr "ê·¸ê²ƒì€ ë¡œì»¬í”„ë¡œí•„ìž…ë‹ˆë‹¤. 구ë…ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•˜ì‹ì‹œì˜¤." +msgstr "" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "리퀘스트 í† í°ì„ ì·¨ë“ í• ìˆ˜ 없습니다." +msgstr "" #: actions/repeat.php:57 #, fuzzy @@ -3487,9 +3486,9 @@ msgstr "ìžì‹ ì˜ ê¸€ì€ ìž¬ì „ì†¡í• ìˆ˜ 없습니다." #: actions/repeat.php:90 #, fuzzy msgid "You already repeated that notice." -msgstr "ë‹¹ì‹ ì€ ì´ë¯¸ ì´ ì‚¬ìš©ìžë¥¼ ì°¨ë‹¨í•˜ê³ ìžˆìŠµë‹ˆë‹¤." +msgstr "ì´ë¯¸ ìž¬ì „ì†¡ëœ ì†Œì‹ìž…니다." -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "ìž¬ì „ì†¡ë¨" @@ -3506,7 +3505,7 @@ msgstr "%sì— ë‹µì‹ " #: actions/replies.php:128 #, fuzzy, php-format msgid "Replies to %1$s, page %2$d" -msgstr "%2$sì—ì„œ %1$s까지 메시지" +msgstr "%sì— ë‹µì‹ " #: actions/replies.php:145 #, fuzzy, php-format @@ -3524,11 +3523,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 @@ -3540,8 +3539,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 @@ -3552,36 +3551,36 @@ msgstr "%2$sì—ì„œ %1$s까지 메시지" #: 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:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" -msgstr "아바타가 ì—…ë°ì´íŠ¸ ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "StatusNet %s" #: actions/sandbox.php:65 actions/unsandbox.php:65 msgid "You cannot sandbox users on this site." msgstr "ì´ ì‚¬ì´íŠ¸ì˜ ì´ìš©ìžì— 대해 ê¶Œí•œì •ì§€ í• ìˆ˜ 없습니다." #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 +#, fuzzy msgid "Sessions" -msgstr "" +msgstr "ë²„ì „" #: actions/sessionsadminpanel.php:65 +#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "ì´ StatusNet 사ì´íŠ¸ì— 대한 ë””ìžì¸ ì„¤ì •" #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" @@ -3603,17 +3602,17 @@ msgstr "" #: actions/useradminpanel.php:294 #, fuzzy msgid "Save site settings" -msgstr "아바타 ì„¤ì •" +msgstr "ì ‘ê·¼ ì„¤ì •ì„ ì €ìž¥" #: actions/showapplication.php:82 #, fuzzy msgid "You must be logged in to view an application." -msgstr "ê·¸ë£¹ì„ ë– ë‚˜ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/showapplication.php:157 #, fuzzy msgid "Application profile" -msgstr "í†µì§€ì— í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." +msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 @@ -3621,11 +3620,10 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 -#, fuzzy msgid "Name" -msgstr "별명" +msgstr "ì´ë¦„" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 @@ -3634,12 +3632,12 @@ msgid "Organization" msgstr "페ì´ì§€ìˆ˜" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "통계" @@ -3650,16 +3648,18 @@ msgid "Created by %1$s - %2$s access by default - %3$d users" msgstr "" #: actions/showapplication.php:213 +#, fuzzy msgid "Application actions" -msgstr "" +msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #: actions/showapplication.php:236 msgid "Reset key & secret" msgstr "" #: actions/showapplication.php:261 +#, fuzzy msgid "Application info" -msgstr "" +msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #: actions/showapplication.php:263 msgid "Consumer key" @@ -3678,8 +3678,9 @@ msgid "Access token URL" msgstr "" #: actions/showapplication.php:283 +#, fuzzy msgid "Authorize URL" -msgstr "" +msgstr "작성ìž" #: actions/showapplication.php:288 msgid "" @@ -3695,7 +3696,7 @@ msgstr "ì •ë§ë¡œ 통지를 ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: actions/showfavorites.php:79 #, fuzzy, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "%s ë‹˜ì˜ ì¢‹ì•„í•˜ëŠ” 글들" +msgstr "%s ë‹˜ì˜ ì¢‹ì•„í•˜ëŠ” 글" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." @@ -3725,21 +3726,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 "" #: 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 msgid "This is a way to share what you like." -msgstr "" +msgstr "좋아하는 ê¸€ì„ ì§€ì •í•˜ë©´ ìžê¸°ê°€ ë¬´ì—‡ì„ ì¢‹ì•„í•˜ëŠ”ì§€ 알릴 수 있습니다." #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format @@ -3749,7 +3750,7 @@ msgstr "%s 그룹" #: actions/showgroup.php:84 #, fuzzy, php-format msgid "%1$s group, page %2$d" -msgstr "%s 그룹 회ì›, %d페ì´ì§€" +msgstr "그룹, %d 페ì´ì§€" #: actions/showgroup.php:227 msgid "Group profile" @@ -3793,7 +3794,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 "회ì›" @@ -3801,18 +3802,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 -#, fuzzy +#: actions/showgroup.php:439 msgid "Created" -msgstr "ìƒì„±" +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." @@ -3822,18 +3822,16 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 -#, fuzzy, php-format +#: 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 "" -"**%s** 는 %%%%site.name%%%% [마ì´í¬ë¡œë¸”로깅)(http://en.wikipedia.org/wiki/" -"Micro-blogging)ì˜ ì‚¬ìš©ìž ê·¸ë£¹ìž…ë‹ˆë‹¤. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 #, fuzzy msgid "Admins" msgstr "관리ìž" @@ -3869,27 +3867,27 @@ msgstr "%s íƒœê·¸ëœ í†µì§€" #: actions/showstream.php:79 #, fuzzy, php-format msgid "%1$s, page %2$d" -msgstr "%s 와 친구들, %d 페ì´ì§€" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/showstream.php:122 #, fuzzy, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 1.0)" #: actions/showstream.php:129 #, fuzzy, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 1.0)" #: actions/showstream.php:136 #, fuzzy, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 2.0)" #: actions/showstream.php:143 #, fuzzy, php-format msgid "Notice feed for %s (Atom)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (Atom)" #: actions/showstream.php:148 #, fuzzy, php-format @@ -3897,9 +3895,9 @@ msgid "FOAF for %s" msgstr "%sì˜ ë³´ë‚¸ìª½ì§€í•¨" #: actions/showstream.php:200 -#, php-format +#, fuzzy, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." -msgstr "" +msgstr "%s ë° ì¹œêµ¬ë“¤ì˜ íƒ€ìž„ë¼ì¸ì´ì§€ë§Œ, ì•„ì§ ì•„ë¬´ë„ ê¸€ì„ ìž‘ì„±í•˜ì§€ 않았습니다." #: actions/showstream.php:205 msgid "" @@ -3912,8 +3910,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 @@ -3926,14 +3924,12 @@ msgid "" msgstr "" #: actions/showstream.php:248 -#, fuzzy, php-format +#, php-format msgid "" "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en." "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s**는 %%%%site.name%%%% [마ì´í¬ë¡œë¸”로깅](http://en.wikipedia.org/wiki/" -"Micro-blogging) ì„œë¹„ìŠ¤ì— ê³„ì •ì„ ê°–ê³ ìžˆìŠµë‹ˆë‹¤." #: actions/showstream.php:305 #, fuzzy, php-format @@ -3943,16 +3939,16 @@ msgstr "%sì— ë‹µì‹ " #: actions/silence.php:65 actions/unsilence.php:65 #, fuzzy msgid "You cannot silence users on this site." -msgstr "ë‹¹ì‹ ì€ ì´ ì‚¬ìš©ìžì—게 메시지를 보낼 수 없습니다." +msgstr "ì´ ì‚¬ì´íŠ¸ì˜ ì´ìš©ìžì— 대해 ê¶Œí•œì •ì§€ í• ìˆ˜ 없습니다." #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "" #: actions/siteadminpanel.php:69 +#, fuzzy msgid "Basic settings for this StatusNet site" -msgstr "" +msgstr "ì´ StatusNet 사ì´íŠ¸ì— 대한 ë””ìžì¸ ì„¤ì •" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." @@ -3961,7 +3957,7 @@ msgstr "" #: actions/siteadminpanel.php:141 #, fuzzy msgid "You must have a valid contact email address." -msgstr "ìœ íš¨í•œ ì´ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." +msgstr "올바른 ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." #: actions/siteadminpanel.php:159 #, php-format @@ -3983,7 +3979,7 @@ msgstr "" #: actions/siteadminpanel.php:224 #, fuzzy msgid "Site name" -msgstr "사ì´íŠ¸ 공지" +msgstr "사ì´íŠ¸ 테마" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" @@ -4008,7 +4004,7 @@ msgstr "" #: actions/siteadminpanel.php:239 #, fuzzy msgid "Contact email address for your site" -msgstr "%sì— í¬ìŠ¤íŒ… í• ìƒˆë¡œìš´ ì´ë©”ì¼ ì£¼ì†Œ" +msgstr "%sì— í¬ìŠ¤íŒ… í• ìƒˆë¡œìš´ ë©”ì¼ ì£¼ì†Œ" #: actions/siteadminpanel.php:245 #, fuzzy @@ -4065,7 +4061,7 @@ msgstr "새로운 메시지입니다." #: actions/sitenoticeadminpanel.php:103 #, fuzzy msgid "Unable to save site notice." -msgstr "트위터 í™˜ê²½ì„¤ì •ì„ ì €ìž¥í• ìˆ˜ 없습니다." +msgstr "ë””ìžì¸ ì„¤ì •ì„ ì €ìž¥í• ìˆ˜ 없습니다." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." @@ -4089,7 +4085,7 @@ msgstr "사ì´íŠ¸ 공지" #: actions/smssettings.php:59 #, fuzzy msgid "SMS settings" -msgstr "SMS 세팅" +msgstr "ë©”ì¼ ì„¤ì •" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4103,13 +4099,12 @@ msgstr "" #: actions/smssettings.php:97 #, fuzzy msgid "SMS is not available." -msgstr "ì´ íŽ˜ì´ì§€ëŠ” 귀하가 승ì¸í•œ 미디어 타입ì—서는 ì´ìš©í• 수 없습니다." +msgstr "ì¸ìŠ¤í„´íŠ¸ ë©”ì‹ ì €ë¥¼ ì‚¬ìš©í• ìˆ˜ 없습니다." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "ë©”ì‹ ì € 주소" +msgstr "SMS 주소" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4133,16 +4128,15 @@ msgstr "휴대í°ìœ¼ë¡œ ë°›ìœ¼ì‹ ì¸ì¦ë²ˆí˜¸ë¥¼ ìž…ë ¥í•˜ì‹ì‹œì˜¤." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" -msgstr "ì¸ì¦" +msgstr "확ì¸" #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 #, fuzzy msgid "SMS phone number" -msgstr "SMS íœ´ëŒ€í° ë²ˆí˜¸" +msgstr "íœ´ëŒ€í° ë²ˆí˜¸ê°€ 없습니다." #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4153,7 +4147,7 @@ msgstr "지ì—번호와 함께 ë„어쓰기 ì—†ì´ ë²ˆí˜¸ë¥¼ ì ì–´ 주세요." #: actions/smssettings.php:195 #, fuzzy msgid "SMS preferences" -msgstr "ì„¤ì •" +msgstr "ë©”ì¼ ì„¤ì •" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4197,8 +4191,8 @@ 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 @@ -4209,7 +4203,7 @@ msgstr "옳지 ì•Šì€ ì¸ì¦ 번호 입니다." #: actions/smssettings.php:427 #, fuzzy msgid "SMS confirmation cancelled." -msgstr "ì¸ì¦ 취소" +msgstr "SMS ì¸ì¦" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4221,7 +4215,7 @@ msgstr "ê·¸ íœ´ëŒ€í° ë²ˆí˜¸ëŠ” ê·€í•˜ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤." #: actions/smssettings.php:470 #, fuzzy msgid "The SMS phone number was removed." -msgstr "SMS íœ´ëŒ€í° ë²ˆí˜¸" +msgstr "ë©”ì¼ ì£¼ì†Œë¥¼ ì§€ì› ìŠµë‹ˆë‹¤." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4249,14 +4243,14 @@ msgstr "코드가 ìž…ë ¥ ë˜ì§€ 않았습니다." #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" #: actions/snapshotadminpanel.php:65 #, fuzzy msgid "Manage snapshot configuration" -msgstr "주 사ì´íŠ¸ 네비게ì´ì…˜" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." @@ -4267,8 +4261,9 @@ msgid "Snapshot frequency must be a number." msgstr "" #: actions/snapshotadminpanel.php:144 +#, fuzzy msgid "Invalid snapshot report URL." -msgstr "" +msgstr "ìž˜ëª»ëœ ë¡œê³ URL 입니다." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" @@ -4295,8 +4290,9 @@ msgid "Snapshots will be sent once every N web hits" msgstr "" #: actions/snapshotadminpanel.php:226 +#, fuzzy msgid "Report URL" -msgstr "" +msgstr "소스 코드 URL" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" @@ -4305,13 +4301,14 @@ msgstr "" #: actions/snapshotadminpanel.php:248 #, fuzzy msgid "Save snapshot settings" -msgstr "아바타 ì„¤ì •" +msgstr "ì ‘ê·¼ ì„¤ì •ì„ ì €ìž¥" #: actions/subedit.php:70 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 "구ë…ì„ ì €ìž¥í• ìˆ˜ 없습니다." @@ -4322,7 +4319,7 @@ msgstr "" #: actions/subscribe.php:107 #, fuzzy msgid "No such profile." -msgstr "그러한 통지는 없습니다." +msgstr "해당하는 파ì¼ì´ 없습니다." #: actions/subscribe.php:117 #, fuzzy @@ -4341,7 +4338,7 @@ msgstr "%s 구ë…ìž" #: actions/subscribers.php:52 #, fuzzy, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s 구ë…ìž, %d 페ì´ì§€" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4378,7 +4375,7 @@ msgstr "%s 구ë…" #: actions/subscriptions.php:54 #, fuzzy, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "%s subscriptions, %d 페ì´ì§€" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4402,7 +4399,7 @@ msgstr "" #: actions/subscriptions.php:128 actions/subscriptions.php:132 #, fuzzy, php-format msgid "%s is not listening to anyone." -msgstr "%1$s 는 지금 ë“£ê³ ìžˆìŠµë‹ˆë‹¤." +msgstr "%1$së‹˜ì´ ê·€í•˜ì˜ ì•Œë¦¼ 메시지를 %2$sì—ì„œ ë“£ê³ ìžˆìŠµë‹ˆë‹¤." #: actions/subscriptions.php:208 msgid "Jabber" @@ -4415,27 +4412,27 @@ msgstr "SMS" #: actions/tag.php:69 #, fuzzy, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "ì´ìš©ìž 셀프 í…Œí¬ %s - %d 페ì´ì§€" +msgstr "%s íƒœê·¸ëœ í†µì§€" #: actions/tag.php:87 #, fuzzy, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 1.0)" #: actions/tag.php:93 #, fuzzy, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 2.0)" #: actions/tag.php:99 #, fuzzy, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (Atom)" #: actions/tagother.php:39 #, fuzzy msgid "No ID argument." -msgstr "id ì¸ìžê°€ 없습니다." +msgstr "첨부문서 ì—†ìŒ" #: actions/tagother.php:65 #, php-format @@ -4481,19 +4478,15 @@ 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." -msgstr "ë‹¹ì‹ ì€ ì´ë¯¸ ì´ ì‚¬ìš©ìžë¥¼ ì°¨ë‹¨í•˜ê³ ìžˆìŠµë‹ˆë‹¤." +msgstr "ì´ë¯¸ ì°¨ë‹¨ëœ ì´ìš©ìžìž…니다." #: actions/unsandbox.php:72 #, fuzzy msgid "User is not sandboxed." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "ì´ìš©ìžì˜ 지ì†ì ì¸ ê²Œì‹œê¸€ì´ ì—†ìŠµë‹ˆë‹¤." #: actions/unsilence.php:72 #, fuzzy @@ -4503,7 +4496,7 @@ msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³ ìžˆì§€ 않습니다." #: actions/unsubscribe.php:77 #, fuzzy msgid "No profile ID in request." -msgstr "ìš”ì²í•œ 프로필idê°€ 없습니다." +msgstr "해당 IDì˜ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4517,14 +4510,14 @@ msgstr "" #. TRANS: User admin panel title #: actions/useradminpanel.php:59 -#, fuzzy msgctxt "TITLE" msgid "User" -msgstr "ì´ìš©ìž" +msgstr "사용ìž" #: actions/useradminpanel.php:70 +#, fuzzy msgid "User settings for this StatusNet site." -msgstr "" +msgstr "ì´ StatusNet 사ì´íŠ¸ì— 대한 ë””ìžì¸ ì„¤ì •" #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4595,19 +4588,15 @@ msgid "Authorize subscription" msgstr "구ë…ì„ í—ˆê°€" #: actions/userauthorization.php:110 -#, fuzzy msgid "" "Please check these details to make sure that you want to subscribe to this " "user’s notices. If you didn’t just ask to subscribe to someone’s notices, " "click “Rejectâ€." msgstr "" -"사용ìžì˜ 통지를 구ë…í•˜ë ¤ë©´ ìƒì„¸ë¥¼ 확ì¸í•´ 주세요. 구ë…하지 않는 경우는, \"취소" -"\"를 í´ë¦í•´ 주세요." -#: actions/userauthorization.php:196 actions/version.php:165 -#, fuzzy +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" -msgstr "ë¼ì´ì„ 스" +msgstr "ë¼ì´ì„¼ìŠ¤" #: actions/userauthorization.php:217 msgid "Accept" @@ -4636,28 +4625,22 @@ msgid "Subscription authorized" msgstr "êµ¬ë… í—ˆê°€" #: actions/userauthorization.php:256 -#, fuzzy msgid "" "The subscription has been authorized, but no callback URL was passed. Check " "with the site’s instructions for details on how to authorize the " "subscription. Your subscription token is:" msgstr "" -"구ë…ì´ ìŠ¹ì¸ ë˜ì—ˆìŠµë‹ˆë‹¤. 하지만 콜백 URLì´ í†µê³¼ ë˜ì§€ 않았습니다. 웹사ì´íŠ¸ì˜ 지" -"시를 찾아 êµ¬ë… ìŠ¹ì¸ ë°©ë²•ì— ëŒ€í•˜ì—¬ ì½ì–´ë³´ì‹ì‹œì˜¤. ê·€í•˜ì˜ êµ¬ë… í† í°ì€ : " #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "êµ¬ë… ê±°ë¶€" #: actions/userauthorization.php:268 -#, fuzzy msgid "" "The subscription has been rejected, but no callback URL was passed. Check " "with the site’s instructions for details on how to fully reject the " "subscription." msgstr "" -"구ë…ì´ í•´ì§€ ë˜ì—ˆìŠµë‹ˆë‹¤. 하지만 콜백 URLì´ í†µê³¼ ë˜ì§€ 않았습니다. 웹사ì´íŠ¸ì˜ 지" -"시를 찾아 êµ¬ë… í•´ì§€ ë°©ë²•ì— ëŒ€í•˜ì—¬ ì½ì–´ë³´ì‹ì‹œì˜¤." #: actions/userauthorization.php:303 #, php-format @@ -4685,19 +4668,18 @@ msgid "Avatar URL ‘%s’ is not valid." msgstr "" #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "아바타 URL '%s'ì„(를) ì½ì–´ë‚¼ 수 없습니다." +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "%S ìž˜ëª»ëœ ê·¸ë¦¼ íŒŒì¼ íƒ€ìž…ìž…ë‹ˆë‹¤. " +msgstr "" #: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy msgid "Profile design" -msgstr "프로필 세팅" +msgstr "프로필 ë””ìžì¸" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4713,12 +4695,11 @@ msgstr "" #: actions/usergroups.php:66 #, fuzzy, php-format msgid "%1$s groups, page %2$d" -msgstr "%s 그룹 회ì›, %d페ì´ì§€" +msgstr "그룹, %d 페ì´ì§€" #: actions/usergroups.php:132 -#, fuzzy msgid "Search for more groups" -msgstr "프로필ì´ë‚˜ í…스트 검색" +msgstr "" #: actions/usergroups.php:159 #, fuzzy, php-format @@ -4735,29 +4716,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "%2$sì— ìžˆëŠ” %1$sì˜ ì—…ë°ì´íŠ¸!" -#: actions/version.php:73 -#, fuzzy, php-format +#: actions/version.php:75 +#, php-format msgid "StatusNet %s" -msgstr "통계" +msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" -msgstr "" +msgstr "편집ìž" -#: actions/version.php:168 +#: 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 " @@ -4765,7 +4746,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4773,103 +4754,152 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" -msgstr "ë²„ì ¼" +msgstr "ë²„ì „" -#: actions/version.php:197 +#: actions/version.php:199 +#, fuzzy 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 "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "그룹 프로필" +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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" -msgstr "해쉬테그를 추가 í• ë•Œì— ë°ì´íƒ€ë² ì´ìŠ¤ ì—러 : %s" +msgstr "OAuth ì‘ìš© 프로그램 ì‚¬ìš©ìž ì¶”ê°€ 중 ë°ì´í„°ë² ì´ìŠ¤ 오류" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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 " @@ -4878,77 +4908,126 @@ msgstr "" "너무 ë§Žì€ ê²Œì‹œê¸€ì´ ë„ˆë¬´ ë¹ ë¥´ê²Œ 올ë¼ì˜µë‹ˆë‹¤. í•œìˆ¨ê³ ë¥´ê³ ëª‡ë¶„í›„ì— ë‹¤ì‹œ í¬ìŠ¤íŠ¸ë¥¼ " "해보세요." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 "ì´ íšŒì›ì€ 구ë…으로부터 ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ë‹¤." +msgstr "귀하는 구ë…ì´ ê¸ˆì§€ë˜ì—ˆìŠµë‹ˆë‹¤." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 +#, fuzzy msgid "Already subscribed!" -msgstr "" +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 "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +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." -msgstr "예약 구ë…ì„ ì‚ì œ í• ìˆ˜ 없습니다." +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." -msgstr "예약 구ë…ì„ ì‚ì œ í• ìˆ˜ 없습니다." +msgid "Could not delete subscription OMB token." +msgstr "구ë…ì„ ì €ìž¥í• ìˆ˜ 없습니다." -#: 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 "구ë…ì„ ì €ìž¥í• ìˆ˜ 없습니다." -#: 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 "그룹 맴버ì‹ì„ ì„¸íŒ…í• ìˆ˜ 없습니다." +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 "구ë…ì„ ì €ìž¥í• ìˆ˜ 없습니다." @@ -5001,220 +5080,204 @@ msgid "Untitled page" msgstr "ì œëª©ì—†ëŠ” 페ì´ì§€" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "주 사ì´íŠ¸ 네비게ì´ì…˜" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" -msgstr "ê°œì¸ í”„ë¡œí•„ê³¼ 친구 타임ë¼ì¸" +msgstr "" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 -#, fuzzy +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" -msgstr "ê°œì¸ì ì¸" +msgstr "ê°œì¸" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "ë‹¹ì‹ ì˜ ì´ë©”ì¼, 아바타, 비밀 번호, í”„ë¡œí•„ì„ ë³€ê²½í•˜ì„¸ìš”." #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "ì„œë²„ì— ìž¬ì ‘ì† í• ìˆ˜ 없습니다 : %s" +msgstr "" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "ì—°ê²°" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy 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:451 -#, fuzzy +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" -msgstr "관리ìž" +msgstr "관리" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "%sì— ì¹œêµ¬ë¥¼ 가입시키기 위해 친구와 ë™ë£Œë¥¼ 초대합니다." #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "초대" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "ì´ ì‚¬ì´íŠ¸ë¡œë¶€í„° 로그아웃" +msgstr "ì´ ì‚¬ì´íŠ¸ì—ì„œ 로그아웃" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 -#, fuzzy +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "로그아웃" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "ê³„ì • 만들기" +msgstr "새 ê³„ì • 만들기" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy +#: lib/action.php:485 msgctxt "MENU" msgid "Register" -msgstr "회ì›ê°€ìž…" +msgstr "등ë¡" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "ì´ ì‚¬ì´íŠ¸ 로그ì¸" +msgstr "ì´ ì‚¬ì´íŠ¸ì— 로그ì¸" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "로그ì¸" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" -msgstr "ë„ì›€ì´ í•„ìš”í•´!" +msgstr "ë„움ë§" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "ë„움ë§" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "프로필ì´ë‚˜ í…스트 검색" +msgstr "" -#: lib/action.php:493 -#, fuzzy +#: 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:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "로컬 ë·°" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "페ì´ì§€ 공지" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "ë³´ì¡° 사ì´íŠ¸ 네비게ì´ì…˜" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "ë„움ë§" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "ì •ë³´" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "ìžì£¼ 묻는 질문" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" -msgstr "" +msgstr "서비스 약관" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "ê°œì¸ì •ë³´ 취급방침" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "소스 코드" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "ì—°ë½í•˜ê¸°" -#: lib/action.php:784 -#, fuzzy +#: lib/action.php:794 msgid "Badge" -msgstr "찔러 보기" +msgstr "배지" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" -msgstr "ë¼ì½”니카 소프트웨어 ë¼ì´ì„ 스" +msgstr "StatusNet 소프트웨어 ë¼ì´ì„ 스" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 -#, fuzzy, php-format +#: lib/action.php:827 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** 는 [%%site.broughtby%%](%%site.broughtbyurl%%)ê°€ ì œê³µí•˜ëŠ” " -"마ì´í¬ë¡œë¸”로깅서비스입니다." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** 는 마ì´í¬ë¡œë¸”로깅서비스입니다." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5226,50 +5289,50 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html) ë¼ì´ì„ ìŠ¤ì— ë”°ë¼ ì‚¬ìš©í• ìˆ˜ 있습니다." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, fuzzy +#: lib/action.php:850 msgid "Site content license" -msgstr "ë¼ì½”니카 소프트웨어 ë¼ì´ì„ 스" +msgstr "사ì´íŠ¸ 컨í…ì¸ ë¼ì´ì„ 스" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +msgstr "%1$sì˜ ì»¨í…ì¸ ì™€ ë°ì´í„°ëŠ” 외부 ìœ ì¶œì„ ê¸ˆì§€í•©ë‹ˆë‹¤." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." -msgstr "" +msgstr "컨í…ì¸ ì™€ ë°ì´í„°ì˜ ì €ìž‘ê¶Œì€ %1$sì˜ ì†Œìœ ìž…ë‹ˆë‹¤. All rights reserved." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" +"컨í…ì¸ ì™€ ë°ì´í„°ì˜ ì €ìž‘ê¶Œì€ ê° ì´ìš©ìžì˜ ì†Œìœ ìž…ë‹ˆë‹¤. All rights reserved." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +msgstr "%1$sì˜ ëª¨ë“ ì»¨í…ì¸ ì™€ ë°ì´í„°ëŠ” %2$s ë¼ì´ì„ ìŠ¤ì— ë”°ë¼ ì´ìš©í• 수 있습니다." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "ì•ž 페ì´ì§€" @@ -5294,7 +5357,7 @@ msgstr "" #: lib/adminpanelaction.php:98 #, fuzzy msgid "You cannot make changes to this site." -msgstr "ë‹¹ì‹ ì€ ì´ ì‚¬ìš©ìžì—게 메시지를 보낼 수 없습니다." +msgstr "ì´ ì‚¬ì´íŠ¸ì˜ ì´ìš©ìžì— 대해 ê¶Œí•œì •ì§€ í• ìˆ˜ 없습니다." #. TRANS: Client error message throw when a certain panel's settings cannot be changed. #: lib/adminpanelaction.php:110 @@ -5319,101 +5382,101 @@ msgstr "ëª…ë ¹ì´ ì•„ì§ ì‹¤í–‰ë˜ì§€ 않았습니다." #: lib/adminpanelaction.php:284 #, fuzzy msgid "Unable to delete design setting." -msgstr "트위터 í™˜ê²½ì„¤ì •ì„ ì €ìž¥í• ìˆ˜ 없습니다." +msgstr "ë””ìžì¸ ì„¤ì •ì„ ì €ìž¥í• ìˆ˜ 없습니다." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" -msgstr "ì´ë©”ì¼ ì£¼ì†Œ 확ì¸ì„œ" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" -msgstr "초대" +msgstr "사ì´íŠ¸" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "SMS ì¸ì¦" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "ê°œì¸ì ì¸" +msgstr "ë””ìžì¸" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "SMS ì¸ì¦" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" -msgstr "ì´ìš©ìž" +msgstr "사용ìž" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "SMS ì¸ì¦" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "SMS ì¸ì¦" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "SMS ì¸ì¦" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "사ì´íŠ¸ 공지" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "SMS ì¸ì¦" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: 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 +#, fuzzy msgid "Edit application" -msgstr "" +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •" #. TRANS: Form guide. #: lib/applicationeditform.php:187 +#, fuzzy msgid "Icon for this application" -msgstr "" +msgstr "ì‘용프로그램 ì‚ì œ" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "140글ìžë¡œ 그룹ì´ë‚˜ í† í”½ 설명하기" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 #, fuzzy msgid "Describe your application" -msgstr "140글ìžë¡œ 그룹ì´ë‚˜ í† í”½ 설명하기" +msgstr "ì‘용프로그램 ì‚ì œ" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 @@ -5423,9 +5486,8 @@ msgstr "그룹 í˜¹ì€ í† í”½ì˜ í™ˆíŽ˜ì´ì§€ë‚˜ 블로그 URL" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 -#, fuzzy msgid "Source URL" -msgstr "소스 코드" +msgstr "소스 코드 URL" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 @@ -5499,38 +5561,39 @@ msgstr "" #, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "ì‚ì œ" +msgstr "ì œê±°" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 msgid "Attachments" -msgstr "" +msgstr "첨부파ì¼" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 msgid "Author" -msgstr "" +msgstr "작성ìž" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 #, fuzzy msgid "Provider" -msgstr "프로필" +msgstr "미리보기" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" msgstr "" #: lib/attachmenttagcloudsection.php:48 +#, fuzzy msgid "Tags for this attachment" -msgstr "" +msgstr "해당하는 첨부파ì¼ì´ 없습니다." -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "비밀번호 변경" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "비밀번호 변경" @@ -5548,9 +5611,8 @@ msgid "Command failed" msgstr "실행 실패" #: lib/command.php:83 lib/command.php:105 -#, fuzzy msgid "Notice with that id does not exist" -msgstr "해당 idì˜ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." +msgstr "" #: lib/command.php:99 lib/command.php:596 msgid "User has no last notice" @@ -5613,7 +5675,7 @@ msgstr "ì´ìš©ìž %1$s ì˜ ê·¸ë£¹ %2$s ê°€ìž…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: lib/command.php:385 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s" -msgstr "그룹 %sì—ì„œ %s 사용ìžë¥¼ ì œê±°í• ìˆ˜ 없습니다." +msgstr "ì´ìš©ìž %1$s ì˜ ê·¸ë£¹ %2$s ê°€ìž…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #. TRANS: Whois output. %s is the full name of the queried user. #: lib/command.php:418 @@ -5623,14 +5685,14 @@ msgstr "ì „ì²´ì´ë¦„: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "위치: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "홈페ì´ì§€: %s" @@ -5651,9 +5713,9 @@ 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 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "ë‹¹ì‹ ì´ ë³´ë‚¸ 메시지가 너무 길어요. 최대 140글ìžê¹Œì§€ìž…니다." +msgstr "" #. TRANS: Message given have sent a direct message to another user. #. TRANS: %s is the name of the other user. @@ -5669,12 +5731,12 @@ msgstr "ì§ì ‘ 메시지 보내기 오류." #: lib/command.php:514 #, fuzzy msgid "Cannot repeat your own notice" -msgstr "ì•Œë¦¼ì„ ì¼¤ 수 없습니다." +msgstr "ìžê¸° ìžì‹ ì˜ ì†Œì‹ì€ ìž¬ì „ì†¡í• ìˆ˜ 없습니다." #: lib/command.php:519 #, fuzzy msgid "Already repeated that notice" -msgstr "ì´ ê²Œì‹œê¸€ ì‚ì œí•˜ê¸°" +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. @@ -5686,12 +5748,12 @@ msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." #: lib/command.php:531 #, fuzzy msgid "Error repeating notice." -msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." +msgstr "ì‚¬ìš©ìž ì„¸íŒ… 오류" #: lib/command.php:562 -#, fuzzy, php-format +#, php-format msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "ë‹¹ì‹ ì´ ë³´ë‚¸ 메시지가 너무 길어요. 최대 140글ìžê¹Œì§€ìž…니다." +msgstr "" #: lib/command.php:571 #, fuzzy, php-format @@ -5848,7 +5910,7 @@ msgstr "" #: lib/common.php:139 #, fuzzy msgid "Go to the installer." -msgstr "ì´ ì‚¬ì´íŠ¸ 로그ì¸" +msgstr "ì´ ì‚¬ì´íŠ¸ì— 로그ì¸" #: lib/connectsettingsaction.php:110 msgid "IM" @@ -5868,8 +5930,9 @@ msgid "Connections" msgstr "ì—°ê²°" #: lib/connectsettingsaction.php:121 +#, fuzzy msgid "Authorized connected applications" -msgstr "" +msgstr "ì‘용프로그램 ì‚ì œ" #: lib/dberroraction.php:60 msgid "Database error" @@ -5881,10 +5944,9 @@ msgid "Upload file" msgstr "올리기" #: lib/designsettings.php:109 -#, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "ë‹¹ì‹ ì˜ ê°œì¸ì ì¸ ì•„ë°”íƒ€ë¥¼ ì—…ë¡œë“œí• ìˆ˜ 있습니다." +msgstr "ê°œì¸ ì•„ë°”íƒ€ë¥¼ 올릴 수 있습니다. 최대 íŒŒì¼ í¬ê¸°ëŠ” 2MB입니다." #: lib/designsettings.php:418 msgid "Design defaults restored." @@ -5904,19 +5966,19 @@ msgstr "좋아합니다" #: lib/feed.php:85 msgid "RSS 1.0" -msgstr "" +msgstr "RSS 1.0" #: lib/feed.php:87 msgid "RSS 2.0" -msgstr "" +msgstr "RSS 2.0" #: lib/feed.php:89 msgid "Atom" -msgstr "" +msgstr "Atom" #: lib/feed.php:91 msgid "FOAF" -msgstr "" +msgstr "FOAF" #: lib/feedlist.php:64 msgid "Export data" @@ -5957,19 +6019,18 @@ msgid "URL of the homepage or blog of the group or topic" msgstr "그룹 í˜¹ì€ í† í”½ì˜ í™ˆíŽ˜ì´ì§€ë‚˜ 블로그 URL" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "140글ìžë¡œ 그룹ì´ë‚˜ í† í”½ 설명하기" +msgstr "" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "140글ìžë¡œ 그룹ì´ë‚˜ í† í”½ 설명하기" +msgstr "" #: lib/groupeditform.php:179 msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "ê·¸ë£¹ì˜ ìœ„ì¹˜, \"ì‹œ/êµ°/구, ë„, 나ë¼\"" +msgstr "ê·¸ë£¹ì˜ ìœ„ì¹˜, \"ì‹œ/êµ°/구, ë„, êµê°€\"" #: lib/groupeditform.php:187 #, php-format @@ -5981,9 +6042,8 @@ msgid "Group" msgstr "그룹" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "차단하기" +msgstr "차단" #: lib/groupnav.php:102 #, fuzzy, php-format @@ -6002,12 +6062,12 @@ msgstr "ë¡œê³ " #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "%s logo 추가 í˜¹ì€ ìˆ˜ì •" +msgstr "%s ë¡œê³ ì¶”ê°€ í˜¹ì€ íŽ¸ì§‘" #: lib/groupnav.php:120 #, fuzzy, php-format msgid "Add or edit %s design" -msgstr "%s logo 추가 í˜¹ì€ ìˆ˜ì •" +msgstr "%s ë¡œê³ ì¶”ê°€ í˜¹ì€ íŽ¸ì§‘" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" @@ -6093,7 +6153,7 @@ msgstr "새 ê³„ì •ì„ ìœ„í•œ 회ì›ê°€ìž…" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 msgid "Email address confirmation" -msgstr "ì´ë©”ì¼ ì£¼ì†Œ 확ì¸ì„œ" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #. TRANS: Body for address confirmation email. #: lib/mail.php:177 @@ -6119,9 +6179,16 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$së‹˜ì´ ê·€í•˜ì˜ ì•Œë¦¼ 메시지를 %2$sì—ì„œ ë“£ê³ ìžˆìŠµë‹ˆë‹¤." +#: 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:249 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6134,27 +6201,21 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$së‹˜ì´ ê·€í•˜ì˜ ì•Œë¦¼ 메시지를 %2$sì—ì„œ ë“£ê³ ìžˆìŠµë‹ˆë‹¤.\n" -"\t%3$s\n" -"\n" -"그럼 ì´ë§Œ,%4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" -msgstr "" -"소개: %s\n" -"\n" +msgstr "위치: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" -msgstr "%sì— í¬ìŠ¤íŒ… í• ìƒˆë¡œìš´ ì´ë©”ì¼ ì£¼ì†Œ" +msgstr "%sì— í¬ìŠ¤íŒ… í• ìƒˆë¡œìš´ ë©”ì¼ ì£¼ì†Œ" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6166,34 +6227,34 @@ 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 -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s ìƒíƒœ" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS ì¸ì¦" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "ì´ ì „í™” 번호는 ì¸ì¦ 대기중입니다." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s 사용ìžê°€ 찔러 봤습니다." #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6210,13 +6271,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "%s로부터 새로운 비밀 메시지가 ë„착하였습니다." #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6236,13 +6297,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "%së‹˜ì´ ë‹¹ì‹ ì˜ ê²Œì‹œê¸€ì„ ì¢‹ì•„í•˜ëŠ” 글로 추가했습니다." +msgstr "누군가 ë‚´ ê¸€ì„ ì¢‹ì•„í•˜ëŠ” 게시글로 ì¶”ê°€í–ˆì„ ë•Œ, ë©”ì¼ì„ 보냅니다." #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6264,7 +6325,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6272,13 +6333,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6315,10 +6376,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "다ìŒì—ì„œ:" +msgstr "" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6371,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 "공개 streamì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다." +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,14 +6460,13 @@ msgstr "ì§ì ‘ 메시지 보내기" #: lib/messageform.php:146 msgid "To" -msgstr "ì—게" +msgstr "받는 ì´" #: lib/messageform.php:159 lib/noticeform.php:185 msgid "Available characters" msgstr "사용 가능한 글ìž" #: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy msgctxt "Send button for sending notice" msgid "Send" msgstr "보내기" @@ -6422,22 +6481,21 @@ msgid "What's up, %s?" msgstr "ë하세요? %?" #: lib/noticeform.php:192 +#, fuzzy msgid "Attach" -msgstr "" +msgstr "첨부파ì¼" #: lib/noticeform.php:196 msgid "Attach a file" msgstr "" #: lib/noticeform.php:212 -#, fuzzy msgid "Share my location" -msgstr "태그를 ì €ìž¥í• ìˆ˜ 없습니다." +msgstr "" #: lib/noticeform.php:215 -#, fuzzy msgid "Do not share my location" -msgstr "태그를 ì €ìž¥í• ìˆ˜ 없습니다." +msgstr "" #: lib/noticeform.php:216 msgid "" @@ -6446,54 +6504,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 -#, fuzzy +#: lib/noticelist.php:436 msgid "N" -msgstr "아니오" +msgstr "ë¶" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" -msgstr "" +msgstr "남" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" -msgstr "" +msgstr "ë™" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" -msgstr "" +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 "" +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 +#, fuzzy msgid "at" -msgstr "" +msgstr "경로" -#: lib/noticelist.php:559 +#: lib/noticelist.php:568 #, fuzzy msgid "in context" msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 #, fuzzy msgid "Repeated by" -msgstr "ìƒì„±" +msgstr "ìž¬ì „ì†¡ë¨" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "답장하기" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 #, fuzzy msgid "Notice repeated" msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." @@ -6537,7 +6595,7 @@ msgstr "예약 구ë…ì„ ì¶”ê°€ í• ìˆ˜ 없습니다." #: lib/personalgroupnav.php:99 msgid "Personal" -msgstr "ê°œì¸ì ì¸" +msgstr "ê°œì¸" #: lib/personalgroupnav.php:104 msgid "Replies" @@ -6553,7 +6611,7 @@ msgstr "ë°›ì€ ìª½ì§€í•¨" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" -msgstr "ë‹¹ì‹ ì˜ ë°›ì€ ë©”ì‹œì§€ë“¤" +msgstr "ë°›ì€ ë©”ì‹œì§€" #: lib/personalgroupnav.php:130 msgid "Outbox" @@ -6561,7 +6619,7 @@ msgstr "보낸 쪽지함" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "ë‹¹ì‹ ì˜ ë³´ë‚¸ 메시지들" +msgstr "보낸 메시지" #: lib/personaltagcloudsection.php:56 #, php-format @@ -6590,9 +6648,8 @@ msgid "All subscribers" msgstr "ëª¨ë“ êµ¬ë…ìž" #: lib/profileaction.php:191 -#, fuzzy msgid "User ID" -msgstr "ì´ìš©ìž" +msgstr "ì´ìš©ìž ID" #: lib/profileaction.php:196 msgid "Member since" @@ -6601,13 +6658,13 @@ 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" msgstr "ëª¨ë“ ê·¸ë£¹" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6631,10 +6688,10 @@ msgstr "피ì³ë§ë¨" msgid "Popular" msgstr "ì¸ê¸°ìžˆëŠ”" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." -msgstr "id ì¸ìžê°€ 없습니다." +msgstr "첨부문서 ì—†ìŒ" #: lib/repeatform.php:107 #, fuzzy @@ -6643,7 +6700,7 @@ msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기" #: lib/repeatform.php:132 msgid "Yes" -msgstr "네, 맞습니다." +msgstr "예" #: lib/repeatform.php:132 #, fuzzy @@ -6651,11 +6708,11 @@ msgid "Repeat this notice" msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "ì´ ê·¸ë£¹ì˜ íšŒì›ë¦¬ìŠ¤íŠ¸" +msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6672,7 +6729,7 @@ msgstr "ì´ ì‚¬ìš©ìžë¥¼ ì°¨ë‹¨í•´ì œí•©ë‹ˆë‹¤." #: lib/searchaction.php:120 #, fuzzy msgid "Search site" -msgstr "검색" +msgstr "검색 ë„움ë§" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6683,9 +6740,8 @@ msgid "Search" msgstr "검색" #: lib/searchaction.php:162 -#, fuzzy msgid "Search help" -msgstr "검색" +msgstr "검색 ë„움ë§" #: lib/searchgroupnav.php:80 msgid "People" @@ -6709,7 +6765,7 @@ msgstr "ì œëª©ì—†ëŠ” 섹션" #: lib/section.php:106 msgid "More..." -msgstr "" +msgstr "ë” ë³´ê¸°..." #: lib/silenceform.php:67 #, fuzzy @@ -6719,7 +6775,7 @@ msgstr "사ì´íŠ¸ 공지" #: lib/silenceform.php:78 #, fuzzy msgid "Silence this user" -msgstr "ì´ ì‚¬ìš©ìž ì°¨ë‹¨í•˜ê¸°" +msgstr "ì´ ì‚¬ìš©ìž ì‚ì œ" #: lib/subgroupnav.php:83 #, php-format @@ -6734,7 +6790,7 @@ msgstr "%sì— ì˜í•´ 구ë…ë˜ëŠ” 사람들" #: lib/subgroupnav.php:99 #, php-format msgid "Groups %s is a member of" -msgstr "%s ê·¸ë£¹ë“¤ì€ ì˜ ë©¤ë²„ìž…ë‹ˆë‹¤." +msgstr "%s 사용ìžê°€ ë©¤ë²„ì¸ ê·¸ë£¹" #: lib/subgroupnav.php:105 msgid "Invite" @@ -6759,6 +6815,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "차단 ì œê±° ì—러!" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "ìƒìœ„ 게시글 등ë¡ìž" @@ -6810,11 +6910,11 @@ msgstr "" #: lib/userprofile.php:263 #, fuzzy msgid "Edit profile settings" -msgstr "프로필 세팅" +msgstr "프로필 ì„¤ì •" #: lib/userprofile.php:264 msgid "Edit" -msgstr "" +msgstr "편집" #: lib/userprofile.php:287 msgid "Send a direct message to this user" @@ -6834,7 +6934,6 @@ msgid "User role" msgstr "ì´ìš©ìž 프로필" #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" msgstr "관리ìž" @@ -6845,56 +6944,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "1분 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "%d분 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "1시간 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "%d시간 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "%dì¼ ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "1달 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "%d달 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "1ë…„ ì „" @@ -6909,6 +7008,6 @@ msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" #: lib/xmppmanager.php:403 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "ë‹¹ì‹ ì´ ë³´ë‚¸ 메시지가 너무 길어요. 최대 140글ìžê¹Œì§€ìž…니다." +msgstr "" diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po index 2f4fca471..8c4981fbe 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:38+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:12:44+0000\n" "Language-Team: Macedonian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -22,14 +22,14 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "ПриÑтап" #. TRANS: Page notice #: actions/accessadminpanel.php:67 msgid "Site access settings" -msgstr "Ðагодувања за приÑтап на веб-Ñтраницата" +msgstr "Ðагодувања за приÑтап на мрежното меÑто" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 @@ -40,8 +40,8 @@ msgstr "РегиÑтрација" #: actions/accessadminpanel.php:165 msgid "Prohibit anonymous users (not logged in) from viewing site?" msgstr "" -"Да им забранам на анонимните (ненајавени) кориÑници да ја гледаат веб-" -"Ñтраницата?" +"Да им забранам на анонимните (ненајавени) кориÑници да го гледаат мрежното " +"меÑто?" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 @@ -86,24 +86,24 @@ msgid "Save" msgstr "Зачувај" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Ðема таква Ñтраница." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -116,7 +116,7 @@ msgid "No such user." msgstr "Ðема таков кориÑник." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s и пријателите, ÑÑ‚Ñ€. %2$d" @@ -124,40 +124,40 @@ msgstr "%1$s и пријателите, ÑÑ‚Ñ€. %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 и пријатели" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Канал Ñо пријатели на %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Канал Ñо пријатели на %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Канал за пријатели на %S (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" "Ова е иÑторијата за %s и пријателите, но доÑега никој нема објавено ништо." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -167,79 +167,77 @@ msgstr "" "groups%%) или објавете нешто Ñамите." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "Подновувања од %1$s и пријатели на %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API методот не е пронајден." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Овој метод бара POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -247,7 +245,7 @@ msgstr "" "Мора да назначите параметар Ñо име 'device' Ñо една од Ñледниве вредноÑти: " "sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Ðе можев да го подновам кориÑникот." @@ -267,7 +265,7 @@ msgstr "Ðе може да Ñе зачува профил." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -276,8 +274,8 @@ msgid "" "The server was unable to handle that much POST data (%s bytes) due to its " "current configuration." msgstr "" -"Серверот не можеше да обработи толку многу POST-податоци (%s бајти) заради " -"неговата тековна конфигурација." +"ОпÑлужувачот не можеше да обработи толку многу POST-податоци (%s бајти) " +"заради неговата тековна поÑтавеноÑÑ‚." #: actions/apiaccountupdateprofilebackgroundimage.php:136 #: actions/apiaccountupdateprofilebackgroundimage.php:146 @@ -344,35 +342,35 @@ msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Ðеможете да иÑпраќате директни пораки на кориÑници што не ви Ñе пријатели." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Ðема пронајдено ÑÑ‚Ð°Ñ‚ÑƒÑ Ñо таков ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Овој ÑÑ‚Ð°Ñ‚ÑƒÑ Ð²ÐµÑœÐµ Ви е омилен." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Ðе можам да Ñоздадам омилина забелешка." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Тој ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ðµ Ви е омилен." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 msgid "Could not follow user: %s is already on your list." -msgstr "Ðе можам да го Ñледам кориÑникот: %s веќе е на Вашата лиÑта." +msgstr "Ðе можам да го Ñледам кориÑникот: %s веќе е на Вашиот ÑпиÑок." #: actions/apifriendshipsdestroy.php:109 msgid "Could not unfollow user: User not found." @@ -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." @@ -396,123 +395,127 @@ msgstr "Ðе можев да го утврдам целниот кориÑник msgid "Could not find target user." msgstr "Ðе можев да го пронајдам целниот кориÑник." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Прекарот мора да има Ñамо мали букви и бројки и да нема празни меÑта." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Тој прекар е во употреба. Одберете друг." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ðеправилен прекар." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Главната Ñтраница не е важечка URL-адреÑа." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." -msgstr "Целото име е предолго (макÑимум 255 знаци)" +msgstr "Целото име е предолго (највеќе 255 знаци)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "ОпиÑот е предолг (дозволено е највеќе %d знаци)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Локацијата е предолга (макÑимумот е 255 знаци)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Премногу алијаÑи! Дозволено е највеќе %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Ðеважечки алијаÑ: „%s“." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "ÐлијаÑот „%s“ е зафатен. Одберете друг." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "ÐлијаÑот не може да биде иÑÑ‚ како прекарот." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Групата не е пронајдена." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Веќе членувате во таа група." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Блокирани Ñте од таа група од админиÑтраторот." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Ðе можам да го зачленам кориÑникот %1$s во групата 2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Ðе членувате во оваа група." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Ðе можев да го отÑтранам кориÑникот %1$s од групата %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." 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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s групи" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 параметар." @@ -523,15 +526,15 @@ msgstr "Погрешен жетон." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -597,12 +600,12 @@ msgstr "" "приÑтап до Вашата %4$s Ñметка Ñамо на трети Ñтрани на кои им верувате." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Сметка" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -610,8 +613,8 @@ msgid "Nickname" msgstr "Прекар" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Лозинка" @@ -627,11 +630,11 @@ msgstr "Дозволи" msgid "Allow or deny access to your account information." msgstr "Дозволете или одбијте приÑтап до податоците за Вашата Ñметка." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Методот бара POST или DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Ðе можете да избришете ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° друг кориÑник." @@ -648,61 +651,65 @@ msgstr "Ðе можете да ја повторувате ÑопÑтвенатРmsgid "Already repeated that notice." msgstr "Забелешката е веќе повторена." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "СтатуÑот е избришан." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Ðема пронајдено ÑÑ‚Ð°Ñ‚ÑƒÑ Ñо тој ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе е пронајдено." -#: actions/apistatusesupdate.php:304 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 "Ðеподдржан формат." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Омилени од %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "Подновувања на %1$s омилени на %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Подновувања кои Ñпоменуваат %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s подновувања коишто Ñе одговор на подновувањата од %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Јавна иÑторија на %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s подновуввања од Ñите!" @@ -717,16 +724,20 @@ msgstr "Повторено за %s" msgid "Repeats of %s" msgstr "Повторувања на %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Забелешки означени Ñо %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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:657 msgid "Delete" msgstr "Бриши" @@ -821,11 +832,11 @@ msgstr "Ðватарот е избришан." msgid "You already blocked that user." msgstr "Веќе го имате блокирано тој кориÑник." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Блокирај кориÑник" -#: actions/block.php:130 +#: 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 " @@ -841,7 +852,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -850,7 +861,7 @@ msgstr "Ðе" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Ðе го блокирај кориÑников" @@ -859,7 +870,7 @@ msgstr "Ðе го блокирај кориÑников" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -867,11 +878,11 @@ msgid "Yes" msgstr "Да" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Блокирај го кориÑников" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Ðе можев да ги Ñнимам инофрмациите за блокот." @@ -998,7 +1009,7 @@ msgstr "Ðе Ñте ÑопÑтвеник на овој програм." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Се појави проблем Ñо Вашиот ÑеÑиÑки жетон." @@ -1032,7 +1043,7 @@ msgstr "Избриши го програмов" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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:657 msgid "Delete this notice" msgstr "Бриши ја оваа забелешка" @@ -1101,107 +1112,123 @@ msgstr "Изглед" #: actions/designadminpanel.php:74 msgid "Design settings for this StatusNet site." -msgstr "Ðагодувања на изгледот на оваа StatusNet веб-Ñтраница." +msgstr "Ðагодувања на изгледот на ова StatusNet-мрежно меÑто." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Погрешен URL на лого." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Темата е недоÑтапна: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Промени лого" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "Лого на веб-Ñтраницата" +msgstr "Лого на мрежното меÑто" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" -msgstr "Промени тема" +msgstr "Промени изглед" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" -msgstr "Тема на веб-Ñтраницата" +msgstr "Изглед на мрежното меÑто" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." -msgstr "Тема за веб-Ñтраницата." +msgstr "Изглед за мрежното меÑто." + +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Прилагоден мотив" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Можете да подигнете Ñвој изглед за StatusNet како .ZIP архив." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Промена на Ñлика на позадина" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Позадина" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." msgstr "" -"Може да подигнете позадинÑка Ñлика за оваа веб-Ñтраница. МакÑималната " +"Може да подигнете позадинÑка Ñлика за ова мрежно меÑто. МакÑималната " "големина на податотеката е %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Вкл." #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "ИÑкл." -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Вклучи или иÑклучи позадинÑка Ñлика." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Позадината во квадрати" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Промена на бои" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Содржина" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Странична лента" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "ТекÑÑ‚" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Ð’Ñ€Ñки" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Ðапредно" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Прилагодено CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "КориÑти по оÑновно" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Врати оÑновно-зададени нагодувања" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Врати по оÑновно" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1211,7 +1238,7 @@ msgstr "Врати по оÑновно" msgid "Save" msgstr "Зачувај" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Зачувај изглед" @@ -1251,7 +1278,7 @@ msgstr "Треба име." #: actions/editapplication.php:180 actions/newapplication.php:165 msgid "Name is too long (max 255 chars)." -msgstr "Името е предолго (макÑимум 255 знаци)." +msgstr "Името е предолго (највеќе 255 знаци)." #: actions/editapplication.php:183 actions/newapplication.php:162 msgid "Name already in use. Try another one." @@ -1314,7 +1341,7 @@ msgstr "ОБразецов Ñлужи за уредување на групатР#: actions/editgroup.php:205 actions/newgroup.php:145 #, php-format msgid "description is too long (max %d chars)." -msgstr "опиÑот е предолг (макÑимум %d знаци)" +msgstr "опиÑот е предолг (највеќе %d знаци)" #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format @@ -1325,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 "Ðе можеше да Ñе Ñоздадат алијаÑи." @@ -1484,7 +1512,7 @@ msgid "Cannot normalize that email address" msgstr "Ðеможам да ја нормализирам таа е-поштенÑка адреÑа" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ðеправилна адреÑа за е-пошта." @@ -1587,7 +1615,7 @@ msgstr "Популарни забелешки, ÑÑ‚Ñ€. %d" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." -msgstr "Моментално најпопуларни забелешки на веб-Ñтраницата." +msgstr "Моментално најпопуларни забелешки на мрежното меÑто." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." @@ -1704,7 +1732,7 @@ msgstr "Оваа улога е резервирана и не може да Ñе #: actions/grantrole.php:75 msgid "You cannot grant user roles on this site." -msgstr "Ðе можете да им доделувате улоги на кориÑниците на оваа веб-Ñтраница." +msgstr "Ðе можете да им доделувате улоги на кориÑниците на ова мрежно меÑто." #: actions/grantrole.php:82 msgid "User already has this role." @@ -1712,13 +1740,13 @@ msgstr "КориÑникот веќе ја има таа улога." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Ðема назначено профил." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ðема профил Ñо тоа ID." @@ -1835,7 +1863,7 @@ msgstr "Членови на групата %1$s, ÑÑ‚Ñ€. %2$d" #: actions/groupmembers.php:118 msgid "A list of the users in this group." -msgstr "ЛиÑта на кориÑниците на овааг група." +msgstr "СпиÑок на кориÑниците на оваа група." #: actions/groupmembers.php:182 lib/groupnav.php:107 msgid "Admin" @@ -1861,7 +1889,7 @@ msgstr "Ðаправи го кориÑникот админиÑтратор" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "ИÑторија на %s" @@ -1991,7 +2019,7 @@ msgid "" "message with further instructions. (Did you add %s to your buddy list?)" msgstr "" "Чекам потврда за оваа адреÑа. Проверете ја Вашата Jabber/GTalk Ñметка за " -"порака Ñо понатамошни инÑтрукции. (Дали го додадовте %s на Вашата лиÑта Ñо " +"порака Ñо понатамошни инÑтрукции. (Дали го додадовте %s на Вашиот ÑпиÑок Ñо " "пријатели?)" #. TRANS: IM address input field instructions in IM settings form. @@ -2002,8 +2030,8 @@ msgid "" "Jabber or GTalk address, like \"UserName@example.org\". First, make sure to " "add %s to your buddy list in your IM client or on GTalk." msgstr "" -"Jabber или GTalk адреÑа како „ime@example.org“. Ðо прво додајте го %s во " -"Вашата контакт лиÑта во Вашиот IM клиент или GTalk." +"Jabber или GTalk адреÑа како „KorisnickoIme@example.org“. Ðо прво додајте го " +"%s во Вашиот контактен ÑпиÑок во Вашиот IM клиент или GTalk." #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 @@ -2163,15 +2191,15 @@ msgid "" "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" @@ -2234,7 +2262,7 @@ msgid "" msgstr "" "%1$s Ве кани да Ñе придружите на %2$s (%3$s).\n" "\n" -"%2$s е веб-Ñтраница за микроблогирање што ви овозможува да бидете во тек " +"%2$s е мрежно меÑто за микроблогирање што ви овозможува да бидете во тек " "луѓето што ги познавате и луѓето кои ве интереÑираат.\n" "\n" "Можете да објавувате и новоÑти за ВаÑ, Ваши размиÑли, и наÑтани од Вашиот " @@ -2249,7 +2277,7 @@ msgstr "" "\n" "%5$s\n" "\n" -"Ðко Ñакате да ја иÑпробате оваа друштвена веб-Ñтраница, кликнете на врÑката " +"Ðко Ñакате да ја иÑпробате оваа друштвено мрежно меÑто, кликнете на врÑката " "подолу за да ја прифатите поканата.\n" "\n" "%6$s\n" @@ -2289,41 +2317,40 @@ msgstr "Ðе членувате во таа група." msgid "%1$s left group %2$s" msgstr "%1$s ја напушти групата %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Веќе Ñте најавени." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Ðеточно кориÑничко име или лозинка" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Грешка при поÑтавувањето на кориÑникот. Веројатно не Ñе заверени." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Ðајава" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Ðајавете Ñе" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Запамети ме" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" -"Следниот пат најавете Ñе автоматÑки; не е за компјутери кои ги делите Ñо " -"други!" +"ОтÑега врши автоматÑка најава. Ðе треба да Ñе кориÑти за јавни Ñметачи!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Ја загубивте или заборавивте лозинката?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2331,11 +2358,11 @@ msgstr "" "Поради безбедноÑни причини треба повторно да го внеÑете Вашето кориÑничко " "име и лозинка пред да ги Ñмените Вашите нагодувања." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Ðајавете Ñе Ñо кориÑничко име и лозинка." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2472,8 +2499,8 @@ msgid "" "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" "Рзошто не [региÑтрирате Ñметка](%%%%action.register%%%%) и Ñтанете првиот " -"што ќе [објави нешто на оваа тема](%%%%action.newnotice%%%%?status_textarea=" -"%s)!" +"што ќе [објави нешто на оваа тема](%%%%action.newnotice%%%%?status_textarea=%" +"s)!" #: actions/noticesearchrss.php:96 #, php-format @@ -2487,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 "" "Овој кориÑник не дозволува подбуцнувања или Ñè уште нема потврдено или " "поÑтавено Ñвоја е-пошта." @@ -2543,30 +2570,30 @@ msgid "Developers can edit the registration settings for their applications " msgstr "" "Развивачите можат да ги нагодат региÑтрациÑките поÑтавки за нивните програми " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Забелешката нема профил." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Содржините од типот %s не Ñе поддржани." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "Ова не е поддржан формат на податотека." @@ -2671,7 +2698,7 @@ msgid "6 or more characters" msgstr "6 или повеќе знаци" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Потврди" @@ -2683,11 +2710,11 @@ msgstr "ИÑто како лозинката погоре" msgid "Change" msgstr "Промени" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Лозинката мора да Ñодржи барем 6 знаци." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Лозинките не Ñе Ñовпаѓаат." @@ -2708,13 +2735,13 @@ msgid "Password saved." msgstr "Лозинката е зачувана." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: 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 "Ðагодувања за патеки и Ñервери за оваа StatusNet веб-Ñтраница." +msgstr "Ðагодувања за патеки и опÑлужувачи за оваа StatusNet мрежно меÑто." #: actions/pathsadminpanel.php:157 #, php-format @@ -2738,11 +2765,11 @@ msgstr "Директориумот на локалите е нечитлив: %s #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "Ðеважечки SSL-Ñервер. Дозволени Ñе најмногу 255 знаци" +msgstr "Ðеважечки SSL-опÑлужувач. Дозволени Ñе најмногу до 255 знаци" #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" -msgstr "Веб-Ñтраница" +msgstr "Мреж. меÑто" #: actions/pathsadminpanel.php:238 msgid "Server" @@ -2750,7 +2777,7 @@ msgstr "ОпÑлужувач" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "Име на домаќинот на Ñерверот на веб-Ñтраницата" +msgstr "Ðазив на домаќинот на опÑлужувачот на мрежното меÑто" #: actions/pathsadminpanel.php:242 msgid "Path" @@ -2758,7 +2785,7 @@ msgstr "Патека" #: actions/pathsadminpanel.php:242 msgid "Site path" -msgstr "Патека на веб-Ñтраницата" +msgstr "Патека на мрежното меÑто" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2778,11 +2805,11 @@ msgstr "Да кориÑтам интереÑни (почитливи и повп #: actions/pathsadminpanel.php:259 msgid "Theme" -msgstr "Тема" +msgstr "Изглед" #: actions/pathsadminpanel.php:264 msgid "Theme server" -msgstr "Сервер на темата" +msgstr "OпÑлужувач на темата" #: actions/pathsadminpanel.php:268 msgid "Theme path" @@ -2798,7 +2825,7 @@ msgstr "Ðватари" #: actions/pathsadminpanel.php:284 msgid "Avatar server" -msgstr "Сервер на аватарот" +msgstr "ОпÑлужувач на аватарот" #: actions/pathsadminpanel.php:288 msgid "Avatar path" @@ -2814,7 +2841,7 @@ msgstr "Позадини" #: actions/pathsadminpanel.php:305 msgid "Background server" -msgstr "Сервер на позаднината" +msgstr "OпÑлужувач на позаднината" #: actions/pathsadminpanel.php:309 msgid "Background path" @@ -2850,11 +2877,11 @@ msgstr "Кога Ñе кориÑти SSL" #: actions/pathsadminpanel.php:335 msgid "SSL server" -msgstr "SSL-Ñервер" +msgstr "SSL-опÑлужувач" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" -msgstr "Сервер, кому ќе му Ñе иÑпраќаат SSL-барања" +msgstr "OпÑлужувач, кому ќе му Ñе иÑпраќаат SSL-барања" #: actions/pathsadminpanel.php:352 msgid "Save paths" @@ -2892,8 +2919,8 @@ msgstr "Ðеважечка Ñодржина на забелешката." #, php-format msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -"Лиценцата на забелешката „%1$s“ не е компатибилна Ñо лиценцата на веб-" -"Ñтраницата „%2$s“." +"Лиценцата на забелешката „%1$s“ не е Ñоодветна на лиценцата на мрежното " +"меÑто „%2$s“." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2914,43 +2941,43 @@ msgstr "Информации за профил" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 мали букви или бројки. Без интерпукциÑки знаци и празни меÑта." -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" -msgstr "URL на Вашата домашна Ñтраница, блог или профил на друга веб-Ñтраница." +msgstr "URL на Вашата домашна Ñтраница, блог или профил на друго мрежно меÑто." -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Опишете Ñе ÑебеÑи и Ñвоите интереÑи во %d знаци." -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Опишете Ñе ÑебеÑи и Вашите интереÑи" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Биографија" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Каде Ñе наоѓате, на пр. „Град, ОблаÑÑ‚, Земја“." @@ -2994,7 +3021,7 @@ msgstr "" "ÐвтоматÑки претплаќај ме на Ñекој што Ñе претплаќа на мене (најдобро за " "ботови и Ñл.)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Биографијата е преголема (највеќе до %d знаци)." @@ -3091,10 +3118,10 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" -"Ова е %%site.name%%, веб-Ñтраница за [микроблогирање](http://mk.wikipedia." -"org/wiki/Микроблогирање) базирана на Ñлободната програмÑка алатка [StatusNet]" -"(http://status.net/). [Зачленете Ñе](%%action.register%%) за да Ñи " -"Ñподелувате забелешки за Ñебе Ñо приајтелите, ÑемејÑтвото и колегите! " +"Ова е %%site.name%%, мрежно меÑто за [микроблогирање](http://mk.wikipedia." +"org/wiki/Микроблогирање) заÑнована на Ñлободната програмÑка алатка " +"[StatusNet](http://status.net/). [Зачленете Ñе](%%action.register%%) за да " +"Ñи Ñподелувате забелешки за Ñебе Ñо приајтелите, ÑемејÑтвото и колегите! " "([Прочитајте повеќе](%%doc.help%%))" #: actions/public.php:247 @@ -3104,9 +3131,9 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" -"Ова е %%site.name%%, веб-Ñтраница за [микроблогирање](http://mk.wikipedia." -"org/wiki/Микроблогирање) базирана на Ñлободната програмÑка алатка [StatusNet]" -"(http://status.net/)." +"Ова е %%site.name%%, мрежно меÑто за [микроблогирање](http://mk.wikipedia." +"org/wiki/Микроблогирање) заÑнована на Ñлободната програмÑка алатка " +"[StatusNet](http://status.net/)." #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -3190,7 +3217,7 @@ 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 @@ -3257,7 +3284,7 @@ msgstr "Лозинката мора да биде од најмалку 6 зна msgid "Password and confirmation do not match." msgstr "Двете лозинки не Ñе Ñовпаѓаат." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Грешка во поÑтавувањето на кориÑникот." @@ -3265,39 +3292,39 @@ msgstr "Грешка во поÑтавувањето на кориÑникот." msgid "New password successfully saved. You are now logged in." msgstr "Ðовата лозинка е уÑпешно зачувана. Сега Ñте најавени." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Жалиме, региÑтрацијата е Ñамо Ñо покана." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Жалиме, неважечки код за поканата." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "РегиÑтрацијата е уÑпешна" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "РегиÑтрирај Ñе" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "РегиÑтрирањето не е дозволено." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Ðе може да Ñе региÑтрирате ако не ја прифаќате лиценцата." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "ÐдреÑата веќе поÑтои." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Погрешно име или лозинка." -#: actions/register.php:343 +#: 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. " @@ -3305,57 +3332,59 @@ msgstr "" "Со овој образец можете да Ñоздадете нова Ñметка. Потоа ќе можете да " "објавувате забелешки и да Ñе поврзувате Ñо пријатели и колеги. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 мали букви или бројки, без интерпункциÑки знаци и празни меÑта. " "Задолжително поле." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "Барем 6 знаци. Задолжително поле." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "ИÑто што и лозинката погоре. Задолжително поле." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Е-пошта" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Се кориÑти Ñамо за подновувања, објави и повраќање на лозинка." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Подолго име, по можноÑÑ‚ Вашето виÑтинÑко име и презиме" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Содржината и податоците на %1$s Ñе лични и доверливи." +msgstr "Сфаќам дека Ñодржината и податоците на %1$s Ñе лични и доверливи." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "ÐвторÑкото правво на мојот текÑÑ‚ и податотеки го има %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: 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:528 +#: 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:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3364,7 +3393,7 @@ msgstr "" "Мојот текÑÑ‚ и податотеки Ñе доÑтапни под %s, оÑвен Ñледниве приватни " "податоци: лозинка, е-пошта, IM-адреÑа и телефонÑки број." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3398,7 +3427,7 @@ msgstr "" "Ви благодариме што Ñе зачленивте и Ви пожелуваме пријатни мигови Ñо оваа " "Ñлужба." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3413,10 +3442,10 @@ msgid "" "register%%) a new account. If you already have an account on a [compatible " "microblogging site](%%doc.openmublog%%), enter your profile URL below." msgstr "" -"За да Ñе претплатите, може да Ñе [најавите](%%action.login%%) или да " +"За да Ñе претплатите, можете да Ñе [најавите](%%action.login%%) или да " "[региÑтрирате](%%action.register%%) нова Ñметка. Ðко веќе имате Ñметка на " -"[компатибилна веб-Ñтраница за микроблогирање](%%doc.openmublog%%), внеÑете " -"го URL-то на Вашиот профил подолу." +"[уÑоглаÑиво мреж. меÑто за микроблогирање](%%doc.openmublog%%), внеÑете го " +"URL-то на Вашиот профил подолу." #: actions/remotesubscribe.php:112 msgid "Remote subscribe" @@ -3440,7 +3469,7 @@ msgstr "URL на профилот" #: actions/remotesubscribe.php:134 msgid "URL of your profile on another compatible microblogging service" -msgstr "URL на Вашиот профил на друга компатибилна Ñлужба за микроблогирање." +msgstr "URL на Вашиот профил на друга Ñоодветна Ñлужба за микроблогирање." #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:406 @@ -3481,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:676 msgid "Repeated" msgstr "Повторено" @@ -3519,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 @@ -3536,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 @@ -3549,19 +3578,19 @@ msgstr "Одговори на %1$s на %2$s!" #: actions/revokerole.php:75 msgid "You cannot revoke user roles on this site." -msgstr "Ðа оваа веб-Ñтраница не можете да одземате кориÑнички улоги." +msgstr "Ðа ова мрежно меÑто не можете да одземате кориÑнички улоги." #: actions/revokerole.php:82 msgid "User doesn't have this role." msgstr "КориÑникот ја нема оваа улога." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 msgid "You cannot sandbox users on this site." -msgstr "Ðе можете да Ñтавате кориÑници во пеÑочен режим на оваа веб-Ñтраница." +msgstr "Ðе можете да Ñтавате кориÑници во пеÑочен режим на ова мрежно меÑто." #: actions/sandbox.php:72 msgid "User is already sandboxed." @@ -3569,13 +3598,13 @@ msgstr "КориÑникот е веќе во пеÑочен режим." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "СеÑии" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." -msgstr "Ðагодувања на ÑеÑиите за оваа StatusNet веб-Ñтраница." +msgstr "Ðагодувања на ÑеÑиите за оваа StatusNet-мрежно меÑто." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" @@ -3596,7 +3625,7 @@ msgstr "Вклучи извод од поправка на грешки за ÑÐ #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 msgid "Save site settings" -msgstr "Зачувај нагодувања на веб-Ñтраницата" +msgstr "Зачувај нагодувања на мреж. меÑто" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." @@ -3612,7 +3641,7 @@ msgid "Icon" msgstr "Икона" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Име" @@ -3623,12 +3652,12 @@ msgid "Organization" msgstr "Организација" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтики" @@ -3720,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 @@ -3793,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 "Членови" @@ -3807,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." @@ -3820,14 +3849,14 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -"**%s** е кориÑничка група на %%%%site.name%%%%, веб-Ñтраница за " -"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) базирана на " +"**%s** е кориÑничка група на %%%%site.name%%%%, мрежно меÑто за " +"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) заÑнована на " "Ñлободната програмÑка алатка [StatusNet](http://status.net/). Ðејзините " "членови Ñи разменуваат кратки пораки за нивниот живот и интереÑи. [Зачленете " "Ñе](%%%%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." @@ -3835,12 +3864,12 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" -"**%s** е кориÑничка група на %%%%site.name%%%%, веб-Ñтраница за " -"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) базирана на " +"**%s** е кориÑничка група на %%%%site.name%%%%, мрежно меÑто за " +"[микроблогирање](http://mk.wikipedia.org/wiki/Микроблогирање) заÑнована на " "Ñлободната програмÑка алатка [StatusNet](http://status.net/). Ðејзините " "членови Ñи разменуваат кратки пораки за нивниот живот и интереÑи. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтратори" @@ -3917,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 @@ -3931,8 +3960,8 @@ msgid "" "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -"**%s** има Ñметка на %%%%site.name%%%%, веб-Ñтраница за [микроблогирање]" -"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на Ñлободната " +"**%s** има Ñметка на %%%%site.name%%%%, мрежно меÑто за [микроблогирање]" +"(http://mk.wikipedia.org/wiki/Микроблогирање) заÑнована на Ñлободната " "програмÑка алатка [StatusNet](http://status.net/). [Зачленете Ñе](%%%%action." "register%%%%) за да можете да ги Ñледите забелешките на **%s** и многу " "повеќе! ([Прочитајте повеќе](%%%%doc.help%%%%))" @@ -3944,8 +3973,8 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s** има Ñметка на %%%%site.name%%%%, веб-Ñтраница за [микроблогирање]" -"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на Ñлободната " +"**%s** има Ñметка на %%%%site.name%%%%, мрежно меÑто за [микроблогирање]" +"(http://mk.wikipedia.org/wiki/Микроблогирање) заÑнована на Ñлободната " "програмÑка алатка [StatusNet](http://status.net/). " #: actions/showstream.php:305 @@ -3955,7 +3984,7 @@ msgstr "Повторувања на %s" #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." -msgstr "Ðе можете да замолчувате кориÑници на оваа веб-Ñтраница." +msgstr "Ðе можете да замолчувате кориÑници на ова мрежно меÑто." #: actions/silence.php:72 msgid "User is already silenced." @@ -3963,11 +3992,11 @@ msgstr "КориÑникот е веќе замолчен." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" -msgstr "ОÑновни поÑтавки за оваа StatusNet веб-Ñтраница." +msgstr "ОÑновни поÑтавки за оваа StatusNet-мрежно меÑто." #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." -msgstr "Должината на името на веб-Ñтраницата не може да изнеÑува нула." +msgstr "Должината на името на мрежното меÑто не може да изнеÑува нула." #: actions/siteadminpanel.php:141 msgid "You must have a valid contact email address." @@ -3992,11 +4021,11 @@ msgstr "Општи" #: actions/siteadminpanel.php:224 msgid "Site name" -msgstr "Име на веб-Ñтраницата" +msgstr "Име на мрежното меÑто" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "Името на Вашата веб-Ñтраница, како на пр. „Микроблог на Вашафирма“" +msgstr "Името на Вашето мрежно меÑто, како на пр. „Микроблог на Вашафирма“" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -4020,7 +4049,7 @@ msgstr "" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "Контактна е-пошта за Вашата веб-Ñтраница" +msgstr "Контактна е-пошта за Вашето мрежното меÑто" #: actions/siteadminpanel.php:245 msgid "Local" @@ -4032,7 +4061,7 @@ msgstr "ОÑновна чаÑовна зона" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "Матична чаÑовна зона за веб-Ñтраницата; обично UTC." +msgstr "Матична чаÑовна зона за мрежното меÑто; обично UTC." #: actions/siteadminpanel.php:262 msgid "Default language" @@ -4040,7 +4069,7 @@ msgstr "ОÑновен јазик" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" -msgstr "Јазик на веб-Ñтраницата ако прелиÑтувачот не може да го препознае Ñам" +msgstr "Јазик на мрежното меÑто ако прелиÑтувачот не може да го препознае Ñам" #: actions/siteadminpanel.php:271 msgid "Limits" @@ -4070,24 +4099,24 @@ msgstr "Објава на Ñтраница" #: actions/sitenoticeadminpanel.php:67 msgid "Edit site-wide message" -msgstr "Уреди објава за цела веб-Ñтраница" +msgstr "Уреди објава за цело мрежно меÑто" #: actions/sitenoticeadminpanel.php:103 msgid "Unable to save site notice." -msgstr "Ðе можам да ја зачувам објавата за веб-Ñтраницата." +msgstr "Ðе можам да ја зачувам објавата за мрежното меÑто." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "Објавата за цела веб-Ñтраница не треба да Ñодржи повеќе од 255 знаци." +msgstr "Објавата за цело мрежно меÑто не треба да Ñодржи повеќе од 255 знаци." #: actions/sitenoticeadminpanel.php:176 msgid "Site notice text" -msgstr "ТекÑÑ‚ на објавата за веб-Ñтраницата" +msgstr "ТекÑÑ‚ на објавата за мрежното меÑто" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" msgstr "" -"ТекÑÑ‚ за главна објава по цела веб-Ñтраница (највеќе до 255 знаци; дозволено " +"ТекÑÑ‚ за главна објава по цело мрежно меÑто (највеќе до 255 знаци; дозволено " "и HTML)" #: actions/sitenoticeadminpanel.php:198 @@ -4250,7 +4279,7 @@ msgstr "Ðема внеÑено код" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Снимки" @@ -4284,7 +4313,8 @@ msgstr "Снимки од податоци" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" -msgstr "Кога да им Ñе иÑпраќаат ÑтатиÑтички податоци на status.net Ñерверите" +msgstr "" +"Кога да им Ñе иÑпраќаат ÑтатиÑтички податоци на status.net опÑлужувачите" #: actions/snapshotadminpanel.php:217 msgid "Frequency" @@ -4310,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 "Ðе можев да ја зачувам претплатата." @@ -4488,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 "Го немате блокирано тој кориÑник." @@ -4517,8 +4544,8 @@ msgstr "Претплатата е откажана" msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -"Лиценцата на потокот на Ñледачот „%1$s“ не е компатибилна Ñо лиценцата на " -"веб-Ñтраницата „%2$s“." +"Лиценцата на каналот на Ñледачот „%1$s“ не е Ñоодветна на лиценцата на " +"мрежното меÑто „%2$s“." #. TRANS: User admin panel title #: actions/useradminpanel.php:59 @@ -4528,7 +4555,7 @@ msgstr "КориÑник" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "КориÑнички нагодувања за оваа StatusNet веб-Ñтраница." +msgstr "КориÑнички нагодувања за ова StatusNet-мрежно меÑто." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4603,7 +4630,7 @@ msgstr "" "за забелешките на овој кориÑник. Ðко не Ñакате да Ñе претплатите, едноÑтавно " "кликнете на „Одбиј“" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Лиценца" @@ -4639,7 +4666,7 @@ msgid "" "subscription. Your subscription token is:" msgstr "" "Претплатата е одобрена, но не е зададена обратна URL-адреÑа. Проверете ги " -"инÑтрукциите на веб-Ñтраницата за да дознаете како Ñе одобрува претплата. " +"инÑтрукциите на мрежното меÑто за да дознаете како Ñе одобрува претплата. " "Жетонот на Вашата претплата е:" #: actions/userauthorization.php:266 @@ -4653,7 +4680,7 @@ msgid "" "subscription." msgstr "" "Претплатата е одбиена, но не е зададена обратна URL-адреÑа. Проверете ги " -"инÑтрукциите на веб-Ñтраницата за да дознаете како Ñе одбива претплата во " +"инÑтрукциите на мрежното меÑто за да дознаете како Ñе одбива претплата во " "потполноÑÑ‚." #: actions/userauthorization.php:303 @@ -4734,43 +4761,43 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Подновувања од %1$s на %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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 "" -"Оваа веб-Ñтраница работи на %1$s верзија %2$s, ÐвторÑки права 2008-2010 " +"Ова мрежно меÑто работи на %1$s верзија %2$s, ÐвторÑки права 2008-2010 " "StatusNet, Inc. и учеÑници." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "УчеÑници" -#: actions/version.php:168 +#: 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 "" -"StatusNet е Ñлободен ÑофтверÑки програм: можете да го редиÑтрибуирате и/или " -"менувате под уÑловите на Општата јавна лиценца ГÐУ Ðферо Ñпоред одредбите на " -"Фондацијата за Ñлободен Ñофтвер, верзија 3 на лиценцата, или (по Ваш избор) " -"било која подоцнежна верзија. " +"StatusNet е Ñлободен програм: можете да го редиÑтрибуирате и/или менувате " +"под уÑловите на Општата јавна лиценца ГÐУ Ðферо Ñпоред одредбите на " +"Фондацијата за Ñлободна програмÑка опрема, верзија 3 на лиценцата, или (по " +"Ваш избор) било која подоцнежна верзија. " -#: actions/version.php:174 +#: 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 " @@ -4782,7 +4809,7 @@ msgstr "" "или ПОГОДÐОСТ ЗРОПРЕДЕЛЕÐРЦЕЛ. Погледајте ја Општата јавна лиценца ГÐУ " "Ðферо за повеќе подробноÑти. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4791,94 +4818,141 @@ msgstr "" "Треба да имате добиено примерок од Општата јавна лиценца ГÐУ Ðферо заедно Ñо " "овој програм. Ðко ја немате, погледајте %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Приклучоци" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Верзија" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Ðвтор(и)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Грешка во базата на податоци при вметнувањето на хеш-ознаката: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4886,72 +4960,122 @@ msgstr "" "Премногу дуплирани пораки во прекратко време; здивнете малку и продолжете за " "неколку минути." -#: classes/Notice.php:266 +#. 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 "Забрането Ви е да објавувате забелешки на оваа веб-Ñтраница." +msgstr "Забрането Ви е да објавувате забелешки на ова мрежно меÑто." -#: classes/Notice.php:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 "Ðе можев да ги зачувам информациите за локалните групи." @@ -5002,188 +5126,188 @@ msgid "Untitled page" msgstr "Страница без наÑлов" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Главна навигација" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Лично" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Промена на е-пошта, аватар, лозинка, профил" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "Поврзи Ñе" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" -msgstr "Промена на поÑтавките на веб-Ñтраницата" +msgstr "Промена на поÑтавките на мрежното меÑто" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Ðдмин" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Поканете пријатели и колеги да Ви Ñе придружат на %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Покани" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Одјава" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "РегиÑтрација" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ðајава" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Ðајава" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ðапомош!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Помош" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Пребарајте луѓе или текÑÑ‚" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" -msgstr "Ðапомена за веб-Ñтраницата" +msgstr "Ðапомена за мрежното меÑто" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Локални прегледи" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Ðапомена за Ñтраницата" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Споредна навигација" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Помош" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "За" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "ЧПП" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "УÑлови" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "ПриватноÑÑ‚" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Изворен код" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Контакт" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Значка" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Лиценца на програмот StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5193,38 +5317,38 @@ msgstr "" "%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** е ÑÐµÑ€Ð²Ð¸Ñ Ð·Ð° микроблогирање." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: 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 "" -"Работи на [StatusNet](http://status.net/) Ñофтверот за микроблогирање, " -"верзија %s, доÑтапен пд [GNU Affero General Public License](http://www.fsf." -"org/licensing/licenses/agpl-3.0.html)." +"Работи на [StatusNet](http://status.net/) - програмÑка опрема за " +"микроблогирање, верзија %s, доÑтапна под [GNU Affero General Public License]" +"(http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" -msgstr "Лиценца на Ñодржините на веб-Ñтраницата" +msgstr "Лиценца на Ñодржините на мрежното меÑто" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Содржината и податоците на %1$s Ñе лични и доверливи." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5232,34 +5356,34 @@ msgstr "" "права задржани." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "Сите Ñодржини и податоци на %1$s Ñе доÑтапни под лиценцата %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: 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:1193 +#: lib/action.php:1203 msgid "After" -msgstr "По" +msgstr "Следно" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" -msgstr "Пред" +msgstr "Претходно" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. #: lib/activity.php:122 @@ -5281,7 +5405,7 @@ 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 "Ðе можете да ја менувате оваа веб-Ñтраница." +msgstr "Ðе можете да врште измени на ова мрежно меÑто." #. TRANS: Client error message throw when a certain panel's settings cannot be changed. #: lib/adminpanelaction.php:110 @@ -5305,64 +5429,64 @@ msgid "Unable to delete design setting." msgstr "Ðе можам да ги избришам нагодувањата за изглед." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" -msgstr "ОÑновни нагодувања на веб-Ñтраницата" +msgstr "ОÑновни нагодувања на мрежното меÑто" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" -msgstr "Веб-Ñтраница" +msgstr "Мреж. меÑто" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" -msgstr "Конфигурација на изгледот" +msgstr "ПоÑтавки на изгледот" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Изглед" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Конфигурација на кориÑник" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "КориÑник" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Конфигурација на приÑтапот" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Конфигурација на патеки" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Конфигурација на ÑеÑиите" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Уреди објава за веб-Ñтраницата" +msgstr "Уреди објава за мрежното меÑто" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "ПоÑтавки за Ñнимки" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API-реÑурÑот бара да може и да чита и да запишува, а вие можете Ñамо да " @@ -5495,11 +5619,11 @@ msgstr "Забелешки кадешто Ñе јавува овој прилоРmsgid "Tags for this attachment" msgstr "Ознаки за овој прилог" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Менувањето на лозинката не уÑпеа" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Менувањето на лозинка не е дозволено" @@ -5593,14 +5717,14 @@ msgstr "Име и презиме: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Локација: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Домашна Ñтраница: %s" @@ -5618,7 +5742,7 @@ msgid "" "same server." msgstr "" "%s е далечинÑки профил; можете да праќате директни пораки Ñамо до кориÑници " -"на иÑтиот Ñервер." +"на иÑтиот опÑлужувач." #. 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. @@ -5806,9 +5930,9 @@ msgstr "" "off - иÑклучи извеÑтувања\n" "help - прикажи ја оваа помош\n" "follow <nickname> - претплати Ñе на кориÑник\n" -"groups - лиÑта на групи кадешто членувате\n" -"subscriptions - лиÑта на луѓе кои ги Ñледите\n" -"subscribers - лиÑта на луѓе кои ве Ñледат\n" +"groups - ÑпиÑок на групи кадешто членувате\n" +"subscriptions - ÑпиÑок на луѓе кои ги Ñледите\n" +"subscribers - ÑпиÑок на луѓе кои ве Ñледат\n" "leave <nickname> - откажи претплата на кориÑник\n" "d <nickname> <text> - директна порака за кориÑник\n" "get <nickname> - прикажи поÑледна забелешка на кориÑник\n" @@ -5820,7 +5944,7 @@ msgstr "" "reply #<notice_id> - одговори на забелешка Ñо даден id\n" "reply <nickname> - одговори на поÑледна забелешка на кориÑник\n" "join <group> - зачлени Ñе во група\n" -"login - Дај врÑка за најавување на веб-интерфејÑот\n" +"login - Дај врÑка за најавување на поÑредникот\n" "drop <group> - напушти група\n" "stats - прикажи мои ÑтатиÑтики\n" "stop - иÑто што и 'off'\n" @@ -5944,7 +6068,7 @@ msgstr "Ознака" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "Одберете ознака за да ја уточните лиÑтата" +msgstr "Одберете ознака за да го ограничите ÑпиÑокот" #: lib/galleryaction.php:143 msgid "Go" @@ -6135,8 +6259,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s Ñега ги Ñледи Вашите забелешки на %2$s." +#: 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 "" +"Доколку Ñметате дека Ñметкава Ñе злоупотребува, тогаш можете да ја блокирате " +"од ÑпиÑокот на претплатници и да ја пријавите како Ñпам кај админиÑтраторите " +"на %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6163,19 +6297,19 @@ msgstr "" "$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Биографија: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ðова е-поштенÑка адреÑа за објавување на %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6197,30 +6331,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð½Ð° %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Потврда за СМС" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: потврдете го како Ñвој телефонÑкиов број Ñо Ñледниов код:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s Ве подбуцна" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6248,13 +6382,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ðова приватна порака од %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6288,13 +6422,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) додаде Ваша забелешка како омилена" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6325,7 +6459,7 @@ msgstr "" "\n" "%4$s\n" "\n" -"Погледнете лиÑта на омилените забелешки на %1$s тука:\n" +"Погледнете ÑпиÑок на омилените забелешки на %1$s тука:\n" "\n" "%5$s\n" "\n" @@ -6333,7 +6467,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6344,13 +6478,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) Ви иÑпрати забелешка што Ñака да ја прочитате" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6391,7 +6525,7 @@ msgstr "" "\n" "%6$s\n" "\n" -"Еве лиÑта за Ñите @-одговори за ваÑ:\n" +"Еве ÑпиÑок на Ñите @-одговори за ваÑ:\n" "\n" "%7$s\n" "\n" @@ -6413,7 +6547,7 @@ msgstr "" "впуштите во разговор Ñо други кориÑници. Луѓето можат да ви иÑпраќаат пораки " "што ќе можете да ги видите Ñамо Вие." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "од" @@ -6474,27 +6608,27 @@ 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 не е поддржан тип на податотека на овој Ñервер." +msgstr "%s не е поддржан тип на податотека на овој опÑлужувач." #: lib/messageform.php:120 msgid "Send a direct notice" @@ -6547,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:568 msgid "in context" msgstr "во контекÑÑ‚" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Повторено од" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Одговори на забелешкава" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Одговор" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Забелешката е повторена" @@ -6701,7 +6835,7 @@ msgstr "Дневен проÑек" msgid "All groups" msgstr "Сите групи" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Ðеимплементиран метод." @@ -6725,7 +6859,7 @@ msgstr "Избрани" msgid "Popular" msgstr "Популарно" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Ðема return-to аргументи." @@ -6746,7 +6880,7 @@ msgstr "Повтори ја забелешкава" msgid "Revoke the \"%s\" role from this user" msgstr "Одземи му ја улогата „%s“ на кориÑников" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Ðе е зададен кориÑник за еднокориÑничкиот режим." @@ -6760,7 +6894,7 @@ msgstr "Стави го кориÑников во пеÑочен режим" #: lib/searchaction.php:120 msgid "Search site" -msgstr "Пребарај по веб-Ñтраницата" +msgstr "Пребарај по мрежното меÑто" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6780,7 +6914,7 @@ msgstr "Луѓе" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "Пронајдете луѓе на оваа веб-Ñтраница" +msgstr "Пронајдете луѓе на ова мрежно меÑто" #: lib/searchgroupnav.php:83 msgid "Find content of notices" @@ -6788,7 +6922,7 @@ msgstr "Пронајдете Ñодржини на забелешките" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "Пронајдете групи на оваа веб-Ñтраница" +msgstr "Пронајдете групи на ова мрежно меÑто" #: lib/section.php:89 msgid "Untitled section" @@ -6844,6 +6978,52 @@ msgstr "Облак од ознаки за луѓе" msgid "None" msgstr "Без ознаки" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" +"ОпÑлужувачот не може да Ñе Ñправи Ñо подигања на изгледи без ZIP-поддршка." + +#: 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 "" +"Подигнатиот изглед е преголем; мора да биде помал од %d бајти (незбиен)." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Ðеважечки архив за изглеедот: недоÑтаÑува податотеката 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 "" +"Изгледот Ñодржи неважечки назив на податотека или папка. Дозволени Ñе Ñамо " +"ASCII-букви, бројки, долна црта и знак за минуÑ." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Изгледот Ñодржи податотека од типот „.%s“, која не е дозволена." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Грешка при отворањето на архивот за мотив." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Ðајактивни објавувачи" @@ -6924,56 +7104,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "пред %d минути" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "пред %d чаÑа" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" -msgstr "пред %d денови" +msgstr "пред %d дена" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "пред %d меÑеца" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "пред една година" diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po index 5e5539e57..ab0506e34 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:41+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:47+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Tilgang" @@ -84,24 +84,24 @@ msgid "Save" msgstr "Lagre" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Ingen slik side." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -114,7 +114,7 @@ msgid "No such user." msgstr "Ingen slik bruker" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s og venner, side %2$d" @@ -122,39 +122,39 @@ 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Mating for venner av %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Mating for venner av %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Mating for venner av %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: 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 postet noe enda." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -164,85 +164,85 @@ msgstr "" "eller post noe selv." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" "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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Du og venner" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Oppdateringer fra %1$s og venner pÃ¥ %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "API-metode ikke funnet!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 metoden krever en POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "Du mÃ¥ angi en verdi for parameteren 'device' med en av: sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Klarte ikke Ã¥ oppdatere bruker." @@ -264,7 +264,7 @@ msgstr "Klarte ikke Ã¥ lagre profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -341,30 +341,30 @@ msgstr "Fant ikke mottakeren." msgid "Can't send direct messages to users who aren't your friend." msgstr "Kan ikke sende direktemeldinger til brukere du ikke er venn med." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Fant ingen status med den ID-en." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Denne statusen er allerede en favoritt." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Kunne ikke opprette favoritt." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Den statusen er ikke en favoritt." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -391,123 +391,128 @@ msgstr "Kunne ikke bestemme kildebruker." msgid "Could not find target user." msgstr "Kunne ikke finne mÃ¥lbruker." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Kallenavn kan kun ha smÃ¥ bokstaver og tall og ingen mellomrom." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Det nicket er allerede i bruk. Prøv et annet." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ugyldig nick." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Hjemmesiden er ikke en gyldig URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Beklager, navnet er for langt (max 250 tegn)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Beskrivelsen er for lang (maks %d tegn)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Plassering er for lang (maks 255 tegn)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "For mange alias! Maksimum %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Ugyldig alias: «%s»." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Aliaset «%s» er allerede i bruk. Prøv et annet." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: 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 kallenavn." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Gruppe ikke funnet." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Du er allerede medlem av den gruppen." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: 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 har blitt blokkert fra den gruppen av administratoren." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Kunne ikke legge bruker %1$s til gruppe %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Du er ikke et medlem av denne gruppen." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: 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 bruker %1$s fra gruppe %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "%s sine 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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1$s grupper %2$s er et medlem av." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s grupper" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -518,15 +523,15 @@ msgstr "Ugyldig symbol." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -590,12 +595,12 @@ msgstr "" "$s-konto til tredjeparter du stoler pÃ¥." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Konto" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -603,8 +608,8 @@ msgid "Nickname" msgstr "Nick" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Passord" @@ -620,11 +625,11 @@ msgstr "Tillat" msgid "Allow or deny access to your account information." msgstr "Tillat eller nekt tilgang til din kontoinformasjon." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Denne metoden krever en POST eller DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Du kan ikke slette statusen til en annen bruker." @@ -641,59 +646,63 @@ msgstr "Kan ikke gjenta din egen notis." msgid "Already repeated that notice." msgstr "Allerede gjentatt den notisen." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Status slettet." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Ingen status med den ID-en funnet." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ikke funnet." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoritter fra %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s oppdateringer markert som favoritt av %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Oppdateringer som nevner %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s oppdateringer som svarer pÃ¥ oppdateringer fra %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s offentlig tidslinje" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s oppdateringer fra alle sammen!" @@ -708,16 +717,20 @@ msgstr "Gjentatt til %s" msgid "Repeats of %s" msgstr "Repetisjoner av %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notiser merket med %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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" @@ -810,11 +823,11 @@ msgstr "Avatar slettet." msgid "You already blocked that user." msgstr "Du har allerede blokkert den brukeren." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Blokker brukeren" -#: actions/block.php:130 +#: 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 " @@ -829,7 +842,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -838,7 +851,7 @@ msgstr "Nei" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Ikke blokker denne brukeren" @@ -847,7 +860,7 @@ msgstr "Ikke blokker denne brukeren" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -855,11 +868,11 @@ msgid "Yes" msgstr "Ja" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Blokker denne brukeren" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Kunne ikke lagre blokkeringsinformasjon." @@ -986,7 +999,7 @@ msgstr "Du er ikke eieren av dette programmet." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1020,7 +1033,7 @@ msgstr "Slett dette programmet" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Ikke logget inn." @@ -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" @@ -1091,45 +1104,53 @@ msgstr "Utseende" msgid "Design settings for this StatusNet site." msgstr "Utseendeinnstillinger for dette StatusNet-nettstedet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Ugyldig logo-URL." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema ikke tilgjengelig: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Endre logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Nettstedslogo" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Endre tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Nettstedstema" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema for nettstedet." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Egendefinert tema" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +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" msgstr "Endre bakgrunnsbilde" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Bakgrunn" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1138,57 +1159,65 @@ msgstr "" "Du kan laste opp et bakgrunnsbilde for nettstedet. Maks filstørrelse er %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "PÃ¥" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Av" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "SlÃ¥ pÃ¥ eller av bakgrunnsbilde." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Gjenta bakgrunnsbildet" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Endre farger" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Innhold" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Sidelinje" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Lenker" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avansert" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Egendefinert CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Bruk standard" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Gjenopprett standardutseende" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Tilbakestill til standardverdier" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1198,7 +1227,7 @@ msgstr "Tilbakestill til standardverdier" msgid "Save" msgstr "Lagre" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Lagre utseende" @@ -1312,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." @@ -1468,7 +1498,7 @@ msgid "Cannot normalize that email address" msgstr "Klarer ikke normalisere epostadressen" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ugyldig e-postadresse." @@ -1695,13 +1725,13 @@ msgstr "Bruker har allerede denne rollen." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Ingen profil oppgitt." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ingen profil med den ID'en." @@ -1840,7 +1870,7 @@ msgstr "Gjør denne brukeren til administrator" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s tidslinje" @@ -2258,40 +2288,40 @@ msgstr "Du er ikke et medlem av den gruppen." msgid "%1$s left group %2$s" msgstr "%1$s forlot gruppe %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Allerede innlogget." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Feil brukernavn eller passord" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Feil ved innstilling av bruker. Du er mest sannsynlig kke autorisert." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Logg inn" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Logg inn pÃ¥ nettstedet" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Husk meg" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Logg inn automatisk i framtiden. Ikke for datamaskiner du deler med andre!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Mistet eller glemt passordet?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2299,11 +2329,11 @@ msgstr "" "Av sikkerhetsmessige Ã¥rsaker, skriv inn brukernavn og passord pÃ¥ nytt før du " "endrer innstillingene dine." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Logg inn med brukernavn og passord." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2454,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Ã¥." @@ -2509,30 +2539,30 @@ msgstr "Du har ikke tillatt noen programmer Ã¥ bruke din konto." msgid "Developers can edit the registration settings for their applications " msgstr "Utviklere kan redigere registreringsinnstillingene for sine program " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Notisen har ingen profil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s sin status pÃ¥ %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Innholdstypen %s støttes ikke." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2637,7 +2667,7 @@ msgid "6 or more characters" msgstr "6 eller flere tegn" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Bekreft" @@ -2649,11 +2679,11 @@ msgstr "Samme som passord ovenfor" msgid "Change" msgstr "Endre" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Passord mÃ¥ være minst 6 tegn." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Passordene var ikke like." @@ -2674,7 +2704,7 @@ msgid "Password saved." msgstr "Passordet ble lagret" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Stier" @@ -2877,43 +2907,43 @@ msgstr "Profilinformasjon" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 smÃ¥ bokstaver eller nummer, ingen punktum eller mellomrom" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Fullt navn" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Hjemmesiden" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL til din hjemmeside, blogg, eller profil pÃ¥ annen nettside." -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Beskriv degselv og dine interesser med %d tegn" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Beskriv degselv og dine interesser" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Om meg" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Plassering" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Hvor du er, for eksempel «By, fylke (eller region), land»" @@ -2956,7 +2986,7 @@ msgid "" msgstr "" "Abonner automatisk pÃ¥ de som abonnerer pÃ¥ meg (best for ikke-mennesker)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "«Om meg» er for lang (maks %d tegn)." @@ -3217,7 +3247,7 @@ msgstr "Passordet mÃ¥ bestÃ¥ av 6 eller flere tegn." msgid "Password and confirmation do not match." msgstr "Passord og bekreftelse samsvarer ikke." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Feil ved innstilling av bruker." @@ -3225,39 +3255,39 @@ msgstr "Feil ved innstilling av bruker." msgid "New password successfully saved. You are now logged in." msgstr "Nytt passord ble lagret. Du er nÃ¥ logget inn." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Beklager, kun inviterte personer kan registrere seg." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Beklager, ugyldig invitasjonskode." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registrering vellykket" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrer" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registrering ikke tillatt." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Du kan ikke registrere deg om du ikke godtar lisensvilkÃ¥rene." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "E-postadressen finnes allerede." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ugyldig brukernavn eller passord" -#: actions/register.php:343 +#: 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. " @@ -3265,56 +3295,56 @@ msgstr "" "Med dette skjemaet kan du opprette en ny konto. Du kan sÃ¥ poste notiser og " "knytte deg til venner og kollegaer. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 smÃ¥ bokstaver eller nummer, ingen punktum eller mellomrom. PÃ¥krevd." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 eller flere tegn. PÃ¥krevd." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Samme som passord over. Kreves." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-post" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Kun brukt for oppdateringer, kunngjøringer og passordgjenoppretting" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Lengre navn, helst ditt \"ekte\" navn" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3323,7 +3353,7 @@ msgstr "" "Mine tekster og filer er tilgjengelig under %s med unntak av disse private " "dataene: passord, e-postadresse, direktemeldingsadresse og telefonnummer." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3356,7 +3386,7 @@ msgstr "" "\n" "Takk for at du registrerte deg og vi hÃ¥per du kommer til Ã¥ like tjenesten." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3440,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" @@ -3475,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Ã¥." @@ -3493,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)." @@ -3514,7 +3544,7 @@ msgstr "Du kan ikke trekke tilbake brukerroller pÃ¥ dette nettstedet." msgid "User doesn't have this role." msgstr "Brukeren har ikke denne rollen." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3528,7 +3558,7 @@ msgstr "Brukeren er allerede i sandkassen." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Økter" @@ -3571,7 +3601,7 @@ msgid "Icon" msgstr "Ikon" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Navn" @@ -3582,12 +3612,12 @@ msgid "Organization" msgstr "Organisasjon" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3677,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." @@ -3750,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" @@ -3764,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." @@ -3784,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." @@ -3797,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" @@ -3872,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)." @@ -4025,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." @@ -4101,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 @@ -4201,7 +4230,7 @@ msgstr "Ingen kode skrevet inn" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4262,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" @@ -4387,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" @@ -4401,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 "" @@ -4428,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." @@ -4539,7 +4564,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Lisens" @@ -4661,18 +4686,18 @@ msgstr "Prøv Ã¥ [søke etter grupper](%%action.groupsearch%%) og bli med i dem. #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Oppdateringar fra %1$s pÃ¥ %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4681,11 +4706,11 @@ msgstr "" "Dette nettstedet drives av %1$s versjon %2$s, Copyright 2008-2010 StatusNet, " "Inc. og andre bidragsytere." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Bidragsytere" -#: actions/version.php:168 +#: 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 " @@ -4693,7 +4718,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4701,173 +4726,269 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Programtillegg" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versjon" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Forfatter(e)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -4919,188 +5040,188 @@ msgid "Untitled page" msgstr "Side uten tittel" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personlig" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Endre e-posten, avateren, passordet og profilen din" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Koble til tjenester" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Koble til" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Endre nettstedskonfigurasjon" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Inviter venner og kollegaer til Ã¥ bli med deg pÃ¥ %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Inviter" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Logg ut fra nettstedet" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Logg ut" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Opprett en konto" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrer" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Log inn pÃ¥ nettstedet" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Logg inn" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hjelp meg." -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Hjelp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Søk etter personer eller tekst" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Søk" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Nettstedsnotis" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Lokale visninger" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Sidenotis" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Hjelp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Om" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "OSS/FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Kilde" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Programvarelisens for StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5110,13 +5231,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** er en mikrobloggingtjeneste." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5125,49 +5246,49 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 msgid "After" msgstr "Etter" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Før" @@ -5215,64 +5336,64 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Nettsted" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Utseende" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Brukerkonfigurasjon" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Bruker" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Tilgangskonfigurasjon" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Stikonfigurasjon" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Rediger nettstedsnotis" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5404,11 +5525,11 @@ msgstr "Notiser hvor dette vedlegget forekommer" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Endring av passord mislyktes" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Endring av passord er ikke tillatt" @@ -5502,14 +5623,14 @@ msgstr "Fullt navn: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Posisjon: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Hjemmeside: %s" @@ -6004,8 +6125,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s lytter nÃ¥ til dine notiser pÃ¥ %2$s." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6031,19 +6159,19 @@ msgstr "" "Endre e-postadressen din eller dine varslingsvalg pÃ¥ %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Biografi: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ny e-postadresse for posting til %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6065,30 +6193,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS-bekreftelse" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: bekreft telefonnummeret ditt med denne koden:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Du har blitt knuffet av %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6116,13 +6244,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ny privat melding fra %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6156,13 +6284,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s /@%s) la din notis til som en favoritt" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6200,7 +6328,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6211,13 +6339,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) sendte en notis for din oppmerksomhet" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6280,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" @@ -6335,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." @@ -6408,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" @@ -6562,7 +6690,7 @@ msgstr "Daglig gjennomsnitt" msgid "All groups" msgstr "Alle grupper" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Ikke-implementert metode." @@ -6587,7 +6715,7 @@ msgstr "" msgid "Popular" msgstr "" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "" @@ -6608,7 +6736,7 @@ msgstr "Repeter denne notisen" msgid "Revoke the \"%s\" role from this user" msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6708,6 +6836,50 @@ msgstr "" msgid "None" msgstr "Ingen" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Oppdatering av avatar mislyktes." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Feil ved oppdatering av fjernprofil." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6791,56 +6963,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "noen fÃ¥ sekunder siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "omtrent ett minutt siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "omtrent %d minutter siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "omtrent én time siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "omtrent %d timer siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "omtrent én dag siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "omtrent %d dager siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "omtrent én mÃ¥ned siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "omtrent %d mÃ¥neder siden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "omtrent ett Ã¥r siden" diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po index 2fb17c45f..b704f8aef 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:48+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:12:58+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Toegang" @@ -85,24 +86,24 @@ msgid "Save" msgstr "Opslaan" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Deze pagina bestaat niet." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -115,7 +116,7 @@ msgid "No such user." msgstr "Onbekende gebruiker." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s en vrienden, pagina %2$d" @@ -123,33 +124,33 @@ msgstr "%1$s en vrienden, pagina %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 en vrienden" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Feed voor vrienden van %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Feed voor vrienden van %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Feed voor vrienden van %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -157,7 +158,7 @@ msgstr "" "Dit is de tijdlijn voor %s en vrienden, maar niemand heeft nog mededelingen " "geplaatst." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -167,78 +168,78 @@ msgstr "" "groups%%) of plaats zelf berichten." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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)." -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 +#: 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 "" "U kunt een [gebruiker aanmaken](%%%%action.register%%%%) en %s dan porren of " "een bericht sturen." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "U en vrienden" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Updates van %1$s en vrienden op %2$s." -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "De API-functie is niet aangetroffen." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Deze methode vereist een POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -246,7 +247,7 @@ msgstr "" "U moet een parameter met de naam \"device\" opgeven met een van de volgende " "waardes: sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Het was niet mogelijk de gebruiker bij te werken." @@ -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:210 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 @@ -344,30 +345,30 @@ msgstr "" "U kunt geen privéberichten sturen aan gebruikers die niet op uw " "vriendenlijst staan." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Er is geen status gevonden met dit ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Deze mededeling staat al in uw favorietenlijst." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Het was niet mogelijk een favoriet aan te maken." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Deze mededeling staat niet in uw favorietenlijst." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 msgid "Could not delete favorite." 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." @@ -397,126 +399,130 @@ msgstr "Het was niet mogelijk de brongebruiker te bepalen." msgid "Could not find target user." msgstr "Het was niet mogelijk de doelgebruiker te vinden." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "De gebruikersnaam mag alleen kleine letters en cijfers bevatten. Spaties " "zijn niet toegestaan." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "" "De opgegeven gebruikersnaam is al in gebruik. Kies een andere gebruikersnaam." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ongeldige gebruikersnaam!" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "De thuispagina is geen geldige URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "De volledige naam is te lang (maximaal 255 tekens)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "De beschrijving is te lang (maximaal %d tekens)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Locatie is te lang (maximaal 255 tekens)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Te veel aliassen! Het maximale aantal is %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Ongeldige alias: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "De alias \"%s\" wordt al gebruikt. Geef een andere alias op." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Een alias kan niet hetzelfde zijn als de gebruikersnaam." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "De groep is niet aangetroffen." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "U bent al lid van die groep." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Een beheerder heeft ingesteld dat u geen lid mag worden van die groep." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Het was niet mogelijk gebruiker %1$s toe te voegen aan de groep %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "U bent geen lid van deze groep." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Het was niet mogelijk gebruiker %1$s uit de group %2$s te verwijderen." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Groepen van %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Groepen op de site %1$s waar %2$s lid van is." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s groepen" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -527,15 +533,15 @@ msgstr "Ongeldig 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -607,12 +613,12 @@ msgstr "" "toegang tot uw gebruiker bij %4$s aan derde partijen die u vertrouwt." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Gebruiker" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -620,8 +626,8 @@ msgid "Nickname" msgstr "Gebruikersnaam" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Wachtwoord" @@ -637,11 +643,11 @@ msgstr "Toestaan" msgid "Allow or deny access to your account information." msgstr "Toegang tot uw gebruikersgegevens toestaan of ontzeggen." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Deze methode vereist een POST of DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "U kunt de status van een andere gebruiker niet verwijderen." @@ -658,61 +664,65 @@ msgstr "U kunt uw eigen mededeling niet herhalen." msgid "Already repeated that notice." msgstr "U hebt die mededeling al herhaald." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "De status is verwijderd." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Er is geen status gevonden met dit ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Niet aangetroffen." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favorieten van %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s updates op de favorietenlijst geplaatst door %2$s / %3$s" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Updates over %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s updates die een reactie zijn op updates van %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s publieke tijdlijn" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s updates van iedereen" @@ -727,16 +737,20 @@ msgstr "Herhaald naar %s" msgid "Repeats of %s" msgstr "Herhaald van %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Mededelingen met het label %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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:657 msgid "Delete" msgstr "Verwijderen" @@ -831,11 +845,11 @@ msgstr "De avatar is verwijderd." msgid "You already blocked that user." msgstr "U hebt deze gebruiker reeds geblokkeerd." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Gebruiker blokkeren" -#: actions/block.php:130 +#: 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 " @@ -850,7 +864,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -859,7 +873,7 @@ msgstr "Nee" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Gebruiker niet blokkeren" @@ -868,7 +882,7 @@ msgstr "Gebruiker niet blokkeren" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -876,11 +890,11 @@ msgid "Yes" msgstr "Ja" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Deze gebruiker blokkeren" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Het was niet mogelijk om de blokkadeinformatie op te slaan." @@ -1007,7 +1021,7 @@ msgstr "U bent niet de eigenaar van deze applicatie." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Er is een probleem met uw sessietoken." @@ -1041,7 +1055,7 @@ msgstr "Deze applicatie verwijderen" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Niet aangemeld." @@ -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:657 msgid "Delete this notice" msgstr "Deze mededeling verwijderen" @@ -1113,45 +1127,53 @@ msgstr "Uiterlijk" msgid "Design settings for this StatusNet site." msgstr "Instellingen voor de vormgeving van deze StatusNet-website." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "De logo-URL is ongeldig." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "De vormgeving is niet beschikbaar: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Logo wijzigen" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Websitelogo" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Vormgeving wijzigen" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Vormgeving website" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Mogelijke vormgevingen voor deze website." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Aangepaste vormgeving" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "U kunt een vormgeving voor StatusNet uploaden als ZIP-archief." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Achtergrondafbeelding wijzigen" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Achtergrond" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1161,57 +1183,65 @@ msgstr "" "bestandsgrootte is %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Aan" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Uit" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Achtergrondafbeelding inschakelen of uitschakelen." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Achtergrondafbeelding naast elkaar" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Kleuren wijzigen" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Inhoud" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Menubalk" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Verwijzingen" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Uitgebreid" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Aangepaste CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Standaardinstellingen gebruiken" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Standaardontwerp toepassen" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Standaardinstellingen toepassen" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1221,7 +1251,7 @@ msgstr "Standaardinstellingen toepassen" msgid "Save" msgstr "Opslaan" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Ontwerp opslaan" @@ -1335,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." @@ -1493,7 +1524,7 @@ msgid "Cannot normalize that email address" msgstr "Kan het emailadres niet normaliseren" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Geen geldig e-mailadres." @@ -1726,13 +1757,13 @@ msgstr "Deze gebruiker heeft deze rol al." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Er is geen profiel opgegeven." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Er is geen profiel met dat ID." @@ -1875,7 +1906,7 @@ msgstr "Deze gebruiker beheerder maken" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s tijdlijn" @@ -2306,41 +2337,41 @@ msgstr "U bent geen lid van deze groep" msgid "%1$s left group %2$s" msgstr "%1$s heeft de groep %2$s verlaten" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "U bent al aangemeld." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "De gebruikersnaam of wachtwoord is onjuist." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Er is een fout opgetreden bij het maken van de instellingen. U hebt " "waarschijnlijk niet de juiste rechten." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Aanmelden" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Aanmelden" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Aanmeldgegevens onthouden" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Voortaan automatisch aanmelden. Niet gebruiken op gedeelde computers!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Wachtwoord kwijt of vergeten?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2348,11 +2379,11 @@ msgstr "" "Om veiligheidsredenen moet u uw gebruikersnaam en wachtwoord nogmaals " "invoeren alvorens u uw instellingen kunt wijzigen." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Aanmelden met uw gebruikersnaam en wachtwoord." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2503,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" @@ -2565,30 +2595,30 @@ msgid "Developers can edit the registration settings for their applications " msgstr "" "Ontwikkelaars kunnen de registratiegegevens voor hun applicaties bewerken " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Mededeling heeft geen profiel." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Status van %1$s op %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Inhoudstype %s wordt niet ondersteund." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2691,7 +2721,7 @@ msgid "6 or more characters" msgstr "Zes of meer tekens" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Bevestigen" @@ -2703,11 +2733,11 @@ msgstr "Gelijk aan het wachtwoord hierboven" msgid "Change" msgstr "Wijzigen" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Het wachtwoord moet zes of meer tekens bevatten." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "De wachtwoorden komen niet overeen." @@ -2728,7 +2758,7 @@ msgid "Password saved." msgstr "Het wachtwoord is opgeslagen." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Paden" @@ -2934,43 +2964,43 @@ msgstr "Profielinformatie" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 kleine letters of cijfers, geen leestekens of spaties" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Volledige naam" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Thuispagina" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "De URL van uw thuispagina, blog of profiel bij een andere website" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Geef een beschrijving van uzelf en uw interesses in %d tekens" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Beschrijf uzelf en uw interesses" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Beschrijving" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Locatie" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Waar u bent, bijvoorbeeld \"woonplaats, land\" of \"postcode, land\"" @@ -3014,7 +3044,7 @@ msgstr "" "Automatisch abonneren bij abonnement op mij (beste voor automatische " "processen)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "De beschrijving is te lang (maximaal %d tekens)." @@ -3283,7 +3313,7 @@ msgstr "Het wachtwoord moet uit zes of meer tekens bestaan." msgid "Password and confirmation do not match." msgstr "Het wachtwoord en de bevestiging komen niet overeen." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Er is een fout opgetreden tijdens het instellen van de gebruiker." @@ -3291,39 +3321,39 @@ msgstr "Er is een fout opgetreden tijdens het instellen van de gebruiker." msgid "New password successfully saved. You are now logged in." msgstr "Het nieuwe wachtwoord is opgeslagen. U bent nu aangemeld." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "U kunt zich alleen registreren als u wordt uitgenodigd." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Sorry. De uitnodigingscode is ongeldig." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "De registratie is voltooid" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registreren" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registratie is niet toegestaan." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "U kunt zich niet registreren als u niet met de licentie akkoord gaat." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Het e-mailadres bestaat al." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ongeldige gebruikersnaam of wachtwoord." -#: actions/register.php:343 +#: 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. " @@ -3331,55 +3361,56 @@ msgstr "" "Via dit formulier kunt u een nieuwe gebruiker aanmaken. Daarna kunt u " "mededelingen uitsturen en contact maken met vrienden en collega's. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "1-64 kleine letters of cijfers, geen leestekens of spaties. Verplicht." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "Zes of meer tekens. Verplicht" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Gelijk aan het wachtwoord hierboven. Verplicht" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-mail" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Alleen gebruikt voor updates, aankondigingen en wachtwoordherstel" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Een langere naam, mogelijk uw echte naam" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Inhoud en gegevens van %1$s zijn persoonlijk en vertrouwelijk." +msgstr "" +"Ik begrijp dat inhoud en gegevens van %1$s persoonlijk en vertrouwelijk zijn." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Voor mijn teksten en bestanden rust het auteursrecht bij %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Ik ben de rechthebbende voor mijn teksten en bestanden." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Alle rechten voorbehouden." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3389,7 +3420,7 @@ msgstr "" "behalve de volgende privégegevens: wachtwoord, e-mailadres, IM-adres, " "telefoonnummer." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3423,7 +3454,7 @@ msgstr "" "Dank u wel voor het registreren en we hopen dat deze dienst u biedt wat u " "ervan verwacht." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3506,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:676 msgid "Repeated" msgstr "Herhaald" @@ -3544,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 @@ -3561,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)." @@ -3580,7 +3611,7 @@ msgstr "U kunt geen gebruikersrollen intrekken op deze website." msgid "User doesn't have this role." msgstr "Deze gebruiker heeft deze rol niet." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3594,7 +3625,7 @@ msgstr "Deze gebruiker is al in de zandbak geplaatst." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessies" @@ -3637,7 +3668,7 @@ msgid "Icon" msgstr "Icoon" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Naam" @@ -3648,12 +3679,12 @@ msgid "Organization" msgstr "Organisatie" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3744,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 @@ -3818,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" @@ -3832,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." @@ -3852,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." @@ -3865,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" @@ -3943,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 @@ -4279,7 +4310,7 @@ msgstr "Er is geen code ingevoerd" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Snapshots" @@ -4340,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." @@ -4522,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." @@ -4638,7 +4666,7 @@ msgstr "" "aangegeven dat u zich op de mededelingen van een gebruiker wilt abonneren, " "klik dan op \"Afwijzen\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licentie" @@ -4768,31 +4796,31 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Updates van %1$s op %2$s." -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: 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 "" -"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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Medewerkers" -#: actions/version.php:168 +#: 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 " @@ -4804,7 +4832,7 @@ msgstr "" "zoals gepubliceerd door de Free Software Foundation, versie 3 van de " "Licentie, of (naar uw keuze) elke latere versie. " -#: actions/version.php:174 +#: 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 " @@ -4816,7 +4844,7 @@ msgstr "" "GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU Affero General Public License " "voor meer details. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4825,99 +4853,146 @@ msgstr "" "Samen met dit programma hoort u een kopie van de GNU Affero General Public " "License te hebben ontvangen. Zo niet, zie dan %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Plug-ins" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versie" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Auteur(s)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "Ongeldige 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4925,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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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 " @@ -4942,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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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." @@ -5044,188 +5169,188 @@ msgid "Untitled page" msgstr "Naamloze pagina" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Primaire sitenavigatie" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Persoonlijk profiel en tijdlijn van vrienden" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Persoonlijk" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Uw e-mailadres, avatar, wachtwoord of profiel wijzigen" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Met andere diensten koppelen" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Koppelen" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Websiteinstellingen wijzigen" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Beheer" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Vrienden en collega's uitnodigen om u te vergezellen op %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Uitnodigingen" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Gebruiker afmelden" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Afmelden" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Gebruiker aanmaken" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registreren" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Gebruiker aanmelden" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Aanmelden" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Help me!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Help" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Naar gebruikers of tekst zoeken" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Zoeken" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Mededeling van de website" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Lokale weergaven" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Mededeling van de pagina" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Secundaire sitenavigatie" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Help" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Over" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "Veel gestelde vragen" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Gebruiksvoorwaarden" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacy" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Broncode" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contact" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Widget" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licentie van de StatusNet-software" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5235,13 +5360,13 @@ msgstr "" "broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** is een microblogdienst." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5253,20 +5378,20 @@ msgstr "" "www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licentie voor siteinhoud" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Inhoud en gegevens van %1$s zijn persoonlijk en vertrouwelijk." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5274,33 +5399,33 @@ msgstr "" "voorbehouden." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Auteursrechten op inhoud en gegevens rusten bij de respectievelijke " "gebruikers. Alle rechten voorbehouden." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" "Alle inhoud en gegevens van %1$s zijn beschikbaar onder de licentie %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginering" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Later" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Eerder" @@ -5348,64 +5473,64 @@ msgid "Unable to delete design setting." msgstr "Het was niet mogelijk om de ontwerpinstellingen te verwijderen." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Basisinstellingen voor de website" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Website" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Instellingen vormgeving" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Uiterlijk" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Gebruikersinstellingen" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Gebruiker" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Toegangsinstellingen" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Padinstellingen" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Sessieinstellingen" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Websitebrede mededeling opslaan" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Snapshotinstellingen" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "Het API-programma heeft lezen-en-schrijventoegang nodig, maar u hebt alleen " @@ -5538,11 +5663,11 @@ msgstr "Mededelingen die deze bijlage bevatten" msgid "Tags for this attachment" msgstr "Labels voor deze bijlage" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Wachtwoord wijzigen is mislukt" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Wachtwoord wijzigen is niet toegestaan" @@ -5637,14 +5762,14 @@ msgstr "Volledige naam: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Locatie: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Thuispagina: %s" @@ -6187,8 +6312,17 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s volgt nu uw berichten %2$s." +#: 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 "" +"Als u denkt dat deze gebruiker wordt misbruikt, dan kunt u deze voor uw " +"abonnees blokkeren en als spam rapporteren naar de websitebeheerders op %s." + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6214,19 +6348,19 @@ msgstr "" "Wijzig uw e-mailadres of instellingen op %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Beschrijving: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nieuw e-mailadres om e-mail te versturen aan %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6248,30 +6382,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS-bevestiging" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: bevestig dat u deze telefoon bezit met deze code:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s heeft u gepord" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6300,13 +6434,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "U hebt een nieuw privébericht van %s." #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6341,13 +6475,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) heeft uw mededeling als favoriet toegevoegd" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6386,7 +6520,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6397,13 +6531,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) heeft u een mededeling gestuurd" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6465,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:228 lib/noticelist.php:506 msgid "from" msgstr "van" @@ -6526,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." @@ -6563,7 +6697,7 @@ msgstr "Beschikbare tekens" #: lib/messageform.php:178 lib/noticeform.php:236 msgctxt "Send button for sending notice" msgid "Send" -msgstr "OK" +msgstr "Verzenden" #: lib/noticeform.php:160 msgid "Send a notice" @@ -6599,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:568 msgid "in context" msgstr "in context" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Herhaald door" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Op deze mededeling antwoorden" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Antwoorden" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Mededeling herhaald" @@ -6755,7 +6889,7 @@ msgstr "Dagelijks gemiddelde" msgid "All groups" msgstr "Alle groepen" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Methode niet geïmplementeerd." @@ -6779,7 +6913,7 @@ msgstr "Uitgelicht" msgid "Popular" msgstr "Populair" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Er zijn geen \"terug naar\"-parameters opgegeven." @@ -6800,7 +6934,7 @@ msgstr "Deze mededeling herhalen" msgid "Revoke the \"%s\" role from this user" msgstr "De gebruikersrol \"%s\" voor deze gebruiker intrekken" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Er is geen gebruiker gedefinieerd voor single-usermodus." @@ -6898,6 +7032,58 @@ msgstr "Gebruikerslabelwolk" msgid "None" msgstr "Geen" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "" +"Deze server kan niet overweg met uploads van vormgevingsbestanden zonder ZIP-" +"ondersteuning." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Het opslaan van de vormgeving is mislukt." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "Ongeldige vormgeving: de mappenstructuur is onjuist." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"De toegevoegde vormgeving is te groot. Deze moet uitgepakt kleiner zijn dan %" +"d bytes." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "" +"Ongeldig bestand met vormgeving: het bestand css/display.css is niet aanwezig" + +#: lib/themeuploader.php:205 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"De vormgeving bevat een ongeldige bestandsnaam of mapnaam. Gebruik alleen " +"maar ASCII-letters, getallen, liggende streepjes en het minteken." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" +"De vormgeving bevat een bestand van het type \".%s\". Dit is niet toegestaan." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "" +"Er is een fout opgetreden tijdens het openen van het archiefbestand met de " +"vormgeving." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Meest actieve gebruikers" @@ -6978,56 +7164,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "een paar seconden geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "ongeveer een minuut geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "ongeveer %d minuten geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "ongeveer een uur geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "ongeveer %d uur geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "ongeveer een dag geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "ongeveer %d dagen geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "ongeveer een maand geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "ongeveer %d maanden geleden" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "ongeveer een jaar geleden" diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po index f1437b8aa..08b25c9e6 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:45+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:48+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -21,7 +21,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "Godta" @@ -91,25 +91,25 @@ msgid "Save" msgstr "Lagra" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Dette emneord finst ikkje." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -122,7 +122,7 @@ msgid "No such user." msgstr "Brukaren finst ikkje." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s med vener, side %d" @@ -130,39 +130,39 @@ msgstr "%s med vener, side %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 med vener" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Straum for vener av %s" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Straum for vener av %s" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, fuzzy, php-format msgid "Feed for friends of %s (Atom)" msgstr "Straum for vener av %s" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -170,81 +170,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 #, fuzzy msgid "You and friends" msgstr "%s med vener" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Oppdateringar frÃ¥ %1$s og vener pÃ¥ %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "Fann ikkje API-metode." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Dette krev ein POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Kan ikkje oppdatera brukar." @@ -266,7 +266,7 @@ msgstr "Kan ikkje lagra profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -343,31 +343,32 @@ msgstr "Kunne ikkje finne mottakar." msgid "Can't send direct messages to users who aren't your friend." msgstr "Kan ikkje senda direktemeldingar til brukarar som du ikkje er ven med." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Fann ingen status med den ID-en." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Denne notisen er alt ein favoritt!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Kunne ikkje lagre favoritt." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 #, fuzzy msgid "That status is not a favorite." msgstr "Denne notisen er ikkje ein favoritt!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -399,126 +401,131 @@ msgstr "Kan ikkje hente offentleg straum." msgid "Could not find target user." msgstr "Kan ikkje finna einkvan status." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Kallenamn mÃ¥ berre ha smÃ¥ bokstavar og nummer, ingen mellomrom." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Kallenamnet er allereie i bruk. Prøv eit anna." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ikkje eit gyldig brukarnamn." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Heimesida er ikkje ei gyldig internettadresse." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "skildringa er for lang (maks 140 teikn)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Plassering er for lang (maksimalt 255 teikn)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Ugyldig merkelapp: %s" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Kallenamnet er allereie i bruk. Prøv eit anna." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Fann ikkje API-metode." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "Du er allereie medlem av den gruppa" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Kunne ikkje melde brukaren %s inn i gruppa %s" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "Du er ikkje medlem av den gruppa." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Kunne ikkje fjerne %s fra %s gruppa " #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "%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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Grupper %s er medlem av" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s grupper" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, fuzzy, php-format 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 "" @@ -530,15 +537,15 @@ msgstr "Ugyldig storleik." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -602,12 +609,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Konto" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -615,8 +622,8 @@ msgid "Nickname" msgstr "Kallenamn" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Passord" @@ -633,11 +640,11 @@ msgstr "Alle" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Dette krev anten ein POST eller DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Du kan ikkje sletta statusen til ein annan brukar." @@ -656,61 +663,65 @@ msgstr "Kan ikkje slÃ¥ pÃ¥ notifikasjon." msgid "Already repeated that notice." msgstr "Slett denne notisen" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 #, fuzzy msgid "Status deleted." msgstr "Lasta opp brukarbilete." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Fann ingen status med den ID-en." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Finst ikkje." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%s / Favorittar frÃ¥ %s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%s oppdateringar favorisert av %s / %s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Oppdateringar som svarar til %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s oppdateringar som svarar pÃ¥ oppdateringar frÃ¥ %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s offentleg tidsline" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s oppdateringar frÃ¥ alle saman!" @@ -725,16 +736,20 @@ msgstr "Svar til %s" msgid "Repeats of %s" msgstr "Svar til %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notisar merka med %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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" @@ -832,11 +847,11 @@ msgstr "Lasta opp brukarbilete." msgid "You already blocked that user." msgstr "Du har allereie blokkert denne brukaren." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Blokker brukaren" -#: actions/block.php:130 +#: 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 " @@ -848,7 +863,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -858,7 +873,7 @@ msgstr "Nei" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "LÃ¥s opp brukaren" @@ -868,7 +883,7 @@ msgstr "LÃ¥s opp brukaren" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -877,11 +892,11 @@ msgid "Yes" msgstr "Jau" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Blokkér denne brukaren" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Lagring av informasjon feila." @@ -1015,7 +1030,7 @@ msgstr "Du er ikkje medlem av den gruppa." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Det var eit problem med sesjons billetten din." @@ -1049,7 +1064,7 @@ msgstr "Slett denne notisen" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Ikkje logga inn" @@ -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" @@ -1124,51 +1139,60 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Ugyldig storleik." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Denne sida er ikkje tilgjengleg i eit" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Endra passordet ditt" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "Invitér" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "Endra" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Statusmelding" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 #, fuzzy msgid "Theme for the site." msgstr "Logg ut or sida" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Statusmelding" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1176,60 +1200,68 @@ msgid "" msgstr "Du kan lasta opp ein logo for gruppa." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Endra passordet ditt" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Innhald" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Søk" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Logg inn" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1239,7 +1271,7 @@ msgstr "" msgid "Save" msgstr "Lagra" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1365,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." @@ -1532,7 +1565,7 @@ msgid "Cannot normalize that email address" msgstr "Klarar ikkje normalisera epostadressa" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ikkje ei gyldig epostadresse." @@ -1770,13 +1803,13 @@ msgstr "Brukar har blokkert deg." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Ingen vald profil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Fann ingen profil med den IDen." @@ -1924,7 +1957,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s tidsline" @@ -2343,40 +2376,40 @@ msgstr "Du er ikkje medlem av den gruppa." msgid "%1$s left group %2$s" msgstr "%s forlot %s gruppa" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Allereie logga inn." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Feil brukarnamn eller passord" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "Ikkje autorisert." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Logg inn" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Logg inn " -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Hugs meg" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Logg inn automatisk i framtidi (ikkje for delte maskiner)." -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Mista eller gløymd passord?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2384,12 +2417,12 @@ msgstr "" "Skriv inn brukarnam og passord før du endrar innstillingar (av " "tryggleiksomsyn)." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Log inn med brukarnamn og passord." -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2543,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." @@ -2602,31 +2636,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Notisen har ingen profil" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s sin status pÃ¥ %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "Kopla til" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2736,7 +2770,7 @@ msgid "6 or more characters" msgstr "6 eller fleire teikn" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Godta" @@ -2748,11 +2782,11 @@ msgstr "Samme passord som over" msgid "Change" msgstr "Endra" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Passord mÃ¥ være minst 6 teikn." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Passorda var ikkje like." @@ -2773,7 +2807,7 @@ msgid "Password saved." msgstr "Lagra passord." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2989,44 +3023,44 @@ msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" "1-64 smÃ¥ bokstavar eller tal, ingen punktum (og liknande) eller mellomrom" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Fullt namn" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Heimeside" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL til heimesida di, bloggen din, eller ein profil pÃ¥ ei anna side." -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Skriv om deg og interessene dine med 140 teikn" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "Skildra deg sjølv og din" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Om meg" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Plassering" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Kvar er du, t.d. «By, Fylke (eller Region), Land»" @@ -3069,7 +3103,7 @@ msgid "" msgstr "" "Automatisk ting notisane til dei som tingar mine (best for ikkje-menneskje)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "«Om meg» er for lang (maks 140 " @@ -3321,7 +3355,7 @@ msgstr "Passord mÃ¥ vera 6 tekn eller meir." msgid "Password and confirmation do not match." msgstr "Passord og stadfesting stemmer ikkje." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Feil ved Ã¥ setja brukar." @@ -3329,97 +3363,97 @@ msgstr "Feil ved Ã¥ setja brukar." msgid "New password successfully saved. You are now logged in." msgstr "Lagra det nye passordet. Du er logga inn." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Beklage, men kun inviterte kan registrere seg." -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "Feil med stadfestingskode." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registreringa gikk bra" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrér" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registrering ikkje tillatt." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Du kan ikkje registrera deg om du ikkje godtek vilkÃ¥ra i lisensen." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Epostadressa finst allereie." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ugyldig brukarnamn eller passord." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 smÃ¥ bokstavar eller tal, ingen punktum (og liknande) eller mellomrom. " "Kravd." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 eller fleire teikn. Kravd." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Samme som passord over. PÃ¥krevd." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Epost" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Blir berre brukt for uppdateringar, viktige meldingar og for gløymde passord" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Lengre namn, fortrinnsvis ditt «ekte» namn" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3428,7 +3462,7 @@ msgstr "" " unnateke privatdata: passord, epostadresse, ljonmeldingsadresse og " "telefonnummer." -#: actions/register.php:576 +#: actions/register.php:583 #, fuzzy, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3460,7 +3494,7 @@ msgstr "" "\n" "Takk for at du blei med, og vi hÃ¥par du vil lika tenesta!" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3549,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" @@ -3589,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 @@ -3602,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 @@ -3621,7 +3655,7 @@ msgstr "Du kan ikkje sende melding til denne brukaren." msgid "User doesn't have this role." msgstr "Kan ikkje finne brukar" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Lasta opp brukarbilete." @@ -3638,7 +3672,7 @@ msgstr "Brukar har blokkert deg." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3684,7 +3718,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3697,12 +3731,12 @@ msgid "Organization" msgstr "Paginering" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3788,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 @@ -3856,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" @@ -3870,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." @@ -3885,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." @@ -3896,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" @@ -3973,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 @@ -4311,7 +4345,7 @@ msgstr "Ingen innskriven kode" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4373,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." @@ -4546,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." @@ -4670,7 +4701,7 @@ msgstr "" "Sjekk desse detaljane og forsikre deg om at du vil abonnere pÃ¥ denne " "brukaren sine notisar. Vist du ikkje har bedt om dette, klikk \"Avbryt\"" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 #, fuzzy msgid "License" msgstr "lisens." @@ -4802,29 +4833,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Oppdateringar frÃ¥ %1$s pÃ¥ %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "Statistikk" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4832,7 +4863,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4840,104 +4871,151 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "Personleg" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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 " @@ -4945,77 +5023,126 @@ msgid "" 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5068,133 +5195,133 @@ msgid "Untitled page" msgstr "Ingen tittel" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navigasjon for hovudsida" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 #, fuzzy msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Personleg profil og oversyn over vener" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "Personleg" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Endra e-posten, avataren, passordet eller profilen" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Klarte ikkje Ã¥ omdirigera til tenaren: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Kopla til" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Navigasjon for hovudsida" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Inviter vennar og kollega til Ã¥ bli med deg pÃ¥ %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Invitér" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 #, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Logg ut or sida" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Logg ut" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "Opprett ny konto" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Registrér" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 #, fuzzy msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Logg inn or sida" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "Logg inn" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hjelp meg!" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "Hjelp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 #, fuzzy msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Søk etter folk eller innhald" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5202,72 +5329,72 @@ msgstr "Søk" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Statusmelding" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Lokale syningar" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Sidenotis" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "AndrenivÃ¥s side navigasjon" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Hjelp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Om" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "OSS" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Personvern" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Kjeldekode" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 #, fuzzy msgid "Badge" msgstr "Dult" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNets programvarelisens" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5277,13 +5404,13 @@ msgstr "" "broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** er ei mikrobloggingteneste." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5295,50 +5422,50 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "StatusNets programvarelisens" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginering" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "« Etter" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Før »" @@ -5391,74 +5518,74 @@ msgid "Unable to delete design setting." msgstr "Klarte ikkje Ã¥ lagra Twitter-innstillingane dine!" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Stadfesting av epostadresse" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "Invitér" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "SMS bekreftelse" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Personleg" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "SMS bekreftelse" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Brukar" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "SMS bekreftelse" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "SMS bekreftelse" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "SMS bekreftelse" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Statusmelding" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "SMS bekreftelse" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5594,12 +5721,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Endra passord" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Endra passord" @@ -5692,14 +5819,14 @@ msgstr "Fullt namn: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Stad: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Heimeside: %s" @@ -6190,8 +6317,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s høyrer no pÃ¥ notisane dine pÃ¥ %2$s." +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6213,7 +6347,7 @@ msgstr "" "%4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "" @@ -6221,13 +6355,13 @@ msgstr "" "\n" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ny epostadresse for Ã¥ oppdatera %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6248,30 +6382,30 @@ msgstr "" "Helsing frÃ¥ %4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS bekreftelse" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "Ventar pÃ¥ godkjenning for dette telefonnummeret." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Du har blitt dulta av %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6288,13 +6422,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ny privat melding fra %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6314,13 +6448,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s la til di melding som ein favoritt" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6342,7 +6476,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6350,13 +6484,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6393,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Ã¥ " @@ -6449,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 "" @@ -6524,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" @@ -6685,7 +6819,7 @@ msgstr "" msgid "All groups" msgstr "Alle gruppar" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6709,7 +6843,7 @@ msgstr "Framheva" msgid "Popular" msgstr "Populære" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Manglar argumentet ID." @@ -6733,7 +6867,7 @@ msgstr "Svar pÃ¥ denne notisen" msgid "Revoke the \"%s\" role from this user" msgstr "Ei liste over brukarane i denne gruppa." -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6837,6 +6971,50 @@ msgstr "" msgid "None" msgstr "Ingen" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Feil ved oppdatering av brukarbilete." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Feil ved oppdatering av ekstern profil" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Med flest meldingar" @@ -6923,56 +7101,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "eit par sekund sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "omtrent eitt minutt sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "~%d minutt sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "omtrent ein time sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "~%d timar sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "omtrent ein dag sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "~%d dagar sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "omtrent ein mÃ¥nad sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "~%d mÃ¥nadar sidan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "omtrent eitt Ã¥r sidan" diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po index a6082d4f1..89da186ca 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:51+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:52+0000\n" "Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n" "Language-Team: Polish <pl@li.org>\n" "MIME-Version: 1.0\n" @@ -20,14 +20,14 @@ 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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "DostÄ™p" @@ -89,24 +89,24 @@ msgid "Save" msgstr "Zapisz" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Nie ma takiej strony." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -119,7 +119,7 @@ msgid "No such user." msgstr "Brak takiego użytkownika." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s i przyjaciele, strona %2$d" @@ -127,33 +127,33 @@ msgstr "%1$s i przyjaciele, strona %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 "Użytkownik %s i przyjaciele" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "KanaÅ‚ dla znajomych użytkownika %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "KanaÅ‚ dla znajomych użytkownika %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "KanaÅ‚ dla znajomych użytkownika %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -161,7 +161,7 @@ msgstr "" "To jest oÅ› czasu użytkownika %s i przyjaciół, ale nikt jeszcze nic nie " "wysÅ‚aÅ‚." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -171,85 +171,84 @@ msgstr "" "wysÅ‚ać coÅ› samemu." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Ty i przyjaciele" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Aktualizacje z %1$s i przyjaciół na %2$s." -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Nie odnaleziono metody API." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Ta metoda wymaga POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" "Należy podać parametr o nazwie \"device\" z jednÄ… z wartoÅ›ci: sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Nie można zaktualizować użytkownika." @@ -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:210 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,30 +346,30 @@ msgstr "" "Nie można wysÅ‚ać bezpoÅ›redniej wiadomoÅ›ci do użytkowników, którzy nie sÄ… " "twoimi przyjaciółmi." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Nie odnaleziono stanów z tym identyfikatorem." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Ten stan jest już ulubiony." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Nie można utworzyć ulubionego wpisu." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Ten stan nie jest ulubiony." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -398,123 +398,127 @@ msgstr "Nie można okreÅ›lić użytkownika źródÅ‚owego." msgid "Could not find target user." msgstr "Nie można odnaleźć użytkownika docelowego." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Pseudonim może zawierać tylko maÅ‚e litery i cyfry, bez spacji." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Pseudonim jest już używany. Spróbuj innego." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "To nie jest prawidÅ‚owy pseudonim." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Strona domowa nie jest prawidÅ‚owym adresem URL." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "ImiÄ™ i nazwisko jest za dÅ‚ugie (maksymalnie 255 znaków)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Opis jest za dÅ‚ugi (maksymalnie %d znaków)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "PoÅ‚ożenie jest za dÅ‚ugie (maksymalnie 255 znaków)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Za dużo aliasów. Maksymalnie %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "NieprawidÅ‚owy alias: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: 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\" jest już używany. Spróbuj innego." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Alias nie może być taki sam jak pseudonim." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Nie odnaleziono grupy." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "JesteÅ› już czÅ‚onkiem tej grupy." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "ZostaÅ‚eÅ› zablokowany w tej grupie przez administratora." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Nie można doÅ‚Ä…czyć użytkownika %1$s do grupy %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Nie jesteÅ› czÅ‚onkiem tej grupy." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Nie można usunąć użytkownika %1$s z grupy %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Grupy użytkownika %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%2$s jest czÅ‚onkiem grup %1$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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Grupy %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -525,15 +529,15 @@ msgstr "NieprawidÅ‚owy 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -598,12 +602,12 @@ msgstr "" "$s powinien być udostÄ™pniany tylko zaufanym osobom trzecim." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Konto" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -611,8 +615,8 @@ msgid "Nickname" msgstr "Pseudonim" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "HasÅ‚o" @@ -628,11 +632,11 @@ msgstr "Zezwól" msgid "Allow or deny access to your account information." msgstr "Zezwól lub odmów dostÄ™p do informacji konta." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Ta metoda wymaga POST lub DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Nie można usuwać stanów innych użytkowników." @@ -649,59 +653,63 @@ msgstr "Nie można powtórzyć wÅ‚asnego wpisu." msgid "Already repeated that notice." msgstr "Już powtórzono ten wpis." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "UsuniÄ™to stan." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Nie odnaleziono stanów z tym identyfikatorem." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nie odnaleziono." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s/ulubione wpisy od %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "Użytkownik %1$s aktualizuje ulubione wedÅ‚ug %2$s/%2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s/aktualizacje wspominajÄ…ce %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s aktualizuje tÄ™ odpowiedź na aktualizacje od %2$s/%3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Publiczna oÅ› czasu użytkownika %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "Użytkownik %s aktualizuje od każdego." @@ -716,16 +724,20 @@ msgstr "Powtórzone dla %s" msgid "Repeats of %s" msgstr "Powtórzenia %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Wpisy ze znacznikiem %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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Å„" @@ -818,11 +830,11 @@ msgstr "UsuniÄ™to awatar." msgid "You already blocked that user." msgstr "Użytkownik jest już zablokowany." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Zablokuj użytkownika" -#: actions/block.php:130 +#: 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 " @@ -837,7 +849,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -846,7 +858,7 @@ msgstr "Nie" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Nie blokuj tego użytkownika" @@ -855,7 +867,7 @@ msgstr "Nie blokuj tego użytkownika" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -863,11 +875,11 @@ msgid "Yes" msgstr "Tak" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Zablokuj tego użytkownika" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Zapisanie informacji o blokadzie nie powiodÅ‚o siÄ™." @@ -994,7 +1006,7 @@ msgstr "Nie jesteÅ› wÅ‚aÅ›cicielem tej aplikacji." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "WystÄ…piÅ‚ problem z tokenem sesji." @@ -1027,7 +1039,7 @@ msgstr "UsuÅ„ tÄ™ aplikacjÄ™" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Niezalogowany." @@ -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" @@ -1098,45 +1110,53 @@ msgstr "WyglÄ…d" msgid "Design settings for this StatusNet site." msgstr "Ustawienia wyglÄ…du tej witryny StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "NieprawidÅ‚owy adres URL logo." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Motyw nie jest dostÄ™pny: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "ZmieÅ„ logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo witryny" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "ZmieÅ„ motyw" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Motyw witryny" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Motyw witryny." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "WÅ‚asny motyw" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Można wysÅ‚ać wÅ‚asny motyw witryny StatusNet jako archiwum zip." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "ZmieÅ„ obraz tÅ‚a" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "TÅ‚o" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1144,57 +1164,65 @@ msgid "" msgstr "Można wysÅ‚ać obraz tÅ‚a dla witryny. Maksymalny rozmiar pliku to %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "WÅ‚Ä…czone" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "WyÅ‚Ä…czone" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "WÅ‚Ä…cz lub wyÅ‚Ä…cz obraz tÅ‚a." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Kafelkowy obraz tÅ‚a" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "ZmieÅ„ kolory" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Treść" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Panel boczny" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Tekst" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "OdnoÅ›niki" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Zaawansowane" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "WÅ‚asny plik CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Użycie domyÅ›lnych" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Przywróć domyÅ›lny wyglÄ…d" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Przywróć domyÅ›lne ustawienia" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1204,7 +1232,7 @@ msgstr "Przywróć domyÅ›lne ustawienia" msgid "Save" msgstr "Zapisz" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Zapisz wyglÄ…d" @@ -1318,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." @@ -1475,7 +1504,7 @@ msgid "Cannot normalize that email address" msgstr "Nie można znormalizować tego adresu e-mail" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "To nie jest prawidÅ‚owy adres e-mail." @@ -1703,13 +1732,13 @@ msgstr "Użytkownik ma już tÄ™ rolÄ™." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Nie podano profilu." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Brak profilu o tym identyfikatorze." @@ -1846,7 +1875,7 @@ msgstr "UczyÅ„ tego użytkownika administratorem" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "OÅ› czasu użytkownika %s" @@ -2272,41 +2301,41 @@ msgstr "Nie jesteÅ› czÅ‚onkiem tej grupy." msgid "%1$s left group %2$s" msgstr "Użytkownik %1$s opuÅ›ciÅ‚ grupÄ™ %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "JesteÅ› już zalogowany." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Niepoprawna nazwa użytkownika lub hasÅ‚o." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "BÅ‚Ä…d podczas ustawiania użytkownika. Prawdopodobnie brak upoważnienia." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Zaloguj siÄ™" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Zaloguj siÄ™ na witrynie" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "ZapamiÄ™taj mnie" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Automatyczne logowanie. Nie należy używać na komputerach używanych przez " "wiele osób." -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Zgubione lub zapomniane hasÅ‚o?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2314,11 +2343,11 @@ msgstr "" "Z powodów bezpieczeÅ„stwa ponownie podaj nazwÄ™ użytkownika i hasÅ‚o przed " "zmienianiem ustawieÅ„." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Logowanie za pomocÄ… nazwy użytkownika i hasÅ‚a." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2469,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." @@ -2524,30 +2553,30 @@ msgstr "Nie upoważniono żadnych aplikacji do używania konta." msgid "Developers can edit the registration settings for their applications " msgstr "ProgramiÅ›ci mogÄ… zmodyfikować ustawienia rejestracji swoich aplikacji " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Wpis nie posiada profilu." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Stan użytkownika %1$s na %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Typ zawartoÅ›ci %s jest nieobsÅ‚ugiwany." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2650,7 +2679,7 @@ msgid "6 or more characters" msgstr "6 lub wiÄ™cej znaków" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Potwierdź" @@ -2662,11 +2691,11 @@ msgstr "Takie samo jak powyższe hasÅ‚o" msgid "Change" msgstr "ZmieÅ„" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "HasÅ‚o musi mieć sześć lub wiÄ™cej znaków." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "HasÅ‚a nie pasujÄ… do siebie." @@ -2687,7 +2716,7 @@ msgid "Password saved." msgstr "Zapisano hasÅ‚o." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Åšcieżki" @@ -2893,43 +2922,43 @@ msgstr "Informacje o profilu" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 maÅ‚e litery lub liczby, bez spacji i znaków przestankowych" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "ImiÄ™ i nazwisko" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Strona domowa" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "Adres URL strony domowej, bloga lub profilu na innej witrynie" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Opisz siÄ™ i swoje zainteresowania w %d znakach" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Opisz siÄ™ i swoje zainteresowania" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "O mnie" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "PoÅ‚ożenie" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Gdzie jesteÅ›, np. \"miasto, województwo (lub region), kraj\"" @@ -2972,7 +3001,7 @@ msgid "" msgstr "" "Automatycznie subskrybuj każdego, kto mnie subskrybuje (najlepsze dla botów)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Wpis \"O mnie\" jest za dÅ‚ugi (maksymalnie %d znaków)." @@ -3233,7 +3262,7 @@ msgstr "HasÅ‚o musi mieć sześć lub wiÄ™cej znaków." msgid "Password and confirmation do not match." msgstr "HasÅ‚o i potwierdzenie nie pasujÄ… do siebie." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "BÅ‚Ä…d podczas ustawiania użytkownika." @@ -3241,40 +3270,40 @@ msgstr "BÅ‚Ä…d podczas ustawiania użytkownika." msgid "New password successfully saved. You are now logged in." msgstr "PomyÅ›lnie zapisano nowe hasÅ‚o. JesteÅ› teraz zalogowany." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Tylko zaproszone osoby mogÄ… siÄ™ rejestrować." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "NieprawidÅ‚owy kod zaproszenia." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Rejestracja powiodÅ‚a siÄ™" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Zarejestruj siÄ™" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Rejestracja nie jest dozwolona." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" "Nie można siÄ™ zarejestrować, jeÅ›li nie zgadzasz siÄ™ z warunkami licencji." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Adres e-mail już istnieje." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "NieprawidÅ‚owa nazwa użytkownika lub hasÅ‚o." -#: actions/register.php:343 +#: 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. " @@ -3282,56 +3311,56 @@ msgstr "" "Za pomocÄ… tego formularza można utworzyć nowe konto. Można wtedy wysyÅ‚ać " "wpisy i poÅ‚Ä…czyć siÄ™ z przyjaciółmi i kolegami. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 maÅ‚e litery lub liczby, bez spacji i znaków przestankowych. Wymagane." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 lub wiÄ™cej znaków. Wymagane." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Takie samo jak powyższe hasÅ‚o. Wymagane." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-mail" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Używane tylko do aktualizacji, ogÅ‚oszeÅ„ i przywracania hasÅ‚a" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "DÅ‚uższa nazwa, najlepiej twoje \"prawdziwe\" imiÄ™ i nazwisko" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Treść i dane %1$s sÄ… prywatne i poufne." +msgstr "Rozumiem, że treść i dane %1$s sÄ… prywatne i poufne." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Moje teksty i pliki sÄ… objÄ™te prawami autorskimi %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Moje teksty i pliki pozostajÄ… pod moimi prawami autorskimi." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Wszystkie prawa zastrzeżone." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3340,7 +3369,7 @@ msgstr "" "Tekst i pliki sÄ… dostÄ™pne na warunkach licencji %s, poza tymi prywatnymi " "danymi: hasÅ‚o, adres e-mail, adres komunikatora i numer telefonu." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3373,7 +3402,7 @@ msgstr "" "DziÄ™kujemy za zarejestrowanie siÄ™ i mamy nadziejÄ™, że używanie tej usÅ‚ugi " "sprawi ci przyjemność." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3456,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" @@ -3494,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 @@ -3511,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 @@ -3530,7 +3559,7 @@ msgstr "Nie można unieważnić rol użytkowników na tej witrynie." msgid "User doesn't have this role." msgstr "Użytkownik nie ma tej roli." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3544,7 +3573,7 @@ msgstr "Użytkownik jest już ograniczony." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sesje" @@ -3587,7 +3616,7 @@ msgid "Icon" msgstr "Ikona" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nazwa" @@ -3598,12 +3627,12 @@ msgid "Organization" msgstr "Organizacja" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3693,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. :)" @@ -3702,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Å› " @@ -3766,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" @@ -3780,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." @@ -3800,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." @@ -3813,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" @@ -3891,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 @@ -4221,7 +4250,7 @@ msgstr "Nie podano kodu" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Migawki" @@ -4281,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." @@ -4462,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." @@ -4577,7 +4603,7 @@ msgstr "" "wpisy tego użytkownika. Jeżeli nie prosiÅ‚eÅ› o subskrypcjÄ™ czyichÅ› wpisów, " "naciÅ›nij \"Odrzuć\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licencja" @@ -4703,18 +4729,18 @@ msgstr "Spróbuj [wyszukać grupy](%%action.groupsearch%%) i doÅ‚Ä…czyć do nich #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Aktualizacje z %1$s na %2$s." -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4723,11 +4749,11 @@ msgstr "" "Ta witryna korzysta z oprogramowania %1$s w wersji %2$s, Copyright 2008-2010 " "StatusNet, Inc. i współtwórcy." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Współtwórcy" -#: actions/version.php:168 +#: 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 " @@ -4739,7 +4765,7 @@ msgstr "" "wydanej przez FundacjÄ™ Wolnego Oprogramowania (Free Software Foundation) - " "wedÅ‚ug wersji trzeciej tej Licencji lub którejÅ› z późniejszych wersji. " -#: actions/version.php:174 +#: 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 " @@ -4752,7 +4778,7 @@ msgstr "" "bliższych informacji należy zapoznać siÄ™ z PowszechnÄ… LicencjÄ… PublicznÄ… " "Affero GNU. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4762,96 +4788,143 @@ msgstr "" "Powszechnej Licencji Publicznej Affero GNU (GNU Affero General Public " "License); jeÅ›li nie - proszÄ™ odwiedzić stronÄ™ internetowÄ… %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Wtyczki" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Wersja" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autorzy" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4859,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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -4974,188 +5094,188 @@ msgid "Untitled page" msgstr "Strona bez nazwy" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Główna nawigacja witryny" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Profil osobisty i oÅ› czasu przyjaciół" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Osobiste" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "ZmieÅ„ adres e-mail, awatar, hasÅ‚o, profil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "PoÅ‚Ä…cz z serwisami" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "PoÅ‚Ä…cz" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "ZmieÅ„ konfiguracjÄ™ witryny" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "ZaproÅ› przyjaciół i kolegów do doÅ‚Ä…czenia do ciebie na %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "ZaproÅ›" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Wyloguj siÄ™ z witryny" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Wyloguj siÄ™" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Utwórz konto" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Zarejestruj siÄ™" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Zaloguj siÄ™ na witrynie" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Zaloguj siÄ™" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Pomóż mi." -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Pomoc" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Wyszukaj osoby lub tekst" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Wyszukaj" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Wpis witryny" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Lokalne widoki" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Wpis strony" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Druga nawigacja witryny" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Pomoc" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "O usÅ‚udze" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Prywatność" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Kod źródÅ‚owy" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Odznaka" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licencja oprogramowania StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5165,13 +5285,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** jest usÅ‚ugÄ… mikroblogowania." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5183,20 +5303,20 @@ msgstr "" "Affero](http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licencja zawartoÅ›ci witryny" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Treść i dane %1$s sÄ… prywatne i poufne." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5204,14 +5324,14 @@ msgstr "" "zastrzeżone." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Prawa autorskie do treÅ›ci i danych sÄ… wÅ‚asnoÅ›ciÄ… współtwórców. Wszystkie " "prawa zastrzeżone." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5219,19 +5339,19 @@ msgstr "" "$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginacja" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Później" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "WczeÅ›niej" @@ -5279,64 +5399,64 @@ msgid "Unable to delete design setting." msgstr "Nie można usunąć ustawienia wyglÄ…du." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Podstawowa konfiguracja witryny" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Witryna" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Konfiguracja wyglÄ…du" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "WyglÄ…d" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Konfiguracja użytkownika" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Użytkownik" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Konfiguracja dostÄ™pu" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Konfiguracja Å›cieżek" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Konfiguracja sesji" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Zmodyfikuj wpis witryny" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Konfiguracja migawek" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "Zasób API wymaga dostÄ™pu do zapisu i do odczytu, ale powiadasz dostÄ™p tylko " @@ -5469,11 +5589,11 @@ msgstr "Powiadamia, kiedy pojawia siÄ™ ten zaÅ‚Ä…cznik" msgid "Tags for this attachment" msgstr "Znaczniki dla tego zaÅ‚Ä…cznika" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Zmiana hasÅ‚a nie powiodÅ‚a siÄ™" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Zmiana hasÅ‚a nie jest dozwolona" @@ -5567,14 +5687,14 @@ msgstr "ImiÄ™ i nazwisko: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "PoÅ‚ożenie: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Strona domowa: %s" @@ -6114,8 +6234,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "Użytkownik %1$s obserwuje teraz twoje wpisy na %2$s." +#: 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 "" +"JeÅ›li użytkownik uważa, że to konto jest używane w zÅ‚oÅ›liwych celach, może " +"zablokować je z listy subskrybentów i zgÅ‚osić je jako spam do " +"administratorów witryny na %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6141,19 +6271,19 @@ msgstr "" "ZmieÅ„ adres e-mail lub opcje powiadamiania na %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "O mnie: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Nowy adres e-mail do wysyÅ‚ania do %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6175,30 +6305,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Stan użytkownika %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Potwierdzenie SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: proszÄ™ potwierdzić wÅ‚asny numer telefonu za pomocÄ… tego kodu:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "ZostaÅ‚eÅ› szturchniÄ™ty przez %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6226,13 +6356,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nowa prywatna wiadomość od użytkownika %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6266,13 +6396,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "Użytkownik %s (@%s) dodaÅ‚ twój wpis jako ulubiony" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6311,7 +6441,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6322,13 +6452,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "Użytkownik %s (@%s) wysÅ‚aÅ‚ wpis wymagajÄ…cy twojej uwagi" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6391,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" @@ -6447,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." @@ -6520,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" @@ -6674,7 +6804,7 @@ msgstr "Dziennie Å›rednio" msgid "All groups" msgstr "Wszystkie grupy" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Niezaimplementowana metoda." @@ -6698,7 +6828,7 @@ msgstr "Znane" msgid "Popular" msgstr "Popularne" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Brak parametrów powrotu." @@ -6719,7 +6849,7 @@ msgstr "Powtórz ten wpis" msgid "Revoke the \"%s\" role from this user" msgstr "Unieważnij rolÄ™ \"%s\" tego użytkownika" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" "Nie okreÅ›lono pojedynczego użytkownika dla trybu pojedynczego użytkownika." @@ -6818,6 +6948,53 @@ msgstr "Chmura znaczników osób ze znacznikami" msgid "None" msgstr "Brak" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +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 "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 +#: lib/themeuploader.php:265 lib/themeuploader.php:272 +msgid "Failed saving theme." +msgstr "Zapisanie motywu nie powiodÅ‚o siÄ™." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +msgstr "NieprawidÅ‚owy motyw: bÅ‚Ä™dna struktura katalogów." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." +msgstr "" +"WysÅ‚any motyw jest za duży, musi być mniejszy niż %d bajtów po " +"zdekompresowaniu." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "NieprawidÅ‚owe archiwum motywu: brak pliku 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 "" +"Motyw zawiera nieprawidÅ‚owy plik lub nazwÄ™ katalogu. Należy używać tylko " +"liter, cyfr, podkreÅ›lników i znaku minus z zestawu ASCII." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Motyw zawiera plik typu \\\".%s\\\", który nie jest dozwolony." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "BÅ‚Ä…d podczas otwierania archiwum motywu." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Najczęściej wysyÅ‚ajÄ…cy wpisy" @@ -6898,56 +7075,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "kilka sekund temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "okoÅ‚o minutÄ™ temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "okoÅ‚o %d minut temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "okoÅ‚o godzinÄ™ temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "okoÅ‚o %d godzin temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "blisko dzieÅ„ temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "okoÅ‚o %d dni temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "okoÅ‚o miesiÄ…c temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "okoÅ‚o %d miesiÄ™cy temu" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "okoÅ‚o rok temu" diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po index f1368936a..ab309b7b3 100644 --- a/locale/pt/LC_MESSAGES/statusnet.po +++ b/locale/pt/LC_MESSAGES/statusnet.po @@ -1,6 +1,7 @@ # Translation of StatusNet to Portuguese # # Author@translatewiki.net: Gallaecio +# Author@translatewiki.net: Giro720 # Author@translatewiki.net: Hamilton Abreu # Author@translatewiki.net: Ipublicis # -- @@ -10,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:55+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:54+0000\n" "Language-Team: Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -23,7 +24,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Acesso" @@ -85,24 +86,24 @@ msgid "Save" msgstr "Gravar" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Página não foi encontrada." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -115,7 +116,7 @@ msgid "No such user." msgstr "Utilizador não foi encontrado." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s e amigos, página %2$d" @@ -123,40 +124,40 @@ msgstr "%1$s e amigos, página %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 e amigos" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Fonte para os amigos de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Fonte para os amigos de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Fonte para os amigos de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" "Estas são as notas de %s e dos amigos, mas ainda não publicaram nenhuma." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -166,84 +167,84 @@ msgstr "" "publicar qualquer coisa." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Você e seus amigos" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Actualizações de %1$s e amigos no %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Método da API não encontrado." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Este método requer um POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" "Tem de especificar um parâmetro 'aparelho' com um dos valores: sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Não foi possÃvel actualizar o utilizador." @@ -263,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:210 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 @@ -340,30 +341,30 @@ msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Não pode enviar mensagens directas a utilizadores que não sejam amigos." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Nenhum estado encontrado com esse ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Este estado já é um favorito." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Não foi possÃvel criar o favorito." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Esse estado não é um favorito." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -379,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." @@ -391,123 +392,127 @@ msgstr "Não foi possÃvel determinar o utilizador de origem." msgid "Could not find target user." msgstr "Não foi possÃvel encontrar o utilizador de destino." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Utilizador só deve conter letras minúsculas e números. Sem espaços." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Utilizador já é usado. Tente outro." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Utilizador não é válido." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Página de Ãnicio não é uma URL válida." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Nome completo demasiado longo (máx. 255 caracteres)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Descrição demasiado longa (máx. 140 caracteres)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Localidade demasiado longa (máx. 255 caracteres)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Demasiados nomes alternativos! Máx. %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Nome alternativo inválido: \"%s\"" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Nome alternativo \"%s\" já em uso. Tente outro." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Um nome alternativo não pode ser igual ao nome do utilizador." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Grupo não foi encontrado." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Já é membro desse grupo." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Foi bloqueado desse grupo pelo gestor." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Não foi possÃvel adicionar %1$s ao grupo %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Não é membro deste grupo." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Não foi possÃvel remover %1$s do grupo %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Grupos de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Grupos de %1$s de que %2$s é membro." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Grupos de %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -518,15 +523,15 @@ msgstr "Chave inválida." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -590,12 +595,12 @@ msgstr "" "permitir acesso à sua conta %4$s a terceiros da sua confiança." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Conta" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -603,8 +608,8 @@ msgid "Nickname" msgstr "Utilizador" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Senha" @@ -620,11 +625,11 @@ msgstr "Permitir" msgid "Allow or deny access to your account information." msgstr "Permitir ou negar acesso à informação da sua conta." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Este método requer um POST ou DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Não pode apagar o estado de outro utilizador." @@ -641,59 +646,63 @@ msgstr "Não pode repetir a sua própria nota." msgid "Already repeated that notice." msgstr "Já repetiu essa nota." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Estado apagado." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Não foi encontrado um estado com esse ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Não encontrado." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoritas de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s actualizações preferidas por %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Actualizações que mencionam %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s actualizações em resposta a actualizações de %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Notas públicas de %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s actualizações de todos!" @@ -708,16 +717,20 @@ msgstr "Repetida para %s" msgid "Repeats of %s" msgstr "Repetições de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notas categorizadas com %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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." @@ -770,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" @@ -810,11 +823,11 @@ msgstr "Avatar apagado." msgid "You already blocked that user." msgstr "Já bloqueou esse utilizador." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloquear utilizador" -#: actions/block.php:130 +#: 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 " @@ -829,7 +842,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -838,7 +851,7 @@ msgstr "Não" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Não bloquear este utilizador" @@ -847,7 +860,7 @@ msgstr "Não bloquear este utilizador" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -855,11 +868,11 @@ msgid "Yes" msgstr "Sim" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Bloquear este utilizador" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Não foi possÃvel gravar informação do bloqueio." @@ -986,7 +999,7 @@ msgstr "Não é o proprietário desta aplicação." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Ocorreu um problema com a sua sessão." @@ -1020,7 +1033,7 @@ msgstr "Apagar esta aplicação" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Não iniciou sessão." @@ -1051,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" @@ -1091,45 +1104,55 @@ msgstr "Estilo" msgid "Design settings for this StatusNet site." msgstr "Configurações do estilo deste site StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "URL do logotipo inválida." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema não está disponÃvel: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Alterar logotipo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logotipo do site" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Alterar tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Tema do site" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "O tema para o site." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +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" msgstr "Alterar imagem de fundo" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Fundo" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1139,57 +1162,65 @@ msgstr "" "é %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Ligar" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Desligar" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Ligar ou desligar a imagem de fundo." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Repetir imagem de fundo em mosaico" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Alterar cores" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Conteúdo" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" -msgstr "Ligações" +msgstr "Links" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avançado" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personalizado" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Usar predefinições" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Repor estilos predefinidos" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Repor predefinição" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1199,7 +1230,7 @@ msgstr "Repor predefinição" msgid "Save" msgstr "Gravar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Gravar o estilo" @@ -1313,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." @@ -1474,7 +1506,7 @@ msgid "Cannot normalize that email address" msgstr "Não é possÃvel normalizar esse endereço electrónico" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Correio electrónico é inválido." @@ -1701,13 +1733,13 @@ msgstr "O utilizador já tem esta função." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Não foi especificado um perfil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Não foi encontrado um perfil com essa identificação." @@ -1848,7 +1880,7 @@ msgstr "Tornar este utilizador um gestor" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Notas de %s" @@ -2274,41 +2306,41 @@ msgstr "Não é um membro desse grupo." msgid "%1$s left group %2$s" msgstr "%1$s deixou o grupo %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Sessão já foi iniciada." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nome de utilizador ou senha incorrectos." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Erro ao preparar o utilizador. Provavelmente não está autorizado." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Entrar" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Iniciar sessão no site" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Lembrar-me neste computador" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "De futuro, iniciar sessão automaticamente. Não usar em computadores " "partilhados!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Perdeu ou esqueceu-se da senha?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2316,11 +2348,11 @@ msgstr "" "Por razões de segurança, por favor re-introduza o seu nome de utilizador e " "senha antes de alterar as configurações." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Iniciar sessão com um nome de utilizador e senha." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2468,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" @@ -2524,30 +2556,30 @@ msgid "Developers can edit the registration settings for their applications " msgstr "" "Programadores podem editar as configurações de inscrição das suas aplicações " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Nota não tem perfil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Estado de %1$s em %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "O tipo de conteúdo %s não é suportado." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2651,7 +2683,7 @@ msgid "6 or more characters" msgstr "6 ou mais caracteres" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmação" @@ -2663,11 +2695,11 @@ msgstr "Repita a senha nova" msgid "Change" msgstr "Modificar" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Senha tem de ter 6 ou mais caracteres." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Senhas não coincidem." @@ -2688,7 +2720,7 @@ msgid "Password saved." msgstr "Senha gravada." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Localizações" @@ -2714,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." @@ -2742,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" @@ -2893,43 +2925,43 @@ msgstr "Informação do perfil" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 letras minúsculas ou números, sem pontuação ou espaços" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nome completo" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Página pessoal" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL da sua página pessoal, blogue ou perfil noutro site na internet" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Descreva-se e aos seus interesses (máx. 140 caracteres)" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Descreva-se e aos seus interesses" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Biografia" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Localidade" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Onde está, por ex. \"Cidade, Região, PaÃs\"" @@ -2952,11 +2984,11 @@ msgstr "" #: actions/profilesettings.php:151 msgid "Language" -msgstr "Idioma" +msgstr "LÃngua" #: actions/profilesettings.php:152 msgid "Preferred language" -msgstr "Idioma preferido" +msgstr "LÃngua preferida" #: actions/profilesettings.php:161 msgid "Timezone" @@ -2971,7 +3003,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "Subscrever automaticamente quem me subscreva (óptimo para não-humanos)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Biografia demasiado extensa (máx. %d caracteres)." @@ -2982,7 +3014,7 @@ msgstr "Fuso horário não foi seleccionado." #: actions/profilesettings.php:241 msgid "Language is too long (max 50 chars)." -msgstr "Idioma é demasiado extenso (máx. 50 caracteres)." +msgstr "LÃngua é demasiado extensa (máx. 50 caracteres)." #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format @@ -3236,7 +3268,7 @@ msgstr "Senha tem de ter 6 ou mais caracteres." msgid "Password and confirmation do not match." msgstr "A senha e a confirmação não coincidem." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Erro ao configurar utilizador." @@ -3244,39 +3276,39 @@ msgstr "Erro ao configurar utilizador." msgid "New password successfully saved. You are now logged in." msgstr "A senha nova foi gravada com sucesso. Iniciou uma sessão." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Desculpe, só pessoas convidadas se podem registar." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Desculpe, código de convite inválido." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registo efectuado" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registar" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registo não é permitido." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Não se pode registar se não aceita a licença." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Correio electrónico já existe." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Nome de utilizador ou senha inválidos." -#: actions/register.php:343 +#: 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. " @@ -3284,56 +3316,60 @@ msgstr "" "Com este formulário pode criar uma conta nova. Poderá então publicar notas e " "ligar-se a amigos e colegas. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 letras minúsculas ou números, sem pontuação ou espaços. Obrigatório." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 ou mais caracteres. Obrigatório." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Repita a senha acima. Obrigatório." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Correio" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Usado apenas para actualizações, anúncios e recuperação da senha" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nome mais longo, de preferência o seu nome \"verdadeiro\"" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "O conteúdo e dados do site %1$s são privados e confidenciais." +msgstr "" +"Compreendo que o conteúdo e dados do site %1$s são privados e confidenciais." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." msgstr "" +"Os meus textos e ficheiros estão protegidos pelos direitos de autor de %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." msgstr "" +"Os meus textos e ficheiros permanecem protegidos pelos meus próprios " +"direitos de autor." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Todos os direitos reservados." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3343,7 +3379,7 @@ msgstr "" "estes dados privados: senha, endereço de correio electrónico, endereço de " "mensageiro instantâneo, número de telefone." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3376,7 +3412,7 @@ msgstr "" "\n" "Obrigado por se ter registado e esperamos que se divirta usando este serviço." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3459,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" @@ -3497,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 @@ -3514,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 @@ -3533,7 +3568,7 @@ msgstr "Não pode retirar funções aos utilizadores neste site." msgid "User doesn't have this role." msgstr "O utilizador não tem esta função." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3547,7 +3582,7 @@ msgstr "Utilizador já está impedido de criar notas públicas." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessões" @@ -3590,7 +3625,7 @@ msgid "Icon" msgstr "Ãcone" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nome" @@ -3601,12 +3636,12 @@ msgid "Organization" msgstr "Organização" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3697,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 :)" @@ -3706,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." @@ -3770,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" @@ -3784,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." @@ -3804,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." @@ -3817,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" @@ -3894,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 @@ -4009,12 +4044,12 @@ msgstr "Fuso horário por omissão, para o site; normalmente, UTC." #: actions/siteadminpanel.php:262 msgid "Default language" -msgstr "Idioma do site, por omissão" +msgstr "LÃngua, por omissão" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" -"Idioma do site quando a sua detecção na configuração do browser não é " +"LÃngua do site quando a sua detecção na configuração do browser não é " "possÃvel" #: actions/siteadminpanel.php:271 @@ -4224,7 +4259,7 @@ msgstr "Nenhum código introduzido" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Instantâneos" @@ -4284,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." @@ -4462,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." @@ -4577,7 +4609,7 @@ msgstr "" "subscrever as notas deste utilizador. Se não fez um pedido para subscrever " "as notas de alguém, simplesmente clique \"Rejeitar\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licença" @@ -4706,18 +4738,18 @@ msgstr "Tente [pesquisar grupos](%%action.groupsearch%%) e juntar-se a eles." #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Actualizações de %1#s a %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4726,11 +4758,11 @@ msgstr "" "Este site utiliza o %1$s versão %2$s, (c) 2008-2010 StatusNet, Inc. e " "colaboradores." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Colaboradores" -#: actions/version.php:168 +#: 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 " @@ -4742,7 +4774,7 @@ msgstr "" "Software Foundation, que na versão 3 da Licença, quer (por sua opção) " "qualquer versão posterior. " -#: actions/version.php:174 +#: 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 " @@ -4753,7 +4785,7 @@ msgstr "" "QUALQUER GARANTIA. Consulte a GNU Affero General Public License para mais " "informações. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4762,94 +4794,141 @@ msgstr "" "Juntamente com este programa deve ter recebido uma cópia da GNU Affero " "General Public License. Se não a tiver recebido, consulte %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Plugins" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versão" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autores" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4857,71 +4936,120 @@ msgstr "" "Demasiadas mensagens duplicadas, 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 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -4972,188 +5100,188 @@ msgid "Untitled page" msgstr "Página sem tÃtulo" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navegação primária deste site" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Perfil pessoal e notas dos amigos" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Pessoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Altere o seu endereço electrónico, avatar, senha, perfil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Ligar aos serviços" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Ligar" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Alterar a configuração do site" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Gestor" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Convidar amigos e colegas para se juntarem a si em %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Convidar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Terminar esta sessão" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Sair" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Criar uma conta" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registar" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Iniciar uma sessão" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Entrar" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ajudem-me!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Ajuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Procurar pessoas ou pesquisar texto" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Pesquisa" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Aviso do site" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Vistas locais" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Aviso da página" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navegação secundária deste site" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Ajuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Sobre" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Termos" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacidade" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Código" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Emblema" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licença de software do StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5163,13 +5291,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** é um serviço de microblogues." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5181,20 +5309,20 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licença de conteúdos do site" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "O conteúdo e dados do site %1$s são privados e confidenciais." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5202,14 +5330,14 @@ msgstr "" "direitos reservados." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Direitos de autor sobre o conteúdo e dados detidos pelos contribuidores. " "Todos os direitos reservados." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5217,19 +5345,19 @@ msgstr "" "licença %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginação" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Posteriores" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Anteriores" @@ -5279,64 +5407,64 @@ msgid "Unable to delete design setting." msgstr "Não foi possÃvel apagar a configuração do estilo." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuração básica do site" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuração do estilo" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Estilo" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuração do utilizador" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Utilizador" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuração de acesso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuração das localizações" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuração das sessões" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Editar aviso do site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configuração dos instântaneos" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "API requer acesso de leitura e escrita, mas só tem acesso de leitura." @@ -5466,11 +5594,11 @@ msgstr "Notas em que este anexo aparece" msgid "Tags for this attachment" msgstr "Categorias para este anexo" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Não foi possÃvel mudar a palavra-chave" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Não é permitido mudar a palavra-chave" @@ -5564,14 +5692,14 @@ msgstr "Nome completo: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Localidade: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Página pessoal: %s" @@ -6104,8 +6232,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s está agora a ouvir as suas notas em %2$s." +#: 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 "" +"Se acredita que esta conta está sendo usada abusivamente pode bloqueá-la da " +"sua lista de subscritores e reportá-la como spam aos administradores do site " +"em %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6132,19 +6270,19 @@ msgstr "" "8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Bio: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Novo endereço electrónico para publicar no site %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6166,30 +6304,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Estado de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmação SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: confirme que este número de telefone é seu com este código:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s envia-lhe um toque" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6217,13 +6355,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nova mensagem privada de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6257,13 +6395,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) adicionou a sua nota à s favoritas." #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6301,7 +6439,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6312,13 +6450,13 @@ msgstr "" "\n" "\t%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) enviou uma nota à sua atenção" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6381,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" @@ -6440,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." @@ -6513,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" @@ -6652,7 +6790,7 @@ msgstr "Todos os subscritores" #: lib/profileaction.php:191 msgid "User ID" -msgstr "ID do utilizador" +msgstr "Número de identificação" #: lib/profileaction.php:196 msgid "Member since" @@ -6667,7 +6805,7 @@ msgstr "Média diária" msgid "All groups" msgstr "Todos os grupos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Método não implementado." @@ -6691,7 +6829,7 @@ msgstr "Destaques" msgid "Popular" msgstr "Populares" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Sem argumentos return-to." @@ -6712,7 +6850,7 @@ msgstr "Repetir esta nota" msgid "Revoke the \"%s\" role from this user" msgstr "Retirar a função \"%s\" a este utilizador" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Nenhum utilizador único definido para o modo de utilizador único." @@ -6810,6 +6948,53 @@ msgstr "Nuvem da sua categorização das pessoas" msgid "None" 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 +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 +msgid "Failed saving theme." +msgstr "Não foi possÃvel gravar o tema." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +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 "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 "Tema contém um ficheiro do tipo '.%s', o que não é permitido." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Ocorreu um erro ao abrir o arquivo do tema." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Quem mais publica" @@ -6890,56 +7075,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "há alguns segundos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "há cerca de um minuto" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "há cerca de %d minutos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "há cerca de uma hora" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "há cerca de %d horas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "há cerca de um dia" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "há cerca de %d dias" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "há cerca de um mês" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "há cerca de %d meses" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "há cerca de um ano" diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po index a464b0cae..53468a064 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:40:58+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:55+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -25,7 +26,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Acesso" @@ -87,24 +88,24 @@ msgid "Save" msgstr "Salvar" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Esta página não existe." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -117,7 +118,7 @@ msgid "No such user." msgstr "Este usuário não existe." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s e amigos, pág. %2$d" @@ -125,33 +126,33 @@ msgstr "%1$s e amigos, pág. %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 e amigos" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Fonte de mensagens dos amigos de %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Fonte de mensagens dos amigos de %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Fonte de mensagens dos amigos de %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." @@ -159,7 +160,7 @@ msgstr "" "Esse é o fluxo de mensagens de %s e seus amigos, mas ninguém publicou nada " "ainda." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -169,78 +170,78 @@ msgstr "" "publicar algo." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" "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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Você e amigos" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Atualizações de %1$s e amigos no %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "O método da API não foi encontrado!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Este método requer um POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -248,7 +249,7 @@ msgstr "" "Você tem que especificar um parâmetro denominado 'device', com um desses " "valores: sms, im, none" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Não foi possÃvel atualizar o usuário." @@ -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:210 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 @@ -346,29 +347,30 @@ msgstr "" "Não é possÃvel enviar mensagens diretas para usuários que não sejam seus " "amigos." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Não foi encontrado nenhum status com esse ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Esta mensagem já é favorita!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Não foi possÃvel criar a favorita." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Essa mensagem não é favorita!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -396,125 +399,130 @@ msgstr "Não foi possÃvel determinar o usuário de origem." msgid "Could not find target user." msgstr "Não foi possÃvel encontrar usuário de destino." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "A identificação deve conter apenas letras minúsculas e números e não pode " "ter e espaços." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Esta identificação já está em uso. Tente outro." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Não é uma identificação válida." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "A URL informada não é válida." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Nome completo muito extenso (máx. 255 caracteres)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Descrição muito extensa (máximo %d caracteres)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Localização muito extensa (máx. 255 caracteres)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Muitos apelidos! O máximo são %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Apelido inválido: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "O apelido \"%s\" já está em uso. Tente outro." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "O apelido não pode ser igual à identificação." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "O grupo não foi encontrado." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Você já é membro desse grupo." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "O administrador desse grupo bloqueou sua inscrição." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Não foi possÃvel associar o usuário %1$s ao grupo %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Você não é membro deste grupo." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Não foi possÃvel remover o usuário %1$s do grupo %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "Grupos de %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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "Grupos de %1$s nos quais %2$s é membro." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Grupos de %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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" @@ -525,15 +533,15 @@ msgstr "Token inválido." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -603,12 +611,12 @@ msgstr "" "confia." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Conta" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -616,8 +624,8 @@ msgid "Nickname" msgstr "Usuário" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Senha" @@ -633,11 +641,11 @@ msgstr "Permitir" msgid "Allow or deny access to your account information." msgstr "Permitir ou negar o acesso à s informações da sua conta." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Esse método requer um POST ou DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Você não pode excluir uma mensagem de outro usuário." @@ -654,59 +662,63 @@ msgstr "Você não pode repetir a sua própria mensagem." msgid "Already repeated that notice." msgstr "Você já repetiu essa mensagem." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "A mensagem foi excluÃda." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Não foi encontrada nenhuma mensagem com esse ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Não encontrado." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoritas de %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s marcadas como favoritas por %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Mensagens mencionando %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s mensagens em resposta a mensagens de %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Mensagens públicas de %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s mensagens de todo mundo!" @@ -721,16 +733,20 @@ msgstr "Repetida para %s" msgid "Repeats of %s" msgstr "Repetições de %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Mensagens etiquetadas como %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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" @@ -824,11 +840,11 @@ msgstr "O avatar foi excluÃdo." msgid "You already blocked that user." msgstr "Você já bloqueou esse usuário." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Bloquear usuário" -#: actions/block.php:130 +#: 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 " @@ -844,7 +860,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -853,7 +869,7 @@ msgstr "Não" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Não bloquear este usuário" @@ -862,7 +878,7 @@ msgstr "Não bloquear este usuário" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -870,11 +886,11 @@ msgid "Yes" msgstr "Sim" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Bloquear este usuário" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Não foi possÃvel salvar a informação de bloqueio." @@ -1001,7 +1017,7 @@ msgstr "Você não é o dono desta aplicação." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Ocorreu um problema com o seu token de sessão." @@ -1035,7 +1051,7 @@ msgstr "Excluir esta aplicação" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Você não está autenticado." @@ -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" @@ -1106,45 +1122,55 @@ msgstr "Aparência" msgid "Design settings for this StatusNet site." msgstr "Configurações da aparência deste site StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "A URL da logo é inválida." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema não disponÃvel: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Alterar a logo" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Logo do site" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Alterar o tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Tema do site" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema para o site." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Tema personalizado" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" +"Você pode enviar um tema personalizado para o StatusNet, na forma de um " +"arquivo .zip." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Alterar imagem do fundo" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Fundo" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1154,57 +1180,65 @@ msgstr "" "arquivo é de %1 $s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Ativado" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Desativado" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Ativar/desativar a imagem de fundo." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Ladrilhar a imagem de fundo" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Alterar a cor" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Conteúdo" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Barra lateral" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Texto" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Links" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avançado" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "CSS personalizado" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Usar o padrão|" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Restaura a aparência padrão" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Restaura de volta ao padrão" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1214,7 +1248,7 @@ msgstr "Restaura de volta ao padrão" msgid "Save" msgstr "Salvar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Salvar a aparência" @@ -1328,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." @@ -1488,7 +1523,7 @@ msgid "Cannot normalize that email address" msgstr "Não foi possÃvel normalizar este endereço de e-mail" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Não é um endereço de e-mail válido." @@ -1717,13 +1752,13 @@ msgstr "O usuário já possui este papel." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Não foi especificado nenhum perfil." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Não foi encontrado nenhum perfil com esse ID." @@ -1865,7 +1900,7 @@ msgstr "Torna este usuário um administrador" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Mensagens de %s" @@ -2293,42 +2328,42 @@ msgstr "Você não é um membro desse grupo." msgid "%1$s left group %2$s" msgstr "%1$s deixou o grupo %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Já está autenticado." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Nome de usuário e/ou senha incorreto(s)." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" "Erro na configuração do usuário. Você provavelmente não tem autorização." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Entrar" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Autenticar-se no site" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Lembrar neste computador" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Entra automaticamente da próxima vez, sem pedir a senha. Não use em " "computadores compartilhados!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Perdeu ou esqueceu sua senha?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2336,11 +2371,11 @@ msgstr "" "Por razões de segurança, por favor, digite novamente seu nome de usuário e " "senha antes de alterar suas configurações." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Autentique-se com seu nome de usuário e senha." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2493,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." @@ -2551,30 +2587,30 @@ msgstr "" "Os desenvolvedores podem editar as configurações de registro para suas " "aplicações " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "A mensagem não está associada a nenhum perfil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Mensagem de %1$s no %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "O tipo de conteúdo %s não é suportado." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2679,7 +2715,7 @@ msgid "6 or more characters" msgstr "No mÃnimo 6 caracteres" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Confirmar" @@ -2691,11 +2727,11 @@ msgstr "Igual à senha acima" msgid "Change" msgstr "Alterar" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "A senha deve ter, no mÃnimo, 6 caracteres." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "As senhas não coincidem." @@ -2716,7 +2752,7 @@ msgid "Password saved." msgstr "A senha foi salva." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Caminhos" @@ -2921,43 +2957,43 @@ msgstr "Informações do perfil" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 letras minúsculas ou números, sem pontuações ou espaços" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Nome completo" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Site" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL do seu site, blog ou perfil em outro site" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Descreva a si mesmo e os seus interesses em %d caracteres" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Descreva a si mesmo e os seus interesses" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Descrição" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Localização" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Onde você está, ex: \"cidade, estado (ou região), paÃs\"" @@ -3000,7 +3036,7 @@ msgid "" msgstr "" "Assinar automaticamente à quem me assinar (melhor para perfis não humanos)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "A descrição é muito extensa (máximo %d caracteres)." @@ -3264,7 +3300,7 @@ msgstr "A senha deve ter 6 ou mais caracteres." msgid "Password and confirmation do not match." msgstr "A senha e a confirmação não coincidem." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Erro na configuração do usuário." @@ -3274,39 +3310,39 @@ msgstr "" "A nova senha foi salva com sucesso. A partir de agora você já está " "autenticado." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Desculpe, mas somente convidados podem se registrar." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Desculpe, mas o código do convite é inválido." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registro realizado com sucesso" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrar-se" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Não é permitido o registro." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Você não pode se registrar se não aceitar a licença." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "O endereço de e-mail já existe." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Nome de usuário e/ou senha inválido(s)" -#: actions/register.php:343 +#: 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. " @@ -3314,56 +3350,58 @@ msgstr "" "Através deste formulário você pode criar uma nova conta. A partir daà você " "pode publicar mensagens e se conectar a amigos e colegas. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 letras minúsculas ou números, sem pontuação ou espaços. Obrigatório." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "No mÃnimo 6 caracteres. Obrigatório." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Igual à senha acima. Obrigatório." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-mail" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Usado apenas para atualizações, anúncios e recuperações de senha" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Nome completo, de preferência seu nome \"real\"" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "O conteúdo e os dados de %1$s são privados e confidenciais." +msgstr "" +"Eu entendo que o conteúdo e os dados de %1$s são particulares e " +"confidenciais." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Meus textos e arquivos estão licenciados sob a %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Meus textos e arquivos permanecem sob meus próprios direitos autorais." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Todos os direitos reservados." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3373,7 +3411,7 @@ msgstr "" "particulares: senha, endereço de e-mail, endereço do mensageiro instantâneo " "e número de telefone." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3406,7 +3444,7 @@ msgstr "" "\n" "Obrigado por se registrar e esperamos que você aproveite o serviço." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3488,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" @@ -3523,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)." @@ -3541,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" @@ -3563,7 +3601,7 @@ msgstr "Não é possÃvel revogar os papéis dos usuários neste site." msgid "User doesn't have this role." msgstr "O usuário não possui este papel." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3577,7 +3615,7 @@ msgstr "O usuário já está em isolamento." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessões" @@ -3620,7 +3658,7 @@ msgid "Icon" msgstr "Ãcone" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Nome" @@ -3631,12 +3669,12 @@ msgid "Organization" msgstr "Organização" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3724,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 " @@ -3799,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" @@ -3813,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." @@ -3833,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." @@ -3846,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" @@ -3923,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)." @@ -4253,7 +4291,7 @@ msgstr "Não foi digitado nenhum código" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "EstatÃsticas" @@ -4313,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." @@ -4491,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." @@ -4607,7 +4642,7 @@ msgstr "" "as mensagens deste usuário. Se você não solicitou assinar as mensagens de " "alguém, clique em \"Recusar\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licença" @@ -4738,18 +4773,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Mensagens de %1$s no %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4758,11 +4793,11 @@ msgstr "" "Este site funciona sobre %1$s versão %2$s, Copyright 2008-2010 StatusNet, " "Inc. e colaboradores." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Colaboradores" -#: actions/version.php:168 +#: 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 " @@ -4774,7 +4809,7 @@ msgstr "" "Software Foundation, na versão 3 desta licença ou (caso deseje) qualquer " "versão posterior. " -#: actions/version.php:174 +#: 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 " @@ -4786,7 +4821,7 @@ msgstr "" "ADEQUAÇÃO A UMA FINALIDADE ESPECÃFICA. Verifique a GNU Affero General " "Public License para mais detalhes. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4795,93 +4830,141 @@ msgstr "" "Você deve ter recebido uma cópia da GNU Affero General Public License com " "este programa. Caso contrário, veja %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Plugins" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Versão" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Autor(es)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4889,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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5004,188 +5138,188 @@ msgid "Untitled page" msgstr "Página sem tÃtulo" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Navegação primária no site" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Perfil pessoal e fluxo de mensagens dos amigos" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Pessoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Altere seu e-mail, avatar, senha, perfil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Conecte-se a outros serviços" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Conectar" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Altere as configurações do site" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administrar" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Convide seus amigos e colegas para unir-se a você no %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Convidar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Sair do site" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Sair" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Criar uma conta" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrar-se" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Autentique-se no site" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Entrar" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ajudem-me!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Ajuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Procure por pessoas ou textos" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Pesquisar" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Mensagem do site" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Visualizações locais" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "NotÃcia da página" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Navegação secundária no site" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Ajuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Sobre" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Termos de uso" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Privacidade" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Contato" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Mini-aplicativo" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Licença do software StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5195,13 +5329,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** é um serviço de microblog." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5213,51 +5347,51 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licença do conteúdo do site" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "O conteúdo e os dados de %1$s são privados e confidenciais." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "Conteúdo e dados licenciados sob %1$s. Todos os direitos reservados." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "Conteúdo e dados licenciados pelos colaboradores. Todos os direitos " "reservados." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "Todo o conteúdo e dados de %1$s estão disponÃveis sob a licença %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Paginação" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Próximo" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Anterior" @@ -5307,64 +5441,64 @@ msgid "Unable to delete design setting." msgstr "Não foi possÃvel excluir as configurações da aparência." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Configuração básica do site" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Configuração da aparência" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Aparência" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Configuração do usuário" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Usuário" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Configuração do acesso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Configuração dos caminhos" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Configuração das sessões" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Editar os avisos do site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Configurações das estatÃsticas" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "Os recursos de API exigem acesso de leitura e escrita, mas você possui " @@ -5497,11 +5631,11 @@ msgstr "Mensagens onde este anexo aparece" msgid "Tags for this attachment" msgstr "Etiquetas para este anexo" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Não foi possÃvel alterar a senha" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Não é permitido alterar a senha" @@ -5583,9 +5717,9 @@ msgstr "Não foi possÃvel associar o usuário %1$s ao grupo %2$s." #. 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 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %1$s from group %2$s" -msgstr "Não foi possÃvel remover o usuário %1$s do grupo %2$s." +msgstr "Não foi possÃvel remover o usuário %1$s do grupo %2$s" #. TRANS: Whois output. %s is the full name of the queried user. #: lib/command.php:418 @@ -5595,14 +5729,14 @@ msgstr "Nome completo: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Localização: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Site: %s" @@ -5625,10 +5759,10 @@ 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 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d" msgstr "" -"A mensagem é muito extensa - o máximo são %1$d caracteres e você enviou %2$d." +"A mensagem é muito extensa - o máximo são %1$d caracteres e você enviou %2$d" #. TRANS: Message given have sent a direct message to another user. #. TRANS: %s is the name of the other user. @@ -6139,8 +6273,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s agora está acompanhando suas mensagens no %2$s." +#: 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 "" +"Se você acredita que esse usuário está se comportando de forma abusiva, você " +"pode bloqueá-lo da sua lista de assinantes e reportá-lo como spammer ao " +"administrador do site em %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6166,19 +6310,19 @@ msgstr "" "Altere seu endereço de e-mail e suas opções de notificação em %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Descrição: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Novo endereço de e-mail para publicar no %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6200,30 +6344,32 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "Mensagem de %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Confirmação de SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "Aguardando a confirmação deste número de telefone." +msgstr "" +"%s: confirme que você é o proprietário desse número de telefone com esse " +"código:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Você teve a atenção chamada por %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6251,13 +6397,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nova mensagem particular de %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6291,13 +6437,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) marcou sua mensagem como favorita" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6335,21 +6481,24 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" "\n" "\t%s" msgstr "" +"A conversa inteira pode ser lida aqui:\n" +"\n" +"%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) enviou uma mensagem citando você" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6375,6 +6524,29 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) acabou de enviar uma mensagem citando você (do tipo '@usuário') " +"em %2$s.\n" +"\n" +"A mensagem está aqui:\n" +"\n" +"%3$s\n" +"\n" +"Nela está escrito:\n" +"\n" +"%4$s\n" +"\n" +"%5$s Pode respondê-la aqui:\n" +"\n" +"%6$s\n" +"\n" +"A lista de todas as citações a você está aqui:\n" +"\n" +"%7$s\n" +"\n" +"Atenciosamente,\n" +"%2$s\n" +"\n" +"P.S.: Você pode cancelar a notificações por e-mail aqui: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6389,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" @@ -6450,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." @@ -6523,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" @@ -6617,7 +6789,7 @@ msgstr "Respostas" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "Favoritas" +msgstr "Favoritos" #: lib/personalgroupnav.php:125 msgid "Inbox" @@ -6677,7 +6849,7 @@ msgstr "Média diária" msgid "All groups" msgstr "Todos os grupos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Método não implementado." @@ -6701,7 +6873,7 @@ msgstr "Em destaque" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Sem argumentos return-to." @@ -6722,7 +6894,7 @@ msgstr "Repetir esta mensagem" msgid "Revoke the \"%s\" role from this user" msgstr "Revoga o papel \"%s\" deste usuário" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Nenhum usuário definido para o modo de usuário único." @@ -6820,6 +6992,52 @@ msgstr "Nuvem de etiquetas pessoais definidas pelos outros usuário" msgid "None" 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 +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 +msgid "Failed saving theme." +msgstr "Não foi possÃvel salvar o tema." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +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 "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 "O tema contém um arquivo do tipo '.%s', que não é permitido." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Ocorreu um erro ao abrir o arquivo do tema." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Quem mais publica" @@ -6900,56 +7118,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "alguns segundos atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "cerca de 1 minuto atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "cerca de %d minutos atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "cerca de 1 hora atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "cerca de %d horas atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "cerca de 1 dia atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "cerca de %d dias atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "cerca de 1 mês atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "cerca de %d meses atrás" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "cerca de 1 ano atrás" diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po index 249d59d65..7027150bd 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:01+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:57+0000\n" "Language-Team: Russian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -26,9 +26,9 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" -msgstr "ПринÑÑ‚ÑŒ" +msgstr "ДоÑтуп" #. TRANS: Page notice #: actions/accessadminpanel.php:67 @@ -89,24 +89,24 @@ msgid "Save" msgstr "Сохранить" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Ðет такой Ñтраницы." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -119,7 +119,7 @@ msgid "No such user." msgstr "Ðет такого пользователÑ." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s и друзьÑ, Ñтраница %2$d" @@ -127,39 +127,39 @@ msgstr "%1$s и друзьÑ, Ñтраница %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 и друзьÑ" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Лента друзей %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Лента друзей %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Лента друзей %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "Ðто лента %s и друзей, однако пока никто ничего не отправил." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -169,78 +169,77 @@ msgstr "" "action.groups%%) или отправьте что-нибудь Ñами." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "Обновлено от %1$s и его друзей на %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "Метод API не найден." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Ðтот метод требует POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." @@ -248,7 +247,7 @@ msgstr "" "Ð’Ñ‹ должны указать параметр Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «device» и одним из значений: sms, im, " "none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ пользователÑ." @@ -268,7 +267,7 @@ msgstr "Ðе удаётÑÑ Ñохранить профиль." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -346,32 +345,30 @@ msgstr "" "Ðе удаётÑÑ Ð¿Ð¾Ñылать прÑмые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñм, которые не ÑвлÑÑŽÑ‚ÑÑ " "Вашими друзьÑми." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Ðет ÑтатуÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Ðтот ÑÑ‚Ð°Ñ‚ÑƒÑ ÑƒÐ¶Ðµ входит в чиÑло любимых." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Ðе удаётÑÑ Ñоздать любимую запиÑÑŒ." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Ðтот ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ðµ входит в чиÑло ваших любимых." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -400,124 +397,128 @@ msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ иÑходного пользо msgid "Could not find target user." msgstr "Ðе удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ целевого пользователÑ." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Ð˜Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑоÑтоÑÑ‚ÑŒ только из пропиÑных букв и цифр и не иметь пробелов." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Такое Ð¸Ð¼Ñ ÑƒÐ¶Ðµ иÑпользуетÑÑ. Попробуйте какое-нибудь другое." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Ðеверное имÑ." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "URL Главной Ñтраницы неверен." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Полное Ð¸Ð¼Ñ Ñлишком длинное (не больше 255 знаков)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Слишком длинное опиÑание (макÑимум %d Ñимволов)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Слишком длинное меÑтораÑположение (макÑимум 255 знаков)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Слишком много алиаÑов! МакÑимальное чиÑло — %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Ошибочный пÑевдоним: «%s»." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "ÐÐ»Ð¸Ð°Ñ Â«%s» уже иÑпользуетÑÑ. Попробуйте какой-нибудь другой." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "ÐÐ»Ð¸Ð°Ñ Ð½Ðµ может Ñовпадать Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Группа не найдена." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Ð’Ñ‹ уже ÑвлÑетеÑÑŒ членом Ñтой группы." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Ð’Ñ‹ заблокированы из Ñтой группы админиÑтратором." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Ðе удаётÑÑ Ð¿Ñ€Ð¸Ñоединить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1$s к группе %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Ð’Ñ‹ не ÑвлÑетеÑÑŒ членом Ñтой группы." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1$s из группы %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." 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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "Группы %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -528,15 +529,15 @@ msgstr "Ðеправильный токен" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -602,12 +603,12 @@ msgstr "" "Ñторонним приложениÑм, которым вы доверÑете." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "ÐаÑтройки" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -615,8 +616,8 @@ msgid "Nickname" msgstr "ИмÑ" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Пароль" @@ -632,11 +633,11 @@ msgstr "Разрешить" msgid "Allow or deny access to your account information." msgstr "Разрешить или запретить доÑтуп к информации вашей учётной запиÑи." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Ðтот метод требует POST или DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Ð’Ñ‹ не можете удалÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей." @@ -653,59 +654,63 @@ msgstr "Ðевозможно повторить ÑобÑтвенную Ð·Ð°Ð¿Ð¸Ñ msgid "Already repeated that notice." msgstr "ЗапиÑÑŒ уже повторена." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÐ´Ð°Ð»Ñ‘Ð½." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Ðе найдено ÑтатуÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе найдено." -#: actions/apistatusesupdate.php:304 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 "Ðеподдерживаемый формат." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Любимое от %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %1$s, отмеченные как любимые %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / ОбновлениÑ, упоминающие %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s обновил Ñтот ответ на Ñообщение: %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð»ÐµÐ½Ñ‚Ð° %s" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %s от вÑех!" @@ -720,16 +725,20 @@ msgstr "Повторено Ð´Ð»Ñ %s" msgid "Repeats of %s" msgstr "Повторы за %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "ЗапиÑи Ñ Ñ‚ÐµÐ³Ð¾Ð¼ %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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 "Удалить" @@ -823,11 +832,11 @@ msgstr "Ðватара удалена." msgid "You already blocked that user." msgstr "Ð’Ñ‹ уже заблокировали Ñтого пользователÑ." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Заблокировать пользователÑ." -#: actions/block.php:130 +#: 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 " @@ -842,7 +851,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -851,7 +860,7 @@ msgstr "Ðет" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Ðе блокировать Ñтого пользователÑ" @@ -860,7 +869,7 @@ msgstr "Ðе блокировать Ñтого пользователÑ" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -868,11 +877,11 @@ msgid "Yes" msgstr "Да" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Заблокировать пользователÑ." -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Ðе удаётÑÑ Ñохранить информацию о блокировании." @@ -999,7 +1008,7 @@ msgstr "Ð’Ñ‹ не ÑвлÑетеÑÑŒ владельцем Ñтого прилоР#: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Проблема Ñ Ð’Ð°ÑˆÐµÐ¹ ÑеÑÑией. Попробуйте ещё раз, пожалуйÑта." @@ -1033,7 +1042,7 @@ msgstr "Удалить Ñто приложение" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "Удалить Ñту запиÑÑŒ" @@ -1104,45 +1113,53 @@ msgstr "Оформление" msgid "Design settings for this StatusNet site." msgstr "ÐаÑтройки Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого Ñайта StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Ðеверный URL логотипа." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Тема не доÑтупна: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Изменить логотип" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Логотип Ñайта" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Изменить тему" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Тема Ñайта" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Тема Ð´Ð»Ñ Ñайта." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "ОÑÐ¾Ð±Ð°Ñ Ñ‚ÐµÐ¼Ð°" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Ð’Ñ‹ можете загрузить оÑобую тему StatusNet в виде ZIP-архива." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Изменение фонового изображениÑ" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Фон" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1152,57 +1169,65 @@ msgstr "" "ÑоÑтавлÑет %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Включить" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Отключить" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Включить или отключить показ фонового изображениÑ." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "РаÑÑ‚Ñнуть фоновое изображение" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Изменение цветовой гаммы" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "Содержание" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Ð‘Ð¾ÐºÐ¾Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»ÑŒ" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "ТекÑÑ‚" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "СÑылки" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "РаÑширенный" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "ОÑобый CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "ИÑпользовать Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "ВоÑÑтановить оформление по умолчанию" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "ВоÑÑтановить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1212,7 +1237,7 @@ msgstr "ВоÑÑтановить Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию" msgid "Save" msgstr "Сохранить" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Сохранить оформление" @@ -1326,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 "Ðе удаётÑÑ Ñоздать алиаÑÑ‹." @@ -1492,7 +1518,7 @@ msgid "Cannot normalize that email address" msgstr "Ðе удаётÑÑ Ñтандартизировать Ñтот Ñлектронный адреÑ" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Ðеверный Ñлектронный адреÑ." @@ -1720,13 +1746,13 @@ msgstr "Пользователь уже имеет Ñту роль." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Профиль не определен." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ðет Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ ID." @@ -1867,7 +1893,7 @@ msgstr "Сделать Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑ‚Ñ€Ð°Ñ #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "Лента %s" @@ -2295,39 +2321,39 @@ msgstr "Ð’Ñ‹ не ÑвлÑетеÑÑŒ членом Ñтой группы." msgid "%1$s left group %2$s" msgstr "%1$s покинул группу %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Ð’Ñ‹ уже авторизовалиÑÑŒ." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Ðекорректное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ пароль." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Ошибка уÑтановки пользователÑ. Ð’Ñ‹, вероÑтно, не авторизованы." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Вход" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "ÐвторизоватьÑÑ" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Запомнить менÑ" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "ÐвтоматичеÑкии входить в дальнейшем. Ðе Ð´Ð»Ñ Ð¾Ð±Ñ‰ÐµÐ´Ð¾Ñтупных компьютеров!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "ПотерÑли или забыли пароль?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2335,11 +2361,11 @@ msgstr "" "По причинам ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑти введите Ð¸Ð¼Ñ Ð¸ пароль ещё раз, прежде чем " "изменÑÑ‚ÑŒ Ваши уÑтановки." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Войти Ñ Ð²Ð°ÑˆÐ¸Ð¼ именем учаÑтника и паролем." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2490,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" @@ -2545,30 +2571,30 @@ msgstr "Ð’Ñ‹ не разрешили приложениÑм иÑпользова msgid "Developers can edit the registration settings for their applications " msgstr "Разработчики могут изменÑÑ‚ÑŒ наÑтройки региÑтрации Ñвоих приложений " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Уведомление не имеет профилÑ." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ %1$s на %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Тип Ñодержимого %s не поддерживаетÑÑ." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "Ðеподдерживаемый формат данных." @@ -2673,7 +2699,7 @@ msgid "6 or more characters" msgstr "6 или больше знаков" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Подтверждение" @@ -2685,11 +2711,11 @@ msgstr "Тот же пароль, что и выше" msgid "Change" msgstr "Изменить" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Пароль должен быть длиной не менее 6 Ñимволов." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Пароли не Ñовпадают." @@ -2710,7 +2736,7 @@ msgid "Password saved." msgstr "Пароль Ñохранён." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Пути" @@ -2764,7 +2790,7 @@ msgstr "Путь к Ñайту" #: actions/pathsadminpanel.php:246 msgid "Path to locales" -msgstr "ПуÑÑ‚ÑŒ к локализациÑм" +msgstr "Путь к локализациÑм" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" @@ -2913,43 +2939,43 @@ msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 латинÑких Ñтрочных буквы или цифры, без пробелов" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Опишите ÑÐµÐ±Ñ Ð¸ Ñвои ÑƒÐ²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ помощи %d Ñимволов" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Опишите ÑÐµÐ±Ñ Ð¸ Ñвои интереÑÑ‹" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "БиографиÑ" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Где вы находитеÑÑŒ, например «Город, облаÑÑ‚ÑŒ, Ñтрана»" @@ -2991,7 +3017,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "ÐвтоматичеÑки подпиÑыватьÑÑ Ð½Ð° вÑех, кто подпиÑалÑÑ Ð½Ð° менÑ" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Слишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ð±Ð¸Ð¾Ð³Ñ€Ð°Ñ„Ð¸Ñ (макÑимум %d Ñимволов)." @@ -3002,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 @@ -3251,7 +3277,7 @@ msgstr "Пароль должен быть длиной не менее 6 Ñим msgid "Password and confirmation do not match." msgstr "Пароль и его подтверждение не Ñовпадают." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Ошибка в уÑтановках пользователÑ." @@ -3259,41 +3285,41 @@ msgstr "Ошибка в уÑтановках пользователÑ." msgid "New password successfully saved. You are now logged in." msgstr "Ðовый пароль уÑпешно Ñохранён. Ð’Ñ‹ авторизовалиÑÑŒ." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "ПроÑтите, региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ по приглашению." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Извините, неверный приглаÑительный код." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÑпешна!" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "РегиÑтрациÑ" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑтима." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" "Ð’Ñ‹ не можете зарегиÑтрироватьÑÑ, еÑли Ð’Ñ‹ не подтверждаете лицензионного " "ÑоглашениÑ." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Такой Ñлектронный Ð°Ð´Ñ€ÐµÑ ÑƒÐ¶Ðµ задейÑтвован." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ðеверное Ð¸Ð¼Ñ Ð¸Ð»Ð¸ пароль." -#: actions/register.php:343 +#: 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. " @@ -3302,56 +3328,58 @@ msgstr "" "получите возможноÑÑ‚ÑŒ публиковать короткие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ уÑтанавливать ÑвÑзи Ñ " "друзьÑми и коллегами. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 латинÑких Ñтрочных букв или цифр, без пробелов. ОбÑзательное поле." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 или более Ñимволов. ОбÑзательное поле." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Тот же пароль что и Ñверху. ОбÑзательное поле." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Email" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Ðужна только Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ð¹, оÑведомлений и воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Полное имÑ, предпочтительно Ваше наÑтоÑщее имÑ" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "Содержание и данные %1$s ÑвлÑÑŽÑ‚ÑÑ Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ и конфиденциальными." +msgstr "" +"Я понимаю, что Ñодержание и данные %1$s ÑвлÑÑŽÑ‚ÑÑ Ñ‡Ð°Ñтными и " +"конфиденциальными." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "ÐвторÑким правом на мои текÑÑ‚Ñ‹ и файлы обладает %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "ÐвторÑкие права на мои текÑÑ‚Ñ‹ и файлы оÑтаютÑÑ Ð·Ð° мной." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: 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:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3360,7 +3388,7 @@ msgstr "" "Мои текÑÑ‚Ñ‹ и файлы доÑтупны на уÑловиÑÑ… %s, за иÑключением Ñледующей личной " "информации: паролÑ, почтового адреÑа, номера меÑÑенджера и номера телефона." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3394,7 +3422,7 @@ msgstr "" "СпаÑибо за то, что приÑоединилиÑÑŒ к нам, надеемÑÑ, что вы получите " "удовольÑтвие от иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑервиÑа!" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3473,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 "Повторено" @@ -3511,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 @@ -3527,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 @@ -3547,7 +3575,7 @@ msgstr "Ð’Ñ‹ не можете Ñнимать роли пользователеРmsgid "User doesn't have this role." msgstr "Пользователь не имеет Ñтой роли." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3562,7 +3590,7 @@ msgstr "Пользователь уже в режиме пеÑочницы." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "СеÑÑии" @@ -3605,7 +3633,7 @@ msgid "Icon" msgstr "Иконка" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "ИмÑ" @@ -3616,12 +3644,12 @@ msgid "Organization" msgstr "ОрганизациÑ" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтика" @@ -3711,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 пока не выбрал ни одной любимой запиÑи. Ðапишите такую интереÑную запиÑÑŒ, " "которую он добавит её в чиÑло любимых :)" @@ -3720,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%%%%) и не напиÑать что-нибудь " "интереÑное, что понравилоÑÑŒ бы Ñтому пользователю? :)" @@ -3784,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 "УчаÑтники" @@ -3798,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." @@ -3818,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." @@ -3831,7 +3859,7 @@ msgstr "" "обеÑпечении [StatusNet](http://status.net/). УчаÑтники обмениваютÑÑ " "короткими ÑообщениÑми о Ñвоей жизни и интереÑах. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтраторы" @@ -3908,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 @@ -3937,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 @@ -4242,7 +4269,7 @@ msgstr "Код не введён" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Снимки" @@ -4302,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 "Ðе удаётÑÑ Ñохранить подпиÑку." @@ -4483,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 "Ð’Ñ‹ не заблокировали Ñтого пользователÑ." @@ -4522,7 +4546,7 @@ msgstr "Пользователь" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "ПользовательÑкие наÑтройки Ð´Ð»Ñ Ñтого Ñайта StatusNet." +msgstr "ÐаÑтройки Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ñтого Ñайта StatusNet." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4598,7 +4622,7 @@ msgstr "" "подпиÑатьÑÑ Ð½Ð° запиÑи Ñтого пользователÑ. ЕÑли Ð’Ñ‹ Ñтого не хотите делать, " "нажмите «Отказ»." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "ЛицензиÑ" @@ -4609,7 +4633,7 @@ msgstr "ПринÑÑ‚ÑŒ" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 msgid "Subscribe to this user" -msgstr "ПодпиÑатьÑÑ Ð½Ð° %s" +msgstr "ПодпиÑатьÑÑ Ð½Ð° Ñтого пользователÑ" #: actions/userauthorization.php:219 msgid "Reject" @@ -4726,18 +4750,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Обновлено от %1$s на %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4746,11 +4770,11 @@ msgstr "" "Ðтот Ñайт Ñоздан на оÑнове %1$s верÑии %2$s, Copyright 2008-2010 StatusNet, " "Inc. и учаÑтники." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Разработчики" -#: actions/version.php:168 +#: 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 " @@ -4762,7 +4786,7 @@ msgstr "" "License, опубликованной Free Software Foundation, либо под верÑией 3, либо " "(на выбор) под любой более поздней верÑией. " -#: actions/version.php:174 +#: 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 " @@ -4774,7 +4798,7 @@ msgstr "" "или ПРИГОДÐОСТИ ДЛЯ ЧÐСТÐОГО ИСПОЛЬЗОВÐÐИЯ. См. GNU Affero General Public " "License Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4783,93 +4807,140 @@ msgstr "" "Ð’Ñ‹ должны были получить копию GNU Affero General Public License вмеÑте Ñ " "Ñтой программой. ЕÑли нет, Ñм. %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Плагины" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "ВерÑиÑ" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Ðвтор(Ñ‹)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Ошибка баз данных при вÑтавке хеш-тегов: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4877,71 +4948,120 @@ msgstr "" "Слишком много одинаковых запиÑей за Ñтоль короткий Ñрок; передохните немного " "и попробуйте вновь через пару минут." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "Ðе удаётÑÑ Ñохранить информацию о локальной группе." @@ -4992,188 +5112,188 @@ msgid "Untitled page" msgstr "Страница без названиÑ" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Личное" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Изменить ваш email, аватар, пароль, профиль" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "Соединить" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "ÐаÑтройки" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "ПриглаÑите друзей и коллег Ñтать такими же как Ð’Ñ‹ учаÑтниками %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "ПриглаÑить" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Выход" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "РегиÑтрациÑ" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Войти" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Вход" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Помощь" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Помощь" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ИÑкать людей или текÑÑ‚" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" -msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" +msgstr "Уведомление Ñайта" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Локальные виды" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð¾ подпиÑкам" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Помощь" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "О проекте" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "ЧаВо" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "ПользовательÑкое Ñоглашение" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "ИÑходный код" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "ÐšÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Бедж" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet лицензиÑ" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5183,13 +5303,13 @@ msgstr "" "broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** — ÑÐµÑ€Ð²Ð¸Ñ Ð¼Ð¸ÐºÑ€Ð¾Ð±Ð»Ð¾Ð³Ð¸Ð½Ð³Ð°." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5202,52 +5322,52 @@ msgstr "" "licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "Содержание и данные %1$s ÑвлÑÑŽÑ‚ÑÑ Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ и конфиденциальными." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" "ÐвторÑкие права на Ñодержание и данные принадлежат %1$s. Ð’Ñе права защищены." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "Ð’Ñе материалы и данные %1$s доÑтупны на уÑловиÑÑ… лицензии %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Туда" @@ -5295,64 +5415,64 @@ msgid "Unable to delete design setting." msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ наÑтройки оформлениÑ." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "ОÑÐ½Ð¾Ð²Ð½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñайта" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Сайт" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Оформление" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Пользователь" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð´Ð¾Ñтупа" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿ÑƒÑ‚ÐµÐ¹" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑеÑÑий" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Изменить уведомление Ñайта" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ñнимков" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API реÑурÑа требует доÑтуп Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ запиÑи, но у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ только доÑтуп " @@ -5485,11 +5605,11 @@ msgstr "Сообщает, где поÑвлÑетÑÑ Ñто вложение" msgid "Tags for this attachment" msgstr "Теги Ð´Ð»Ñ Ñтого вложениÑ" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Изменение Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ðµ удалоÑÑŒ" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ðµ разрешена" @@ -5583,14 +5703,14 @@ msgstr "Полное имÑ: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "МеÑтораÑположение: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "ДомашнÑÑ Ñтраница: %s" @@ -6128,8 +6248,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s теперь Ñледит за вашими запиÑÑми на %2$s." +#: 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 "" +"ЕÑли вы Ñчитаете, Ñта ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ иÑпользуетÑÑ Ñо злоупотреблениÑми, вы " +"можете заблокировать её включение в Ñвой ÑпиÑок подпиÑчиков и Ñообщить о " +"Ñпаме админиÑтраторам Ñайта по %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6155,19 +6285,19 @@ msgstr "" "Измените email-Ð°Ð´Ñ€ÐµÑ Ð¸ наÑтройки уведомлений на %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "БиографиÑ: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ðовый Ñлектронный Ð°Ð´Ñ€ÐµÑ Ð´Ð»Ñ Ð¿Ð¾Ñтинга %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6189,30 +6319,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s ÑтатуÑ" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Подтверждение СМС" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s. Подтвердите, что Ñто ваш телефон, Ñледующим кодом:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Ð’Ð°Ñ Â«Ð¿Ð¾Ð´Ñ‚Ð¾Ð»ÐºÐ½ÑƒÐ»Â» пользователь %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6240,13 +6370,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ðовое приватное Ñообщение от %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6280,13 +6410,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) добавил вашу запиÑÑŒ в чиÑло Ñвоих любимых" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6324,7 +6454,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6335,13 +6465,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) отправил запиÑÑŒ Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ вниманиÑ" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6403,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." @@ -6461,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 не поддерживаетÑÑ Ð½Ðµ Ñтом Ñервере." @@ -6534,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 "ЗапиÑÑŒ повторена" @@ -6688,7 +6818,7 @@ msgstr "СреднеÑуточнаÑ" msgid "All groups" msgstr "Ð’Ñе группы" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Ðереализованный метод." @@ -6712,7 +6842,7 @@ msgstr "ОÑобые" msgid "Popular" msgstr "ПопулÑрное" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Ðет аргумента return-to." @@ -6733,7 +6863,7 @@ msgstr "Повторить Ñту запиÑÑŒ" msgid "Revoke the \"%s\" role from this user" msgstr "Отозвать у Ñтого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ€Ð¾Ð»ÑŒ «%s»" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Ðи задан пользователь Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого режима." @@ -6831,6 +6961,52 @@ msgstr "Облако тегов людей" msgid "None" msgstr "Ðет тегов" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "Ðтот Ñервер не может обработать загруженные темы без поддержки ZIP." + +#: 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 "" +"Размер загруженной темы Ñлишком велик, в раÑпакованном виде она должна " +"занимать не более %d байт." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "ÐедопуÑтимый архив: темы. ОтÑутÑтвует файл 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 "" +"Тема Ñодержит недопуÑтимое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° или папки. ДопуÑтимы буквы ASCII, " +"цифры, подчеркивание и знак минуÑа." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Тема Ñодержит файл недопуÑтимого типа «.%s»." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° темы." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Самые активные" @@ -6911,56 +7087,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "около %d минут(Ñ‹) назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "около %d чаÑа(ов) назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "около %d днÑ(ей) назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "около %d меÑÑца(ев) назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "около года назад" diff --git a/locale/statusnet.pot b/locale/statusnet.pot index da42f33dd..822d4fcf8 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-05-16 15:39+0000\n" +"POT-Creation-Date: 2010-08-11 10:48+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" @@ -19,7 +19,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "" @@ -81,24 +81,24 @@ msgid "Save" msgstr "" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -111,7 +111,7 @@ msgid "No such user." msgstr "" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "" @@ -119,39 +119,39 @@ msgstr "" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 "" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -159,79 +159,79 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "" @@ -251,7 +251,7 @@ msgstr "" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -325,29 +325,29 @@ msgstr "" msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -375,123 +375,127 @@ msgstr "" msgid "Could not find target user." msgstr "" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "" -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "" -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -502,15 +506,15 @@ msgstr "" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -571,12 +575,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -584,8 +588,8 @@ msgid "Nickname" msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "" @@ -601,11 +605,11 @@ msgstr "" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -622,59 +626,63 @@ msgstr "" msgid "Already repeated that notice." msgstr "" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "" -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "" -#: actions/apistatusesupdate.php:304 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 "" -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -689,16 +697,20 @@ msgstr "" msgid "Repeats of %s" msgstr "" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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:657 msgid "Delete" msgstr "" @@ -791,11 +803,11 @@ msgstr "" msgid "You already blocked that user." msgstr "" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "" -#: actions/block.php:130 +#: 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 " @@ -807,7 +819,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -816,7 +828,7 @@ msgstr "" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "" @@ -825,7 +837,7 @@ msgstr "" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -833,11 +845,11 @@ msgid "Yes" msgstr "" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -964,7 +976,7 @@ msgstr "" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -995,7 +1007,7 @@ msgstr "" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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:657 msgid "Delete this notice" msgstr "" @@ -1062,45 +1074,53 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "" -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1108,57 +1128,65 @@ msgid "" msgstr "" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1168,7 +1196,7 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1282,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 "" @@ -1436,7 +1465,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "" @@ -1655,13 +1684,13 @@ msgstr "" #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1795,7 +1824,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "" @@ -2167,49 +2196,49 @@ msgstr "" msgid "%1$s left group %2$s" msgstr "" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "" -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2351,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 @@ -2404,30 +2433,30 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: 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:158 +#: 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:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2530,7 +2559,7 @@ msgid "6 or more characters" msgstr "" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "" @@ -2542,11 +2571,11 @@ msgstr "" msgid "Change" msgstr "" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "" @@ -2567,7 +2596,7 @@ msgid "Password saved." msgstr "" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2766,43 +2795,43 @@ msgstr "" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: 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:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "" @@ -2842,7 +2871,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "" @@ -3086,7 +3115,7 @@ msgstr "" msgid "Password and confirmation do not match." msgstr "" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "" @@ -3094,100 +3123,100 @@ msgstr "" msgid "New password successfully saved. You are now logged in." msgstr "" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "" -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "" -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: 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:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3206,7 +3235,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3281,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:676 msgid "Repeated" msgstr "" @@ -3319,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 @@ -3332,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 @@ -3349,7 +3378,7 @@ msgstr "" msgid "User doesn't have this role." msgstr "" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "" @@ -3363,7 +3392,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3406,7 +3435,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "" @@ -3417,12 +3446,12 @@ msgid "Organization" msgstr "" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "" @@ -3507,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 @@ -3575,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 "" @@ -3589,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." @@ -3603,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." @@ -3612,7 +3641,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3687,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 @@ -3995,7 +4024,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4055,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 "" @@ -4219,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 "" @@ -4329,7 +4355,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4450,29 +4476,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4480,7 +4506,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4488,166 +4514,259 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 "" @@ -4698,188 +4817,188 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4887,13 +5006,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: 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:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4902,49 +5021,49 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "" @@ -4992,64 +5111,64 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5179,11 +5298,11 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "" @@ -5274,14 +5393,14 @@ 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:263 +#: 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "" @@ -5757,8 +5876,15 @@ msgstr "" 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5774,19 +5900,19 @@ msgid "" msgstr "" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -5800,30 +5926,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -5840,13 +5966,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -5866,13 +5992,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: 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:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -5894,7 +6020,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -5902,13 +6028,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -5945,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:228 lib/noticelist.php:506 msgid "from" msgstr "" @@ -6000,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 "" @@ -6071,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:568 msgid "in context" msgstr "" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "" @@ -6225,7 +6351,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6249,7 +6375,7 @@ msgstr "" msgid "Popular" msgstr "" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "" @@ -6270,7 +6396,7 @@ msgstr "" msgid "Revoke the \"%s\" role from this user" msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6368,6 +6494,48 @@ msgstr "" 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 "" @@ -6448,56 +6616,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: 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:1093 +#: 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:1097 +#: 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:1100 +#: 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:1104 +#: 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:1107 +#: 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:1111 +#: 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:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "" diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po index 0cd352cbc..16a0858ea 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:05+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:24:59+0000\n" "Language-Team: Swedish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +23,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "Ã…tkomst" @@ -85,24 +86,24 @@ msgid "Save" msgstr "Spara" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Ingen sÃ¥dan sida" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -115,7 +116,7 @@ msgid "No such user." msgstr "Ingen sÃ¥dan användare." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s och vänner, sida %2$d" @@ -123,39 +124,39 @@ msgstr "%1$s och vänner, sida %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 och vänner" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Flöden för %ss vänner (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Flöden för %ss vänner (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Flöden för %ss vänner (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "Detta är tidslinjen för %s och vänner, men ingen har skrivit nÃ¥got än." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -165,84 +166,84 @@ msgstr "" "%) eller skriv nÃ¥got själv." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" "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:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 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." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" msgstr "Du och vänner" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "Uppdateringar frÃ¥n %1$s och vänner pÃ¥ %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API-metod hittades inte." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Denna metod kräver en POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "Du mÃ¥ste ange ett värdet pÃ¥ parametern 'device': sms, im, none" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Kunde inte uppdatera användare." @@ -262,7 +263,7 @@ msgstr "Kunde inte spara profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -338,29 +339,30 @@ msgstr "Mottagare hittades inte." msgid "Can't send direct messages to users who aren't your friend." msgstr "Kan inte skicka direktmeddelanden till användare som inte är din vän." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Ingen status hittad med det ID:t." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Denna status är redan en favorit." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Kunde inte skapa favorit." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Denna status är inte en favorit." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -388,124 +391,129 @@ msgstr "Kunde inte fastställa användare hos källan." msgid "Could not find target user." msgstr "Kunde inte hitta mÃ¥lanvändare." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Smeknamnet fÃ¥r endast innehÃ¥lla smÃ¥ bokstäver eller siffror, inga mellanslag." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Smeknamnet används redan. Försök med ett annat." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Inte ett giltigt smeknamn." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Hemsida är inte en giltig webbadress." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Fullständigt namn är för lÃ¥ngt (max 255 tecken)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "Beskrivning är för lÃ¥ng (max 140 tecken)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Beskrivning av plats är för lÃ¥ng (max 255 tecken)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "För mÃ¥nga alias! Maximum %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Ogiltigt alias: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: 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\" används redan. Försök med ett annat." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Alias kan inte vara samma som smeknamn." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Grupp hittades inte." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Du är redan en medlem i denna grupp." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: 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 har blivit blockerad frÃ¥n denna grupp av administratören." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Kunde inte ansluta användare %1$s till grupp %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Du är inte en medlem i denna grupp." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Kunde inte ta bort användare %1$s frÃ¥n grupp %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" msgstr "%ss 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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%1$s grupper %2$s är en medlem i." #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s grupper" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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." @@ -516,15 +524,15 @@ msgstr "Ogiltig 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -588,12 +596,12 @@ msgstr "" "ge tillgÃ¥ng till ditt %4$s-konto till tredje-parter du litar pÃ¥." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Konto" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -601,8 +609,8 @@ msgid "Nickname" msgstr "Smeknamn" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Lösenord" @@ -618,11 +626,11 @@ msgstr "TillÃ¥t" msgid "Allow or deny access to your account information." msgstr "TillÃ¥t eller neka Ã¥tkomst till din kontoinformation." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Denna metod kräver en POST eller en DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Du kan inte ta bort en annan användares status." @@ -639,59 +647,63 @@ msgstr "Kan inte upprepa din egen notis." msgid "Already repeated that notice." msgstr "Redan upprepat denna notis." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Status borttagen." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Ingen status med det ID:t hittades." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Hittades inte." -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Favoriter frÃ¥n %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s uppdateringar markerade som favorit av %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Uppdateringar som nämner %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s uppdateringar med svar pÃ¥ uppdatering frÃ¥n %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s publika tidslinje" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s uppdateringar frÃ¥n alla!" @@ -706,16 +718,20 @@ msgstr "Upprepat till %s" msgid "Repeats of %s" msgstr "Upprepningar av %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Notiser taggade med %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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" @@ -809,11 +825,11 @@ msgstr "Avatar borttagen." msgid "You already blocked that user." msgstr "Du har redan blockerat denna användare." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Blockera användare" -#: actions/block.php:130 +#: 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 " @@ -828,7 +844,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -837,7 +853,7 @@ 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:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Blockera inte denna användare" @@ -846,7 +862,7 @@ msgstr "Blockera inte denna användare" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -854,11 +870,11 @@ msgid "Yes" msgstr "Ja" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Blockera denna användare" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Misslyckades att spara blockeringsinformation." @@ -986,7 +1002,7 @@ msgstr "Du är inte ägaren av denna applikation." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Det var ett problem med din sessions-token." @@ -1020,7 +1036,7 @@ msgstr "Ta bort denna applikation" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Inte inloggad." @@ -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" @@ -1091,45 +1107,53 @@ msgstr "Utseende" msgid "Design settings for this StatusNet site." msgstr "Utseendeinställningar för denna StatusNet-webbplats." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Ogiltig webbadress för logtyp." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Tema inte tillgängligt: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Byt logotyp" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Webbplatslogotyp" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Byt tema" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Webbplatstema" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Tema för webbplatsen." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Anpassat tema" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +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" msgstr "Ändra bakgrundsbild" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Bakgrund" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1139,57 +1163,65 @@ msgstr "" "filstorleken är %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "PÃ¥" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Av" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Sätt pÃ¥ eller stäng av bakgrundsbild." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "Upprepa bakgrundsbild" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Byt färger" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "InnehÃ¥ll" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Sidofält" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Text" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "Länkar" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Avancerat" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Anpassad CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "Använd standardvärden" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Ã…terställ standardutseende" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "Ã…terställ till standardvärde" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1199,7 +1231,7 @@ msgstr "Ã…terställ till standardvärde" msgid "Save" msgstr "Spara" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Spara utseende" @@ -1313,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." @@ -1470,7 +1503,7 @@ msgid "Cannot normalize that email address" msgstr "Kan inte normalisera den e-postadressen" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Inte en giltig e-postadress." @@ -1698,13 +1731,13 @@ msgstr "Användaren har redan denna roll." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Ingen profil angiven." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ingen profil med det ID:t." @@ -1844,7 +1877,7 @@ msgstr "Gör denna användare till administratör" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s tidslinje" @@ -2271,39 +2304,39 @@ msgstr "Du är inte en medlem i den gruppen." msgid "%1$s left group %2$s" msgstr "%1$s lämnade grupp %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Redan inloggad." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Felaktigt användarnamn eller lösenord." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Fel vid inställning av användare. Du har sannolikt inte tillstÃ¥nd." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Logga in" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Logga in pÃ¥ webbplatsen" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Kom ihÃ¥g mig" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Logga in automatiskt i framtiden; inte för delade datorer!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Tappat bort eller glömt ditt lösenord?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2311,11 +2344,11 @@ msgstr "" "Av säkerhetsskäl, var vänlig och skriv in ditt användarnamn och lösenord " "igen innan du ändrar dina inställningar." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Logga in med ditt användarnamn och lösenord." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2466,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." @@ -2523,30 +2557,30 @@ msgid "Developers can edit the registration settings for their applications " msgstr "" "Utvecklare kan redigera registreringsinställningarna för sina applikationer " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Notisen har ingen profil." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$ss status den %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "InnehÃ¥llstyp %s stödjs inte." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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" @@ -2649,7 +2683,7 @@ msgid "6 or more characters" msgstr "Minst 6 tecken" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Bekräfta" @@ -2661,11 +2695,11 @@ msgstr "Samma som lösenordet ovan" msgid "Change" msgstr "Ändra" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Lösenordet mÃ¥ste vara minst 6 tecken." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Lösenorden matchar inte." @@ -2686,7 +2720,7 @@ msgid "Password saved." msgstr "Lösenord sparat." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "Sökvägar" @@ -2890,43 +2924,43 @@ msgstr "Profilinformation" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 smÃ¥ bokstäver eller nummer, inga punkter eller mellanslag" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Fullständigt namn" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Hemsida" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL till din hemsida, blogg eller profil pÃ¥ en annan webbplats." -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Beskriv dig själv och dina intressen med högst 140 tecken" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Beskriv dig själv och dina intressen" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Biografi" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Plats" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Var du hÃ¥ller till, sÃ¥som \"Stad, Län, Land\"" @@ -2970,7 +3004,7 @@ msgstr "" "Prenumerera automatiskt pÃ¥ den som prenumererar pÃ¥ mig (bäst för icke-" "människa) " -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Biografin är för lÃ¥ng (max %d tecken)." @@ -3232,7 +3266,7 @@ msgstr "Lösenordet mÃ¥ste vara minst 6 tecken." msgid "Password and confirmation do not match." msgstr "Lösenord och bekräftelse matchar inte." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Fel uppstog i användarens inställning" @@ -3240,39 +3274,39 @@ msgstr "Fel uppstog i användarens inställning" msgid "New password successfully saved. You are now logged in." msgstr "Nya lösenordet sparat. Du är nu inloggad." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "Tyvärr, bara inbjudna personer kan registrera sig." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Tyvärr, ogiltig inbjudningskod." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registreringen genomförd" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Registrera" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "Registrering inte tillÃ¥ten." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Du kan inte registrera dig om du inte godkänner licensen." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "E-postadressen finns redan." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Ogiltigt användarnamn eller lösenord." -#: actions/register.php:343 +#: 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. " @@ -3280,59 +3314,60 @@ msgstr "" "Med detta formulär kan du skapa ett nytt konto. Du kan sedan posta notiser " "och ansluta till vänner och kollegor. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 smÃ¥ bokstäver eller nummer, inga punkter eller mellanslag. MÃ¥ste fyllas " "i." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "Minst 6 tecken. MÃ¥ste fyllas i." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Samma som lösenordet ovan. MÃ¥ste fyllas i." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "E-post" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Används endast för uppdateringar, tillkännagivanden och Ã¥terskapande av " "lösenord" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Längre namn, förslagsvis ditt \"verkliga\" namn" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "InnehÃ¥ll och data av %1$s är privat och konfidensiell." +msgstr "" +"Jag förstÃ¥r att innehÃ¥ll och data av %1$s är privata och konfidentiella." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "Upphovsrätten till min text och mina filer innehas av %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "Upphovsrätten till min text och mina filer är fortsatt min." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: actions/register.php:535 msgid "All rights reserved." -msgstr "" +msgstr "Alla rättigheter reserverade." #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3341,7 +3376,7 @@ msgstr "" "Mina texter och filer är tillgängliga under %s med undantag av den här " "privata datan: lösenord, e-postadress, IM-adress, telefonnummer." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3374,7 +3409,7 @@ msgstr "" "Tack för att du anmält dig och vi hoppas att du kommer tycka om att använda " "denna tjänst." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3457,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" @@ -3492,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." @@ -3510,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)." @@ -3531,7 +3566,7 @@ msgstr "Du kan inte Ã¥terkalla användarroller pÃ¥ denna webbplats." msgid "User doesn't have this role." msgstr "Användare har inte denna roll." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3545,7 +3580,7 @@ msgstr "Användare är redan flyttad till sandlÃ¥dan." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessioner" @@ -3588,7 +3623,7 @@ msgid "Icon" msgstr "Ikon" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Namn" @@ -3599,12 +3634,12 @@ msgid "Organization" msgstr "Organisation" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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" @@ -3693,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 " @@ -3768,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" @@ -3782,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." @@ -3801,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." @@ -3814,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" @@ -3889,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)." @@ -4218,7 +4253,7 @@ msgstr "Ingen kod ifylld" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Ögonblicksbilder" @@ -4278,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." @@ -4457,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." @@ -4574,7 +4606,7 @@ msgstr "" "prenumerera pÃ¥ den här användarens notiser. Om du inte bett att prenumerera " "pÃ¥ nÃ¥gons meddelanden, klicka pÃ¥ \"Avvisa\"." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Licens" @@ -4703,18 +4735,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "Uppdateringar frÃ¥n %1$s pÃ¥ %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4723,11 +4755,11 @@ msgstr "" "Denna webbplats drivs med %1$s version %2$s, Copyright 2008-2010 StatusNet, " "Inc. och medarbetare." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Medarbetare" -#: actions/version.php:168 +#: 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 " @@ -4739,7 +4771,7 @@ msgstr "" "Foundation, antingen version 3 av licensen, eller (utifrÃ¥n ditt val) nÃ¥gon " "senare version. " -#: actions/version.php:174 +#: 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 " @@ -4751,7 +4783,7 @@ msgstr "" "LÄMPLIGHET FÖR ETT SÄRSKILT ÄNDAMÃ…L. Se GNU Affero General Public License " "för mer information. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4760,93 +4792,141 @@ msgstr "" "Du bör ha fÃ¥tt en kopia av GNU Affero General Public License tillsammans med " "detta program. Om inte, se %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Insticksmoduler" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "Version" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Författare" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Databasfel vid infogning av hashtag: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4854,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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -4969,188 +5100,188 @@ msgid "Untitled page" msgstr "Namnlös sida" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Primär webbplatsnavigation" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" msgstr "Personlig profil och vänners tidslinje" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "Personligt" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Ändra din e-post, avatar, lösenord, profil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Anslut till tjänster" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Anslut" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Ändra webbplatskonfiguration" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Administratör" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "Bjud in vänner och kollegor att gÃ¥ med dig pÃ¥ %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "Bjud in" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 msgctxt "TOOLTIP" msgid "Logout from the site" msgstr "Logga ut frÃ¥n webbplatsen" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Logga ut" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Skapa ett konto" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "Registrera" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Logga in pÃ¥ webbplatsen" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Logga in" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hjälp mig!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Hjälp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Sök efter personer eller text" -#: lib/action.php:493 +#: lib/action.php:503 msgctxt "MENU" msgid "Search" msgstr "Sök" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 msgid "Site notice" msgstr "Webbplatsnotis" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "Lokala vyer" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Sidnotis" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "Sekundär webbplatsnavigation" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Hjälp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Om" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FrÃ¥gor & svar" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Användarvillkor" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Sekretess" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Källa" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Emblem" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Programvarulicens för StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5160,13 +5291,13 @@ msgstr "" "%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** är en mikrobloggtjänst." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5178,50 +5309,50 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 msgid "Site content license" msgstr "Licens för webbplatsinnehÃ¥ll" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "InnehÃ¥ll och data av %1$s är privat och konfidensiell." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "InnehÃ¥ll och data copyright av %1$s. Alla rättigheter reserverade." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:868 msgid "Content and data copyright by contributors. All rights reserved." msgstr "" "InnehÃ¥ll och data copyright av medarbetare. Alla rättigheter reserverade." #. 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "InnehÃ¥ll och data pÃ¥ %1$s är tillgänglig under licensen %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1192 msgid "Pagination" msgstr "Numrering av sidor" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: present than the currently displayed information. -#: lib/action.php:1193 +#: lib/action.php:1203 msgid "After" msgstr "Senare" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Tidigare" @@ -5269,64 +5400,64 @@ msgid "Unable to delete design setting." msgstr "Kunde inte ta bort utseendeinställning." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "Grundläggande webbplatskonfiguration" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Webbplats" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "Konfiguration av utseende" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Utseende" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "Konfiguration av användare" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "Användare" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "Konfiguration av Ã¥tkomst" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "Konfiguration av sökvägar" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "Konfiguration av sessioner" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Redigera webbplatsnotis" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "Konfiguration av ögonblicksbilder" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API-resursen kräver läs- och skrivrättigheter, men du har bara läsrättighet." @@ -5458,11 +5589,11 @@ msgstr "Notiser där denna bilaga förekommer" msgid "Tags for this attachment" msgstr "Taggar för denna billaga" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Byte av lösenord misslyckades" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Byte av lösenord är inte tillÃ¥tet" @@ -5556,14 +5687,14 @@ msgstr "Fullständigt namn: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "Plats: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Hemsida: %s" @@ -6094,8 +6225,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s lyssnar nu pÃ¥ dina notiser pÃ¥ %2$s." +#: 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 "" +"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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6121,19 +6262,19 @@ msgstr "" "Ändra din e-postadress eller notiferingsinställningar pÃ¥ %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Biografi: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ny e-postadress för att skicka till %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6155,30 +6296,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s status" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS-bekräftelse" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "%s: bekräfta detta telefonnummer med denna kod:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Du har blivit knuffad av %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6206,13 +6347,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Nytt privat meddelande frÃ¥n %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6246,13 +6387,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) lade till din notis som en favorit" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6290,7 +6431,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6301,13 +6442,13 @@ msgstr "" "\n" "\t%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) skickade en notis för din uppmärksamhet" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6369,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" @@ -6428,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." @@ -6501,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" @@ -6655,7 +6796,7 @@ msgstr "Dagligt genomsnitt" msgid "All groups" msgstr "Alla grupper" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Inte implementerad metod." @@ -6679,7 +6820,7 @@ msgstr "Profilerade" msgid "Popular" msgstr "Populärt" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Inga \"return-to\"-argument." @@ -6700,7 +6841,7 @@ msgstr "Upprepa denna notis" msgid "Revoke the \"%s\" role from this user" msgstr "Ã…terkalla rollen \"%s\" frÃ¥n denna användare" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "Ingen enskild användare definierad för enanvändarläge." @@ -6798,6 +6939,51 @@ msgstr "Taggmoln för person, sÃ¥som taggats" msgid "None" msgstr "Ingen" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "Denna server kan inte hantera temauppladdningar utan ZIP-stöd." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +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 +msgid "Failed saving theme." +msgstr "Kunde inte spara tema." + +#: lib/themeuploader.php:139 +msgid "Invalid theme: bad directory structure." +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 "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 "Tema innehÃ¥ller fil av typen '.%s', vilket inte är tillÃ¥tet." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Fel vid öppning temaarkiv." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Toppostare" @@ -6878,56 +7064,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "ett par sekunder sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "för nÃ¥n minut sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "för %d minuter sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "för en timma sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "för %d timmar sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "för en dag sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "för %d dagar sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "för en mÃ¥nad sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "för %d mÃ¥nader sedan" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "för ett Ã¥r sedan" diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po index c205085d3..bd506b98a 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:08+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:25:01+0000\n" "Language-Team: Telugu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "à°…à°‚à°¦à±à°¬à°¾à°Ÿà±" @@ -84,24 +84,24 @@ msgid "Save" msgstr "à°à°¦à±à°°à°ªà°°à°šà±" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ పేజీ లేదà±." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -114,7 +114,7 @@ msgid "No such user." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ వాడà±à°•à°°à°¿ లేరà±." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s మరియౠమితà±à°°à±à°²à±, పేజీ %2$d" @@ -122,39 +122,39 @@ msgstr "%1$s మరియౠమితà±à°°à±à°²à±, పేజీ %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 మరియౠమితà±à°°à±à°²à±" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "%s యొకà±à°• మితà±à°°à±à°² ఫీడౠ(RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "%s యొకà±à°• మితà±à°°à±à°² ఫీడౠ(RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "%s యొకà±à°• మితà±à°°à±à°² ఫీడౠ(ఆటమà±)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "ఇది %s మరియౠమితà±à°°à±à°² కాలరేఖ కానీ ఇంకా ఎవరూ à°à°®à±€ రాయలేదà±." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -162,80 +162,81 @@ msgid "" msgstr "ఇతరà±à°²à°•à°¿ చందా చేరండి, [à°à°¦à±ˆà°¨à°¾ à°—à±à°‚à°ªà±à°²à±‹ చేరండి](%%action.groups%%) లేదా మీరే à°à°¦à±ˆà°¨à°¾ à°µà±à°°à°¾à°¯à°‚à°¡à°¿." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 -#, php-format +#: 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 "" +"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!" -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 -#, php-format +#: 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 his or her attention." -msgstr "" +"post a notice to them." +msgstr "[à°’à°• ఖాతాని నమోదà±à°šà±‡à°¸à±à°•à±à°¨à°¿](%%action.register%%) మీరే మొదట à°µà±à°°à°¾à°¸à±‡à°µà°¾à°°à± à°Žà°‚à°¦à±à°•à± కాకూడదà±!" #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "%2$sలో %1$s మరియౠసà±à°¨à±‡à°¹à°¿à°¤à±à°² à°¨à±à°‚à°¡à°¿ తాజాకరణలà±!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "నిరà±à°§à°¾à°°à°£ సంకేతం కనబడలేదà±." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." @@ -257,7 +258,7 @@ msgstr "à°ªà±à°°à±Šà°«à±ˆà°²à±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°²à±‡à°•à±à°¨à±à° #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -332,29 +333,30 @@ msgstr "à°…à°‚à°¦à±à°•à±‹à°µà°¾à°²à±à°¸à°¿à°¨ వాడà±à°•à°°à°¿ కనబà msgid "Can't send direct messages to users who aren't your friend." msgstr "మీ à°¸à±à°¨à±‡à°¹à°¿à°¤à±à°²à± కాని వాడà±à°•à°°à±à°²à°•à°¿ నేరౠసందేశాలౠపంపించలేరà±." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "à°† IDతో ఠనోటీసూ కనబడలేదà±." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "à°ˆ నోటీసౠఇపà±à°ªà°Ÿà°¿à°•à±‡ మీ ఇషà±à°Ÿà°¾à°‚శం." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "ఇషà±à°Ÿà°¾à°‚శానà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "à°† నోటీసౠఇషà±à°Ÿà°¾à°‚శం కాదà±." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -384,123 +386,128 @@ msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à± msgid "Could not find target user." msgstr "లకà±à°·à±à°¯à°¿à°¤ వాడà±à°•à°°à°¿à°¨à°¿ à°•à°¨à±à°—ొనలేకపోయాం." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "పేరà±à°²à±‹ à°šà°¿à°¨à±à°¨à°¬à°¡à°¿ à°…à°•à±à°·à°°à°¾à°²à± మరియౠఅంకెలౠమాతà±à°°à°®à±‡ ఖాళీలౠలేకà±à°‚à°¡à°¾ ఉండాలి." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "à°† పేరà±à°¨à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ వాడà±à°¤à±à°¨à±à°¨à°¾à°°à±. మరోటి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "సరైన పేరౠకాదà±." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "హోమౠపేజీ URL సరైనది కాదà±." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "పూరà±à°¤à°¿ పేరౠచాలా పెదà±à°¦à°—à°¾ ఉంది (à°—à°°à°¿à°·à±à° à°‚à°—à°¾ 255 à°…à°•à±à°·à°°à°¾à°²à±)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "వివరణ చాలా పెదà±à°¦à°—à°¾ ఉంది (%d à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "à°ªà±à°°à°¾à°‚తం పేరౠమరీ పెదà±à°¦à°—à°¾ ఉంది (255 à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "చాలా మారà±à°ªà±‡à°°à±à°²à±! %d à°—à°°à°¿à°·à±à° à°‚." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "తపà±à°ªà±à°¡à± మారà±à°ªà±‡à°°à±: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "\"%s\" à°…à°¨à±à°¨ మారà±à°ªà±‡à°°à±à°¨à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ వాడà±à°¤à±à°¨à±à°¨à°¾à°°à±. మరొకటి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "మారà±à°ªà±‡à°°à± పేరà±à°¤à±‹ సమానంగా ఉండకూడదà±." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "à°—à±à°‚పౠదొరకలేదà±." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† à°—à±à°‚à°ªà±à°²à±‹ à°¸à°à±à°¯à±à°²à±." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à± à°† à°—à±à°‚పౠనà±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిరోధించారà±." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "వాడà±à°•à°°à°¿ %1$sని %2$s à°—à±à°‚à°ªà±à°²à±‹ చేరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "మీరౠఈ à°—à±à°‚à°ªà±à°²à±‹ à°¸à°à±à°¯à±à°²à± కాదà±." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "వాడà±à°•à°°à°¿ %1$sని %2$s à°—à±à°‚పౠనà±à°‚à°¡à°¿ తొలగించలేకపోయాం." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." msgstr "%2$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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s à°—à±à°‚à°ªà±à°²à±" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -512,15 +519,15 @@ msgstr "తపà±à°ªà±à°¡à± పరిమాణం." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -583,12 +590,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "ఖాతా" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -596,8 +603,8 @@ msgid "Nickname" msgstr "పేరà±" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "సంకేతపదం" @@ -613,11 +620,11 @@ msgstr "à°…à°¨à±à°®à°¤à°¿à°‚à°šà±" msgid "Allow or deny access to your account information." msgstr "మీ ఖాతా సమాచారానà±à°¨à°¿ సంపà±à°°à°¾à°ªà°¿à°‚చడానికి à°…à°¨à±à°®à°¤à°¿à°‚à°šà°‚à°¡à°¿ లేదా నిరాకరించండి." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "ఇతర వాడà±à°•à°°à±à°² à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ మీరౠతొలగించలేరà±." @@ -634,59 +641,63 @@ msgstr "మీ నోటీసà±à°¨à°¿ మీరే à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿ msgid "Already repeated that notice." msgstr "ఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ తొలగించాం." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "à°† IDతో ఠనోటీసౠకనబడలేదà±." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "కనబడలేదà±." -#: actions/apistatusesupdate.php:304 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 "" -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%s యొకà±à°• మైకà±à°°à±‹à°¬à±à°²à°¾à°—à±" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "" +msgstr "%1$s / %2$sని పేరà±à°•à±Šà°¨à±à°¨ నోటీసà±à°²à±" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s బహిరంగ కాలరేఖ" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "అందరి à°¨à±à°‚à°¡à°¿ %s తాజాకరణలà±!" @@ -701,15 +712,19 @@ msgstr "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" msgid "Repeats of %s" msgstr "%s యొకà±à°• à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¾à°²à±" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 -#, fuzzy, php-format +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "%s యొకà±à°• మైకà±à°°à±‹à°¬à±à°²à°¾à°—à±" +msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" + +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "" #: actions/attachment.php:73 msgid "No such attachment." @@ -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 "తొలగించà±" @@ -805,11 +820,11 @@ msgstr "అవతారానà±à°¨à°¿ తొలగించాం." msgid "You already blocked that user." msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించారà±." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించà±" -#: actions/block.php:130 +#: 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 " @@ -823,7 +838,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -832,7 +847,7 @@ msgstr "కాదà±" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించకà±" @@ -841,7 +856,7 @@ msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించకà±" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -849,11 +864,11 @@ msgid "Yes" msgstr "à°…à°µà±à°¨à±" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించà±" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "నిరోధపౠసమాచారానà±à°¨à°¿ à°à°¦à±à°°à°ªà°°à°šà°¡à°‚లో విఫలమయà±à°¯à°¾à°‚." @@ -901,9 +916,9 @@ msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ వాడà±à°•à°°à°¿ లేరà±." #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "%s పై à°—à±à°‚à°ªà±à°²à±" +msgstr "%sà°•à°¿ టపాచెయà±à°¯à°¿" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -982,7 +997,7 @@ msgstr "మీరౠఈ ఉపకరణం యొకà±à°• యజమాని à #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1015,7 +1030,7 @@ msgstr "à°ˆ ఉపకరణానà±à°¨à°¿ తొలగించà±" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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 "à°ˆ నోటీసà±à°¨à°¿ తొలగించà±" @@ -1084,45 +1099,54 @@ msgstr "రూపà±à°°à±‡à°–à°²à±" msgid "Design settings for this StatusNet site." msgstr "à°ˆ à°¸à±à°Ÿà±‡à°Ÿà°¸à±‌నెటౠసైటà±à°•à°¿ రూపà±à°°à±‡à°–à°² అమరికలà±." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "à°šà°¿à°¹à±à°¨à°ªà± URL చెలà±à°²à°¦à±." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "అలంకారం à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ లేదà±: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "à°šà°¿à°¹à±à°¨à°¾à°¨à±à°¨à°¿ మారà±à°šà±" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "సైటౠచిహà±à°¨à°‚" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "అలంకారానà±à°¨à°¿ మారà±à°šà±" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "సైటౠఅలంకారం" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "సైటà±à°•à°¿ అలంకారం." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "సైటౠఅలంకారం" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "నేపథà±à°¯ à°šà°¿à°¤à±à°°à°¾à°¨à±à°¨à°¿ మారà±à°šà±" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "నేపథà±à°¯à°‚" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1130,57 +1154,65 @@ msgid "" msgstr "సైటà±à°•à°¿ మీరౠనేపథà±à°¯à°ªà± à°šà°¿à°¤à±à°°à°¾à°¨à±à°¨à°¿ à°Žà°•à±à°•à°¿à°‚చవచà±à°šà±. à°—à°°à°¿à°·à±à° ఫైలౠపరిమాణం %1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "à°°à°‚à°—à±à°²à°¨à± మారà±à°šà±" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "విషయం" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "పకà±à°•à°ªà°Ÿà±à°Ÿà±€" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "పాఠà±à°¯à°‚" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "లంకెలà±" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "ఉనà±à°¨à°¤" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "à°…à°ªà±à°°à°®à±‡à°¯à°¾à°²à°¨à°¿ ఉపయోగించà±" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1190,7 +1222,7 @@ msgstr "" msgid "Save" msgstr "à°à°¦à±à°°à°ªà°°à°šà±" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "రూపà±à°°à±‡à°–లని à°à°¦à±à°°à°ªà°°à°šà±" @@ -1270,9 +1302,8 @@ msgid "Callback URL is not valid." msgstr "" #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "à°—à±à°‚à°ªà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." +msgstr "ఉపకరణానà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." #: actions/editgroup.php:56 #, php-format @@ -1306,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 "మారà±à°ªà±‡à°°à±à°²à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -1462,7 +1494,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "సరైన ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾ కాదà±:" @@ -1683,13 +1715,13 @@ msgstr "వాడà±à°•à°°à°¿à°•à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ à°ˆ పాతà±à°° #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1827,7 +1859,7 @@ msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరà±à°µà°¾à°¹à°•à±à°¨à±à°¨à°¿ #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s కాలరేఖ" @@ -2235,50 +2267,50 @@ msgstr "మీరౠఆ à°—à±à°‚à°ªà±à°²à±‹ à°¸à°à±à°¯à±à°²à± కాదౠmsgid "%1$s left group %2$s" msgstr "%2$s à°—à±à°‚పౠనà±à°‚à°¡à°¿ %1$s వైదొలిగారà±" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "ఇపà±à°ªà°Ÿà°¿à°•à±‡ లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "వాడà±à°•à°°à°¿à°ªà±‡à°°à± లేదా సంకేతపదం తపà±à°ªà±." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "వాడà±à°•à°°à°¿à°¨à°¿ అమరà±à°šà°¡à°‚లో పొరపాటà±. బహà±à°¶à°¾ మీకౠఅధీకరణ లేకపోవచà±à°šà±." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "సైటౠలోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà±" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "ననà±à°¨à± à°—à±à°°à±à°¤à±à°‚à°šà±à°•à±‹" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "à°à°µà°¿à°·à±à°¯à°¤à±à°¤à±à°²à±‹ ఆటోమెటిగà±à°—à°¾ లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà±; బయటి à°•à°‚à°ªà±à°¯à±‚à°°à±à°² కొరకౠకాదà±!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "మీ సంకేతపదం మరà±à°šà°¿à°ªà±‹à°¯à°¾à°°à°¾?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "" "à°à°¦à±à°°à°¤à°¾ కారణాల దృషà±à°Ÿà±à°¯à°¾, అమరికలౠమారà±à°šà±‡ à°®à±à°‚దౠమీ వాడà±à°•à°°à°¿ పేరà±à°¨à°¿ మరియౠసంకేతపదానà±à°¨à°¿ మరోసారి ఇవà±à°µà°‚à°¡à°¿." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "మీ వాడà±à°•à°°à°¿à°ªà±‡à°°à± మరియౠసంకేతపదాలతో à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2426,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 @@ -2479,31 +2511,30 @@ msgstr "మీ ఖాతాని ఉపయోగించà±à°•à±‹à°¡à°¾à°¨à°¿à msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." +msgstr "నోటీసà±à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%2$sలో %1$s యొకà±à°• à°¸à±à°¥à°¿à°¤à°¿" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "విషయ à°°à°•à°‚ " #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2611,7 +2642,7 @@ msgid "6 or more characters" msgstr "6 లేదా అంతకంటే à°Žà°•à±à°•à±à°µ à°…à°•à±à°·à°°à°¾à°²à±" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "నిరà±à°¥à°¾à°°à°¿à°‚à°šà±" @@ -2623,11 +2654,11 @@ msgstr "పై సంకేతపదం వలెనే" msgid "Change" msgstr "మారà±à°šà±" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "సంకేతపదం తపà±à°ªà°¨à°¿à°¸à°°à°¿à°—à°¾ 6 లేదా అంతకంటే à°Žà°•à±à°•à±à°µ à°…à°•à±à°·à°°à°¾à°²à±à°‚డాలి." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "సంకేతపదాలౠసరిపోలలేదà±." @@ -2648,7 +2679,7 @@ msgid "Password saved." msgstr "సంకేతపదం à°à°¦à±à°°à°®à°¯à±à°¯à°¿à°‚ది." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "à°¤à±à°°à±‹à°µà°²à±" @@ -2858,43 +2889,43 @@ msgstr "à°ªà±à°°à±Šà°«à±ˆà°²à± సమాచారం" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 à°šà°¿à°¨à±à°¨à°¬à°¡à°¿ à°…à°•à±à°·à°°à°¾à°²à± లేదా అంకెలà±, విరామచిహà±à°¨à°¾à°²à± మరియౠఖాళీలౠతపà±à°ª" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "మీ à°—à±à°°à°¿à°‚à°šà°¿ మరియౠమీ ఆసకà±à°¤à±à°² à°—à±à°°à°¿à°‚à°šà°¿ %d à°…à°•à±à°·à°°à°¾à°²à±à°²à±‹ చెపà±à°ªà°‚à°¡à°¿" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "మీ à°—à±à°°à°¿à°‚à°šà°¿ మరియౠమీ ఆసకà±à°¤à±à°² à°—à±à°°à°¿à°‚à°šà°¿ చెపà±à°ªà°‚à°¡à°¿" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "à°¸à±à°µà°ªà°°à°¿à°šà°¯à°‚" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "మీరౠఎకà±à°•à°¡ à°¨à±à°‚à°¡à°¿, \"నగరం, రాషà±à°Ÿà±à°°à°‚ (లేదా à°ªà±à°°à°¾à°‚తం), దేశం\"" @@ -2934,7 +2965,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "à°¸à±à°µà°ªà°°à°¿à°šà°¯à°‚ చాలా పెదà±à°¦à°—à°¾ ఉంది (%d à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." @@ -3183,7 +3214,7 @@ msgstr "సంకేతపదం 6 లేదా అంతకంటే à°Žà°•à±à msgid "Password and confirmation do not match." msgstr "సంకేతపదం మరియౠనిరà±à°§à°¾à°°à°£ సరిపోలేదà±." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "" @@ -3191,93 +3222,93 @@ msgstr "" msgid "New password successfully saved. You are now logged in." msgstr "మీ కొతà±à°¤ సంకేతపదం à°à°¦à±à°°à°®à±ˆà°‚ది. మీరౠఇపà±à°ªà±à°¡à± లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "à°•à±à°·à°®à°¿à°‚à°šà°‚à°¡à°¿, ఆహà±à°µà°¾à°¨à°¿à°¤à±à°²à± మాతà±à°°à°®à±‡ నమోదà±à°•à°¾à°—లరà±." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "à°•à±à°·à°®à°¿à°‚à°šà°‚à°¡à°¿, తపà±à°ªà± ఆహà±à°µà°¾à°¨ సంకేతం." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "నమోదౠవిజయవంతం" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "నమోదà±" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "నమోదౠఅనà±à°®à°¤à°¿à°‚చబడదà±." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "à°ˆ లైసెనà±à°¸à±à°•à°¿ అంగీకరించకపోతే మీరౠనమోదà±à°šà±‡à°¸à±à°•à±‹à°²à±‡à°°à±." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾ ఇపà±à°ªà°Ÿà°¿à°•à±‡ ఉంది." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "వాడà±à°•à°°à°¿à°ªà±‡à°°à± లేదా సంకేతపదం తపà±à°ªà±." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "1-64 à°šà°¿à°¨à±à°¨à°¬à°¡à°¿ à°…à°•à±à°·à°°à°¾à°²à± లేదా అంకెలà±, విరామ à°šà°¿à°¹à±à°¨à°¾à°²à± లేదా ఖాళీలౠలేకà±à°‚à°¡à°¾. తపà±à°ªà°¨à°¿à°¸à°°à°¿." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 లేదా అంతకంటే à°Žà°•à±à°•à±à°µ à°…à°•à±à°·à°°à°¾à°²à±. తపà±à°ªà°¨à°¿à°¸à°°à°¿." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "పై సంకేతపదం మరోసారి. తపà±à°ªà°¨à°¿à°¸à°°à°¿." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "ఈమెయిలà±" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "తాజా విశేషాలà±, à°ªà±à°°à°•à°Ÿà°¨à°²à±, మరియౠసంకేతపదం పోయినపà±à°ªà±à°¡à± మాతà±à°°à°®à±‡ ఉపయోగిసà±à°¤à°¾à°‚." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "పొడà±à°—ాటి పేరà±, మీ \"అసలà±\" పేరైతే మంచిది" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3286,7 +3317,7 @@ msgstr "" "నా పాఠà±à°¯à°‚ మరియౠదసà±à°¤à±à°°à°¾à°²à± %s à°•à±à°°à°¿à°‚à°¦ à°²à°à±à°¯à°‚, à°ˆ అంతరంగిక à°à±‹à°—à°Ÿà±à°Ÿà°¾ తపà±à°ª: సంకేతపదం, ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾, IM " "à°šà°¿à°°à±à°¨à°¾à°®à°¾, మరియౠఫోనౠనంబరà±." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3317,7 +3348,7 @@ msgstr "" "\n" "నమోదà±à°šà±‡à°¸à±à°•à±à°¨à±à°¨à°‚à°¦à±à°•à± కృతజà±à°žà°¤à°²à± మరియౠఈ సేవని ఉపయోగిసà±à°¤à±‚ మీరౠఆనందిసà±à°¤à°¾à°°à°¨à°¿ మేం ఆశిసà±à°¤à±à°¨à±à°¨à°¾à°‚." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3399,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 "సృషà±à°Ÿà°¿à°¤à°‚" @@ -3436,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 @@ -3452,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 @@ -3469,11 +3501,10 @@ msgid "You cannot revoke user roles on this site." msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±!" #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." +msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ˆ పాతà±à°° లేదà±." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "à°¸à±à°Ÿà±‡à°Ÿà°¸à±â€Œà°¨à±†à°Ÿà±" @@ -3489,7 +3520,7 @@ msgstr "వాడà±à°•à°°à°¿à°¨à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ à°—à±à°‚à°ªà±à°¨à #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3533,7 +3564,7 @@ msgid "Icon" msgstr "à°ªà±à°°à°¤à±€à°•à°‚" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "పేరà±" @@ -3544,12 +3575,12 @@ msgid "Organization" msgstr "సంసà±à°§" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "గణాంకాలà±" @@ -3636,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." @@ -3704,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 "à°¸à°à±à°¯à±à°²à±" @@ -3718,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." @@ -3738,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." @@ -3747,7 +3780,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à±" @@ -3821,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 @@ -4139,7 +4173,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4201,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 "చందాని సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -4371,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 "మీరౠఆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించలేదà±." @@ -4486,7 +4517,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "లైసెనà±à°¸à±" @@ -4607,29 +4638,29 @@ msgstr "[à°—à±à°‚à°ªà±à°²à°¨à°¿ వెతికి](%%action.groupsearch%%) à° #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "à°¸à±à°Ÿà±‡à°Ÿà°¸à±â€Œà°¨à±†à°Ÿà± %s" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4637,7 +4668,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4645,171 +4676,267 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" -msgstr "" +msgstr "à°ªà±à°²à°—à°¿à°¨à±à°²à±" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "సంచిక" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "రచయిత(à°²à±)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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 "చందాని సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -4862,189 +4989,189 @@ msgid "Untitled page" msgstr "శీరà±à°·à°¿à°•à°²à±‡à°¨à°¿ పేజీ" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "à°ªà±à°°à°¾à°§à°®à°¿à°• సైటౠమారà±à°—దరà±à°¶à°¿à°¨à°¿" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "à°µà±à°¯à°•à±à°¤à°¿à°—à°¤" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "మీ ఈమెయిలà±, అవతారం, సంకేతపదం మరియౠపà±à°°à±Œà°«à±ˆà°³à±à°³à°¨à± మారà±à°šà±à°•à±‹à°‚à°¡à°¿" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "à°…à°¨à±à°¸à°‚ధానించà±" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à±" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, 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:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "ఆహà±à°µà°¾à°¨à°¿à°‚à°šà±" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà±" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "నమోదà±" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "సైటౠలోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà±" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "సహాయం కావాలి!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "సహాయం" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "à°ªà±à°°à°œà°²à± లేదా పాఠà±à°¯à°‚ కొరకౠవెతకండి" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "à°¸à±à°¥à°¾à°¨à°¿à°• వీకà±à°·à°£à°²à±" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "పేజీ గమనిక" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "à°¦à±à°µà°¿à°¤à±€à°¯ సైటౠమారà±à°—దరà±à°¶à°¿à°¨à°¿" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "సహాయం" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "à°—à±à°°à°¿à°‚à°šà°¿" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "à°ªà±à°°à°¶à±à°¨à°²à±" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "సేవా నియమాలà±" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "అంతరంగికత" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "మూలమà±" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "సంపà±à°°à°¦à°¿à°‚à°šà±" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "బాడà±à°œà°¿" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5054,13 +5181,13 @@ msgstr "" "అందిసà±à°¤à±à°¨à±à°¨ సూకà±à°·à±à°® à°¬à±à°²à°¾à°—ింగౠసేవ." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** అనేది మైకà±à°°à±‹ à°¬à±à°²à°¾à°—ింగౠసదà±à°ªà°¾à°¯à°‚." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5072,50 +5199,50 @@ msgstr "" "పై నడà±à°¸à±à°¤à±à°‚ది." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy 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:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "ఇంతకà±à°°à°¿à°¤à°‚" @@ -5163,69 +5290,69 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "à°ªà±à°°à°¾à°¥à°®à°¿à°• సైటౠసà±à°µà°°à±‚పణం" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "సైటà±" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "రూపకలà±à°ªà°¨ à°¸à±à°µà°°à±‚పణం" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "రూపà±à°°à±‡à°–à°²à±" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "వాడà±à°•à°°à°¿ à°¸à±à°µà°°à±‚పణం" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "వాడà±à°•à°°à°¿" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "SMS నిరà±à°§à°¾à°°à°£" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "SMS నిరà±à°§à°¾à°°à°£" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "రూపకలà±à°ªà°¨ à°¸à±à°µà°°à±‚పణం" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "సైటౠగమనిక" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "SMS నిరà±à°§à°¾à°°à°£" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5359,12 +5486,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "సంకేతపదం మారà±à°ªà±" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "సంకేతపదం మారà±à°ªà±" @@ -5460,14 +5587,14 @@ msgstr "పూరà±à°¤à°¿à°ªà±‡à°°à±: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "à°ªà±à°°à°¾à°‚తం: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "హోంపేజీ: %s" @@ -5958,8 +6085,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s ఇపà±à°ªà±à°¡à± %2$sలో మీ నోటీసà±à°²à°¨à°¿ వింటà±à°¨à±à°¨à°¾à°°à±." +#: 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:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -5985,19 +6119,19 @@ msgstr "" "మీ ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾à°¨à°¿ లేదా గమనింపà±à°² ఎంపికలనౠ%8$s వదà±à°¦ మారà±à°šà±à°•à±‹à°‚à°¡à°¿\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "à°¸à±à°µà°ªà°°à°¿à°šà°¯à°‚: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "%sà°•à°¿ నోటీసà±à°²à± పంపించడానికి కొతà±à°¤ ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6011,30 +6145,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s à°¸à±à°¥à°¿à°¤à°¿" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMS నిరà±à°§à°¾à°°à°£" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "à°ˆ ఫోనౠనంబరౠయొకà±à°• నిరà±à°§à°¾à°°à°£à°•à±ˆ వేచివà±à°‚ది." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6062,13 +6196,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "%s à°¨à±à°‚à°¡à°¿ కొతà±à°¤ అంతరంగిక సందేశం" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6102,13 +6236,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) మీ నోటీసà±à°¨à°¿ ఇషà±à°Ÿà°ªà°¡à±à°¡à°¾à°°à±" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6146,7 +6280,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6157,13 +6291,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) మీకౠఒక నోటీసà±à°¨à°¿ పంపించారà±" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6224,7 +6358,7 @@ msgstr "" "మీకౠఅంతరంగిక సందేశాలౠలేవà±. ఇతర వాడà±à°•à°°à±à°²à°¤à±‹ సంà°à°¾à°·à°£à°•à±ˆ మీరౠవారికి అంతరంగిక సందేశాలౠ" "పంపించవచà±à°šà±. మీ à°•à°‚à°Ÿà°¿à°•à°¿ మాతà±à°°à°®à±‡ కనబడేలా వారౠమీకౠసందేశాలౠపంపవచà±à°šà±." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:227 lib/noticelist.php:505 msgid "from" msgstr "à°¨à±à°‚à°¡à°¿" @@ -6279,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 "" @@ -6354,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 "నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±" @@ -6511,7 +6645,7 @@ msgstr "రోజà±à°µà°¾à°°à±€ సగటà±" msgid "All groups" msgstr "à°…à°¨à±à°¨à°¿ à°—à±à°‚à°ªà±à°²à±" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6535,7 +6669,7 @@ msgstr "విశేషం" msgid "Popular" msgstr "à°ªà±à°°à°¾à°šà±à°°à±à°¯à°‚" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ పతà±à°°à°®à±‡à°®à±€ లేదà±." @@ -6557,7 +6691,7 @@ msgstr "à°ˆ నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚à°šà±" msgid "Revoke the \"%s\" role from this user" msgstr "à°ˆ à°—à±à°‚à°ªà±à°¨à±à°‚à°¡à°¿ à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించà±" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6658,6 +6792,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "దూరపౠపà±à°°à±Šà°ªà±ˆà°²à±à°¨à°¿ తాజాకరించటంలో పొరపాటà±" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6740,56 +6918,56 @@ msgid "Moderator" msgstr "సమనà±à°µà°¯à°•à°°à±à°¤" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "%d నిమిషాల à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "%d à°—à°‚à°Ÿà°² à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "%d రోజà±à°² à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "%d నెలల à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "à°’à°• సంవతà±à°¸à°°à°‚ à°•à±à°°à°¿à°¤à°‚" diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po index 54d1a00d7..029f36db1 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:12+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:25:03+0000\n" "Language-Team: Turkish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -22,7 +22,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "Kabul et" @@ -91,25 +91,25 @@ msgid "Save" msgstr "Kaydet" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Böyle bir durum mesajı yok." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -122,7 +122,7 @@ msgid "No such user." msgstr "Böyle bir kullanıcı yok." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s ve arkadaÅŸları" @@ -130,39 +130,39 @@ msgstr "%s ve arkadaÅŸları" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 ve arkadaÅŸları" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, fuzzy, php-format msgid "Feed for friends of %s (Atom)" msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -170,81 +170,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 #, fuzzy msgid "You and friends" msgstr "%s ve arkadaÅŸları" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "Onay kodu bulunamadı." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Kullanıcı güncellenemedi." @@ -266,7 +266,7 @@ msgstr "Profil kaydedilemedi." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -343,31 +343,32 @@ msgstr "" msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Bu zaten sizin Jabber ID'niz." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -398,128 +399,133 @@ msgstr "Kullanıcı güncellenemedi." msgid "Could not find target user." msgstr "Kullanıcı güncellenemedi." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Takma ad sadece küçük harflerden ve rakamlardan oluÅŸabilir, boÅŸluk " "kullanılamaz. " -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Takma ad kullanımda. BaÅŸka bir tane deneyin." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Geçersiz bir takma ad." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "BaÅŸlangıç sayfası adresi geçerli bir URL deÄŸil." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Tam isim çok uzun (azm: 255 karakter)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "Hakkında bölümü çok uzun (azm 140 karakter)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Yer bilgisi çok uzun (azm: 255 karakter)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "%s Geçersiz baÅŸlangıç sayfası" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Takma ad kullanımda. BaÅŸka bir tane deneyin." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Ä°stek bulunamadı!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "Zaten giriÅŸ yapmış durumdasıznız!" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Sunucuya yönlendirme yapılamadı: %s" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "Bize o profili yollamadınız" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "OpenID formu yaratılamadı: %s" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "Profil" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Bize o profili yollamadınız" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 "" @@ -531,15 +537,15 @@ msgstr "Geçersiz büyüklük." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -603,13 +609,13 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 #, fuzzy msgid "Account" msgstr "Hakkında" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -617,8 +623,8 @@ msgid "Nickname" msgstr "Takma ad" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Parola" @@ -634,11 +640,11 @@ msgstr "" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -657,63 +663,67 @@ msgstr "EÄŸer lisansı kabul etmezseniz kayıt olamazsınız." msgid "Already repeated that notice." msgstr "Zaten giriÅŸ yapmış durumdasıznız!" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 #, fuzzy msgid "Status deleted." msgstr "Avatar güncellendi." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." msgstr "Ä°stek bulunamadı!" -#: actions/apistatusesupdate.php:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s'in %2$s'deki durum mesajları " -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%s adli kullanicinin durum mesajlari" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s'in %2$s'deki durum mesajları " -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -728,16 +738,20 @@ msgstr "%s için cevaplar" msgid "Repeats of %s" msgstr "%s için cevaplar" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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 "" @@ -836,12 +850,12 @@ msgstr "Avatar güncellendi." msgid "You already blocked that user." msgstr "Zaten giriÅŸ yapmış durumdasıznız!" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 #, fuzzy msgid "Block user" msgstr "Böyle bir kullanıcı yok." -#: actions/block.php:130 +#: 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 " @@ -853,7 +867,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -863,7 +877,7 @@ msgstr "Durum mesajları" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "Böyle bir kullanıcı yok." @@ -873,7 +887,7 @@ msgstr "Böyle bir kullanıcı yok." #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -881,12 +895,12 @@ msgid "Yes" msgstr "" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 #, fuzzy msgid "Block this user" msgstr "Böyle bir kullanıcı yok." -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -1021,7 +1035,7 @@ msgstr "Bize o profili yollamadınız" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" @@ -1055,7 +1069,7 @@ msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "GiriÅŸ yapılmadı." @@ -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 "" @@ -1126,50 +1140,59 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "Geçersiz büyüklük." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Parolayı deÄŸiÅŸtir" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "Yeni durum mesajı" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "DeÄŸiÅŸtir" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Yeni durum mesajı" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Yeni durum mesajı" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1178,61 +1201,69 @@ msgstr "" "Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Parolayı deÄŸiÅŸtir" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "BaÄŸlan" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Ara" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "GiriÅŸ" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1242,7 +1273,7 @@ msgstr "" msgid "Save" msgstr "Kaydet" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1365,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" @@ -1528,7 +1560,7 @@ msgid "Cannot normalize that email address" msgstr "" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Geçersiz bir eposta adresi." @@ -1763,13 +1795,13 @@ msgstr "Kullanıcının profili yok." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1913,7 +1945,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "" @@ -2312,41 +2344,41 @@ msgstr "Bize o profili yollamadınız" msgid "%1$s left group %2$s" msgstr "%1$s'in %2$s'deki durum mesajları " -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Zaten giriÅŸ yapılmış." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Yanlış kullanıcı adı veya parola." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "YetkilendirilmemiÅŸ." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "GiriÅŸ" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Beni hatırla" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Gelecekte kendiliÄŸinden giriÅŸ yap, paylaşılan bilgisayarlar için deÄŸildir!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Parolamı unuttum veya kaybettim" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2354,12 +2386,12 @@ msgstr "" "GüvenliÄŸiniz için, ayarlarınızı deÄŸiÅŸtirmeden önce lütfen kullanıcı adınızı " "ve parolanızı tekrar giriniz." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Geçersiz kullanıcı adı veya parola." -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2510,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 @@ -2564,31 +2596,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s'in %2$s'deki durum mesajları " #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "BaÄŸlan" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2700,7 +2732,7 @@ msgid "6 or more characters" msgstr "6 veya daha fazla karakter" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Onayla" @@ -2712,11 +2744,11 @@ msgstr "yukarıdaki parolanın aynısı" msgid "Change" msgstr "DeÄŸiÅŸtir" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Parolalar birbirini tutmuyor." @@ -2737,7 +2769,7 @@ msgid "Password saved." msgstr "Parola kaydedildi." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2954,45 +2986,45 @@ msgstr "" "1-64 küçük harf veya rakam, noktalama iÅŸaretlerine ve boÅŸluklara izin " "verilmez" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Tam Ä°sim" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "BaÅŸlangıç Sayfası" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "" "Web Sitenizin, blogunuzun ya da varsa baÅŸka bir sitedeki profilinizin adresi" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Hakkında" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Yer" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "BulunduÄŸunuz yer, \"Åžehir, Eyalet (veya Bölge), Ãœlke\" gibi" @@ -3032,7 +3064,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "Hakkında bölümü çok uzun (azm 140 karakter)." @@ -3284,7 +3316,7 @@ msgstr "Parola 6 veya daha fazla karakterden oluÅŸmalıdır." msgid "Password and confirmation do not match." msgstr "Parola ve onaylaması birbirini tutmuyor." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Kullanıcı ayarlamada hata oluÅŸtu." @@ -3292,95 +3324,95 @@ msgstr "Kullanıcı ayarlamada hata oluÅŸtu." msgid "New password successfully saved. You are now logged in." msgstr "Yeni parola baÅŸarıyla kaydedildi. Åžimdi giriÅŸ yaptınız." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "Onay kodu hatası." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Kayıt" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "EÄŸer lisansı kabul etmezseniz kayıt olamazsınız." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Eposta adresi zaten var." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Geçersiz kullanıcı adı veya parola." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Eposta" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" "Sadece sistem güncellemeleri, duyurular ve parola geri alma için kullanılır." -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3389,7 +3421,7 @@ msgstr "" "bu özel veriler haricinde: parola, eposta adresi, IM adresi, telefon " "numarası." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3408,7 +3440,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3488,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" @@ -3528,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 @@ -3541,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 @@ -3560,7 +3592,7 @@ msgstr "Bize o profili yollamadınız" msgid "User doesn't have this role." msgstr "Kullanıcının profili yok." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Avatar güncellendi." @@ -3577,7 +3609,7 @@ msgstr "Kullanıcının profili yok." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3622,7 +3654,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3635,13 +3667,13 @@ msgid "Organization" msgstr "Yer" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 #, fuzzy 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" @@ -3726,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 @@ -3796,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ı" @@ -3811,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." @@ -3826,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." @@ -3835,7 +3867,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3911,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 @@ -4237,7 +4269,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4300,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ı." @@ -4473,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." @@ -4595,7 +4624,7 @@ msgstr "" "detayları gözden geçirin. Kimsenin durumunu taki etme isteÄŸinde " "bulunmadıysanız \"Ä°ptal\" tuÅŸuna basın. " -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4719,29 +4748,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "Ä°statistikler" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4749,7 +4778,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4757,181 +4786,278 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "KiÅŸisel" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" msgstr "Cevap eklenirken veritabanı hatası: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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ı." @@ -4985,128 +5111,128 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "KiÅŸisel" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Parolayı deÄŸiÅŸtir" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Sunucuya yönlendirme yapılamadı: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "BaÄŸlan" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Abonelikler" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "Geçersiz büyüklük." #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Çıkış" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "Yeni hesap oluÅŸtur" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Kayıt" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "GiriÅŸ" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "Yardım" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "Yardım" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5114,74 +5240,74 @@ msgstr "Ara" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "Yeni durum mesajı" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "Yeni durum mesajı" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" msgstr "Abonelikler" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Yardım" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Hakkında" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "SSS" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Gizlilik" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Kaynak" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Ä°letiÅŸim" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5191,13 +5317,13 @@ msgstr "" "hazırlanan anında mesajlaÅŸma ağıdır. " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** bir aninda mesajlaÅŸma sosyal ağıdır." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5209,51 +5335,51 @@ msgstr "" "microbloglama yazılımının %s. versiyonunu kullanmaktadır." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "Yeni durum mesajı" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 #, fuzzy msgid "After" msgstr "« Sonra" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 #, fuzzy msgid "Before" msgstr "Önce »" @@ -5302,74 +5428,74 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Eposta adresi onayı" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "Yeni durum mesajı" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "Eposta adresi onayı" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "KiÅŸisel" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "Eposta adresi onayı" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "Eposta adresi onayı" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "Eposta adresi onayı" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "Eposta adresi onayı" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Yeni durum mesajı" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "Eposta adresi onayı" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5507,12 +5633,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Parola kaydedildi." -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Parola kaydedildi." @@ -5606,14 +5732,14 @@ msgstr "Tam Ä°sim" #. 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:263 +#: 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "" @@ -6112,8 +6238,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s %2$s'da durumunuzu takip ediyor" +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6135,19 +6268,19 @@ msgstr "" "%4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "Hakkında" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: 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:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6161,30 +6294,30 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s durum" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6201,13 +6334,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6227,13 +6360,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%1$s %2$s'da durumunuzu takip ediyor" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6255,7 +6388,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6263,13 +6396,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6306,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 "" @@ -6361,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 "" @@ -6438,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ı" @@ -6598,7 +6731,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6623,7 +6756,7 @@ msgstr "" msgid "Popular" msgstr "KiÅŸi Arama" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Böyle bir belge yok." @@ -6647,7 +6780,7 @@ msgstr "Böyle bir durum mesajı yok." msgid "Revoke the \"%s\" role from this user" msgstr "Böyle bir kullanıcı yok." -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6750,6 +6883,50 @@ msgstr "" 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Avatar güncellemede hata." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Uzaktaki profili güncellemede hata oluÅŸtu" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6835,56 +7012,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "birkaç saniye önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "yaklaşık bir dakika önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "yaklaşık %d dakika önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "yaklaşık bir saat önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "yaklaşık %d saat önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "yaklaşık bir gün önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "yaklaşık %d gün önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "yaklaşık bir ay önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "yaklaşık %d ay önce" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "yaklaşık bir yıl önce" diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po index ce85953d6..e425f6c62 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:15+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:13:19+0000\n" "Language-Team: Ukrainian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -25,7 +25,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 msgid "Access" msgstr "ПогодитиÑÑŒ" @@ -89,24 +89,24 @@ msgid "Save" msgstr "Зберегти" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Ðемає такої Ñторінки." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -119,7 +119,7 @@ msgid "No such user." msgstr "Такого кориÑтувача немає." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s та друзі, Ñторінка %2$d" @@ -127,39 +127,39 @@ msgstr "%1$s та друзі, Ñторінка %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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 з друзÑми" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Стрічка допиÑів Ð´Ð»Ñ Ð´Ñ€ÑƒÐ·Ñ–Ð² %s (RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Стрічка допиÑів Ð´Ð»Ñ Ð´Ñ€ÑƒÐ·Ñ–Ð² %s (RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "Стрічка допиÑів Ð´Ð»Ñ Ð´Ñ€ÑƒÐ·Ñ–Ð² %s (Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "Це Ñтрічка допиÑів %s Ñ– друзів, але вона поки що порожнÑ." -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -169,84 +169,84 @@ msgstr "" "або напишіть щоÑÑŒ Ñамі." #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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)." -#: actions/all.php:145 actions/replies.php:210 actions/showstream.php:211 +#: 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 або щоÑÑŒ йому напиÑати." #. TRANS: H1 text -#: actions/all.php:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %1$s та друзів на %2$s!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." msgstr "API метод не знайдено." -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "Цей метод потребує POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" "Ви муÑите вÑтановити параметр «device» з одним зі значень: sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ кориÑтувача." @@ -266,7 +266,7 @@ msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ профіль." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -343,29 +343,29 @@ msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Ðе можна надіÑлати прÑме Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувачеві, Ñкий не Ñ” Вашим другом." -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Жодних ÑтатуÑів з таким ID." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "Цей ÑÑ‚Ð°Ñ‚ÑƒÑ Ð²Ð¶Ðµ Ñ” обраним." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Ðе можна позначити Ñк обране." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "Цей ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ðµ Ñ” обраним." -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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." @@ -393,125 +393,129 @@ msgstr "Ðе вдалоÑÑŒ вÑтановити джерело кориÑтув msgid "Could not find target user." msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ цільового кориÑтувача." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" "Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача повинно ÑкладатиÑÑŒ з літер нижнього регіÑтру Ñ– цифр, ніÑких " "інтервалів." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Це Ñ–Ð¼â€™Ñ Ð²Ð¶Ðµ викориÑтовуєтьÑÑ. Спробуйте інше." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Це недійÑне Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Веб-Ñторінка має недійÑну URL-адреÑу." -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Повне Ñ–Ð¼â€™Ñ Ð·Ð°Ð´Ð¾Ð²Ð³Ðµ (255 знаків макÑимум)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, php-format msgid "Description is too long (max %d chars)." msgstr "ÐžÐ¿Ð¸Ñ Ð½Ð°Ð´Ñ‚Ð¾ довгий (%d знаків макÑимум)." -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ довге (255 знаків макÑимум)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "Забагато додаткових імен! МакÑимум Ñтановить %d." -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, php-format msgid "Invalid alias: \"%s\"." msgstr "Помилкове додаткове ім’Ñ: «%s»." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, php-format msgid "Alias \"%s\" already in use. Try another one." -msgstr "Додаткове Ñ–Ð¼â€™Ñ \"%s\" вже викориÑтовуєтьÑÑ. Спробуйте інше." +msgstr "Додаткове Ñ–Ð¼â€™Ñ Â«%s» вже викориÑтовуєтьÑÑ. Спробуйте інше." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "Додаткове Ñ–Ð¼â€™Ñ Ð½Ðµ може бути таким Ñамим що й оÑновне." -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "Групу не знайдено." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 msgid "You are already a member of that group." msgstr "Ви вже Ñ” учаÑником цієї групи." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "Ðдмін цієї групи заблокував Вашу приÑутніÑÑ‚ÑŒ в ній." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Ðе вдалоÑÑŒ долучити кориÑтувача %1$s до групи %2$s." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." msgstr "Ви не Ñ” учаÑником цієї групи." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Ðе вдалоÑÑŒ видалити кориÑтувача %1$s з групи %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, php-format msgid "%1$s groups %2$s is a member of." 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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s групи" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format 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 не забезпечено." @@ -522,15 +526,15 @@ msgstr "Ðевірний токен." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -598,12 +602,12 @@ msgstr "" "довірÑєте." #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "Ðкаунт" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -611,8 +615,8 @@ msgid "Nickname" msgstr "Ð†Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Пароль" @@ -628,11 +632,11 @@ msgstr "Дозволити" msgid "Allow or deny access to your account information." msgstr "Дозволити або заборонити доÑтуп до Вашого облікового запиÑу." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "Цей метод потребує або ÐÐПИСÐТИ, або ВИДÐЛИТИ." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Ви не можете видалити ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ кориÑтувача." @@ -649,61 +653,65 @@ msgstr "Ðе можу повторити Ваш влаÑний допиÑ." msgid "Already repeated that notice." msgstr "Цей Ð´Ð¾Ð¿Ð¸Ñ Ð²Ð¶Ðµ повторено." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "Ðе знайдено жодних ÑтатуÑів з таким ID." -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе знайдено." -#: actions/apistatusesupdate.php:304 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 "Формат не підтримуєтьÑÑ." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s / Обрані від %2$s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "%1$s Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¸Ñ… від %2$s / %2$s." -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Оновленні відповіді %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "%1$s оновив цю відповідь на Ð´Ð¾Ð¿Ð¸Ñ Ð²Ñ–Ð´ %2$s / %3$s." -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s загальна Ñтрічка" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ уÑÑ–Ñ…!" @@ -718,16 +726,20 @@ msgstr "Повторено Ð´Ð»Ñ %s" msgid "Repeats of %s" msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "ДопиÑи позначені з %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, php-format 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:657 msgid "Delete" msgstr "Видалити" @@ -820,26 +832,26 @@ msgstr "Ðватару видалено." msgid "You already blocked that user." msgstr "Цього кориÑтувача вже заблоковано." -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" msgstr "Блокувати кориÑтувача" -#: actions/block.php:130 +#: 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 "" "Впевнені, що бажаєте блокувати цього кориÑтувача? ПозаÑк, його буде " -"відпиÑано від ВаÑ, він не зможе підпиÑитаÑÑ‚ÑŒ до Ð’Ð°Ñ Ñƒ майбутньому Ñ– Ви " -"більше не отримуватимете жодних допиÑів від нього." +"відпиÑано від ВаÑ, він не зможе підпиÑатиÑÑŒ до Ð’Ð°Ñ Ñƒ майбутньому Ñ– Ви більше " +"не отримуватимете жодних допиÑів від нього." #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -848,7 +860,7 @@ msgstr "ÐÑ–" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" msgstr "Ðе блокувати цього кориÑтувача" @@ -857,7 +869,7 @@ msgstr "Ðе блокувати цього кориÑтувача" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -865,11 +877,11 @@ msgid "Yes" msgstr "Так" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" msgstr "Блокувати кориÑтувача" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð¾ÑÑŒ невдачею." @@ -940,7 +952,7 @@ msgstr "Ðевизначений тип адреÑи %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 msgid "That address has already been confirmed." -msgstr "Цю адреÑу вже було підтверджено." +msgstr "Цю адреÑу вже підтверджено." #. TRANS: Server error thrown on database error updating e-mail preferences. #. TRANS: Server error thrown on database error removing a registered e-mail address. @@ -970,7 +982,7 @@ msgstr "Підтвердити адреÑу" #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." -msgstr "ÐдреÑу \"%s\" було підтверджено Ð´Ð»Ñ Ð’Ð°ÑˆÐ¾Ð³Ð¾ акаунту." +msgstr "ÐдреÑу «%s» підтверджено Ð´Ð»Ñ Ð’Ð°ÑˆÐ¾Ð³Ð¾ акаунту." #: actions/conversation.php:99 msgid "Conversation" @@ -996,7 +1008,7 @@ msgstr "Ви не Ñ” влаÑником цього додатку." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "Виникли певні проблеми з токеном поточної ÑеÑÑ–Ñ—." @@ -1030,7 +1042,7 @@ msgstr "Видалити додаток" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." 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:657 msgid "Delete this notice" msgstr "Видалити допиÑ" @@ -1099,45 +1111,53 @@ msgstr "Дизайн" msgid "Design settings for this StatusNet site." msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ñƒ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñайту StatusNet." -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." msgstr "Помилкова URL-адреÑа логотипу." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, php-format msgid "Theme not available: %s." msgstr "Тема недоÑтупна: %s." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 msgid "Change logo" msgstr "Змінити логотип" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Логотип Ñайту" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 msgid "Change theme" msgstr "Змінити тему" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 msgid "Site theme" msgstr "Тема Ñайту" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "Тема Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñайту." -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Ð¡Ð²Ð¾Ñ Ñ‚ÐµÐ¼Ð°" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Ви можете завантажити Ñвою тему Ð´Ð»Ñ Ñайту StatusNet Ñк .ZIP архів." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "Змінити фонове зображеннÑ" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "Фон" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1147,57 +1167,65 @@ msgstr "" "%1$s." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "Увімк." #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "Вимк." -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "Увімкнути або вимкнути фонове зображеннÑ." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "ЗамоÑтити фон" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" msgstr "Змінити кольори" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" msgstr "ЗміÑÑ‚" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "Бічна панель" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "ТекÑÑ‚" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" msgstr "ПоÑиланнÑ" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "Додатково" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Свій CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "За замовч." -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "Оновити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° замовчуваннÑм" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "ПовернутиÑÑŒ до початкових налаштувань" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1207,7 +1235,7 @@ msgstr "ПовернутиÑÑŒ до початкових налаштувань" msgid "Save" msgstr "Зберегти" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "Зберегти дизайн" @@ -1315,13 +1343,14 @@ msgstr "Ð¾Ð¿Ð¸Ñ Ð½Ð°Ð´Ñ‚Ð¾ довгий (%d знаків макÑимум)." #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format msgid "Invalid alias: \"%s\"" -msgstr "Помилкове додаткове ім’Ñ: \"%s\"" +msgstr "Помилкове додаткове ім’Ñ: «%s»" #: actions/editgroup.php:258 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 "Ðеможна призначити додаткові імена." @@ -1385,7 +1414,7 @@ msgstr "СкаÑувати" #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" -msgstr "Електронна адреÑа, на зразок \"UserName@example.org\"" +msgstr "Електронна адреÑа, на зразок «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. @@ -1444,7 +1473,7 @@ msgstr "ÐадÑилати мені лиÑта, коли хтоÑÑŒ має прР#. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "ÐадÑилати мені лиÑта, коли на мій Ð´Ð¾Ð¿Ð¸Ñ Ð·â€™ÑвлÑєтьÑÑ \"@-відповідь\"." +msgstr "ÐадÑилати мені лиÑта, коли на мій Ð´Ð¾Ð¿Ð¸Ñ Ð·â€™ÑвлÑєтьÑÑ Â«@-відповідь»." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 @@ -1477,7 +1506,7 @@ msgid "Cannot normalize that email address" msgstr "Ðе можна полагодити цю поштову адреÑу" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Це недійÑна електронна адреÑа." @@ -1703,13 +1732,13 @@ msgstr "КориÑтувач вже має цю роль." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "Ðе визначено жодного профілю." #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "Ðе визначено профілю з таким ID." @@ -1850,7 +1879,7 @@ msgstr "Ðадати цьому кориÑтувачеві права адмін #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s Ñтрічка" @@ -1882,9 +1911,9 @@ msgid "" msgstr "" "Групи на Ñайті %%%%site.name%%%% дозволÑÑ‚ÑŒ Вам відшукати людей зі Ñпільними " "інтереÑами. Лише приєднайтеÑÑ Ð´Ð¾ групи Ñ– надÑилайте Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð¾ уÑÑ–Ñ… Ñ—Ñ— " -"учаÑників викориÑтовуючи проÑту команду \"!groupname\" у текÑÑ‚Ñ– " -"повідомленнÑ. Ðе бачите групу, Ñка Ð’Ð°Ñ Ñ†Ñ–ÐºÐ°Ð²Ð¸Ñ‚ÑŒ? Спробуйте Ñ—Ñ— [знайти](%%%%" -"action.groupsearch%%%%) або [Ñтворіть влаÑну!](%%%%action.newgroup%%%%)" +"учаÑників викориÑтовуючи проÑту команду «!groupname» у текÑÑ‚Ñ– повідомленнÑ. " +"Ðе бачите групу, Ñка Ð’Ð°Ñ Ñ†Ñ–ÐºÐ°Ð²Ð¸Ñ‚ÑŒ? Спробуйте Ñ—Ñ— [знайти](%%%%action." +"groupsearch%%%%) або [Ñтворіть влаÑну!](%%%%action.newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 msgid "Create a new group" @@ -1991,7 +2020,7 @@ msgid "" "Jabber or GTalk address, like \"UserName@example.org\". First, make sure to " "add %s to your buddy list in your IM client or on GTalk." msgstr "" -"Jabber або GTalk адреÑа, на зразок \"UserName@example.org\". Ðле Ñпершу " +"Jabber або GTalk адреÑа, на зразок «UserName@example.org». Ðле Ñпершу " "переконайтеÑÑ, що додали %s до ÑпиÑку контактів в Ñвоєму IM-клієнті або в " "GTalk." @@ -2279,41 +2308,41 @@ msgstr "Ви не Ñ” учаÑником цієї групи." msgid "%1$s left group %2$s" msgstr "%1$s залишив групу %2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Тепер Ви увійшли." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Ðеточне Ñ–Ð¼â€™Ñ Ð°Ð±Ð¾ пароль." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "Помилка. Можливо, Ви не авторизовані." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Увійти" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "Вхід на Ñайт" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Пам’Ñтати мене" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "" "Ðвтоматично входити у майбутньому; не Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¿â€™ÑŽÑ‚ÐµÑ€Ñ–Ð² загального " "кориÑтуваннÑ!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Загубили або забули пароль?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2321,11 +2350,11 @@ msgstr "" "З міркувань безпеки, будь лаÑка, введіть ще раз Ñ–Ð¼â€™Ñ Ñ‚Ð° пароль, перед тим Ñк " "змінювати налаштуваннÑ." -#: actions/login.php:270 +#: actions/login.php:292 msgid "Login with your username and password." msgstr "Увійти викориÑтовуючи Ñ–Ð¼â€™Ñ Ñ‚Ð° пароль." -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2468,16 +2497,16 @@ msgstr "" #: actions/noticesearchrss.php:96 #, php-format msgid "Updates with \"%s\"" -msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· \"%s\"" +msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð· «%s»" #: actions/noticesearchrss.php:98 #, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Ð’ÑÑ– Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð° збігом з \"%s\" на %2$s!" +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 "" "Цей кориÑтувач не дозволив Ñебе «розштовхувати», або не підтвердив чи не " "налаштував преференції електронної пошти." @@ -2533,30 +2562,30 @@ msgstr "Ви не дозволили жодним додаткам Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ msgid "Developers can edit the registration settings for their applications " msgstr "Розробники можуть змінити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑ”Ñтрації Ð´Ð»Ñ Ñ—Ñ…Ð½Ñ–Ñ… додатків " -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð½Ðµ має профілю." -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s має ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, php-format msgid "Content type %s not supported." msgstr "Тип зміÑту %s не підтримуєтьÑÑ." #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:163 #, php-format 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "Такий формат даних не підтримуєтьÑÑ." @@ -2582,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." @@ -2661,7 +2690,7 @@ msgid "6 or more characters" msgstr "6 або більше знаків" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Підтвердити" @@ -2673,11 +2702,11 @@ msgstr "Такий Ñамо, Ñк Ñ– пароль вище" msgid "Change" msgstr "Змінити" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "Пароль має ÑкладатиÑÑŒ з 6-ти або більше знаків." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Паролі не Ñпівпадають." @@ -2698,7 +2727,7 @@ msgid "Password saved." msgstr "Пароль збережено." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "ШлÑÑ…" @@ -2902,43 +2931,43 @@ msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" "1-64 літери нижнього регіÑтру Ñ– цифри, ніÑкої пунктуації або інтервалів" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL-адреÑа Вашої веб-Ñторінки, блоґу, або профілю на іншому Ñайті" -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Опишіть Ñебе та Ñвої інтереÑи (%d знаків)" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" msgstr "Опишіть Ñебе та Ñвої інтереÑи" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Про Ñебе" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Де Ви живете, на кшталт «МіÑто, облаÑÑ‚ÑŒ (регіон), країна»" @@ -2981,7 +3010,7 @@ msgid "" msgstr "" "Ðвтоматично підпиÑуватиÑÑŒ до тих, хто підпиÑавÑÑ Ð´Ð¾ мене. (Слава роботам!)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, php-format msgid "Bio is too long (max %d chars)." msgstr "Ви перевищили ліміт (%d знаків макÑимум)." @@ -2997,7 +3026,7 @@ msgstr "Мова задовга (50 знаків макÑимум)." #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format msgid "Invalid tag: \"%s\"" -msgstr "ÐедійÑний теґ: \"%s\"" +msgstr "ÐедійÑний теґ: «%s»" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." @@ -3079,7 +3108,7 @@ msgid "" "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" "Це %%site.name%% — ÑÐµÑ€Ð²Ñ–Ñ [мікроблоґів](http://uk.wikipedia.org/wiki/" -"Мікроблоггінг), Ñкий працює на вільному програмному забезпеченні [StatusNet]" +"Мікроблогінг), Ñкий працює на вільному програмному забезпеченні [StatusNet]" "(http://status.net/). [ПриєднуйтеÑÑŒ](%%action.register%%) зараз Ñ– зможете " "розділити Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ð· друзÑми, родиною Ñ– колегами! ([ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ](%%" "doc.help%%))" @@ -3092,7 +3121,7 @@ msgid "" "tool." msgstr "" "Це %%site.name%% — ÑÐµÑ€Ð²Ñ–Ñ [мікроблоґів](http://uk.wikipedia.org/wiki/" -"Мікроблоггінг), Ñкий працює на вільному програмному забезпеченні [StatusNet]" +"Мікроблогінг), Ñкий працює на вільному програмному забезпеченні [StatusNet]" "(http://status.net/)." #: actions/publictagcloud.php:57 @@ -3243,7 +3272,7 @@ msgstr "Пароль має ÑкладатиÑÑŒ з 6-ти або більше Ð msgid "Password and confirmation do not match." msgstr "Пароль та Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ Ñпівпадають." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Помилка в налаштуваннÑÑ… кориÑтувача." @@ -3251,40 +3280,40 @@ msgstr "Помилка в налаштуваннÑÑ… кориÑтувача." msgid "New password successfully saved. You are now logged in." msgstr "Ðовий пароль уÑпішно збережено. Тепер Ви увійшли." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" "Пробачте, але лише Ñ‚Ñ–, кого було запрошено, мають змогу зареєÑтруватиÑÑŒ тут." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." msgstr "Даруйте, помилка у коді запрошеннÑ." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ ÑƒÑпішна" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "РеєÑтраціÑ" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "РеєÑтрацію не дозволено." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Ви не зможете зареєÑтруватиÑÑŒ, Ñкщо не погодитеÑÑŒ з умовами ліцензії." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Ð¦Ñ Ð°Ð´Ñ€ÐµÑа вже викориÑтовуєтьÑÑ." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "ÐедійÑне Ñ–Ð¼â€™Ñ Ð°Ð±Ð¾ пароль." -#: actions/register.php:343 +#: 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. " @@ -3292,57 +3321,57 @@ msgstr "" "Ð¦Ñ Ñ„Ð¾Ñ€Ð¼Ð° дозволить вам Ñтворити новий акаунт. Ви зможете робити допиÑи Ñ– " "будете в курÑÑ– Ñправ ваших друзів та колег. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 літери нижнього регіÑтра Ñ– цифри, ніÑкої пунктуації або інтервалів. " "Ðеодмінно." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 або більше знаків. Ðеодмінно." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Такий Ñамо, Ñк Ñ– пароль вище. Ðеодмінно." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Пошта" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "ВикориÑтовуєтьÑÑ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½ÑŒ, оголошень та Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÑŽ" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Повне ім’Ñ, звіÑно ж Ваше Ñправжнє Ñ–Ð¼â€™Ñ :)" -#: actions/register.php:511 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format msgid "" "I understand that content and data of %1$s are private and confidential." -msgstr "ЗміÑÑ‚ Ñ– дані %1$s Ñ” приватними Ñ– конфіденційними." +msgstr "Я розумію, що зміÑÑ‚ Ñ– дані %1$s Ñ” приватними Ñ– конфіденційними." -#: actions/register.php:521 +#: actions/register.php:528 #, php-format msgid "My text and files are copyright by %1$s." -msgstr "" +msgstr "ÐвторÑькі права на мої текÑти Ñ– файли належать %1$s." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. -#: actions/register.php:525 +#: actions/register.php:532 msgid "My text and files remain under my own copyright." -msgstr "" +msgstr "ÐвторÑькі права на мої текÑти Ñ– файли залишаютьÑÑ Ð·Ð° мною." #. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. -#: actions/register.php:528 +#: 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:533 +#: actions/register.php:540 #, php-format msgid "" "My text and files are available under %s except this private data: password, " @@ -3351,7 +3380,7 @@ msgstr "" "Мої текÑти Ñ– файли доÑтупні під %s, окрім цих приватних даних: пароль, " "електронна адреÑа, адреÑа IM, телефонний номер." -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3384,7 +3413,7 @@ msgstr "" "ДÑкуємо, що зареєÑтрувалиÑÑŒ у наÑ, Ñ–, ÑподіваємоÑÑŒ, Вам ÑподобаєтьÑÑ Ð½Ð°Ñˆ " "ÑервіÑ." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3465,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:676 msgid "Repeated" msgstr "Повторено" @@ -3503,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 поки що нічого не " "отримав у відповідь." @@ -3520,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)." @@ -3539,7 +3568,7 @@ msgstr "Ви не можете позбавлÑти кориÑтувачів рРmsgid "User doesn't have this role." msgstr "КориÑтувач не має цієї ролі." -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" msgstr "StatusNet" @@ -3553,7 +3582,7 @@ msgstr "КориÑтувача ізольовано доки наберетьÑÑ #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "СеÑÑ–Ñ—" @@ -3596,7 +3625,7 @@ msgid "Icon" msgstr "Іконка" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "Ім’Ñ" @@ -3607,12 +3636,12 @@ msgid "Organization" msgstr "ОрганізаціÑ" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: 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:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "СтатиÑтика" @@ -3702,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%%%%) Ñ– не напиÑати щоÑÑŒ цікаве, що мало б ÑподобатиÑÑŒ цьому " "кориÑтувачеві :)" @@ -3775,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 "УчаÑники" @@ -3789,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." @@ -3803,12 +3832,13 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" "**%s** це група на %%%%site.name%%%% — ÑервіÑÑ– [мікроблоґів](http://uk." -"wikipedia.org/wiki/Мікроблоггінг), Ñкий працює на вільному програмному " +"wikipedia.org/wiki/Мікроблогінг), Ñкий працює на вільному програмному " "забезпеченні [StatusNet](http://status.net/). Члени цієї групи роблÑÑ‚ÑŒ " -"короткі допиÑи про Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° інтереÑи. [ПриєднуйтеÑÑŒ](%%action.register%" -"%) зараз Ñ– долучітьÑÑ Ð´Ð¾ ÑпілкуваннÑ! ([ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ](%%doc.help%%))" +"короткі допиÑи про Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° інтереÑи. [ПриєднуйтеÑÑŒ](%%%%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." @@ -3816,12 +3846,12 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" -"**%s** це група кориÑтувачів на %%site.name%% — ÑервіÑÑ– [мікроблоґів](http://" -"uk.wikipedia.org/wiki/Мікроблоггінг), Ñкий працює на вільному програмному " -"забезпеченні [StatusNet](http://status.net/). Члени цієї групи роблÑÑ‚ÑŒ " -"короткі допиÑи про Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° інтереÑи. " +"**%s** це група кориÑтувачів на %%%%site.name%%%% — ÑервіÑÑ– [мікроблоґів]" +"(http://uk.wikipedia.org/wiki/Мікроблогінг), Ñкий працює на вільному " +"програмному забезпеченні [StatusNet](http://status.net/). Члени цієї групи " +"роблÑÑ‚ÑŒ короткі допиÑи про Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° інтереÑи. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Ðдміни" @@ -3898,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)." @@ -3913,10 +3943,10 @@ msgid "" "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" "**%s** кориÑтуєтьÑÑ %%%%site.name%%%% — ÑервіÑом [мікроблоґів](http://uk." -"wikipedia.org/wiki/Мікроблоґ), Ñкий працює на вільному програмному " -"забезпеченні [StatusNet](http://status.net/). [ПриєднуйтеÑÑŒ](%%action." -"register%%) зараз Ñ– Ñлідкуйте за допиÑами **%s**, також на Ð’Ð°Ñ Ñ‡ÐµÐºÐ°Ñ” багато " -"іншого! ([ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ](%%doc.help%%))" +"wikipedia.org/wiki/Мікроблогінг), Ñкий працює на вільному програмному " +"забезпеченні [StatusNet](http://status.net/). [ПриєднуйтеÑÑŒ](%%%%action." +"register%%%%) зараз Ñ– Ñлідкуйте за допиÑами **%s**, також на Ð’Ð°Ñ Ñ‡ÐµÐºÐ°Ñ” " +"багато іншого! ([ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ](%%%%doc.help%%%%))" #: actions/showstream.php:248 #, php-format @@ -3926,7 +3956,7 @@ msgid "" "[StatusNet](http://status.net/) tool. " msgstr "" "**%s** Ñ” влаÑником акаунту на Ñайті %%%%site.name%%%% — ÑервіÑÑ– [мікроблоґів]" -"(http://uk.wikipedia.org/wiki/Мікроблоггінг), Ñкий працює на вільному " +"(http://uk.wikipedia.org/wiki/Мікроблогінг), Ñкий працює на вільному " "програмному забезпеченні [StatusNet](http://status.net/). " #: actions/showstream.php:305 @@ -4063,11 +4093,12 @@ msgstr "МакÑимальна довжина Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÑÐ°Ð¹Ñ‚Ñ #: actions/sitenoticeadminpanel.php:176 msgid "Site notice text" -msgstr "ТекÑÑ‚ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñайту" +msgstr "ТекÑÑ‚ повідомленнÑ" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" -msgstr "ТекÑÑ‚ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñайту (255 Ñимволів макÑимум; HTML дозволено)" +msgstr "" +"ТекÑÑ‚ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñайту (255 Ñимволів макÑимум; деÑкий HTML дозволено)" #: actions/sitenoticeadminpanel.php:198 msgid "Save site notice" @@ -4229,7 +4260,7 @@ msgstr "Код не введено" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "Снепшоти" @@ -4289,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 "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ підпиÑку." @@ -4467,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 "Цього кориÑтувача блокувати неможливо." @@ -4518,7 +4546,7 @@ msgstr "Помилковий текÑÑ‚ привітаннÑ. МакÑималь #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "Помилкова підпиÑка за замовчуваннÑм: '%1$s' не Ñ” кориÑтувачем." +msgstr "Помилкова підпиÑка за замовчуваннÑм: «%1$s» не Ñ” кориÑтувачем." #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 @@ -4581,7 +4609,7 @@ msgstr "" "підпиÑатиÑÑŒ на допиÑи цього кориÑтувача. Якщо Ви не збиралиÑÑŒ підпиÑуватиÑÑŒ " "ні на чиї допиÑи, проÑто натиÑніть «Відмінити»." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "ЛіцензіÑ" @@ -4642,32 +4670,32 @@ msgstr "URI Ñлухача «%s» тут не знайдено" #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "URI Ñлухача ‘%s’ задовге." +msgstr "URI Ñлухача «%s» задовге." #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "URI Ñлухача ‘%s’ це локальний кориÑтувач" +msgstr "URI Ñлухача «%s» це локальний кориÑтувач" #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "URL-адреÑа профілю ‘%s’ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ кориÑтувача." +msgstr "URL-адреÑа профілю «%s» Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ кориÑтувача." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "URL-адреÑа автари ‘%s’ помилкова." +msgstr "URL-адреÑа аватари «%s» помилкова." #: actions/userauthorization.php:350 #, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "Ðе можна прочитати URL аватари ‘%s’." +msgstr "Ðе можна прочитати URL аватари «%s»." #: actions/userauthorization.php:355 #, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Ðеправильний тип Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ URL-адреÑи аватари ‘%s’." +msgstr "Ðеправильний тип Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ URL-адреÑи аватари «%s»." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" @@ -4711,18 +4739,18 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %1$s на %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "StatusNet %s" -#: actions/version.php:153 +#: actions/version.php:155 #, php-format msgid "" "This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, " @@ -4731,11 +4759,11 @@ msgstr "" "Цей Ñайт працює на %1$s, верÑÑ–Ñ %2$s. ÐвторÑькі права 2008-2010 StatusNet, " "Inc. Ñ– розробники." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" msgstr "Розробники" -#: actions/version.php:168 +#: 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 " @@ -4747,7 +4775,7 @@ msgstr "" "Ñ—Ñ… було опубліковано Free Software Foundation, 3-Ñ‚Ñ Ð²ÐµÑ€ÑÑ–Ñ Ð»Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ— або (на " "Ваш розÑуд) будь-Ñка подальша верÑÑ–Ñ. " -#: actions/version.php:174 +#: 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 " @@ -4759,7 +4787,7 @@ msgstr "" "ПРИДÐТÐОСТІ ДЛЯ ДОСЯГÐЕÐÐЯ ПЕВÐОЇ МЕТИ. Щодо більш детальних роз’ÑÑнень, " "ознайомтеÑÑŒ з умовами GNU Affero General Public License. " -#: actions/version.php:180 +#: actions/version.php:182 #, php-format msgid "" "You should have received a copy of the GNU Affero General Public License " @@ -4768,93 +4796,140 @@ msgstr "" "Разом з програмою Ви маєте отримати копію ліцензійних умов GNU Affero " "General Public License. Якщо ні, перейдіть на %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" msgstr "Додатки" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 msgid "Version" msgstr "ВерÑÑ–Ñ" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "Ðвтор(и)" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: classes/Notice.php:190 #, php-format msgid "Database error inserting hashtag: %s" msgstr "Помилка бази даних при додаванні хеш-теґу: %s" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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." @@ -4862,71 +4937,118 @@ msgstr "" "Дуже багато повідомлень за короткий термін; ходіть подихайте повітрÑм Ñ– " "повертайтеÑÑŒ за кілька хвилин." -#: classes/Notice.php:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ інформацію про локальну групу." @@ -4977,188 +5099,188 @@ msgid "Untitled page" msgstr "Сторінка без заголовку" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "Відправна Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Ñайту" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" msgstr "ОÑобиÑте" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Змінити електронну адреÑу, аватару, пароль, профіль" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: 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:445 +#: lib/action.php:455 msgid "Connect" msgstr "З’єднаннÑ" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: 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:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "Ðдмін" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" msgstr "ЗапроÑÑ–Ñ‚ÑŒ друзів та колег приєднатиÑÑŒ до Ð’Ð°Ñ Ð½Ð° %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" msgstr "ЗапроÑити" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" msgstr "Вийти" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: 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:475 +#: lib/action.php:485 msgctxt "MENU" msgid "Register" msgstr "РеєÑтраціÑ" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Увійти на Ñайт" -#: lib/action.php:481 +#: lib/action.php:491 msgctxt "MENU" msgid "Login" msgstr "Увійти" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Допоможіть!" -#: lib/action.php:487 +#: lib/action.php:497 msgctxt "MENU" msgid "Help" msgstr "Довідка" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Пошук людей або текÑтів" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: 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:582 +#: lib/action.php:592 msgid "Local views" msgstr "ОглÑд" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 msgid "Page notice" msgstr "Ð—Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ Ñторінки" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "ДругорÑдна Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Ñайту" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "Допомога" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Про" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "ЧаП" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "Умови" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "ПриватніÑÑ‚ÑŒ" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Джерело" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Контакт" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "Бедж" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 +#: lib/action.php:827 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5168,13 +5290,13 @@ msgstr "" "site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** — це ÑÐµÑ€Ð²Ñ–Ñ Ð¼Ñ–ÐºÑ€Ð¾Ð±Ð»Ð¾Ò‘Ñ–Ð²." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5186,50 +5308,50 @@ msgstr "" "License](http://www.fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: 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:847 +#: lib/action.php:857 #, php-format msgid "Content and data of %1$s are private and confidential." msgstr "ЗміÑÑ‚ Ñ– дані %1$s Ñ” приватними Ñ– конфіденційними." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:864 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "ÐвторÑькі права на зміÑÑ‚ Ñ– дані належать %1$s. Ð’ÑÑ– права захищено." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: 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:871 +#: lib/action.php:881 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "ВеÑÑŒ зміÑÑ‚ Ñ– дані %1$s доÑтупні на умовах ліцензії %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: 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:1193 +#: 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:1203 +#: lib/action.php:1213 msgid "Before" msgstr "Ðазад" @@ -5278,64 +5400,64 @@ msgid "Unable to delete design setting." msgstr "Ðемає можливоÑÑ‚Ñ– видалити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ñƒ." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" msgstr "ОÑновна ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñайту" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" msgstr "Сайт" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð´Ð¸Ð·Ð°Ð¹Ð½Ñƒ" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Дизайн" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "КориÑтувач" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" msgstr "ПрийнÑти конфігурацію" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ»Ñху" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑеÑій" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" msgstr "Редагувати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñайту" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" msgstr "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð·Ð½Ñ–Ð¼ÐºÑ–Ð²" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API-реÑÑƒÑ€Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” дозвіл типу «читаннÑ-запиÑ», але у Ð²Ð°Ñ Ñ” лише доÑтуп Ð´Ð»Ñ " @@ -5468,11 +5590,11 @@ msgstr "ДопиÑи, до Ñких прикріплено це вкладенн msgid "Tags for this attachment" msgstr "Теґи Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ вкладеннÑ" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ пароль" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Змінювати пароль не дозволено" @@ -5566,14 +5688,14 @@ msgstr "Повне ім’Ñ: %s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "РозташуваннÑ: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Веб-Ñторінка: %s" @@ -5927,7 +6049,7 @@ msgstr "Вперед" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "Ðадати цьому кориÑтувачеві роль \"%s\"" +msgstr "Ðадати цьому кориÑтувачеві роль «%s»" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" @@ -6088,17 +6210,17 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" -"Ðгов, %s.\n" +"Ðгов, %s!\n" "\n" "ХтоÑÑŒ щойно ввів цю електронну адреÑу на %s.\n" "\n" -"Якщо то були Ви, муÑите це підтвердити викориÑтовуючи поÑиланнÑ:\n" +"Якщо то були Ви, муÑите це підтвердити, викориÑтовуючи поÑиланнÑ:\n" "\n" -"\t%s\n" +"%s\n" "\n" -"Ð Ñкщо ні, то проÑто проігноруйте це повідомленнÑ.\n" +"Ð Ñкщо ні, проÑто ігноруйте це повідомленнÑ.\n" "\n" -"ДÑкуємо за Ваш Ñ‡Ð°Ñ \n" +"Вибачте за турботу, \n" "%s\n" #. TRANS: Subject of new-subscriber notification e-mail @@ -6107,8 +6229,18 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s тепер Ñлідкує за Вашими допиÑами на %2$s." +#: 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 "" +"Якщо Ви вважаєте, що цей акаунт викориÑтовуєтьÑÑ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¾Ð¼Ñ–Ñ€Ð½Ð¾, Ви можете " +"заблокувати його у ÑпиÑку Ñвоїх підпиÑчиків Ñ– повідомити адмініÑтраторів " +"Ñайту про факт Ñпаму на %s" + #. TRANS: Main body of new-subscriber notification e-mail -#: lib/mail.php:249 +#: lib/mail.php:254 #, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6134,19 +6266,19 @@ msgstr "" "Змінити електронну адреÑу або умови ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ â€” %8$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, php-format msgid "Bio: %s" msgstr "Про Ñебе: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Ðова електронна адреÑа Ð´Ð»Ñ Ð½Ð°Ð´ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ на %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6168,18 +6300,18 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s ÑтатуÑ" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð¡ÐœÐ¡" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "" @@ -6187,13 +6319,13 @@ msgstr "" "ÑкориÑтавшиÑÑŒ даним кодом:" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "Ð’Ð°Ñ Ñпробував «розштовхати» %s" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6221,13 +6353,13 @@ msgstr "" "%4$s\n" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Ðове приватне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6261,13 +6393,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s (@%s) додав(ла) Ваш Ð´Ð¾Ð¿Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¸Ñ…" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6305,7 +6437,7 @@ msgstr "" "%6$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6316,13 +6448,13 @@ msgstr "" "\n" "%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" msgstr "%s (@%s) пропонує до Вашої уваги наÑтупний допиÑ" #. TRANS: Body of @-reply notification e-mail. -#: lib/mail.php:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6385,7 +6517,7 @@ msgstr "" "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¸ долучити кориÑтувачів до розмови. Такі Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ð°Ñ‡Ð¸Ñ‚Ðµ " "лише Ви." -#: lib/mailbox.php:227 lib/noticelist.php:497 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "від" @@ -6443,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 не підтримуєтьÑÑ Ñк тип файлів на цьому Ñервері." @@ -6516,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:568 msgid "in context" msgstr "в контекÑÑ‚Ñ–" -#: lib/noticelist.php:594 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Повторено" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "ВідповіÑти на цей допиÑ" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "ВідповіÑти" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð¸Ð»Ð¸" @@ -6659,18 +6791,18 @@ msgstr "ІД" #: lib/profileaction.php:196 msgid "Member since" -msgstr "З нами від" +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" msgstr "Ð’ÑÑ– групи" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Метод не виконуєтьÑÑ." @@ -6694,7 +6826,7 @@ msgstr "ПоÑтаті" msgid "Popular" msgstr "ПопулÑрне" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Ðемає аргументів return-to." @@ -6713,9 +6845,9 @@ msgstr "Повторити цей допиÑ" #: lib/revokeroleform.php:91 #, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Відкликати роль \"%s\" Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кориÑтувача" +msgstr "Відкликати роль «%s» Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ кориÑтувача" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "КориÑтувача Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾ÐºÐ¾Ñ€Ð¸Ñтувацького режиму не визначено." @@ -6813,6 +6945,52 @@ msgstr "Хмарка теґів (позначки, Ñкими Ви позначРmsgid "None" msgstr "ПуÑто" +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "Цей Ñервер не може опрацювати Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐ¼Ð¸ без підтримки ZIP." + +#: 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 "" +"Тема, що Ñ—Ñ— було завантажено, надто велика; без компреÑÑ–Ñ— розмір має " +"Ñтановити менше ніж %d байтів." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Ð’ архіві з темою Ñ” помилка: відÑутній файл 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 "" +"Тема міÑтить неприпуÑтиме Ñ–Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ або теки. ВикориÑтовуйте літери " +"Ñтандарту ASCII, цифри, знаки підкреÑÐ»ÐµÐ½Ð½Ñ Ñ‚Ð° мінуÑу." + +#: lib/themeuploader.php:216 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Тема міÑтить файл типу «.%s», Ñкий Ñ” неприпуÑтимим." + +#: lib/themeuploader.php:234 +msgid "Error opening theme archive." +msgstr "Помилка при відкритті архіву з темою." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Топ-допиÑувачі" @@ -6893,56 +7071,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "близько %d хвилин тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "близько %d годин тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "близько %d днів тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "близько %d міÑÑців тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "рік тому" diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po index de5d64dc1..c82d34e66 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:18+0000\n" +"POT-Creation-Date: 2010-08-07 16:23+0000\n" +"PO-Revision-Date: 2010-08-07 16:25:06+0000\n" "Language-Team: Vietnamese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70633); 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" @@ -20,10 +21,9 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 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,31 +81,30 @@ 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" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "Không có tin nhắn nà o." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -121,7 +117,7 @@ msgid "No such user." msgstr "Không có user nà o." #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s và bạn bè" @@ -129,39 +125,39 @@ msgstr "%s và bạn bè" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 và bạn bè" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "Chá»n những ngÆ°á»i bạn của %s" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, fuzzy, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "Chá»n những ngÆ°á»i bạn của %s" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, fuzzy, php-format msgid "Feed for friends of %s (Atom)" msgstr "Chá»n những ngÆ°á»i bạn của %s" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -169,81 +165,80 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 -#, fuzzy +#: actions/all.php:182 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. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "PhÆ°Æ¡ng thức API không tìm thấy!" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "PhÆ°Æ¡ng thức nà y yêu cầu là POST." -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "Không thể cáºp nháºt thà nh viên." @@ -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:210 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 @@ -344,33 +339,33 @@ msgstr "Không tìm thấy user." msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "Không tìm thấy trạng thái nà o tÆ°Æ¡ng ứng vá»›i ID đó." -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "Tin nhắn nà y đã có trong danh sách tin nhắn Æ°a thÃch của bạn rồi!" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "Không thể tạo favorite." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 #, fuzzy msgid "That status is not a favorite." msgstr "Tin nhắn nà y đã có trong danh sách tin nhắn Æ°a thÃch của bạn rồi!" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 #, fuzzy msgid "Could not delete favorite." 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 @@ -402,126 +397,130 @@ msgstr "Không thể lấy lại các tin nhắn Æ°a thÃch" msgid "Could not find target user." msgstr "Không tìm thấy bất kỳ trạng thái nà o." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "Biệt hiệu phải là chữ viết thÆ°á»ng hoặc số và không có khoảng trắng." -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "Biệt hiệu nà y đã dùng rồi. Hãy nháºp biệt hiệu khác." -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "Biệt hiệu không hợp lệ." -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "Trang chủ không phải là URL" -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "Tên đầy đủ quá dà i (tối Ä‘a là 255 ký tá»±)." -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." msgstr "Lý lịch quá dà i (không quá 140 ký tá»±)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "Tên khu vá»±c quá dà i (không quá 255 ký tá»±)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." msgstr "Trang chủ '%s' không hợp lệ" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "Biệt hiệu nà y đã dùng rồi. Hãy nháºp biệt hiệu khác." -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 -#, fuzzy +#: 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 "PhÆ°Æ¡ng thức API không tìm thấy!" +msgstr "Không tìm thấy nhóm." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "Bạn đã theo những ngÆ°á»i nà y:" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." msgstr "Không thể theo bạn nà y: %s đã có trong danh sách bạn bè của bạn rồi." -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "Bạn chÆ°a cáºp nháºt thông tin riêng" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." msgstr "Không thể theo bạn nà y: %s đã có trong danh sách bạn bè của bạn rồi." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" msgstr "%s và nhóm" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "Bạn chÆ°a cáºp nháºt thông tin riêng" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, fuzzy, php-format msgid "%s groups" msgstr "%s và nhóm" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, fuzzy, php-format 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 "" @@ -533,15 +532,15 @@ msgstr "KÃch thÆ°á»›c không hợp lệ." #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -605,13 +604,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 -#, fuzzy +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" -msgstr "Giá»›i thiệu" +msgstr "Tà i khoản" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -619,8 +617,8 @@ msgid "Nickname" msgstr "Biệt danh" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "Máºt khẩu" @@ -636,11 +634,11 @@ msgstr "" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "PhÆ°Æ¡ng thức nà y yêu cầu là POST hoặc DELETE" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "Bạn đã không xóa trạng thái của những ngÆ°á»i khác." @@ -659,62 +657,65 @@ msgstr "Bạn không thể đăng ký nếu không đồng ý các Ä‘iá»u khoẠmsgid "Already repeated that notice." msgstr "Xóa tin nhắn" -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 #, fuzzy msgid "Status deleted." msgstr "Hình đại diện đã được cáºp nháºt." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 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:240 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:281 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:304 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." -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "Tìm kiếm các tin nhắn Æ°a thÃch của %s" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." msgstr "Tất cả các cáºp nháºt của %s" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s / Các cáºp nháºt Ä‘ang trả lá»i tá»›i %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, fuzzy, php-format msgid "%s public timeline" msgstr "Dòng tin công cá»™ng" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s cáºp nháºt từ tất cả má»i ngÆ°á»i!" @@ -729,16 +730,20 @@ msgstr "Trả lá»i cho %s" msgid "Repeats of %s" msgstr "Trả lá»i cho %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "Thông báo được gắn thẻ %s" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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" @@ -840,12 +844,11 @@ msgstr "Hình đại diện đã được cáºp nháºt." msgid "You already blocked that user." msgstr "Bạn đã theo những ngÆ°á»i nà y:" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 -#, fuzzy +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 msgid "Block user" -msgstr "Ban user" +msgstr "Chặn ngÆ°á»i dùng" -#: actions/block.php:130 +#: 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 " @@ -857,7 +860,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 #, fuzzy @@ -867,7 +870,7 @@ msgstr "Không" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 +#: actions/block.php:157 actions/deleteuser.php:156 #, fuzzy msgid "Do not block this user" msgstr "Bá» chặn ngÆ°á»i dùng nà y" @@ -877,7 +880,7 @@ msgstr "Bá» chặn ngÆ°á»i dùng nà y" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -886,12 +889,12 @@ msgid "Yes" msgstr "Có" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 #, fuzzy msgid "Block this user" msgstr "Ban user" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -1025,7 +1028,7 @@ msgstr "Bạn chÆ°a cáºp nháºt thông tin riêng" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 #, fuzzy msgid "There was a problem with your session token." msgstr "Có lá»—i xảy ra khi thao tác. Hãy thá» lại lần nữa." @@ -1060,7 +1063,7 @@ msgstr "Xóa tin nhắn" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "ChÆ°a đăng nháºp." @@ -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" @@ -1134,52 +1137,61 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "KÃch thÆ°á»›c không hợp lệ." -#: actions/designadminpanel.php:280 +#: actions/designadminpanel.php:322 #, fuzzy, php-format msgid "Theme not available: %s." msgstr "Trang nà y không phải là phÆ°Æ¡ng tiện truyá»n thông mà bạn chấp nháºn." -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" msgstr "Thay đổi máºt khẩu của bạn" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 #, fuzzy msgid "Site logo" msgstr "ThÆ° má»i" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "Thay đổi" -#: actions/designadminpanel.php:405 +#: actions/designadminpanel.php:460 #, fuzzy msgid "Site theme" msgstr "Thông báo má»›i" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +#, fuzzy +msgid "Custom theme" +msgstr "Thông báo má»›i" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 #, fuzzy msgid "Change background image" msgstr "Background Theme:" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 #, fuzzy msgid "Background" msgstr "Background Theme:" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1189,62 +1201,70 @@ msgstr "" "vá» bạn." #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 #, fuzzy msgid "Tile background image" msgstr "Background Theme:" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "Thay đổi máºt khẩu của bạn" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "Kết nối" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "Tìm kiếm" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "Chuá»—i bất kỳ" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "Äăng nháºp" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1254,7 +1274,7 @@ msgstr "" msgid "Save" msgstr "LÆ°u" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 #, fuzzy msgid "Save design" msgstr "LÆ°u" @@ -1384,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." @@ -1555,7 +1576,7 @@ msgid "Cannot normalize that email address" msgstr "Không thể bình thÆ°á»ng hóa địa chỉ GTalk nà y" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "Äịa chỉ email không hợp lệ." @@ -1803,13 +1824,13 @@ msgstr "NgÆ°á»i dùng không có thông tin." #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 #, fuzzy msgid "No profile with that ID." msgstr "Không tìm thấy trạng thái nà o tÆ°Æ¡ng ứng vá»›i ID đó." @@ -1959,7 +1980,7 @@ msgstr "Kênh mà bạn tham gia" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, fuzzy, php-format msgid "%s timeline" msgstr "Dòng tin nhắn của %s" @@ -2394,40 +2415,40 @@ msgstr "Bạn chÆ°a cáºp nháºt thông tin riêng" msgid "%1$s left group %2$s" msgstr "%s và nhóm" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "Äã đăng nháºp." -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "Sai tên đăng nháºp hoặc máºt khẩu." -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 #, fuzzy msgid "Error setting user. You are probably not authorized." msgstr "ChÆ°a được phép." -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "Äăng nháºp" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "Nhá»› tôi" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "Sẽ tá»± Ä‘á»™ng đăng nháºp, không dà nh cho các máy sá» dụng chung!" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "Mất hoặc quên máºt khẩu?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." @@ -2435,12 +2456,12 @@ msgstr "" "Vì lý do bảo máºt, bạn hãy nháºp lại tên đăng nháºp và máºt khẩu trÆ°á»›c khi thay " "đổi trong Ä‘iá»u chỉnh." -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." msgstr "Sai tên đăng nháºp hoặc máºt khẩu." -#: actions/login.php:273 +#: actions/login.php:295 #, fuzzy, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2597,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 @@ -2654,31 +2675,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." msgstr "Tin nhắn không có hồ sÆ¡ cá nhân" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "Trạng thái của %1$s và o %2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 +#: actions/oembed.php:159 #, fuzzy, php-format msgid "Content type %s not supported." msgstr "Kết nối" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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." @@ -2793,7 +2814,7 @@ msgid "6 or more characters" msgstr "Nhiá»u hÆ¡n 6 ký tá»±" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "Xác nháºn" @@ -2805,12 +2826,12 @@ msgstr "Cùng máºt khẩu ở trên" msgid "Change" msgstr "Thay đổi" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 #, fuzzy msgid "Password must be 6 or more characters." msgstr "Máºt khẩu phải nhiá»u hÆ¡n 6 ký tá»±." -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Máºt khẩu không khá»›p." @@ -2831,7 +2852,7 @@ msgid "Password saved." msgstr "Äã lÆ°u máºt khẩu." #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -3052,44 +3073,44 @@ msgstr "Hồ sÆ¡ nà y không biết" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64 chữ cái thÆ°á»ng hoặc là chữ số, không có dấu chấm hay " -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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 "Tên đầy đủ" #. TRANS: Form input field label. -#: actions/profilesettings.php:115 actions/register.php:453 +#: actions/profilesettings.php:115 actions/register.php:460 #: lib/applicationeditform.php:244 lib/groupeditform.php:161 msgid "Homepage" msgstr "Trang chủ hoặc Blog" -#: actions/profilesettings.php:117 actions/register.php:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "URL vá» Trang chÃnh, Blog, hoặc hồ sÆ¡ cá nhân của bạn trên " -#: actions/profilesettings.php:122 actions/register.php:461 +#: actions/profilesettings.php:122 actions/register.php:468 #, fuzzy, php-format msgid "Describe yourself and your interests in %d chars" msgstr "Nói vá» bạn và những sở thÃch của bạn khoảng 140 ký tá»±" -#: actions/profilesettings.php:125 actions/register.php:464 +#: actions/profilesettings.php:125 actions/register.php:471 #, fuzzy msgid "Describe yourself and your interests" msgstr "Nói vá» bạn và những sở thÃch của bạn khoảng 140 ký tá»±" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "Lý lịch" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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 "Thà nh phố" -#: actions/profilesettings.php:134 actions/register.php:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "Bạn ở đâu, \"Thà nh phố, Tỉnh thà nh, Quốc gia\"" @@ -3129,7 +3150,7 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "Tá»± Ä‘á»™ng theo những ngÆ°á»i nà o đăng ký theo tôi" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." msgstr "Lý lịch quá dà i (không quá 140 ký tá»±)" @@ -3385,7 +3406,7 @@ msgstr "Máºt khẩu phải nhiá»u hÆ¡n 6 ký tá»±." msgid "Password and confirmation do not match." msgstr "Máºt khẩu và máºt khẩu xác nháºn không khá»›p nhau." -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "Lá»—i xảy ra khi tạo thà nh viên." @@ -3393,104 +3414,104 @@ msgstr "Lá»—i xảy ra khi tạo thà nh viên." msgid "New password successfully saved. You are now logged in." msgstr "Máºt khẩu má»›i đã được lÆ°u. Bạn có thể đăng nháºp ngay bây giá»." -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "Lá»—i xảy ra vá»›i mã xác nháºn." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Äăng ký thà nh công" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "Äăng ký" -#: actions/register.php:135 +#: actions/register.php:142 #, fuzzy msgid "Registration not allowed." msgstr "Biệt hiệu không được cho phép." -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "Bạn không thể đăng ký nếu không đồng ý các Ä‘iá»u khoản." -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "Äịa chỉ email đã tồn tại." -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "Tên đăng nháºp hoặc máºt khẩu không hợp lệ." -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "" "1-64 chữ cái thÆ°á»ng hoặc là chữ số, không có dấu chấm hay khoảng trắng. Bắt " "buá»™c." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "Nhiá»u hÆ¡n 6 ký tá»±. Bắt buá»™c" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "Cùng máºt khẩu ở trên. Bắt buá»™c." #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "Email" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "Chỉ dùng để cáºp nháºt, thông báo, và hồi phục máºt khẩu" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "Há» tên đầy đủ của bạn, tốt nhất là tên tháºt của bạn." -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 +#: actions/register.php:540 #, fuzzy, php-format msgid "" "My text and files are available under %s except this private data: password, " "email address, IM address, and phone number." msgstr " ngoại trừ thông tin riêng: máºt khẩu, email, địa chỉ IM, số Ä‘iện thoại" -#: actions/register.php:576 +#: actions/register.php:583 #, fuzzy, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3521,7 +3542,7 @@ msgstr "" "\n" "Cảm Æ¡n bạn đã đăng ký để là thà nh viên và rất mong bạn sẽ thÃch dịch vụ nà y." -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3608,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" @@ -3648,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 @@ -3661,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 @@ -3680,7 +3701,7 @@ msgstr "Bạn đã theo những ngÆ°á»i nà y:" msgid "User doesn't have this role." msgstr "Hồ sÆ¡ ở nÆ¡i khác không khá»›p vá»›i hồ sÆ¡ nà y của bạn" -#: actions/rsd.php:146 actions/version.php:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" msgstr "Hình đại diện đã được cáºp nháºt." @@ -3697,7 +3718,7 @@ msgstr "NgÆ°á»i dùng không có thông tin." #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3743,7 +3764,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3756,12 +3777,12 @@ msgid "Organization" msgstr "ThÆ° má»i đã gá»i" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 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ê" @@ -3847,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 @@ -3918,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" @@ -3933,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." @@ -3948,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." @@ -3957,7 +3978,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -4034,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 @@ -4378,7 +4399,7 @@ msgstr "Không có mã nà o được nháºp" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4441,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." @@ -4615,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." @@ -4739,7 +4757,7 @@ msgstr "" "nhắn của các thà nh viên nà y. Nếu bạn không yêu cầu đăng nháºn xem tin nhắn " "của há», hãy nhấn \"Hủy bá»\"" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4870,29 +4888,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "Số liệu thống kê" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4900,7 +4918,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4908,184 +4926,281 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "Cá nhân" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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:176 +#: 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:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1745 #, 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:737 +#, 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:746 +#, 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." @@ -5140,57 +5255,57 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "Cá nhân" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Thay đổi máºt khẩu của bạn" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:452 #, fuzzy msgctxt "TOOLTIP" msgid "Connect to services" msgstr "Không thể chuyển đến máy chủ: %s" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "Kết nối" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy msgctxt "TOOLTIP" msgid "Change site configuration" msgstr "Tôi theo" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" @@ -5199,71 +5314,71 @@ msgstr "" "của bạn tham gia và o dịch vụ nà y." #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "ThÆ° má»i" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" msgstr "Thoát" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:482 #, fuzzy msgctxt "TOOLTIP" msgid "Create an account" msgstr "Tạo tà i khoản má»›i" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "Äăng ký" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "Äăng nháºp" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "HÆ°á»›ng dẫn" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "HÆ°á»›ng dẫn" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5271,75 +5386,75 @@ msgstr "Tìm kiếm" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "Thông báo má»›i" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "Thông báo má»›i" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" msgstr "Tôi theo" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "HÆ°á»›ng dẫn" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "Giá»›i thiệu" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "Riêng tÆ°" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "Nguồn" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "Liên hệ" -#: lib/action.php:784 +#: lib/action.php:794 #, fuzzy msgid "Badge" msgstr "Tin đã gá»i" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 +#: lib/action.php:827 #, fuzzy, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5349,13 +5464,13 @@ msgstr "" "%](%%site.broughtbyurl%%). " #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** là dịch vụ gá»i tin nhắn." #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, fuzzy, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5367,51 +5482,51 @@ msgstr "" "licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "Tìm theo ná»™i dung của tin nhắn" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 #, fuzzy msgid "After" msgstr "Sau" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 +#: lib/action.php:1213 #, fuzzy msgid "Before" msgstr "TrÆ°á»›c" @@ -5463,74 +5578,74 @@ msgid "Unable to delete design setting." msgstr "Không thể lÆ°u thông tin Twitter của bạn!" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "Xac nhan dia chi email" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "ThÆ° má»i" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "Xác nháºn SMS" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 +#: lib/adminpanelaction.php:360 #, fuzzy msgctxt "MENU" msgid "Design" msgstr "Cá nhân" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "Xác nháºn SMS" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "Xác nháºn SMS" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "Xác nháºn SMS" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "Xác nháºn SMS" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "Thông báo má»›i" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "Xác nháºn SMS" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5666,12 +5781,12 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "Äã lÆ°u máºt khẩu." -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 #, fuzzy msgid "Password changing is not allowed" msgstr "Äã lÆ°u máºt khẩu." @@ -5769,14 +5884,14 @@ msgstr "Tên đầy đủ" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, fuzzy, php-format msgid "Location: %s" msgstr "Thà nh phố: %s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, fuzzy, php-format msgid "Homepage: %s" msgstr "Trang chủ hoặc Blog: %s" @@ -6300,8 +6415,15 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s Ä‘ang theo dõi lÆ°u ý của bạn trên %2$s." +#: 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:249 +#: lib/mail.php:254 #, fuzzy, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" @@ -6323,19 +6445,19 @@ msgstr "" "%4$s.\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "Thà nh phố: %s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "Dia chi email moi de gui tin nhan den %s" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6357,30 +6479,30 @@ msgstr "" "%4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, fuzzy, php-format msgid "%s status" msgstr "Trạng thái của %1$s và o %2$s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "Xác nháºn SMS" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "Äó không phải là số Ä‘iện thoại của bạn." #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6397,13 +6519,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "Bạn có tin nhắn riêng từ %s" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6437,13 +6559,13 @@ msgstr "" "%5$s\n" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" msgstr "%s da them tin nhan cua ban vao danh sach tin nhan ua thich" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, fuzzy, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6478,7 +6600,7 @@ msgstr "" "%5$s\n" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6486,13 +6608,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6529,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ừ " @@ -6586,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 "" @@ -6664,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" @@ -6830,7 +6952,7 @@ msgstr "" msgid "All groups" msgstr "Nhóm" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6857,7 +6979,7 @@ msgstr "" msgid "Popular" msgstr "Tên tà i khoản" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 #, fuzzy msgid "No return-to arguments." msgstr "Không có tà i liệu nà o." @@ -6881,7 +7003,7 @@ msgstr "Trả lá»i tin nhắn nà y" msgid "Revoke the \"%s\" role from this user" msgstr "Ban user" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6989,6 +7111,50 @@ msgstr "" msgid "None" msgstr "Không" +#: 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 +#, fuzzy +msgid "Failed saving theme." +msgstr "Cáºp nháºt hình đại diện không thà nh công." + +#: 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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "Lá»—i xảy ra khi cáºp nháºt hồ sÆ¡ cá nhân" + #: lib/topposterssection.php:74 #, fuzzy msgid "Top posters" @@ -7078,56 +7244,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: lib/util.php:1100 msgid "a few seconds ago" msgstr "và i giây trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1086 +#: lib/util.php:1103 msgid "about a minute ago" msgstr "1 phút trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "%d phút trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: lib/util.php:1110 msgid "about an hour ago" msgstr "1 giá» trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "%d giá» trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: lib/util.php:1117 msgid "about a day ago" msgstr "1 ngà y trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "%d ngà y trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: lib/util.php:1124 msgid "about a month ago" msgstr "1 tháng trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "%d tháng trÆ°á»›c" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "1 năm trÆ°á»›c" diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po index 771e303de..0a982b2e4 100644 --- a/locale/zh_CN/LC_MESSAGES/statusnet.po +++ b/locale/zh_CN/LC_MESSAGES/statusnet.po @@ -1,6 +1,8 @@ # Translation of StatusNet to Simplified Chinese # +# Author@translatewiki.net: Chenxiaoqino # Author@translatewiki.net: Shizhao +# Author@translatewiki.net: Sweeite012f # -- # Messages of identi.ca # Copyright (C) 2008 Gouki <gouki@goukihq.org> @@ -10,12 +12,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:21+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:13:25+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -23,7 +25,7 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "接å—" @@ -70,9 +72,8 @@ msgstr "ç¦æ¢æ–°ç”¨æˆ·æ³¨å†Œ" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "已关é—" +msgstr "" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 @@ -93,25 +94,25 @@ msgid "Save" msgstr "ä¿å˜" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "没有该页é¢" +msgstr "未找到æ¤æ¶ˆæ¯ã€‚" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -124,7 +125,7 @@ msgid "No such user." msgstr "没有这个用户。" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, php-format msgid "%1$s and friends, page %2$d" msgstr "%1$s 和好å‹ï¼Œç¬¬%2$d页" @@ -132,39 +133,39 @@ msgstr "%1$s 和好å‹ï¼Œç¬¬%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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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 åŠå¥½å‹" #. TRANS: %1$s is user nickname -#: actions/all.php:103 +#: actions/all.php:107 #, php-format msgid "Feed for friends of %s (RSS 1.0)" msgstr "%s 好å‹çš„èšåˆ(RSS 1.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:112 +#: actions/all.php:116 #, php-format msgid "Feed for friends of %s (RSS 2.0)" msgstr "%s 好å‹çš„èšåˆ(RSS 2.0)" #. TRANS: %1$s is user nickname -#: actions/all.php:121 +#: actions/all.php:125 #, php-format msgid "Feed for friends of %s (Atom)" msgstr "%s 好å‹çš„èšåˆ(Atom)" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "这是 %s 和好å‹çš„时间线,但是没有任何人å‘布内容。" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -172,80 +173,80 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 msgid "You and friends" 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:215 -#: actions/apitimelinehome.php:121 +#: 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 "æ¥è‡ª%2$s 上 %1$s 和好å‹çš„æ›´æ–°ï¼" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "API 方法未实现ï¼" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "æ¤æ–¹æ³•æŽ¥å—POST请求。" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" @@ -267,7 +268,7 @@ msgstr "æ— æ³•ä¿å˜ä¸ªäººä¿¡æ¯ã€‚" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -295,9 +296,8 @@ msgid "Could not update your design." msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" +msgstr "" #: actions/apiblockcreate.php:126 msgid "Block user failed." @@ -334,7 +334,7 @@ msgstr "消æ¯æ²¡æœ‰æ£æ–‡ï¼" #: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, fuzzy, php-format msgid "That's too long. Max message size is %d chars." -msgstr "超出长度é™åˆ¶ã€‚ä¸èƒ½è¶…过 140 个å—符。" +msgstr "ä½ å¯ä»¥ç»™ä½ 的组上载一个logo图。" #: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." @@ -344,32 +344,33 @@ msgstr "未找到收件人。" msgid "Can't send direct messages to users who aren't your friend." msgstr "æ— æ³•å‘并éžå¥½å‹çš„用户å‘é€ç›´æŽ¥æ¶ˆæ¯ã€‚" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "没有找到æ¤IDçš„ä¿¡æ¯ã€‚" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 #, fuzzy msgid "This status is already a favorite." msgstr "已收è—æ¤é€šå‘Šï¼" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 msgid "Could not create favorite." msgstr "æ— æ³•åˆ›å»ºæ”¶è—。" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 #, fuzzy msgid "That status is not a favorite." msgstr "æ¤é€šå‘Šæœªè¢«æ”¶è—ï¼" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 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 @@ -379,147 +380,149 @@ msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼š%s 已在订阅列表ä¸ã€‚" #: actions/apifriendshipsdestroy.php:109 #, fuzzy msgid "Could not unfollow user: User not found." -msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼šæœªæ‰¾åˆ°ã€‚" +msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼š%s 已在订阅列表ä¸ã€‚" #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" +msgstr "" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "å¿…é¡»æ供两个用户å¸å·æˆ–昵称。" +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "" #: actions/apifriendshipsshow.php:134 #, fuzzy msgid "Could not determine source user." -msgstr "æ— æ³•èŽ·å–收è—的通告。" +msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" #: actions/apifriendshipsshow.php:142 #, fuzzy msgid "Could not find target user." -msgstr "找ä¸åˆ°ä»»ä½•ä¿¡æ¯ã€‚" +msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "昵称åªèƒ½ä½¿ç”¨å°å†™å—æ¯å’Œæ•°å—,ä¸åŒ…å«ç©ºæ ¼ã€‚" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "昵称已被使用,æ¢ä¸€ä¸ªå§ã€‚" -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 msgid "Not a valid nickname." msgstr "ä¸æ˜¯æœ‰æ•ˆçš„昵称。" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "主页的URLä¸æ£ç¡®ã€‚" -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "å…¨å过长(ä¸èƒ½è¶…过 255 个å—符)。" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." -msgstr "æ述过长(ä¸èƒ½è¶…过140å—符)。" +msgstr "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个å—符)。" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个å—符)。" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." -msgstr "" +msgstr "太多化å了ï¼æœ€å¤š%d 个。" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." -msgstr "主页'%s'ä¸æ£ç¡®" +msgstr "电åé‚®ä»¶åœ°å€ %s ä¸æ£ç¡®" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "昵称已被使用,æ¢ä¸€ä¸ªå§ã€‚" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: 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:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 -#, fuzzy +#: 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 "API 方法未实现ï¼" +msgstr "å°ç»„未找到。" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 #, fuzzy msgid "You are already a member of that group." msgstr "您已ç»æ˜¯è¯¥ç»„æˆå‘˜" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "æ— æ³•æŠŠ %s ç”¨æˆ·æ·»åŠ åˆ° %s 组" +msgstr "æ— æ³•æ›´æ–°ç»„" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 #, fuzzy, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼šæœªæ‰¾åˆ°ã€‚" +msgstr "æ— æ³•åˆ›å»ºç»„ã€‚" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 +#: actions/apigrouplist.php:98 #, fuzzy, php-format msgid "%s's groups" 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:107 +#: actions/apigrouplist.php:108 #, fuzzy, php-format msgid "%1$s groups %2$s is a member of." msgstr "%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. -#: actions/apigrouplistall.php:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "%s 群组" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, fuzzy, php-format msgid "groups on %s" msgstr "组动作" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "ä¸Šä¼ å¤±è´¥" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -531,15 +534,15 @@ msgstr "大å°ä¸æ£ç¡®ã€‚" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -553,14 +556,12 @@ msgid "Invalid nickname / password!" msgstr "用户å或密ç ä¸æ£ç¡®ã€‚" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "ä¿å˜ç”¨æˆ·è®¾ç½®æ—¶å‡ºé”™ã€‚" +msgstr "" #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "æ·»åŠ æ ‡ç¾æ—¶æ•°æ®åº“出错:%s" +msgstr "" #: actions/apioauthauthorize.php:214 #, php-format @@ -603,12 +604,12 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 msgid "Account" msgstr "å¸å·" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -616,8 +617,8 @@ msgid "Nickname" msgstr "昵称" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 msgid "Password" msgstr "密ç " @@ -634,11 +635,11 @@ msgstr "全部" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "æ¤æ–¹æ³•æŽ¥å—POST或DELETE请求。" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "您ä¸èƒ½åˆ 除其他用户的状æ€ã€‚" @@ -655,64 +656,67 @@ msgstr "æ— æ³•å¼€å¯é€šå‘Šã€‚" #: actions/apistatusesretweet.php:91 #, fuzzy msgid "Already repeated that notice." -msgstr "åˆ é™¤é€šå‘Š" +msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" -#: actions/apistatusesshow.php:138 -#, fuzzy +#: actions/apistatusesshow.php:139 msgid "Status deleted." -msgstr "头åƒå·²æ›´æ–°ã€‚" +msgstr "" -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "没有找到æ¤IDçš„ä¿¡æ¯ã€‚" -#: actions/apistatusesupdate.php:240 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 个å—符。" +msgstr "ä½ å¯ä»¥ç»™ä½ 的组上载一个logo图。" -#: actions/apistatusesupdate.php:281 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 #, fuzzy msgid "Not found." -msgstr "未找到" +msgstr "å°ç»„未找到。" -#: actions/apistatusesupdate.php:304 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 "ä¸æ”¯æŒè¿™ç§å›¾åƒæ ¼å¼ã€‚" -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s çš„æ”¶è— / %s" +msgstr "%1$s çš„ %2$s 状æ€" -#: actions/apitimelinefavorites.php:118 +#: actions/apitimelinefavorites.php:119 #, fuzzy, php-format msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "%s 收è—了 %s çš„ %s 通告。" +msgstr "å›žå¤ %2$s / %3$s çš„ %1$s 更新。" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / å›žå¤ %2$s 的消æ¯" +msgstr "%1$s çš„ %2$s 状æ€" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "å›žå¤ %2$s / %3$s çš„ %1$s 更新。" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s 公众时间表" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "æ¥è‡ªæ‰€æœ‰äººçš„ %s 消æ¯ï¼" @@ -727,20 +731,24 @@ msgstr "%s 的回å¤" msgid "Repeats of %s" msgstr "%s 的回å¤" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "带 %s æ ‡ç¾çš„通告" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 #, fuzzy, php-format 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." -msgstr "没有这份文档。" +msgstr "没有这份通告。" #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -766,14 +774,14 @@ msgstr "头åƒ" #: actions/avatarsettings.php:78 #, fuzzy, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "您å¯ä»¥åœ¨è¿™é‡Œä¸Šä¼ 个人头åƒã€‚" +msgstr "ä½ å¯ä»¥ç»™ä½ 的组上载一个logo图。" #: actions/avatarsettings.php:106 actions/avatarsettings.php:185 #: actions/grouplogo.php:181 actions/remotesubscribe.php:191 #: actions/userauthorization.php:72 actions/userrss.php:108 #, fuzzy msgid "User without matching profile." -msgstr "找ä¸åˆ°åŒ¹é…的用户。" +msgstr "用户没有个人信æ¯ã€‚" #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -791,10 +799,10 @@ 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:657 #, fuzzy msgid "Delete" -msgstr "åˆ é™¤" +msgstr "åˆ é™¤é€šå‘Š" #: actions/avatarsettings.php:166 actions/grouplogo.php:236 msgid "Upload" @@ -807,7 +815,7 @@ msgstr "剪è£" #: actions/avatarsettings.php:305 #, fuzzy msgid "No file uploaded." -msgstr "没有收件人。" +msgstr "éƒ¨åˆ†ä¸Šä¼ ã€‚" #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" @@ -833,14 +841,14 @@ msgstr "头åƒå·²æ›´æ–°ã€‚" #: actions/block.php:69 #, fuzzy msgid "You already blocked that user." -msgstr "您已æˆåŠŸé˜»æ¢è¯¥ç”¨æˆ·ï¼š" +msgstr "您已订阅这些用户:" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 #, fuzzy msgid "Block user" -msgstr "阻æ¢ç”¨æˆ·" +msgstr "阻æ¢ç”¨æˆ·å¤±è´¥ã€‚" -#: actions/block.php:130 +#: 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 " @@ -852,27 +860,25 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 -#, fuzzy msgctxt "BUTTON" msgid "No" -msgstr "å¦" +msgstr "" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 -#, fuzzy +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" -msgstr "å–消阻æ¢æ¬¡ç”¨æˆ·" +msgstr "" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 #, fuzzy @@ -881,12 +887,12 @@ msgid "Yes" msgstr "是" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 #, fuzzy msgid "Block this user" -msgstr "阻æ¢è¯¥ç”¨æˆ·" +msgstr "呼å«è¿™ä¸ªç”¨æˆ·" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "ä¿å˜é˜»æ¢ä¿¡æ¯å¤±è´¥ã€‚" @@ -905,14 +911,14 @@ msgid "No such group." msgstr "没有这个组。" #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "用户没有个人信æ¯ã€‚" +msgstr "" #: actions/blockedfromgroup.php:100 #, fuzzy, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s åŠå¥½å‹" +msgstr "%1$s 和好å‹ï¼Œç¬¬%2$d页" #: actions/blockedfromgroup.php:115 #, fuzzy @@ -931,13 +937,13 @@ msgstr "å–消阻æ¢" #: actions/blockedfromgroup.php:320 lib/unblockform.php:80 #, fuzzy msgid "Unblock this user" -msgstr "å–消阻æ¢æ¬¡ç”¨æˆ·" +msgstr "å–消阻æ¢ç”¨æˆ·å¤±è´¥ã€‚" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 #, fuzzy, php-format msgid "Post to %s" -msgstr "相片" +msgstr "%s 的回å¤" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -953,9 +959,9 @@ msgstr "æ¤ç¡®è®¤ç ä¸é€‚用ï¼" #. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. #: actions/confirmaddress.php:91 -#, fuzzy, php-format +#, php-format msgid "Unrecognized address type %s." -msgstr "ä¸å¯è¯†åˆ«çš„地å€ç±»åž‹ %s" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -986,7 +992,7 @@ msgstr "æ— æ³•åˆ é™¤ç”µå邮件确认。" #: actions/confirmaddress.php:146 #, fuzzy msgid "Confirm address" -msgstr "确认地å€" +msgstr "已确认的电å邮件。" #: actions/confirmaddress.php:161 #, php-format @@ -1011,7 +1017,7 @@ msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/deleteapplication.php:71 #, fuzzy msgid "Application not found." -msgstr "通告没有关è”个人信æ¯" +msgstr "未找到确认ç 。" #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 @@ -1021,15 +1027,14 @@ msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 #, fuzzy msgid "There was a problem with your session token." msgstr "会è¯æ ‡è¯†æœ‰é—®é¢˜ï¼Œè¯·é‡è¯•ã€‚" #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "没有这份通告。" +msgstr "" #: actions/deleteapplication.php:149 msgid "" @@ -1048,9 +1053,8 @@ msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -msgstr "åˆ é™¤é€šå‘Š" +msgstr "" #. 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 @@ -1058,7 +1062,7 @@ msgstr "åˆ é™¤é€šå‘Š" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "未登录。" @@ -1068,11 +1072,10 @@ msgid "Can't delete this notice." msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." -msgstr "æ‚¨é€‰æ‹©äº†æ°¸ä¹…åˆ é™¤é€šå‘Šã€‚è¿™æ ·åšæ˜¯æ— 法æ¢å¤çš„。" +msgstr "" #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" @@ -1089,7 +1092,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:657 #, fuzzy msgid "Delete this notice" msgstr "åˆ é™¤é€šå‘Š" @@ -1107,19 +1110,22 @@ msgstr "您ä¸èƒ½åˆ 除其他用户的状æ€ã€‚" #: actions/deleteuser.php:110 actions/deleteuser.php:133 #, fuzzy msgid "Delete user" -msgstr "åˆ é™¤" +msgstr "åˆ é™¤é€šå‘Š" #: actions/deleteuser.php:136 +#, fuzzy 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 "" +"ä½ ç¡®å®šè¦åˆ 除这个组件å—?这将从数æ®åº“ä¸æ¸…除有关这个组件的所有数æ®ï¼ŒåŒ…括所有的" +"用户è”系。" #. TRANS: Submit button title for 'Yes' when deleting a user. #: actions/deleteuser.php:163 lib/deleteuserform.php:77 #, fuzzy msgid "Delete this user" -msgstr "åˆ é™¤é€šå‘Š" +msgstr "呼å«è¿™ä¸ªç”¨æˆ·" #. TRANS: Message used as title for design settings for the site. #. TRANS: Link description in user account settings menu. @@ -1132,51 +1138,56 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "大å°ä¸æ£ç¡®ã€‚" -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" -msgstr "修改密ç " +msgstr "修改" -#: actions/designadminpanel.php:381 -#, fuzzy +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "邀请" +msgstr "" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "修改" -#: actions/designadminpanel.php:405 -#, fuzzy +#: actions/designadminpanel.php:460 msgid "Site theme" -msgstr "新通告" +msgstr "" -#: actions/designadminpanel.php:406 -#, fuzzy +#: actions/designadminpanel.php:461 msgid "Theme for the site." -msgstr "登出本站" +msgstr "" + +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, fuzzy, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1184,61 +1195,69 @@ msgid "" msgstr "ä½ å¯ä»¥ç»™ä½ 的组上载一个logo图。" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "修改密ç " -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "连接" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 #, fuzzy msgid "Sidebar" msgstr "æœç´¢" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "文本" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "登录" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1248,7 +1267,7 @@ msgstr "" msgid "Save" msgstr "ä¿å˜" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1263,12 +1282,11 @@ msgstr "åŠ å…¥æ”¶è—" #: actions/doc.php:158 #, fuzzy, php-format msgid "No such document \"%s\"" -msgstr "没有这份文档。" +msgstr "没有这份通告。" #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "其他选项" +msgstr "" #: actions/editapplication.php:66 #, fuzzy @@ -1304,7 +1322,7 @@ msgstr "昵称已被使用,æ¢ä¸€ä¸ªå§ã€‚" #: actions/editapplication.php:186 actions/newapplication.php:168 #, fuzzy msgid "Description is required." -msgstr "æè¿°" +msgstr "订阅被拒ç»" #: actions/editapplication.php:194 msgid "Source URL is too long." @@ -1354,7 +1372,7 @@ msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/groupdesignsettings.php:107 actions/grouplogo.php:109 #, fuzzy msgid "You must be an admin to edit the group." -msgstr "åªæœ‰adminæ‰èƒ½ç¼–辑这个组" +msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/editgroup.php:158 msgid "Use this form to edit the group." @@ -1363,18 +1381,19 @@ msgstr "使用这个表å•æ¥ç¼–辑组" #: actions/editgroup.php:205 actions/newgroup.php:145 #, fuzzy, php-format msgid "description is too long (max %d chars)." -msgstr "æ述过长(ä¸èƒ½è¶…过140å—符)。" +msgstr "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个å—符)。" #: actions/editgroup.php:228 actions/newgroup.php:168 #, fuzzy, php-format msgid "Invalid alias: \"%s\"" -msgstr "主页'%s'ä¸æ£ç¡®" +msgstr "电åé‚®ä»¶åœ°å€ %s ä¸æ£ç¡®" #: actions/editgroup.php:258 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 "æ— æ³•åˆ›å»ºæ”¶è—。" @@ -1387,7 +1406,7 @@ msgstr "选项已ä¿å˜ã€‚" #: actions/emailsettings.php:61 #, fuzzy msgid "Email settings" -msgstr "电å邮件设置" +msgstr "个人设置" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1419,7 +1438,7 @@ msgstr "已确认的电å邮件。" #, fuzzy msgctxt "BUTTON" msgid "Remove" -msgstr "移除" +msgstr "æ¢å¤" #: actions/emailsettings.php:122 msgid "" @@ -1450,10 +1469,9 @@ msgstr "电å邮件,类似 \"UserName@example.org\"" #. 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 -#, fuzzy msgctxt "BUTTON" msgid "Add" -msgstr "æ·»åŠ " +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1476,16 +1494,15 @@ msgstr "生æˆæ–°çš„电å邮件地å€ç”¨äºŽå‘布信æ¯ï¼›å–消旧的。" #. 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 -#, fuzzy msgctxt "BUTTON" msgid "New" -msgstr "新建" +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 @@ -1527,7 +1544,7 @@ msgstr "公开电å邮件的 MicroID。" #: 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 @@ -1540,7 +1557,7 @@ msgid "Cannot normalize that email address" msgstr "æ— æ³•è¯†åˆ«æ¤ç”µå邮件" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "ä¸æ˜¯æœ‰æ•ˆçš„电å邮件。" @@ -1590,7 +1607,7 @@ msgstr "å³æ—¶é€šè®¯å¸å·é”™è¯¯ã€‚" #: actions/emailsettings.php:438 #, fuzzy msgid "Email confirmation cancelled." -msgstr "å·²å–消确认。" +msgstr "没有å¯ä»¥å–消的确认。" #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1602,7 +1619,7 @@ msgstr "这是他人的电å邮件。" #: actions/emailsettings.php:479 #, fuzzy msgid "The email address was removed." -msgstr "地å€è¢«ç§»é™¤ã€‚" +msgstr "å‘布用的电å邮件被移除。" #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1632,7 +1649,7 @@ msgstr "已收è—æ¤é€šå‘Šï¼" #: actions/favor.php:92 lib/disfavorform.php:140 #, fuzzy msgid "Disfavor favorite" -msgstr "å–消收è—" +msgstr "åŠ å…¥æ”¶è—" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 @@ -1643,12 +1660,11 @@ msgstr "没有这份通告。" #: actions/favorited.php:67 #, fuzzy, php-format msgid "Popular notices, page %d" -msgstr "没有这份通告。" +msgstr "组,第 %d 页" #: actions/favorited.php:79 -#, fuzzy msgid "The most popular notices on the site right now." -msgstr "显示上周以æ¥æœ€æµè¡Œçš„æ ‡ç¾" +msgstr "" #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." @@ -1689,38 +1705,35 @@ msgid "Featured users, page %d" msgstr "推è用户,第 %d 页" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" -msgstr "%s 优秀用户摘选" +msgstr "" #: actions/file.php:34 #, fuzzy msgid "No notice ID." -msgstr "新通告" +msgstr "没有这份通告。" #: actions/file.php:38 #, fuzzy msgid "No notice." -msgstr "新通告" +msgstr "没有这份通告。" #: actions/file.php:42 -#, fuzzy msgid "No attachments." -msgstr "没有这份文档。" +msgstr "" #: actions/file.php:51 -#, fuzzy msgid "No uploaded attachments." -msgstr "没有这份文档。" +msgstr "" #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "未预料的å“应ï¼" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "è¦æŸ¥çœ‹çš„用户ä¸å˜åœ¨ã€‚" +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1733,17 +1746,15 @@ msgstr "那个用户阻æ¢äº†ä½ 的订阅。" #: actions/finishremotesubscribe.php:110 #, fuzzy msgid "You are not authorized." -msgstr "未认è¯ã€‚" +msgstr "订阅已确认" #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "æ— æ³•å°†è¯·æ±‚æ ‡è®°è½¬æ¢ä¸ºè®¿é—®ä»¤ç‰Œã€‚" +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "æ¤OMBåè®®ç‰ˆæœ¬æ— æ•ˆã€‚" +msgstr "" #: actions/finishremotesubscribe.php:138 #, fuzzy @@ -1758,7 +1769,7 @@ msgstr "没有这份通告。" #: actions/getfile.php:83 #, fuzzy msgid "Cannot read file." -msgstr "没有这份通告。" +msgstr "æ— æ³•åˆ›å»ºæ”¶è—。" #: actions/grantrole.php:62 actions/revokerole.php:62 #, fuzzy @@ -1772,7 +1783,7 @@ msgstr "" #: actions/grantrole.php:75 #, fuzzy msgid "You cannot grant user roles on this site." -msgstr "æ— æ³•å‘æ¤ç”¨æˆ·å‘é€æ¶ˆæ¯ã€‚" +msgstr "åœ¨è¿™ä¸ªç½‘ç«™ä½ è¢«ç¦æ¢å‘布消æ¯ã€‚" #: actions/grantrole.php:82 #, fuzzy @@ -1781,14 +1792,14 @@ msgstr "用户没有个人信æ¯ã€‚" #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 #, fuzzy msgid "No profile specified." msgstr "没有收件人。" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 #, fuzzy msgid "No profile with that ID." msgstr "没有找到æ¤IDçš„ä¿¡æ¯ã€‚" @@ -1804,9 +1815,8 @@ msgid "Only an admin can block group members." msgstr "" #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "" #: actions/groupblock.php:100 #, fuzzy @@ -1816,7 +1826,7 @@ msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" #: actions/groupblock.php:134 actions/groupmembers.php:360 #, fuzzy msgid "Block user from group" -msgstr "阻æ¢ç”¨æˆ·" +msgstr "阻æ¢ç”¨æˆ·å¤±è´¥ã€‚" #: actions/groupblock.php:160 #, php-format @@ -1845,7 +1855,7 @@ msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 #, fuzzy msgid "No ID." -msgstr "没有ID" +msgstr "没有 Jabber ID。" #: actions/groupdesignsettings.php:68 #, fuzzy @@ -1872,7 +1882,7 @@ msgstr "æ— æ³•æ›´æ–°ç”¨æˆ·ã€‚" #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 #, fuzzy msgid "Design preferences saved." -msgstr "åŒæ¥é€‰é¡¹å·²ä¿å˜ã€‚" +msgstr "首选项已ä¿å˜ã€‚" #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" @@ -1896,7 +1906,7 @@ msgstr "logo已更新。" #: actions/grouplogo.php:401 #, fuzzy msgid "Failed updating logo." -msgstr "æ›´æ–°logo失败。" +msgstr "更新头åƒå¤±è´¥ã€‚" #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format @@ -1906,7 +1916,7 @@ msgstr "%s 组æˆå‘˜" #: actions/groupmembers.php:103 #, fuzzy, php-format msgid "%1$s group members, page %2$d" -msgstr "%s 组æˆå‘˜, 第 %d 页" +msgstr "%s 组æˆå‘˜" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1921,9 +1931,8 @@ msgid "Block" msgstr "阻æ¢" #: actions/groupmembers.php:487 -#, fuzzy msgid "Make user an admin of the group" -msgstr "åªæœ‰adminæ‰èƒ½ç¼–辑这个组" +msgstr "" #: actions/groupmembers.php:519 #, fuzzy @@ -1938,7 +1947,7 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" msgstr "%s 时间表" @@ -1972,7 +1981,7 @@ msgstr "" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 #, fuzzy msgid "Create a new group" -msgstr "创建新组" +msgstr "使用æ¤è¡¨æ ¼åˆ›å»ºç»„。" #: actions/groupsearch.php:52 #, fuzzy, php-format @@ -1991,7 +2000,7 @@ msgstr "组检索" #: actions/peoplesearch.php:83 #, fuzzy msgid "No results." -msgstr "没有结果" +msgstr "执行结果" #: actions/groupsearch.php:82 #, php-format @@ -2014,18 +2023,17 @@ msgstr "" #: actions/groupunblock.php:95 #, fuzzy msgid "User is not blocked from group." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "使用这个表å•æ¥ç¼–辑组" #: actions/groupunblock.php:128 actions/unblock.php:86 -#, fuzzy msgid "Error removing the block." -msgstr "ä¿å˜ç”¨æˆ·æ—¶å‡ºé”™ã€‚" +msgstr "" #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 #, fuzzy msgid "IM settings" -msgstr "IM 设置" +msgstr "头åƒè®¾ç½®" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2041,16 +2049,15 @@ msgstr "" #. TRANS: Message given in the IM settings if XMPP is not enabled on the site. #: actions/imsettings.php:94 -#, fuzzy msgid "IM is not available." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +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 #, fuzzy msgid "IM address" -msgstr "IM å¸å·" +msgstr "电å邮件地å€" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2082,7 +2089,7 @@ msgstr "" #: actions/imsettings.php:155 #, fuzzy msgid "IM preferences" -msgstr "首选项" +msgstr "首选项已ä¿å˜ã€‚" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2158,7 +2165,7 @@ msgstr "æ— æ³•åˆ é™¤ç”µå邮件确认。" #: actions/imsettings.php:402 #, fuzzy msgid "IM confirmation cancelled." -msgstr "å·²å–消确认。" +msgstr "没有验è¯ç " #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2170,7 +2177,7 @@ msgstr "è¿™ä¸æ˜¯æ‚¨çš„Jabberå¸å·ã€‚" #: actions/imsettings.php:447 #, fuzzy msgid "The IM address was removed." -msgstr "地å€è¢«ç§»é™¤ã€‚" +msgstr "å‘布用的电å邮件被移除。" #: actions/inbox.php:59 #, fuzzy, php-format @@ -2193,7 +2200,7 @@ msgstr "" #: actions/invite.php:41 #, fuzzy, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "您必须登录æ‰èƒ½é‚€è¯·å…¶ä»–人使用 %s" +msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/invite.php:72 #, php-format @@ -2257,10 +2264,9 @@ msgstr "在邀请ä¸åŠ å‡ å¥è¯(å¯é€‰)。" #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "å‘é€" +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 @@ -2323,7 +2329,7 @@ msgstr "" #: actions/joingroup.php:60 #, fuzzy msgid "You must be logged in to join a group." -msgstr "您必须登录æ‰èƒ½åŠ 入组。" +msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/joingroup.php:88 actions/leavegroup.php:88 #, fuzzy @@ -2333,107 +2339,102 @@ 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 -#, fuzzy, php-format +#, php-format msgid "%1$s joined group %2$s" -msgstr "%s åŠ å…¥ %s 组" +msgstr "" #: actions/leavegroup.php:60 #, fuzzy msgid "You must be logged in to leave a group." -msgstr "您必须登录æ‰èƒ½é‚€è¯·å…¶ä»–人使用 %s" +msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/leavegroup.php:100 lib/command.php:373 #, fuzzy msgid "You are not a member of that group." -msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" +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 #, fuzzy, php-format msgid "%1$s left group %2$s" -msgstr "%s 离开群 %s" +msgstr "%1$s çš„ %2$s 状æ€" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "已登录。" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "用户å或密ç ä¸æ£ç¡®ã€‚" -#: actions/login.php:132 actions/otp.php:120 -#, fuzzy +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." -msgstr "未认è¯ã€‚" +msgstr "" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "登录" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "登录" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 msgid "Remember me" msgstr "è®°ä½ç™»å½•çŠ¶æ€" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "ä¿æŒè¿™å°æœºå™¨ä¸Šçš„登录状æ€ã€‚ä¸è¦åœ¨å…±ç”¨çš„机器上ä¿æŒç™»å½•ï¼" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "忘记了密ç ?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "ç”±äºŽå®‰å…¨åŽŸå› ï¼Œä¿®æ”¹è®¾ç½®å‰éœ€è¦è¾“入用户å和密ç 。" -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." -msgstr "输入用户å和密ç 以登录。" +msgstr "用户å或密ç ä¸æ£ç¡®ã€‚" -#: actions/login.php:273 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"è¯·ä½¿ç”¨ä½ çš„å¸å·å’Œå¯†ç 登入。没有å¸å·ï¼Ÿ[注册](%%action.register%%) 一个新å¸å·, " -"或使用 [OpenID](%%action.openidlogin%%). " #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "" #: actions/makeadmin.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "" #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼šæœªæ‰¾åˆ°ã€‚" +msgstr "" #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "åªæœ‰adminæ‰èƒ½ç¼–辑这个组" +msgstr "" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "没有当å‰çŠ¶æ€" +msgstr "" #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "没有这份通告。" +msgstr "" #: actions/newapplication.php:64 #, fuzzy @@ -2487,7 +2488,7 @@ msgstr "ä¸è¦å‘自己å‘é€æ¶ˆæ¯ï¼›è·Ÿè‡ªå·±æ‚„悄说就得了。" #: actions/newmessage.php:181 #, fuzzy msgid "Message sent" -msgstr "新消æ¯" +msgstr "消æ¯æ²¡æœ‰æ£æ–‡ï¼" #: actions/newmessage.php:185 #, fuzzy, php-format @@ -2522,7 +2523,7 @@ msgstr "æœç´¢æ–‡æœ¬" #: actions/noticesearch.php:91 #, fuzzy, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "æœç´¢æœ‰å…³\"%s\"的消æ¯" +msgstr "æ¥è‡ª %1$s çš„ %2$s 消æ¯" #: actions/noticesearch.php:121 #, php-format @@ -2539,19 +2540,19 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼" +msgstr "" #: actions/noticesearchrss.php:98 #, fuzzy, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "所有匹é…æœç´¢æ¡ä»¶\"%s\"的消æ¯" +msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." -msgstr "æ¤ç”¨æˆ·ä¸å…许振铃呼å«æˆ–者还没有确认或设置TA的电å邮件。" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." +msgstr "" #: actions/nudge.php:94 msgid "Nudge sent" @@ -2589,9 +2590,8 @@ msgid "You have allowed the following applications to access you account." msgstr "" #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" +msgstr "" #: actions/oauthconnectionssettings.php:186 #, php-format @@ -2606,31 +2606,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 +#: actions/oembed.php:80 actions/shownotice.php:100 #, fuzzy msgid "Notice has no profile." -msgstr "通告没有关è”个人信æ¯" +msgstr "用户没有个人信æ¯ã€‚" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s çš„ %2$s 状æ€" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "连接" +msgstr "" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "ä¸æ”¯æŒçš„æ•°æ®æ ¼å¼ã€‚" @@ -2645,7 +2645,7 @@ msgstr "æœç´¢é€šå‘Š" #: actions/othersettings.php:60 #, fuzzy msgid "Other settings" -msgstr "Twitter 设置" +msgstr "头åƒè®¾ç½®" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2675,7 +2675,7 @@ msgstr "" #: actions/othersettings.php:153 #, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "URL缩çŸæœåŠ¡è¶…é•¿(最多50个å—符)。" +msgstr "è¯è¨€è¿‡é•¿(ä¸èƒ½è¶…过50个å—符)。" #: actions/otp.php:69 #, fuzzy @@ -2690,12 +2690,11 @@ msgstr "没有收件人。" #: actions/otp.php:90 #, fuzzy msgid "No login token requested." -msgstr "æœåŠ¡å™¨æ²¡æœ‰è¿”回个人信æ¯URL。" +msgstr "未收到认è¯è¯·æ±‚ï¼" #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "通告内容ä¸æ£ç¡®" +msgstr "" #: actions/otp.php:104 #, fuzzy @@ -2743,7 +2742,7 @@ msgid "6 or more characters" msgstr "6 个或更多å—符" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "确认" @@ -2755,11 +2754,11 @@ msgstr "相åŒçš„密ç " msgid "Change" msgstr "修改" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 msgid "Password must be 6 or more characters." msgstr "密ç å¿…é¡»åŒ…å« 6 个或更多å—符。" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "密ç ä¸åŒ¹é…。" @@ -2780,7 +2779,7 @@ msgid "Password saved." msgstr "密ç å·²ä¿å˜ã€‚" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2789,24 +2788,24 @@ msgid "Path and server settings for this StatusNet site." msgstr "" #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2831,9 +2830,8 @@ msgid "Path" msgstr "" #: actions/pathsadminpanel.php:242 -#, fuzzy msgid "Site path" -msgstr "新通告" +msgstr "" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2883,9 +2881,8 @@ msgid "Avatar path" msgstr "头åƒå·²æ›´æ–°ã€‚" #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "头åƒå·²æ›´æ–°ã€‚" +msgstr "" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" @@ -2931,18 +2928,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "æ¢å¤" +msgstr "" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "新通告" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2960,17 +2955,17 @@ msgstr "æœç´¢ç”¨æˆ·" #: actions/peopletag.php:68 #, fuzzy, php-format msgid "Not a valid people tag: %s." -msgstr "ä¸æ˜¯æœ‰æ•ˆçš„电å邮件" +msgstr "ä¸æ˜¯æœ‰æ•ˆçš„电å邮件。" #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "ç”¨æˆ·è‡ªåŠ æ ‡ç¾ %s - 第 %d 页" +msgstr "" #: actions/postnotice.php:95 #, fuzzy msgid "Invalid notice content." -msgstr "通告内容ä¸æ£ç¡®" +msgstr "大å°ä¸æ£ç¡®ã€‚" #: actions/postnotice.php:101 #, php-format @@ -2989,50 +2984,49 @@ msgstr "在这里更新个人信æ¯ï¼Œè®©å¤§å®¶å¯¹æ‚¨äº†è§£å¾—更多。" #: actions/profilesettings.php:99 #, fuzzy msgid "Profile information" -msgstr "未知的å¸å·" +msgstr "个人设置" #: actions/profilesettings.php:108 lib/groupeditform.php:154 msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1 到 64 个å°å†™å—æ¯æˆ–æ•°å—,ä¸åŒ…å«æ ‡ç‚¹åŠç©ºç™½" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: actions/profilesettings.php:117 actions/register.php:462 msgid "URL of your homepage, blog, or profile on another site" msgstr "您的主页ã€åšå®¢æˆ–在其他站点的URL" -#: actions/profilesettings.php:122 actions/register.php:461 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "用ä¸è¶…过140个å—符æ述您自己和您的爱好" +msgstr "" -#: actions/profilesettings.php:125 actions/register.php:464 -#, fuzzy +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" -msgstr "用ä¸è¶…过140个å—符æ述您自己和您的爱好" +msgstr "" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "自述" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "ä½ çš„ä½ç½®ï¼Œæ ¼å¼ç±»ä¼¼\"城市,çœä»½ï¼Œå›½å®¶\"" @@ -3072,10 +3066,10 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "自动订阅任何订阅我的更新的人(这个选项最适åˆæœºå™¨äºº)" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." -msgstr "自述过长(ä¸èƒ½è¶…过140å—符)。" +msgstr "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个å—符)。" #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." @@ -3088,7 +3082,7 @@ msgstr "è¯è¨€è¿‡é•¿(ä¸èƒ½è¶…过50个å—符)。" #: actions/profilesettings.php:253 actions/tagother.php:178 #, fuzzy, php-format msgid "Invalid tag: \"%s\"" -msgstr "主页'%s'ä¸æ£ç¡®" +msgstr "电åé‚®ä»¶åœ°å€ %s ä¸æ£ç¡®" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." @@ -3133,26 +3127,23 @@ msgid "Public timeline" msgstr "公开的时间表" #: actions/public.php:160 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "公开的èšåˆ" +msgstr "" #: actions/public.php:164 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "公开的èšåˆ" +msgstr "" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "公开的èšåˆ" +msgstr "" #: actions/public.php:188 -#, php-format +#, fuzzy, php-format msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." -msgstr "" +msgstr "这是 %s 和好å‹çš„时间线,但是没有任何人å‘布内容。" #: actions/public.php:191 msgid "Be the first to post!" @@ -3174,19 +3165,17 @@ msgid "" msgstr "" #: actions/public.php:247 -#, fuzzy, php-format +#, php-format msgid "" "This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" -"这里是 %%site.name%%,一个微åšå®¢ [micro-blogging](http://en.wikipedia.org/" -"wiki/Micro-blogging) æœåŠ¡" #: actions/publictagcloud.php:57 #, fuzzy msgid "Public tag cloud" -msgstr "公开的èšåˆ" +msgstr "æ ‡ç¾äº‘èšé›†" #: actions/publictagcloud.php:63 #, php-format @@ -3242,22 +3231,25 @@ msgid "Could not update user with confirmed email address." msgstr "æ— æ³•æ›´æ–°å·²ç¡®è®¤çš„ç”µå邮件。" #: actions/recoverpassword.php:152 +#, fuzzy 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 "" +msgstr "æ¢å¤å¯†ç 的指示已被å‘é€åˆ°æ‚¨çš„注册邮箱。" #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " msgstr "" #: actions/recoverpassword.php:188 +#, fuzzy msgid "Password recovery" -msgstr "" +msgstr "请求æ¢å¤å¯†ç " #: actions/recoverpassword.php:191 +#, fuzzy msgid "Nickname or email address" -msgstr "" +msgstr "输入昵称或电å邮件。" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3325,7 +3317,7 @@ msgstr "密ç 必须是 6 个å—符或更多。" msgid "Password and confirmation do not match." msgstr "密ç 和确认ä¸åŒ¹é…。" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "ä¿å˜ç”¨æˆ·è®¾ç½®æ—¶å‡ºé”™ã€‚" @@ -3333,102 +3325,102 @@ msgstr "ä¿å˜ç”¨æˆ·è®¾ç½®æ—¶å‡ºé”™ã€‚" msgid "New password successfully saved. You are now logged in." msgstr "新密ç å·²ä¿å˜ï¼Œæ‚¨çŽ°åœ¨å·²ç™»å½•ã€‚" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "对ä¸èµ·ï¼Œè¯·é‚€è¯·é‚£äº›èƒ½æ³¨å†Œçš„人。" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "验è¯ç 出错。" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "注册æˆåŠŸã€‚" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "注册" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "ä¸å…许注册。" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "您必须åŒæ„æ¤æŽˆæƒæ–¹å¯æ³¨å†Œã€‚" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "电å邮件地å€å·²å˜åœ¨ã€‚" -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "用户å或密ç ä¸æ£ç¡®ã€‚" -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." msgstr "1 到 64 个å°å†™å—æ¯æˆ–æ•°å—,ä¸åŒ…å«æ ‡ç‚¹åŠç©ºç™½ã€‚æ¤é¡¹å¿…填。" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." msgstr "6 个或更多å—符。æ¤é¡¹å¿…填。" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "相åŒçš„密ç 。æ¤é¡¹å¿…填。" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "电å邮件" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "åªç”¨äºŽæ›´æ–°ã€é€šå‘Šæˆ–密ç æ¢å¤" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "é•¿åå—,最好是“实åâ€" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 -#, fuzzy, php-format +#: 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 "除了éšç§å†…容:密ç ,电å邮件,å³æ—¶é€šè®¯å¸å·ï¼Œç”µè¯å·ç 。" +msgstr "" -#: actions/register.php:576 -#, fuzzy, php-format +#: actions/register.php:583 +#, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " "want to...\n" @@ -3445,20 +3437,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"æ喜, %s! 欢迎æ¥åˆ° %%%%site.name%%%%. è¿™é‡Œï¼Œä½ éœ€è¦\n" -"\n" -"* æŸ¥çœ‹ä½ çš„èµ„æ–™Go to [your profile](%s) å‘å¸ƒä½ çš„ç¬¬ä¸€æ¡æ¶ˆæ¯.\n" -"* å¡«åŠ [Jabber/GTalk address](%%%%action.imsettings%%%%) 然åŽä½ å¯ä»¥é€šè¿‡å³æ—¶æ¶ˆ" -"æ¯å¹³å°å‘布信æ¯ã€‚\n" -"* [Search for people](%%%%action.peoplesearch%%%%) ä½ è®¤è¯†çš„æˆ–å’Œä½ æœ‰å…±åŒå…´è¶£çš„" -"朋å‹ã€‚ \n" -"* æ›´æ–°ä½ çš„ [profile settings](%%%%action.profilesettings%%%%) 告诉大家更多关" -"äºŽä½ çš„æƒ…å†µã€‚ \n" -"* 请阅读 [online docs](%%%%doc.help%%%%) æœ‰çš„åŠŸèƒ½ä¹Ÿè®¸ä½ è¿˜ä¸ç†Ÿæ‚‰ã€‚\n" -"\n" -"感谢您的注册,希望您喜欢这个æœåŠ¡ã€‚" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3510,19 +3490,16 @@ msgid "Invalid profile URL (bad format)" msgstr "个人信æ¯URLä¸æ£ç¡®(æ ¼å¼é”™è¯¯)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "ä¸æ˜¯æœ‰æ•ˆçš„个人信æ¯URL(没有YADISæ•°æ®)。" +msgstr "" #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." -msgstr "那是一个本地资料ï¼éœ€è¦ç™»å½•æ‰èƒ½è®¢é˜…。" +msgstr "" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "æ— æ³•èŽ·å¾—ä¸€ä»½è¯·æ±‚æ ‡è®°ã€‚" +msgstr "" #: actions/repeat.php:57 #, fuzzy @@ -3540,19 +3517,17 @@ msgid "You can't repeat your own notice." msgstr "您必须åŒæ„æ¤æŽˆæƒæ–¹å¯æ³¨å†Œã€‚" #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "您已æˆåŠŸé˜»æ¢è¯¥ç”¨æˆ·ï¼š" +msgstr "" -#: actions/repeat.php:114 lib/noticelist.php:667 +#: actions/repeat.php:114 lib/noticelist.php:676 #, fuzzy msgid "Repeated" -msgstr "创建" +msgstr "特å¾" #: actions/repeat.php:119 -#, fuzzy msgid "Repeated!" -msgstr "创建" +msgstr "" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3563,28 +3538,28 @@ msgstr "%s 的回å¤" #: actions/replies.php:128 #, fuzzy, php-format msgid "Replies to %1$s, page %2$d" -msgstr "å‘é€ç»™ %1$s çš„ %2$s 消æ¯" +msgstr "%s 的回å¤" #: actions/replies.php:145 #, fuzzy, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 1.0)" #: actions/replies.php:152 #, fuzzy, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 2.0)" #: actions/replies.php:159 #, fuzzy, php-format msgid "Replies feed for %s (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(Atom)" #: 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 his attention yet." +"notice to them yet." msgstr "这是 %s 和好å‹çš„时间线,但是没有任何人å‘布内容。" #: actions/replies.php:204 @@ -3597,8 +3572,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 @@ -3609,17 +3584,16 @@ msgstr "å‘é€ç»™ %1$s çš„ %2$s 消æ¯" #: 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:157 +#: actions/rsd.php:146 actions/version.php:159 #, fuzzy msgid "StatusNet" -msgstr "头åƒå·²æ›´æ–°ã€‚" +msgstr "统计" #: actions/sandbox.php:65 actions/unsandbox.php:65 #, fuzzy @@ -3627,13 +3601,12 @@ msgid "You cannot sandbox users on this site." msgstr "æ— æ³•å‘æ¤ç”¨æˆ·å‘é€æ¶ˆæ¯ã€‚" #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3666,12 +3639,11 @@ msgstr "头åƒè®¾ç½®" #: actions/showapplication.php:82 #, fuzzy msgid "You must be logged in to view an application." -msgstr "您必须登录æ‰èƒ½é‚€è¯·å…¶ä»–人使用 %s" +msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/showapplication.php:157 -#, fuzzy msgid "Application profile" -msgstr "通告没有关è”个人信æ¯" +msgstr "" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 @@ -3679,7 +3651,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3692,13 +3664,13 @@ msgid "Organization" msgstr "分页" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 #, fuzzy msgid "Description" -msgstr "æè¿°" +msgstr "订阅" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "统计" @@ -3784,16 +3756,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 @@ -3808,12 +3780,12 @@ msgstr "%s 组" #: actions/showgroup.php:84 #, fuzzy, php-format msgid "%1$s group, page %2$d" -msgstr "%s 组æˆå‘˜, 第 %d 页" +msgstr "组,第 %d 页" #: actions/showgroup.php:227 #, fuzzy msgid "Group profile" -msgstr "组资料" +msgstr "组logo" #: actions/showgroup.php:272 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:178 @@ -3837,27 +3809,27 @@ msgstr "组动作" #: actions/showgroup.php:338 #, fuzzy, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 1.0)" #: actions/showgroup.php:344 #, fuzzy, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 2.0)" #: actions/showgroup.php:350 #, fuzzy, php-format msgid "Notice feed for %s group (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(Atom)" #: actions/showgroup.php:355 #, php-format 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 "注册于" +msgstr "用户始于" #: actions/showgroup.php:398 lib/profileaction.php:117 #: lib/profileaction.php:152 lib/profileaction.php:255 lib/section.php:95 @@ -3869,12 +3841,12 @@ msgstr "(没有)" msgid "All members" msgstr "所有æˆå‘˜" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 #, fuzzy msgid "Created" -msgstr "创建" +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." @@ -3884,18 +3856,16 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 -#, fuzzy, php-format +#: 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 "" -"**%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管ç†å‘˜" @@ -3931,27 +3901,27 @@ msgstr "带 %s æ ‡ç¾çš„通告" #: actions/showstream.php:79 #, fuzzy, php-format msgid "%1$s, page %2$d" -msgstr "%s åŠå¥½å‹" +msgstr "%1$s 和好å‹ï¼Œç¬¬%2$d页" #: actions/showstream.php:122 #, fuzzy, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 1.0)" #: actions/showstream.php:129 #, fuzzy, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 1.0)" #: actions/showstream.php:136 #, fuzzy, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(RSS 2.0)" #: actions/showstream.php:143 #, fuzzy, php-format msgid "Notice feed for %s (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ(Atom)" #: actions/showstream.php:148 #, fuzzy, php-format @@ -3972,8 +3942,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 @@ -3986,14 +3956,12 @@ msgid "" msgstr "" #: actions/showstream.php:248 -#, fuzzy, php-format +#, php-format msgid "" "**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en." "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" -"**%s** 有一个å¸å·åœ¨ %%%%site.name%%%%, 一个微åšå®¢æœåŠ¡ [micro-blogging]" -"(http://en.wikipedia.org/wiki/Micro-blogging)" #: actions/showstream.php:305 #, fuzzy, php-format @@ -4006,9 +3974,8 @@ msgid "You cannot silence users on this site." msgstr "æ— æ³•å‘æ¤ç”¨æˆ·å‘é€æ¶ˆæ¯ã€‚" #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "" #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" @@ -4021,7 +3988,7 @@ msgstr "" #: actions/siteadminpanel.php:141 #, fuzzy msgid "You must have a valid contact email address." -msgstr "ä¸æ˜¯æœ‰æ•ˆçš„电å邮件" +msgstr "ä¸æ˜¯æœ‰æ•ˆçš„电å邮件。" #: actions/siteadminpanel.php:159 #, php-format @@ -4041,9 +4008,8 @@ msgid "General" msgstr "" #: actions/siteadminpanel.php:224 -#, fuzzy msgid "Site name" -msgstr "新通告" +msgstr "" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" @@ -4115,7 +4081,7 @@ msgstr "" #: actions/sitenoticeadminpanel.php:56 #, fuzzy msgid "Site Notice" -msgstr "新通告" +msgstr "通告" #: actions/sitenoticeadminpanel.php:67 #, fuzzy @@ -4134,7 +4100,7 @@ msgstr "" #: actions/sitenoticeadminpanel.php:176 #, fuzzy msgid "Site notice text" -msgstr "新通告" +msgstr "åˆ é™¤é€šå‘Š" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" @@ -4143,13 +4109,13 @@ msgstr "" #: actions/sitenoticeadminpanel.php:198 #, fuzzy msgid "Save site notice" -msgstr "新通告" +msgstr "åˆ é™¤é€šå‘Š" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 #, fuzzy msgid "SMS settings" -msgstr "SMSçŸä¿¡è®¾ç½®" +msgstr "头åƒè®¾ç½®" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4160,15 +4126,14 @@ msgstr "您å¯ä»¥é€šè¿‡ %%site.name%% 的电å邮件接收SMSçŸä¿¡ã€‚" #. TRANS: Message given in the SMS settings if SMS is not enabled on the site. #: actions/smssettings.php:97 -#, fuzzy msgid "SMS is not available." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 #, fuzzy msgid "SMS address" -msgstr "IM å¸å·" +msgstr "电å邮件地å€" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4201,7 +4166,7 @@ msgstr "确认" #: actions/smssettings.php:153 #, fuzzy msgid "SMS phone number" -msgstr "SMSçŸä¿¡ç”µè¯å·ç " +msgstr "没有电è¯å·ç 。" #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4212,7 +4177,7 @@ msgstr "电è¯å·ç ,ä¸å¸¦æ ‡ç‚¹æˆ–ç©ºæ ¼ï¼ŒåŒ…å«åœ°åŒºä»£ç " #: actions/smssettings.php:195 #, fuzzy msgid "SMS preferences" -msgstr "首选项" +msgstr "首选项已ä¿å˜ã€‚" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4254,7 +4219,7 @@ 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. @@ -4266,7 +4231,7 @@ msgstr "确认ç 错误。" #: actions/smssettings.php:427 #, fuzzy msgid "SMS confirmation cancelled." -msgstr "å·²å–消确认。" +msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4276,9 +4241,8 @@ msgstr "这是他人的电è¯å·ç 。" #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "SMSçŸä¿¡ç”µè¯å·ç " +msgstr "" #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4309,14 +4273,14 @@ msgstr "没有输入验è¯ç " #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" #: actions/snapshotadminpanel.php:65 #, fuzzy msgid "Manage snapshot configuration" -msgstr "主站导航" +msgstr "电å邮件地å€ç¡®è®¤" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." @@ -4370,12 +4334,13 @@ msgstr "头åƒè®¾ç½®" #: actions/subedit.php:70 #, fuzzy msgid "You are not subscribed to that profile." -msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" +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 "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" +msgstr "æ— æ³•æ·»åŠ æ–°çš„è®¢é˜…ã€‚" #: actions/subscribe.php:77 msgid "This action only accepts POST requests." @@ -4387,9 +4352,8 @@ msgid "No such profile." msgstr "没有这份通告。" #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" +msgstr "" #: actions/subscribe.php:145 #, fuzzy @@ -4404,7 +4368,7 @@ msgstr "订阅者" #: actions/subscribers.php:52 #, fuzzy, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s 订阅者, 第 %d 页" +msgstr "%1$s 和好å‹ï¼Œç¬¬%2$d页" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4441,7 +4405,7 @@ msgstr "所有订阅" #: actions/subscriptions.php:54 #, fuzzy, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "所有订阅" +msgstr "%1$s 和好å‹ï¼Œç¬¬%2$d页" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4479,27 +4443,26 @@ msgstr "SMSçŸä¿¡" #: actions/tag.php:69 #, fuzzy, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "ç”¨æˆ·è‡ªåŠ æ ‡ç¾ %s - 第 %d 页" +msgstr "带 %s æ ‡ç¾çš„通告" #: actions/tag.php:87 #, fuzzy, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ" #: actions/tag.php:93 #, fuzzy, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ" #: actions/tag.php:99 #, fuzzy, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 好å‹çš„èšåˆ" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "没有这份文档。" +msgstr "" #: actions/tagother.php:65 #, fuzzy, php-format @@ -4536,7 +4499,7 @@ msgstr "ä½ åªèƒ½ç»™ä½ è®¢é˜…çš„äººæˆ–è®¢é˜…ä½ çš„äººåŠ æ ‡ç¾ã€‚" #: actions/tagother.php:200 #, fuzzy msgid "Could not save tags." -msgstr "æ— æ³•ä¿å˜å¤´åƒ" +msgstr "æ— æ³•ä¿å˜ä¸ªäººä¿¡æ¯ã€‚" #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." @@ -4547,19 +4510,14 @@ 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." -msgstr "您已æˆåŠŸé˜»æ¢è¯¥ç”¨æˆ·ï¼š" +msgstr "" #: actions/unsandbox.php:72 #, fuzzy msgid "User is not sandboxed." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "用户没有通告。" #: actions/unsilence.php:72 #, fuzzy @@ -4569,7 +4527,7 @@ msgstr "用户没有个人信æ¯ã€‚" #: actions/unsubscribe.php:77 #, fuzzy msgid "No profile ID in request." -msgstr "æœåŠ¡å™¨æ²¡æœ‰è¿”回个人信æ¯URL。" +msgstr "未收到认è¯è¯·æ±‚ï¼" #: actions/unsubscribe.php:98 #, fuzzy @@ -4662,19 +4620,15 @@ msgid "Authorize subscription" msgstr "确认订阅" #: actions/userauthorization.php:110 -#, fuzzy msgid "" "Please check these details to make sure that you want to subscribe to this " "user’s notices. If you didn’t just ask to subscribe to someone’s notices, " "click “Rejectâ€." msgstr "" -"请检查详细信æ¯ï¼Œç¡®è®¤å¸Œæœ›è®¢é˜…æ¤ç”¨æˆ·çš„通告。如果您刚æ‰æ²¡æœ‰è¦æ±‚订阅任何人的通" -"告,请点击\"å–消\"。" -#: actions/userauthorization.php:196 actions/version.php:165 -#, fuzzy +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" -msgstr "注册è¯" +msgstr "" #: actions/userauthorization.php:217 msgid "Accept" @@ -4693,7 +4647,7 @@ msgstr "æ‹’ç»" #: actions/userauthorization.php:220 #, fuzzy msgid "Reject this subscription" -msgstr "所有订阅" +msgstr "确认订阅" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4704,25 +4658,22 @@ msgid "Subscription authorized" msgstr "订阅已确认" #: actions/userauthorization.php:256 -#, fuzzy msgid "" "The subscription has been authorized, but no callback URL was passed. Check " "with the site’s instructions for details on how to authorize the " "subscription. Your subscription token is:" msgstr "" -"è®¢é˜…å·²ç¡®è®¤ï¼Œä½†æ˜¯æ²¡æœ‰å›žä¼ URL。请到æ¤ç½‘ç«™æŸ¥çœ‹å¦‚ä½•ç¡®è®¤è®¢é˜…ã€‚æ‚¨çš„è®¢é˜…æ ‡è¯†æ˜¯ï¼š" #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "订阅被拒ç»" #: actions/userauthorization.php:268 -#, fuzzy msgid "" "The subscription has been rejected, but no callback URL was passed. Check " "with the site’s instructions for details on how to fully reject the " "subscription." -msgstr "订阅已被拒ç»ï¼Œä½†æ˜¯æ²¡æœ‰å›žä¼ URL。请到æ¤ç½‘站查看如何拒ç»è®¢é˜…。" +msgstr "" #: actions/userauthorization.php:303 #, php-format @@ -4750,14 +4701,14 @@ msgid "Avatar URL ‘%s’ is not valid." msgstr "" #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "æ— æ³•è®¿é—®å¤´åƒURL '%s'" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "'%s' 图åƒæ ¼å¼é”™è¯¯" +msgstr "" #: actions/userdesignsettings.php:76 lib/designsettings.php:65 #, fuzzy @@ -4778,12 +4729,11 @@ msgstr "" #: actions/usergroups.php:66 #, fuzzy, php-format msgid "%1$s groups, page %2$d" -msgstr "%s 组æˆå‘˜, 第 %d 页" +msgstr "组,第 %d 页" #: actions/usergroups.php:132 -#, fuzzy msgid "Search for more groups" -msgstr "检索人或文å—" +msgstr "" #: actions/usergroups.php:159 #, fuzzy, php-format @@ -4800,29 +4750,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70 +#: lib/atomusernoticefeed.php:76 #, php-format msgid "Updates from %1$s on %2$s!" msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼" -#: actions/version.php:73 +#: actions/version.php:75 #, fuzzy, php-format msgid "StatusNet %s" msgstr "统计" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4830,7 +4780,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4838,186 +4788,284 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 +#: actions/version.php:198 lib/action.php:789 #, fuzzy msgid "Version" msgstr "个人" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "组资料" +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 "组资料" +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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" -msgstr "æ·»åŠ æ ‡ç¾æ—¶æ•°æ®åº“出错:%s" +msgstr "æ·»åŠ å¤´åƒå‡ºé”™" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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:967 +#. 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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 +#, fuzzy msgid "Already subscribed!" -msgstr "" +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." -msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" +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." -msgstr "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" +msgid "Could not delete subscription OMB token." +msgstr "æ— æ³•æ·»åŠ æ–°çš„è®¢é˜…ã€‚" -#: 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 "æ— æ³•æ·»åŠ æ–°çš„è®¢é˜…ã€‚" -#: 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 "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" +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 "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" +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 "æ— æ³•åˆ é™¤è®¢é˜…ã€‚" +msgstr "æ— æ³•ä¿å˜ä¸ªäººä¿¡æ¯ã€‚" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 @@ -5067,133 +5115,129 @@ msgid "Untitled page" msgstr "æ— æ ‡é¢˜é¡µ" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "主站导航" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:442 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" -msgstr "个人资料åŠæœ‹å‹å¹´è¡¨" +msgstr "" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 +#: lib/action.php:445 #, fuzzy msgctxt "MENU" msgid "Personal" msgstr "个人" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:447 #, fuzzy msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "修改资料" +msgstr "修改密ç " #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "æ— æ³•é‡å®šå‘到æœåŠ¡å™¨ï¼š%s" +msgstr "" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "连接" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:458 #, fuzzy 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:451 +#: lib/action.php:461 #, fuzzy msgctxt "MENU" msgid "Admin" msgstr "admin管ç†å‘˜" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:465 #, fuzzy, 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:458 +#: lib/action.php:468 #, fuzzy msgctxt "MENU" msgid "Invite" msgstr "邀请" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:474 #, fuzzy msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "登出本站" +msgstr "登录" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 +#: lib/action.php:477 #, fuzzy msgctxt "MENU" msgid "Logout" -msgstr "登出" +msgstr "logo已更新。" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "创建新å¸å·" +msgstr "" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 +#: lib/action.php:485 #, fuzzy msgctxt "MENU" msgid "Register" msgstr "注册" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 #, fuzzy msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "登入本站" +msgstr "登录" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "登录" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "帮助" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "帮助" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "检索人或文å—" +msgstr "" -#: lib/action.php:493 +#: lib/action.php:503 #, fuzzy msgctxt "MENU" msgid "Search" @@ -5201,91 +5245,89 @@ msgstr "æœç´¢" #. TRANS: DT element for site notice. String is hidden in default CSS. #. TRANS: Menu item for site administration -#: lib/action.php:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "新通告" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "本地显示" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "新通告" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 #, fuzzy msgid "Secondary site navigation" -msgstr "次项站导航" +msgstr "主站导航" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "帮助" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "关于" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "常è§é—®é¢˜FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "éšç§" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "æ¥æº" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "è”系人" -#: lib/action.php:784 +#: lib/action.php:794 #, fuzzy msgid "Badge" msgstr "呼å«" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:823 msgid "StatusNet software license" msgstr "StatusNet软件注册è¯" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 -#, fuzzy, php-format +#: lib/action.php:827 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** 是一个微åšå®¢æœåŠ¡ï¼Œæ供者为 [%%site.broughtby%%](%%site." -"broughtbyurl%%)。" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%** 是一个微åšå®¢æœåŠ¡ã€‚" #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5297,54 +5339,53 @@ msgstr "" "授æƒã€‚" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:850 #, fuzzy msgid "Site content license" msgstr "StatusNet软件注册è¯" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: lib/action.php:1203 #, fuzzy msgid "After" -msgstr "« 之åŽ" +msgstr "其他" #. TRANS: Pagination message to go to a page displaying information more in the #. TRANS: past than the currently displayed information. -#: lib/action.php:1203 -#, fuzzy +#: lib/action.php:1213 msgid "Before" -msgstr "ä¹‹å‰ Â»" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. #: lib/activity.php:122 @@ -5395,74 +5436,73 @@ msgid "Unable to delete design setting." msgstr "æ— æ³•ä¿å˜ Twitter 设置ï¼" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "电å邮件地å€ç¡®è®¤" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:352 #, fuzzy msgctxt "MENU" msgid "Site" msgstr "邀请" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "个人" +msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "用户" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" -msgstr "新通告" +msgstr "åˆ é™¤é€šå‘Š" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5478,21 +5518,19 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "用ä¸è¶…过140个å—符æ述您自己和您的爱好" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "用ä¸è¶…过140个å—符æ述您自己和您的爱好" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "您的主页ã€åšå®¢æˆ–在其他站点的URL" +msgstr "" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 @@ -5507,9 +5545,8 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "您的主页ã€åšå®¢æˆ–在其他站点的URL" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5572,7 +5609,7 @@ msgstr "" #, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "移除" +msgstr "æ¢å¤" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5588,7 +5625,7 @@ msgstr "" #: lib/attachmentlist.php:279 #, fuzzy msgid "Provider" -msgstr "个人信æ¯" +msgstr "预览" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" @@ -5598,15 +5635,14 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 #, fuzzy msgid "Password changing failed" msgstr "密ç å·²ä¿å˜ã€‚" -#: lib/authenticationplugin.php:235 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "密ç å·²ä¿å˜ã€‚" +msgstr "" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" @@ -5621,9 +5657,8 @@ msgid "Command failed" msgstr "执行失败" #: lib/command.php:83 lib/command.php:105 -#, fuzzy msgid "Notice with that id does not exist" -msgstr "没有找到æ¤IDçš„ä¿¡æ¯ã€‚" +msgstr "" #: lib/command.php:99 lib/command.php:596 msgid "User has no last notice" @@ -5677,16 +5712,16 @@ 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 -#, fuzzy, php-format +#, php-format msgid "Could not join user %1$s to group %2$s" -msgstr "æ— æ³•æŠŠ %s ç”¨æˆ·æ·»åŠ åˆ° %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 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %1$s from group %2$s" -msgstr "æ— æ³•è®¢é˜…ç”¨æˆ·ï¼šæœªæ‰¾åˆ°ã€‚" +msgstr "" #. TRANS: Whois output. %s is the full name of the queried user. #: lib/command.php:418 @@ -5696,14 +5731,14 @@ msgstr "å…¨å:%s" #. 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:263 +#: lib/command.php:422 lib/mail.php:268 #, php-format msgid "Location: %s" msgstr "ä½ç½®ï¼š%s" #. 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:266 +#: lib/command.php:426 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "主页:%s" @@ -5724,9 +5759,9 @@ 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 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "您的消æ¯åŒ…å« %d 个å—符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过 140 个å—符。" +msgstr "" #. TRANS: Message given have sent a direct message to another user. #. TRANS: %s is the name of the other user. @@ -5747,7 +5782,7 @@ msgstr "æ— æ³•å¼€å¯é€šå‘Šã€‚" #: lib/command.php:519 #, fuzzy msgid "Already repeated that notice" -msgstr "åˆ é™¤é€šå‘Š" +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. @@ -5759,17 +5794,17 @@ msgstr "消æ¯å·²å‘布。" #: lib/command.php:531 #, fuzzy msgid "Error repeating notice." -msgstr "ä¿å˜é€šå‘Šæ—¶å‡ºé”™ã€‚" +msgstr "ä¿å˜ç”¨æˆ·è®¾ç½®æ—¶å‡ºé”™ã€‚" #: lib/command.php:562 -#, fuzzy, php-format +#, php-format msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "您的消æ¯åŒ…å« %d 个å—符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过 140 个å—符。" +msgstr "" #: lib/command.php:571 #, fuzzy, php-format msgid "Reply to %s sent" -msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" +msgstr "%s 的回å¤" #: lib/command.php:573 #, fuzzy @@ -5781,9 +5816,8 @@ msgid "Specify the name of the user to subscribe to" msgstr "指定è¦è®¢é˜…的用户å" #: lib/command.php:628 -#, fuzzy msgid "Can't subscribe to OMB profiles by command." -msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" +msgstr "" #: lib/command.php:634 #, php-format @@ -5836,7 +5870,7 @@ msgstr "å–消订阅 %s" #: lib/command.php:778 #, fuzzy msgid "You are not subscribed to anyone." -msgstr "您未告知æ¤ä¸ªäººä¿¡æ¯" +msgstr "您已订阅这些用户:" #: lib/command.php:780 msgid "You are subscribed to this person:" @@ -5919,9 +5953,8 @@ msgid "You may wish to run the installer to fix this." msgstr "" #: lib/common.php:139 -#, fuzzy msgid "Go to the installer." -msgstr "登入本站" +msgstr "" #: lib/connectsettingsaction.php:110 msgid "IM" @@ -5951,13 +5984,13 @@ msgstr "" #: lib/designsettings.php:105 #, fuzzy msgid "Upload file" -msgstr "ä¸Šä¼ " +msgstr "ä¸Šä¼ å¤±è´¥" #: lib/designsettings.php:109 #, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "您å¯ä»¥åœ¨è¿™é‡Œä¸Šä¼ 个人头åƒã€‚" +msgstr "ä½ å¯ä»¥ç»™ä½ 的组上载一个logo图。" #: lib/designsettings.php:418 msgid "Design defaults restored." @@ -5998,9 +6031,8 @@ msgid "Export data" msgstr "导出数æ®" #: lib/galleryaction.php:121 -#, fuzzy msgid "Filter tags" -msgstr "%s æ ‡ç¾çš„èšåˆ" +msgstr "" #: lib/galleryaction.php:131 msgid "All" @@ -6035,14 +6067,13 @@ msgid "URL of the homepage or blog of the group or topic" msgstr "您的主页ã€åšå®¢æˆ–在其他站点的URL" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "用ä¸è¶…过140个å—符æ述您自己和您的爱好" +msgstr "" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "用ä¸è¶…过140个å—符æ述您自己和您的爱好" +msgstr "" #: lib/groupeditform.php:179 #, fuzzy @@ -6065,9 +6096,9 @@ msgid "Blocked" msgstr "阻æ¢" #: lib/groupnav.php:102 -#, fuzzy, php-format +#, php-format msgid "%s blocked users" -msgstr "阻æ¢ç”¨æˆ·" +msgstr "" #: lib/groupnav.php:108 #, php-format @@ -6077,7 +6108,7 @@ msgstr "编辑 %s群选项" #: lib/groupnav.php:113 #, fuzzy msgid "Logo" -msgstr "Logoå›¾æ ‡" +msgstr "登录" #: lib/groupnav.php:114 #, php-format @@ -6131,7 +6162,7 @@ msgstr "ä¸æ˜¯å›¾ç‰‡æ–‡ä»¶æˆ–文件已æŸå。" #: lib/imagefile.php:122 #, fuzzy msgid "Lost our file." -msgstr "没有这份通告。" +msgstr "文件数æ®ä¸¢å¤±" #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" @@ -6158,7 +6189,7 @@ msgstr "" #: lib/joinform.php:114 #, fuzzy msgid "Join" -msgstr "åŠ å…¥" +msgstr "登录" #: lib/leaveform.php:114 #, fuzzy @@ -6168,12 +6199,11 @@ msgstr "ä¿å˜" #: lib/logingroupnav.php:80 #, fuzzy msgid "Login with a username and password" -msgstr "输入用户å和密ç 以登录。" +msgstr "用户å或密ç ä¸æ£ç¡®ã€‚" #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" -msgstr "创建新å¸å·" +msgstr "" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 @@ -6204,9 +6234,16 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "%1$s 开始关注您的 %2$s ä¿¡æ¯ã€‚" +#: 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:249 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6219,28 +6256,21 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s 开始关注您的 %2$s ä¿¡æ¯ã€‚\n" -"\n" -"\t%3$s\n" -"\n" -"为您效力的 %4$s\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" -msgstr "" -"è‡ªä¼ Bio: %s\n" -"\n" +msgstr "ä½ç½®ï¼š%s" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 +#: lib/mail.php:304 #, php-format msgid "New email address for posting to %s" msgstr "新的电å邮件地å€ï¼Œç”¨äºŽå‘布 %s ä¿¡æ¯" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6261,30 +6291,30 @@ msgstr "" "为您效力的 %4$s" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 +#: lib/mail.php:433 #, php-format msgid "%s status" msgstr "%s 状æ€" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" msgstr "SMSçŸä¿¡ç¡®è®¤" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: lib/mail.php:463 #, fuzzy, php-format msgid "%s: confirm you own this phone number with this code:" msgstr "ç‰å¾…确认æ¤ç”µè¯å·ç 。" #. TRANS: Subject for 'nudge' notification email -#: lib/mail.php:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "%s 振铃呼å«ä½ " #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6301,13 +6331,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "%s å‘é€äº†æ–°çš„ç§äººä¿¡æ¯" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6327,13 +6357,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 +#: lib/mail.php:589 #, fuzzy, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "%s 收è—了您的通告" +msgstr "如果有人收è—我的通告,å‘邮件通知我。" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6355,7 +6385,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6363,13 +6393,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6406,10 +6436,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:497 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " 从 " +msgstr "" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6462,25 +6491,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 "æ— æ³•èŽ·å–收è—的通告。" +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 "" @@ -6500,15 +6529,14 @@ msgid "Available characters" msgstr "6 个或更多å—符" #: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy msgctxt "Send button for sending notice" msgid "Send" -msgstr "å‘é€" +msgstr "" #: lib/noticeform.php:160 #, fuzzy msgid "Send a notice" -msgstr "å‘é€æ¶ˆæ¯" +msgstr "新通告" #: lib/noticeform.php:173 #, php-format @@ -6524,14 +6552,12 @@ msgid "Attach a file" msgstr "" #: lib/noticeform.php:212 -#, fuzzy msgid "Share my location" -msgstr "æ— æ³•ä¿å˜ä¸ªäººä¿¡æ¯ã€‚" +msgstr "" #: lib/noticeform.php:215 -#, fuzzy msgid "Do not share my location" -msgstr "æ— æ³•ä¿å˜ä¸ªäººä¿¡æ¯ã€‚" +msgstr "" #: lib/noticeform.php:216 msgid "" @@ -6540,56 +6566,54 @@ msgid "" msgstr "" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 -#, fuzzy +#: lib/noticelist.php:436 msgid "N" -msgstr "å¦" +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:568 #, fuzzy msgid "in context" msgstr "没有内容ï¼" -#: lib/noticelist.php:594 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "创建" +msgstr "" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 #, fuzzy msgid "Reply to this notice" msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 #, fuzzy msgid "Reply" msgstr "回å¤" -#: lib/noticelist.php:666 +#: lib/noticelist.php:675 #, fuzzy msgid "Notice repeated" msgstr "消æ¯å·²å‘布。" @@ -6663,7 +6687,7 @@ msgstr "您å‘é€çš„消æ¯" #: lib/personaltagcloudsection.php:56 #, fuzzy, php-format msgid "Tags in %s's notices" -msgstr "%s's 的消æ¯çš„æ ‡ç¾" +msgstr "这个组所å‘布的消æ¯çš„æ ‡ç¾" #: lib/plugin.php:115 #, fuzzy @@ -6705,7 +6729,7 @@ msgstr "" msgid "All groups" msgstr "所有组" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6718,9 +6742,8 @@ msgid "User groups" msgstr "用户组" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 -#, fuzzy msgid "Recent tags" -msgstr "æœ€è¿‘çš„æ ‡ç¾" +msgstr "" #: lib/publicgroupnav.php:88 msgid "Featured" @@ -6731,10 +6754,9 @@ msgstr "特å¾" msgid "Popular" msgstr "用户" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "没有这份文档。" +msgstr "" #: lib/repeatform.php:107 #, fuzzy @@ -6751,11 +6773,11 @@ msgid "Repeat this notice" msgstr "æ— æ³•åˆ é™¤é€šå‘Šã€‚" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "该组æˆå‘˜åˆ—表。" +msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6767,7 +6789,7 @@ msgstr "收件箱" #: lib/sandboxform.php:78 #, fuzzy msgid "Sandbox this user" -msgstr "å–消阻æ¢æ¬¡ç”¨æˆ·" +msgstr "呼å«è¿™ä¸ªç”¨æˆ·" #: lib/searchaction.php:120 #, fuzzy @@ -6813,19 +6835,18 @@ msgid "More..." msgstr "更多..." #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "新通告" +msgstr "" #: lib/silenceform.php:78 #, fuzzy msgid "Silence this user" -msgstr "阻æ¢è¯¥ç”¨æˆ·" +msgstr "呼å«è¿™ä¸ªç”¨æˆ·" #: lib/subgroupnav.php:83 #, fuzzy, php-format msgid "People %s subscribes to" -msgstr "%s 订阅的人" +msgstr "远程订阅" #: lib/subgroupnav.php:91 #, fuzzy, php-format @@ -6859,12 +6880,55 @@ msgstr "" #: lib/tagcloudsection.php:56 #, fuzzy msgid "None" -msgstr "å¦" +msgstr "(没有)" -#: lib/topposterssection.php:74 +#: 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 #, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "å‘é€æ¶ˆæ¯å‡ºé”™ã€‚" + +#: lib/topposterssection.php:74 msgid "Top posters" -msgstr "çŒæ°´ç²¾è‹±" +msgstr "" #: lib/unsandboxform.php:69 msgid "Unsandbox" @@ -6873,7 +6937,7 @@ msgstr "" #: lib/unsandboxform.php:80 #, fuzzy msgid "Unsandbox this user" -msgstr "å–消阻æ¢æ¬¡ç”¨æˆ·" +msgstr "呼å«è¿™ä¸ªç”¨æˆ·" #: lib/unsilenceform.php:67 msgid "Unsilence" @@ -6882,7 +6946,7 @@ msgstr "" #: lib/unsilenceform.php:78 #, fuzzy msgid "Unsilence this user" -msgstr "å–消阻æ¢æ¬¡ç”¨æˆ·" +msgstr "呼å«è¿™ä¸ªç”¨æˆ·" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 #, fuzzy @@ -6906,7 +6970,7 @@ msgstr "头åƒ" #: lib/userprofile.php:234 lib/userprofile.php:248 #, fuzzy msgid "User actions" -msgstr "未知动作" +msgstr "组动作" #: lib/userprofile.php:237 msgid "User deletion in progress..." @@ -6938,13 +7002,12 @@ msgstr "" #: lib/userprofile.php:364 #, fuzzy msgid "User role" -msgstr "用户没有个人信æ¯ã€‚" +msgstr "用户组" #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" -msgstr "admin管ç†å‘˜" +msgstr "" #: lib/userprofile.php:367 msgctxt "role" @@ -6952,56 +7015,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: lib/util.php:1107 #, php-format msgid "about %d minutes ago" msgstr "%d 分钟å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1093 +#: 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:1097 +#: lib/util.php:1114 #, php-format msgid "about %d hours ago" msgstr "%d å°æ—¶å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1100 +#: 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:1104 +#: lib/util.php:1121 #, php-format msgid "about %d days ago" msgstr "%d 天å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1107 +#: 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:1111 +#: lib/util.php:1128 #, php-format msgid "about %d months ago" msgstr "%d 个月å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "一年å‰" @@ -7016,6 +7079,6 @@ msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" #: lib/xmppmanager.php:403 -#, fuzzy, php-format +#, php-format msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "您的消æ¯åŒ…å« %d 个å—符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过 140 个å—符。" +msgstr "" diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po index 43e6effc8..3f29e3f5b 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-05-16 15:39+0000\n" -"PO-Revision-Date: 2010-05-16 15:41:24+0000\n" +"POT-Creation-Date: 2010-08-11 10:11+0000\n" +"PO-Revision-Date: 2010-08-11 10:13:29+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 (r66533); Translate extension (2010-05-15)\n" +"X-Generator: MediaWiki 1.17alpha (r70848); 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" @@ -20,22 +20,20 @@ msgstr "" #. TRANS: Page title #. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 #, fuzzy msgid "Access" msgstr "接å—" #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 -#, fuzzy msgid "Registration" -msgstr "所有訂閱" +msgstr "" #. TRANS: Checkbox instructions for admin setting "Private" #: actions/accessadminpanel.php:165 @@ -65,15 +63,13 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 -#, fuzzy msgid "Save access settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #. TRANS: Button label to save e-mail preferences. #. TRANS: Button label to save IM preferences. @@ -87,25 +83,25 @@ msgid "Save" msgstr "" #. TRANS: Server error when page not found (404) -#: actions/all.php:64 actions/public.php:98 actions/replies.php:93 +#: 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 "ç„¡æ¤é€šçŸ¥" +msgstr "ç„¡æ¤ä½¿ç”¨è€…" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#: 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:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:227 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:173 -#: actions/apitimelinehome.php:79 actions/apitimelinementions.php:79 -#: actions/apitimelineuser.php:81 actions/avatarbynickname.php:75 +#: 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 @@ -118,7 +114,7 @@ msgid "No such user." msgstr "ç„¡æ¤ä½¿ç”¨è€…" #. TRANS: Page title. %1$s is user nickname, %2$d is page number -#: actions/all.php:86 +#: actions/all.php:90 #, fuzzy, php-format msgid "%1$s and friends, page %2$d" msgstr "%s與好å‹" @@ -126,39 +122,39 @@ msgstr "%s與好å‹" #. 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:89 actions/all.php:181 actions/allrss.php:116 -#: actions/apitimelinefriends.php:209 actions/apitimelinehome.php:115 +#: 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與好å‹" #. TRANS: %1$s is user nickname -#: actions/all.php:103 -#, fuzzy, php-format +#: actions/all.php:107 +#, php-format msgid "Feed for friends of %s (RSS 1.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:112 -#, fuzzy, php-format +#: actions/all.php:116 +#, php-format msgid "Feed for friends of %s (RSS 2.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:121 -#, fuzzy, php-format +#: actions/all.php:125 +#, php-format msgid "Feed for friends of %s (Atom)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:134 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" -#: actions/all.php:139 +#: actions/all.php:143 #, php-format msgid "" "Try subscribing to more people, [join a group](%%action.groups%%) or post " @@ -166,81 +162,81 @@ msgid "" msgstr "" #. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@" -#: actions/all.php:142 +#: 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:145 actions/replies.php:210 actions/showstream.php:211 +#: 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:178 +#: actions/all.php:182 #, fuzzy msgid "You and friends" msgstr "%s與好å‹" #. 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:215 -#: actions/apitimelinehome.php:121 +#: 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 "" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 +#: 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:99 actions/apifavoritedestroy.php:100 +#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101 #: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100 -#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:138 -#: actions/apigroupismember.php:114 actions/apigroupjoin.php:155 -#: actions/apigroupleave.php:141 actions/apigrouplist.php:136 -#: actions/apigrouplistall.php:121 actions/apigroupmembership.php:106 -#: actions/apigroupshow.php:115 actions/apihelptest.php:88 -#: actions/apistatusesdestroy.php:102 actions/apistatusesretweets.php:112 -#: actions/apistatusesshow.php:108 actions/apistatusnetconfig.php:141 +#: 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:173 actions/apitimelinefriends.php:270 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:240 +#: 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:160 -#: actions/apitimelineuser.php:162 actions/apiusershow.php:101 +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 #, fuzzy msgid "API method not found." msgstr "確èªç¢¼éºå¤±" -#: actions/apiaccountupdatedeliverydevice.php:85 +#: 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:90 actions/apifavoritedestroy.php:91 +#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92 #: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91 -#: actions/apigroupcreate.php:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:197 +#: 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 "" -#: actions/apiaccountupdatedeliverydevice.php:105 +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 #, fuzzy msgid "Could not update user." msgstr "無法更新使用者" @@ -262,7 +258,7 @@ msgstr "無法儲å˜å€‹äººè³‡æ–™" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:210 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 @@ -289,9 +285,8 @@ msgid "Could not update your design." msgstr "無法更新使用者" #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "無法更新使用者" +msgstr "" #: actions/apiblockcreate.php:126 msgid "Block user failed." @@ -331,37 +326,41 @@ msgid "That's too long. Max message size is %d chars." msgstr "" #: actions/apidirectmessagenew.php:138 +#, fuzzy msgid "Recipient user not found." -msgstr "" +msgstr "確èªç¢¼éºå¤±" #: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." msgstr "" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." msgstr "" -#: actions/apifavoritecreate.php:119 +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." msgstr "" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285 +#, fuzzy msgid "Could not create favorite." -msgstr "" +msgstr "無法儲å˜å€‹äººè³‡æ–™" -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." msgstr "" -#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87 +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 +#, fuzzy msgid "Could not delete favorite." -msgstr "" +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 @@ -369,17 +368,15 @@ msgid "Could not follow user: %s is already on your list." msgstr "" #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "無法更新使用者" +msgstr "" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:134 @@ -392,125 +389,131 @@ msgstr "無法更新使用者" msgid "Could not find target user." msgstr "無法更新使用者" -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 +#: actions/apigroupcreate.php:167 actions/editgroup.php:186 #: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 +#: actions/register.php:212 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "暱稱請用å°å¯«å—æ¯æˆ–數å—ï¼Œå‹¿åŠ ç©ºæ ¼ã€‚" -#: actions/apigroupcreate.php:175 actions/editgroup.php:190 +#: actions/apigroupcreate.php:176 actions/editgroup.php:190 #: actions/newgroup.php:130 actions/profilesettings.php:238 -#: actions/register.php:208 +#: actions/register.php:215 msgid "Nickname already in use. Try another one." msgstr "æ¤æš±ç¨±å·²æœ‰äººä½¿ç”¨ã€‚å†è©¦è©¦çœ‹åˆ¥çš„å§ã€‚" -#: actions/apigroupcreate.php:182 actions/editgroup.php:193 +#: actions/apigroupcreate.php:183 actions/editgroup.php:193 #: actions/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 +#: actions/register.php:217 +#, fuzzy msgid "Not a valid nickname." -msgstr "" +msgstr "無暱稱" -#: actions/apigroupcreate.php:198 actions/editapplication.php:215 +#: 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:217 +#: actions/register.php:224 msgid "Homepage is not a valid URL." msgstr "個人首é ä½å€éŒ¯èª¤" -#: actions/apigroupcreate.php:207 actions/editgroup.php:202 +#: actions/apigroupcreate.php:208 actions/editgroup.php:202 #: actions/newgroup.php:142 actions/profilesettings.php:225 -#: actions/register.php:220 +#: actions/register.php:227 msgid "Full name is too long (max 255 chars)." msgstr "å…¨åéŽé•·ï¼ˆæœ€å¤š255å—元)" -#: actions/apigroupcreate.php:215 actions/editapplication.php:190 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 #: actions/newapplication.php:172 #, fuzzy, php-format msgid "Description is too long (max %d chars)." -msgstr "自我介紹éŽé•·(å…±140個å—å…ƒ)" +msgstr "地點éŽé•·ï¼ˆå…±255個å—)" -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 +#: actions/apigroupcreate.php:227 actions/editgroup.php:208 #: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 +#: actions/register.php:234 msgid "Location is too long (max 255 chars)." msgstr "地點éŽé•·ï¼ˆå…±255個å—)" -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." msgstr "" -#: actions/apigroupcreate.php:266 +#: actions/apigroupcreate.php:267 #, fuzzy, php-format msgid "Invalid alias: \"%s\"." -msgstr "個人首é 連çµ%s無效" +msgstr "尺寸錯誤" -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 #, fuzzy, php-format msgid "Alias \"%s\" already in use. Try another one." msgstr "æ¤æš±ç¨±å·²æœ‰äººä½¿ç”¨ã€‚å†è©¦è©¦çœ‹åˆ¥çš„å§ã€‚" -#: actions/apigroupcreate.php:288 actions/editgroup.php:238 +#: actions/apigroupcreate.php:289 actions/editgroup.php:238 #: actions/newgroup.php:178 msgid "Alias can't be the same as nickname." msgstr "" -#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104 -#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91 -#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91 +#: 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 "ç›®å‰ç„¡è«‹æ±‚" +msgstr "確èªç¢¼éºå¤±" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 +#, fuzzy msgid "You are already a member of that group." -msgstr "" +msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" -#: actions/apigroupleave.php:114 +#: actions/apigroupleave.php:115 #, fuzzy msgid "You are not a member of this group." msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 -#, fuzzy, php-format +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "無法從 %s 建立OpenID" +msgstr "" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 -#, fuzzy, php-format +#: actions/apigrouplist.php:98 +#, php-format msgid "%s's groups" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s -#: actions/apigrouplist.php:107 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #. 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:91 actions/usergroups.php:63 +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 #, php-format msgid "%s groups" msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "" + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" @@ -522,15 +525,15 @@ msgstr "尺寸錯誤" #: 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:54 +#: 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:115 actions/makeadmin.php:66 +#: 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:165 actions/remotesubscribe.php:77 +#: 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 @@ -544,14 +547,12 @@ msgid "Invalid nickname / password!" msgstr "使用者å稱或密碼無效" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" +msgstr "" #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "å¢žåŠ å›žè¦†æ™‚,資料庫發生錯誤: %s" +msgstr "" #: actions/apioauthauthorize.php:214 #, php-format @@ -594,13 +595,13 @@ msgid "" msgstr "" #. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 +#: actions/apioauthauthorize.php:310 lib/action.php:450 #, fuzzy msgid "Account" msgstr "關於" -#: actions/apioauthauthorize.php:313 actions/login.php:230 -#: actions/profilesettings.php:106 actions/register.php:424 +#: 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 @@ -608,10 +609,11 @@ msgid "Nickname" msgstr "暱稱" #. TRANS: Link description in user account settings menu. -#: actions/apioauthauthorize.php:316 actions/login.php:233 -#: actions/register.php:429 lib/accountsettingsaction.php:125 +#: actions/apioauthauthorize.php:316 actions/login.php:255 +#: actions/register.php:436 lib/accountsettingsaction.php:125 +#, fuzzy msgid "Password" -msgstr "" +msgstr "新密碼" #: actions/apioauthauthorize.php:328 msgid "Deny" @@ -625,11 +627,11 @@ msgstr "" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." msgstr "" -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." msgstr "" @@ -639,70 +641,70 @@ msgid "No such notice." msgstr "ç„¡æ¤é€šçŸ¥" #: actions/apistatusesretweet.php:83 -#, fuzzy msgid "Cannot repeat your own notice." -msgstr "儲å˜ä½¿ç”¨è€…發生錯誤" +msgstr "" #: actions/apistatusesretweet.php:91 -#, fuzzy msgid "Already repeated that notice." -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" -#: actions/apistatusesshow.php:138 -#, fuzzy +#: actions/apistatusesshow.php:139 msgid "Status deleted." -msgstr "更新個人圖åƒ" +msgstr "" -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:240 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:281 actions/apiusershow.php:96 -#, fuzzy +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." -msgstr "ç›®å‰ç„¡è«‹æ±‚" +msgstr "" -#: actions/apistatusesupdate.php:304 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 "" -#: actions/apitimelinefavorites.php:109 +#: actions/apitimelinefavorites.php:110 #, fuzzy, php-format msgid "%1$s / Favorites from %2$s" msgstr "%1$s的狀態是%2$s" -#: actions/apitimelinefavorites.php:118 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:119 +#, php-format msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "&s的微型部è½æ ¼" +msgstr "" -#: actions/apitimelinementions.php:117 +#: actions/apitimelinementions.php:118 #, fuzzy, php-format msgid "%1$s / Updates mentioning %2$s" msgstr "%1$s的狀態是%2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinementions.php:131 #, php-format msgid "%1$s updates that reply to updates from %2$s / %3$s." msgstr "" -#: actions/apitimelinepublic.php:196 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:201 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -717,20 +719,25 @@ msgstr "" msgid "Repeats of %s" msgstr "" -#: actions/apitimelinetag.php:104 actions/tag.php:67 +#: actions/apitimelinetag.php:105 actions/tag.php:67 #, php-format msgid "Notices tagged with %s" msgstr "" -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 -#, fuzzy, php-format +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "&s的微型部è½æ ¼" +msgstr "" + +#: actions/apitrends.php:87 +#, fuzzy +msgid "API method under construction." +msgstr "確èªç¢¼éºå¤±" #: actions/attachment.php:73 #, fuzzy msgid "No such attachment." -msgstr "ç„¡æ¤æ–‡ä»¶" +msgstr "ç„¡æ¤é€šçŸ¥" #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -766,9 +773,8 @@ msgstr "" #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 -#, fuzzy msgid "Avatar settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #: actions/avatarsettings.php:127 actions/avatarsettings.php:205 #: actions/grouplogo.php:202 actions/grouplogo.php:262 @@ -781,7 +787,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:657 msgid "Delete" msgstr "" @@ -821,14 +827,14 @@ msgstr "更新個人圖åƒ" #: actions/block.php:69 #, fuzzy msgid "You already blocked that user." -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "æ¤Jabber ID已有人使用" -#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:158 +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 #, fuzzy msgid "Block user" msgstr "ç„¡æ¤ä½¿ç”¨è€…" -#: actions/block.php:130 +#: 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 " @@ -840,7 +846,7 @@ msgstr "" #. 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:145 actions/deleteapplication.php:154 +#: actions/block.php:153 actions/deleteapplication.php:154 #: actions/deletenotice.php:147 actions/deleteuser.php:152 #: actions/groupblock.php:178 msgctxt "BUTTON" @@ -849,17 +855,16 @@ msgstr "" #. TRANS: Submit button title for 'No' when blocking a user. #. TRANS: Submit button title for 'No' when deleting a user. -#: actions/block.php:149 actions/deleteuser.php:156 -#, fuzzy +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #. 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:152 actions/deleteapplication.php:161 +#: actions/block.php:160 actions/deleteapplication.php:161 #: actions/deletenotice.php:154 actions/deleteuser.php:159 #: actions/groupblock.php:185 msgctxt "BUTTON" @@ -867,12 +872,11 @@ msgid "Yes" msgstr "" #. TRANS: Submit button title for 'Yes' when blocking a user. -#: actions/block.php:156 actions/groupmembers.php:392 lib/blockform.php:80 -#, fuzzy +#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80 msgid "Block this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" @@ -889,35 +893,33 @@ msgstr "" #: lib/command.php:368 #, fuzzy msgid "No such group." -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "ç„¡æ¤ä½¿ç”¨è€…" #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s與好å‹" +msgstr "" #: actions/blockedfromgroup.php:115 msgid "A list of the users blocked from joining this group." msgstr "" #: actions/blockedfromgroup.php:288 -#, fuzzy msgid "Unblock user from group" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" msgstr "" #: actions/blockedfromgroup.php:320 lib/unblockform.php:80 -#, fuzzy msgid "Unblock this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 @@ -934,8 +936,9 @@ msgid "Confirmation code not found." msgstr "確èªç¢¼éºå¤±" #: actions/confirmaddress.php:85 +#, fuzzy msgid "That confirmation code is not for you!" -msgstr "" +msgstr "確èªç¢¼éºå¤±" #. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. #: actions/confirmaddress.php:91 @@ -945,8 +948,9 @@ msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 +#, fuzzy msgid "That address has already been confirmed." -msgstr "" +msgstr "æ¤é›»å信箱已註冊éŽäº†" #. TRANS: Server error thrown on database error updating e-mail preferences. #. TRANS: Server error thrown on database error removing a registered e-mail address. @@ -972,7 +976,7 @@ msgstr "無法å–消信箱確èª" #: actions/confirmaddress.php:146 #, fuzzy msgid "Confirm address" -msgstr "確èªä¿¡ç®±" +msgstr "確èª" #: actions/confirmaddress.php:161 #, php-format @@ -986,13 +990,13 @@ msgstr "地點" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 +#, fuzzy msgid "Notices" -msgstr "" +msgstr "新訊æ¯" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "無法更新使用者" +msgstr "" #: actions/deleteapplication.php:71 #, fuzzy @@ -1007,14 +1011,13 @@ msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1263 msgid "There was a problem with your session token." msgstr "" #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/deleteapplication.php:149 msgid "" @@ -1025,15 +1028,13 @@ msgstr "" #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 -#, fuzzy msgid "Do not delete this application" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" #. 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 @@ -1041,14 +1042,16 @@ msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 +#, fuzzy msgid "Not logged in." -msgstr "" +msgstr "已登入" #: actions/deletenotice.php:71 +#, fuzzy msgid "Can't delete this notice." -msgstr "" +msgstr "無法å–消信箱確èª" #: actions/deletenotice.php:103 msgid "" @@ -1057,8 +1060,9 @@ msgid "" msgstr "" #: actions/deletenotice.php:109 actions/deletenotice.php:141 +#, fuzzy msgid "Delete notice" -msgstr "" +msgstr "新訊æ¯" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" @@ -1066,12 +1070,11 @@ msgstr "" #. TRANS: Submit button title for 'No' when deleting a notice. #: actions/deletenotice.php:151 -#, fuzzy msgid "Do not delete this notice" -msgstr "ç„¡æ¤é€šçŸ¥" +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:657 msgid "Delete this notice" msgstr "" @@ -1081,9 +1084,8 @@ msgid "You cannot delete users." msgstr "無法更新使用者" #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" @@ -1097,9 +1099,8 @@ msgstr "" #. TRANS: Submit button title for 'Yes' when deleting a user. #: actions/deleteuser.php:163 lib/deleteuserform.php:77 -#, fuzzy msgid "Delete this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #. TRANS: Message used as title for design settings for the site. #. TRANS: Link description in user account settings menu. @@ -1112,50 +1113,56 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 +#: actions/designadminpanel.php:318 #, fuzzy msgid "Invalid logo URL." msgstr "尺寸錯誤" -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "個人首é ä½å€éŒ¯èª¤" +msgstr "" -#: actions/designadminpanel.php:376 +#: actions/designadminpanel.php:426 #, fuzzy msgid "Change logo" -msgstr "更改密碼" +msgstr "更改" -#: actions/designadminpanel.php:381 -#, fuzzy +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "新訊æ¯" +msgstr "" -#: actions/designadminpanel.php:388 +#: actions/designadminpanel.php:443 #, fuzzy msgid "Change theme" msgstr "更改" -#: actions/designadminpanel.php:405 -#, fuzzy +#: actions/designadminpanel.php:460 msgid "Site theme" -msgstr "新訊æ¯" +msgstr "" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." msgstr "" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" msgstr "" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" msgstr "" -#: actions/designadminpanel.php:428 +#: actions/designadminpanel.php:496 #, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" @@ -1163,60 +1170,68 @@ msgid "" msgstr "" #. TRANS: Used as radio button label to add a background image. -#: actions/designadminpanel.php:459 lib/designsettings.php:139 +#: actions/designadminpanel.php:527 lib/designsettings.php:139 msgid "On" msgstr "" #. TRANS: Used as radio button label to not add a background image. -#: actions/designadminpanel.php:476 lib/designsettings.php:155 +#: actions/designadminpanel.php:544 lib/designsettings.php:155 msgid "Off" msgstr "" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." msgstr "" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" msgstr "" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 +#: actions/designadminpanel.php:564 lib/designsettings.php:170 #, fuzzy msgid "Change colours" msgstr "更改密碼" -#: actions/designadminpanel.php:513 lib/designsettings.php:191 +#: actions/designadminpanel.php:587 lib/designsettings.php:191 #, fuzzy msgid "Content" msgstr "連çµ" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" msgstr "" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" msgstr "" -#: actions/designadminpanel.php:552 lib/designsettings.php:230 +#: actions/designadminpanel.php:626 lib/designsettings.php:230 #, fuzzy msgid "Links" msgstr "登入" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" msgstr "" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" msgstr "" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" msgstr "" #. TRANS: Submit button title -#: actions/designadminpanel.php:589 actions/othersettings.php:126 +#: 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 @@ -1226,7 +1241,7 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" msgstr "" @@ -1241,12 +1256,11 @@ msgstr "" #: actions/doc.php:158 #, fuzzy, php-format msgid "No such document \"%s\"" -msgstr "ç„¡æ¤æ–‡ä»¶" +msgstr "ç„¡æ¤é€šçŸ¥" #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/editapplication.php:66 msgid "You must be logged in to edit an application." @@ -1277,9 +1291,8 @@ msgid "Name already in use. Try another one." msgstr "æ¤æš±ç¨±å·²æœ‰äººä½¿ç”¨ã€‚å†è©¦è©¦çœ‹åˆ¥çš„å§ã€‚" #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "所有訂閱" +msgstr "" #: actions/editapplication.php:194 msgid "Source URL is too long." @@ -1337,22 +1350,23 @@ msgstr "" #: actions/editgroup.php:205 actions/newgroup.php:145 #, fuzzy, php-format msgid "description is too long (max %d chars)." -msgstr "自我介紹éŽé•·(å…±140個å—å…ƒ)" +msgstr "地點éŽé•·ï¼ˆå…±255個å—)" #: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "個人首é 連çµ%s無效" +msgstr "" #: actions/editgroup.php:258 #, fuzzy 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 "無法å˜å–個人圖åƒè³‡æ–™" +msgstr "無法更新使用者" #: actions/editgroup.php:280 msgid "Options saved." @@ -1362,7 +1376,7 @@ msgstr "" #: actions/emailsettings.php:61 #, fuzzy msgid "Email settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1380,8 +1394,9 @@ msgstr "確èªä¿¡ç®±" #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 +#, fuzzy msgid "Current confirmed email address." -msgstr "" +msgstr "ç›®å‰å·²ç¢ºèªçš„Jabber/Gtalk地å€" #. 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. @@ -1396,10 +1411,13 @@ msgid "Remove" msgstr "" #: actions/emailsettings.php:122 +#, fuzzy msgid "" "Awaiting confirmation on this address. Check your inbox (and spam box!) for " "a message with further instructions." msgstr "" +"ç‰å¾…確èªæ¤ä¿¡ç®±ã€‚çœ‹çœ‹ä½ çš„Jabber/GTalk是å¦æœ‰è¨Šæ¯æŒ‡ç¤ºä¸‹ä¸€æ¥å‹•ä½œã€‚(ä½ åŠ å…¥%såˆ°ä½ çš„" +"好å‹æ¸…單了嗎?)" #. TRANS: Button label to cancel an e-mail address confirmation procedure. #. TRANS: Button label to cancel an IM address confirmation procedure. @@ -1422,10 +1440,9 @@ msgstr "" #. 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 -#, fuzzy msgctxt "BUTTON" msgid "Add" -msgstr "新增" +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1454,9 +1471,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 @@ -1490,8 +1506,9 @@ msgstr "" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 +#, fuzzy msgid "Publish a MicroID for my email address." -msgstr "" +msgstr "請輸入暱稱或電åä¿¡ç®±" #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 @@ -1500,29 +1517,33 @@ msgstr "" #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 +#, fuzzy msgid "No email address." -msgstr "" +msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 +#, fuzzy msgid "Cannot normalize that email address" -msgstr "" +msgstr "æ¤JabberID錯誤" #. TRANS: Message given saving e-mail address that not valid. -#: actions/emailsettings.php:366 actions/register.php:201 +#: actions/emailsettings.php:366 actions/register.php:208 #: actions/siteadminpanel.php:144 msgid "Not a valid email address." msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #. TRANS: Message given saving e-mail address that is already set. #: actions/emailsettings.php:370 +#, fuzzy msgid "That is already your email address." -msgstr "" +msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #. TRANS: Message given saving e-mail address that is already set for another user. #: actions/emailsettings.php:374 +#, fuzzy msgid "That email address already belongs to another user." -msgstr "" +msgstr "æ¤Jabber ID已有人使用" #. TRANS: Server error thrown on database error adding e-mail confirmation code. #. TRANS: Server error thrown on database error adding IM confirmation code. @@ -1534,18 +1555,20 @@ msgstr "無法輸入確èªç¢¼" #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 +#, fuzzy 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 "" +msgstr "確èªä¿¡å·²å¯„åˆ°ä½ çš„ç·šä¸Šå³æ™‚通信箱。%sé€çµ¦ä½ 得訊æ¯è¦å…ˆç¶“éŽä½ çš„èªå¯ã€‚" #. 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 +#, fuzzy msgid "No pending confirmation to cancel." -msgstr "" +msgstr "無確èªç¢¼" #. TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address. #: actions/emailsettings.php:424 @@ -1557,13 +1580,14 @@ msgstr "請輸入暱稱或電åä¿¡ç®±" #: actions/emailsettings.php:438 #, fuzzy msgid "Email confirmation cancelled." -msgstr "確èªå–消" +msgstr "無確èªç¢¼" #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. #: actions/emailsettings.php:458 +#, fuzzy msgid "That is not your email address." -msgstr "" +msgstr "請輸入暱稱或電åä¿¡ç®±" #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 @@ -1572,15 +1596,17 @@ msgid "The email address was removed." msgstr "æ¤é›»å信箱已註冊éŽäº†" #: actions/emailsettings.php:493 actions/smssettings.php:568 +#, fuzzy msgid "No incoming email address." -msgstr "" +msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #. 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 +#, fuzzy msgid "Couldn't update user record." -msgstr "" +msgstr "無法更新使用者" #. TRANS: Message given after successfully removing an incoming e-mail address. #: actions/emailsettings.php:508 actions/smssettings.php:581 @@ -1589,8 +1615,9 @@ msgstr "" #. TRANS: Message given after successfully adding an incoming e-mail address. #: actions/emailsettings.php:532 actions/smssettings.php:605 +#, fuzzy msgid "New incoming email address added." -msgstr "" +msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #: actions/favor.php:79 msgid "This notice is already a favorite!" @@ -1607,9 +1634,9 @@ msgid "Popular notices" msgstr "ç„¡æ¤é€šçŸ¥" #: actions/favorited.php:67 -#, fuzzy, php-format +#, php-format msgid "Popular notices, page %d" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." @@ -1639,9 +1666,9 @@ msgid "%s's favorite notices" msgstr "" #: actions/favoritesrss.php:115 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1661,22 +1688,20 @@ msgstr "" #: actions/file.php:34 #, fuzzy msgid "No notice ID." -msgstr "新訊æ¯" +msgstr "ç„¡æ¤é€šçŸ¥" #: actions/file.php:38 #, fuzzy msgid "No notice." -msgstr "新訊æ¯" +msgstr "ç„¡æ¤é€šçŸ¥" #: actions/file.php:42 -#, fuzzy msgid "No attachments." -msgstr "ç„¡æ¤æ–‡ä»¶" +msgstr "" #: actions/file.php:51 -#, fuzzy msgid "No uploaded attachments." -msgstr "ç„¡æ¤æ–‡ä»¶" +msgstr "" #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" @@ -1687,8 +1712,9 @@ msgid "User being listened to does not exist." msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 +#, fuzzy msgid "You can use the local subscription!" -msgstr "" +msgstr "無法新增訂閱" #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." @@ -1699,9 +1725,8 @@ msgid "You are not authorized." msgstr "" #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "無法轉æ›è«‹æ±‚標記以致無法å˜å–標記" +msgstr "" #: actions/finishremotesubscribe.php:118 msgid "Remote service uses unknown version of OMB protocol." @@ -1720,7 +1745,7 @@ msgstr "ç„¡æ¤é€šçŸ¥" #: actions/getfile.php:83 #, fuzzy msgid "Cannot read file." -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "無法儲å˜å€‹äººè³‡æ–™" #: actions/grantrole.php:62 actions/revokerole.php:62 #, fuzzy @@ -1732,9 +1757,8 @@ msgid "This role is reserved and cannot be set." msgstr "" #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #: actions/grantrole.php:82 msgid "User already has this role." @@ -1742,13 +1766,13 @@ msgstr "" #: actions/groupblock.php:71 actions/groupunblock.php:71 #: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 +#: lib/profileformaction.php:79 msgid "No profile specified." msgstr "" #: 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:77 +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." msgstr "" @@ -1766,13 +1790,13 @@ msgid "User is already blocked from group." msgstr "" #: actions/groupblock.php:100 +#, fuzzy msgid "User is not a member of group." -msgstr "" +msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: actions/groupblock.php:160 #, php-format @@ -1784,15 +1808,13 @@ msgstr "" #. TRANS: Submit button title for 'No' when blocking a user from a group. #: actions/groupblock.php:182 -#, fuzzy msgid "Do not block this user from this group" -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #. TRANS: Submit button title for 'Yes' when blocking a user from a group. #: actions/groupblock.php:189 -#, fuzzy msgid "Block this user from this group" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: actions/groupblock.php:206 msgid "Database error blocking user from group." @@ -1889,16 +1911,16 @@ msgstr "" #. 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:62 lib/atomusernoticefeed.php:68 +#: 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 -#, fuzzy, php-format +#, php-format msgid "Updates from members of %1$s on %2$s!" -msgstr "&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 @@ -1921,9 +1943,8 @@ msgid "" msgstr "" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "新增帳號" +msgstr "" #: actions/groupsearch.php:52 #, php-format @@ -1938,9 +1959,8 @@ msgstr "" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "ç„¡çµæžœ" +msgstr "" #: actions/groupsearch.php:82 #, php-format @@ -1973,7 +1993,7 @@ msgstr "儲å˜ä½¿ç”¨è€…發生錯誤" #: actions/imsettings.php:60 #, fuzzy msgid "IM settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -1987,16 +2007,14 @@ msgstr "" #. TRANS: Message given in the IM settings if XMPP is not enabled on the site. #: actions/imsettings.php:94 -#, fuzzy msgid "IM is not available." -msgstr "個人首é ä½å€éŒ¯èª¤" +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 -#, fuzzy msgid "IM address" -msgstr "線上å³æ™‚通信箱" +msgstr "" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2044,8 +2062,9 @@ msgstr "" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:179 +#, fuzzy msgid "Publish a MicroID for my Jabber/GTalk address." -msgstr "" +msgstr "ç›®å‰å·²ç¢ºèªçš„Jabber/Gtalk地å€" #. TRANS: Confirmation message for successful IM preferences save. #: actions/imsettings.php:287 actions/othersettings.php:180 @@ -2069,8 +2088,9 @@ msgstr "æ¤JabberID無效" #. TRANS: Message given saving IM address that is already set. #: actions/imsettings.php:326 +#, fuzzy msgid "That is already your Jabber ID." -msgstr "" +msgstr "æ¤JabberID無效" #. TRANS: Message given saving IM address that is already set for another user. #: actions/imsettings.php:330 @@ -2101,13 +2121,14 @@ msgstr "無法å–消信箱確èª" #: actions/imsettings.php:402 #, fuzzy msgid "IM confirmation cancelled." -msgstr "確èªå–消" +msgstr "無確èªç¢¼" #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. #: actions/imsettings.php:424 +#, fuzzy msgid "That is not your Jabber ID." -msgstr "" +msgstr "查無æ¤Jabber ID" #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 @@ -2133,14 +2154,14 @@ msgid "Invites have been disabled." msgstr "" #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "無法更新使用者" +msgstr "" #: actions/invite.php:72 -#, php-format +#, fuzzy, php-format msgid "Invalid email address: %s" -msgstr "" +msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #: actions/invite.php:110 msgid "Invitation(s) sent" @@ -2151,8 +2172,9 @@ msgid "Invite new users" msgstr "" #: actions/invite.php:128 +#, fuzzy msgid "You are already subscribed to these users:" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #. TRANS: Whois output. #. TRANS: %1$s nickname of the queried user, %2$s is their profile URL. @@ -2182,8 +2204,9 @@ msgid "" msgstr "" #: actions/invite.php:187 +#, fuzzy msgid "Email addresses" -msgstr "" +msgstr "æ¤é›»å信箱已註冊éŽäº†" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" @@ -2205,9 +2228,9 @@ 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 +#, fuzzy, php-format msgid "%1$s has invited you to join them on %2$s" -msgstr "" +msgstr "ç¾åœ¨%1$s在%2$sæˆç‚ºä½ 的粉絲囉" #. 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 @@ -2262,8 +2285,9 @@ msgid "You must be logged in to leave a group." msgstr "" #: actions/leavegroup.php:100 lib/command.php:373 +#, fuzzy msgid "You are not a member of that group." -msgstr "" +msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #. 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. @@ -2272,50 +2296,51 @@ msgstr "" msgid "%1$s left group %2$s" msgstr "%1$s的狀態是%2$s" -#: actions/login.php:80 actions/otp.php:62 actions/register.php:137 +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 msgid "Already logged in." msgstr "已登入" -#: actions/login.php:126 +#: actions/login.php:148 msgid "Incorrect username or password." msgstr "使用者å稱或密碼錯誤" -#: actions/login.php:132 actions/otp.php:120 +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." msgstr "" -#: actions/login.php:188 actions/login.php:241 lib/logingroupnav.php:79 +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 msgid "Login" msgstr "登入" -#: actions/login.php:227 +#: actions/login.php:249 msgid "Login to site" msgstr "" -#: actions/login.php:236 actions/register.php:478 +#: actions/login.php:258 actions/register.php:485 +#, fuzzy msgid "Remember me" -msgstr "" +msgstr "ä½•æ™‚åŠ å…¥æœƒå“¡çš„å‘¢ï¼Ÿ" -#: actions/login.php:237 actions/register.php:480 +#: actions/login.php:259 actions/register.php:487 msgid "Automatically login in the future; not for shared computers!" msgstr "未來在åŒä¸€éƒ¨é›»è…¦è‡ªå‹•ç™»å…¥" -#: actions/login.php:247 +#: actions/login.php:269 msgid "Lost or forgotten password?" msgstr "éºå¤±æˆ–忘記密碼了嗎?" -#: actions/login.php:266 +#: actions/login.php:288 msgid "" "For security reasons, please re-enter your user name and password before " "changing your settings." msgstr "為安全起見,請先é‡æ–°è¼¸å…¥ä½ 的使用者å稱與密碼å†æ›´æ”¹è¨å®šã€‚" -#: actions/login.php:270 +#: actions/login.php:292 #, fuzzy msgid "Login with your username and password." -msgstr "使用者å稱或密碼無效" +msgstr "使用者å稱或密碼錯誤" -#: actions/login.php:273 +#: actions/login.php:295 #, php-format msgid "" "Don't have a username yet? [Register](%%action.register%%) a new account." @@ -2331,24 +2356,22 @@ msgid "%1$s is already an admin for group \"%2$s\"." msgstr "" #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "無法從 %s 建立OpenID" +msgstr "" #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "無法從 %s 建立OpenID" +msgstr "" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "ç„¡çµæžœ" +msgstr "" #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/newapplication.php:64 msgid "You must be logged in to register an application." @@ -2365,7 +2388,7 @@ msgstr "" #: actions/newapplication.php:258 actions/newapplication.php:267 #, fuzzy msgid "Could not create application." -msgstr "無法å˜å–個人圖åƒè³‡æ–™" +msgstr "無法å–消信箱確èª" #: actions/newgroup.php:53 msgid "New group" @@ -2380,8 +2403,9 @@ msgid "New message" msgstr "" #: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#, fuzzy msgid "You can't send a message to this user." -msgstr "" +msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 #: lib/command.php:555 @@ -2430,9 +2454,9 @@ msgid "Text search" msgstr "" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "æœå°‹ \"%s\"相關資料" +msgstr "" #: actions/noticesearch.php:121 #, php-format @@ -2449,18 +2473,18 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "æ‰€æœ‰ç¬¦åˆ \"%s\"çš„æ›´æ–°" +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 @@ -2497,9 +2521,8 @@ msgid "You have allowed the following applications to access you account." msgstr "" #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #: actions/oauthconnectionssettings.php:186 #, php-format @@ -2514,31 +2537,30 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" -#: actions/oembed.php:86 actions/shownotice.php:175 +#: actions/oembed.php:87 actions/shownotice.php:175 #, php-format msgid "%1$s's status on %2$s" msgstr "%1$s的狀態是%2$s" #. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "連çµ" +msgstr "" #. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: 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:183 actions/oembed.php:202 lib/apiaction.php:1156 -#: lib/apiaction.php:1185 lib/apiaction.php:1302 +#: 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 "" @@ -2553,7 +2575,7 @@ msgstr "" #: actions/othersettings.php:60 #, fuzzy msgid "Other settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2585,14 +2607,12 @@ msgid "URL shortening service is too long (max 50 chars)." msgstr "地點éŽé•·ï¼ˆå…±255個å—)" #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "新訊æ¯" +msgstr "" #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "新訊æ¯" +msgstr "" #: actions/otp.php:90 #, fuzzy @@ -2600,9 +2620,8 @@ msgid "No login token requested." msgstr "無確èªè«‹æ±‚" #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "新訊æ¯" +msgstr "" #: actions/otp.php:104 msgid "Login token expired." @@ -2636,8 +2655,9 @@ msgid "Password change" msgstr "" #: actions/passwordsettings.php:104 +#, fuzzy msgid "Old password" -msgstr "" +msgstr "新密碼" #: actions/passwordsettings.php:108 actions/recoverpassword.php:235 msgid "New password" @@ -2648,7 +2668,7 @@ msgid "6 or more characters" msgstr "6個以上å—å…ƒ" #: actions/passwordsettings.php:112 actions/recoverpassword.php:239 -#: actions/register.php:433 +#: actions/register.php:440 msgid "Confirm" msgstr "確èª" @@ -2660,11 +2680,12 @@ msgstr "" msgid "Change" msgstr "更改" -#: actions/passwordsettings.php:154 actions/register.php:230 +#: actions/passwordsettings.php:154 actions/register.php:237 +#, fuzzy msgid "Password must be 6 or more characters." -msgstr "" +msgstr "6個以上å—å…ƒ" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "" @@ -2685,7 +2706,7 @@ msgid "Password saved." msgstr "" #. TRANS: Menu item for site administration -#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:383 +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 msgid "Paths" msgstr "" @@ -2694,24 +2715,24 @@ msgid "Path and server settings for this StatusNet site." msgstr "" #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "個人首é ä½å€éŒ¯èª¤" +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "個人首é ä½å€éŒ¯èª¤" +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "個人首é ä½å€éŒ¯èª¤" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "個人首é ä½å€éŒ¯èª¤" +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2734,9 +2755,8 @@ msgid "Path" msgstr "" #: actions/pathsadminpanel.php:242 -#, fuzzy msgid "Site path" -msgstr "新訊æ¯" +msgstr "" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2778,7 +2798,7 @@ msgstr "個人圖åƒ" #: actions/pathsadminpanel.php:284 #, fuzzy msgid "Avatar server" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "個人圖åƒ" #: actions/pathsadminpanel.php:288 #, fuzzy @@ -2786,9 +2806,8 @@ msgid "Avatar path" msgstr "更新個人圖åƒ" #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "更新個人圖åƒ" +msgstr "" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" @@ -2831,18 +2850,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "新訊æ¯" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2861,9 +2878,9 @@ msgid "Not a valid people tag: %s." msgstr "æ¤ä¿¡ç®±ç„¡æ•ˆ" #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: actions/postnotice.php:95 #, fuzzy @@ -2876,8 +2893,9 @@ msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’. msgstr "" #: actions/profilesettings.php:60 +#, fuzzy msgid "Profile settings" -msgstr "" +msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" #: actions/profilesettings.php:71 msgid "" @@ -2892,44 +2910,43 @@ msgstr "" msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "1-64個å°å¯«è‹±æ–‡å—æ¯æˆ–數å—ï¼Œå‹¿åŠ æ¨™é»žç¬¦è™Ÿæˆ–ç©ºæ ¼" -#: actions/profilesettings.php:111 actions/register.php:448 +#: 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:453 +#: 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:455 +#: 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:461 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" -#: actions/profilesettings.php:125 actions/register.php:464 -#, fuzzy +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" -#: actions/profilesettings.php:127 actions/register.php:466 +#: actions/profilesettings.php:127 actions/register.php:473 msgid "Bio" msgstr "自我介紹" -#: actions/profilesettings.php:132 actions/register.php:471 +#: 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:473 +#: actions/profilesettings.php:134 actions/register.php:480 msgid "Where you are, like \"City, State (or Region), Country\"" msgstr "" @@ -2969,27 +2986,29 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 +#: actions/profilesettings.php:228 actions/register.php:230 #, fuzzy, php-format msgid "Bio is too long (max %d chars)." -msgstr "自我介紹éŽé•·(å…±140個å—å…ƒ)" +msgstr "地點éŽé•·ï¼ˆå…±255個å—)" #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." msgstr "" #: actions/profilesettings.php:241 +#, fuzzy msgid "Language is too long (max 50 chars)." -msgstr "" +msgstr "地點éŽé•·ï¼ˆå…±255個å—)" #: actions/profilesettings.php:253 actions/tagother.php:178 #, fuzzy, php-format msgid "Invalid tag: \"%s\"" -msgstr "個人首é 連çµ%s無效" +msgstr "尺寸錯誤" #: actions/profilesettings.php:306 +#, fuzzy msgid "Couldn't update user for autosubscribe." -msgstr "" +msgstr "無法更新使用者" #: actions/profilesettings.php:363 #, fuzzy @@ -3016,8 +3035,9 @@ msgid "Beyond the page limit (%s)." msgstr "" #: actions/public.php:92 +#, fuzzy msgid "Could not retrieve public stream." -msgstr "" +msgstr "無法更新使用者" #: actions/public.php:130 #, php-format @@ -3037,9 +3057,8 @@ msgid "Public Stream Feed (RSS 2.0)" msgstr "" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "%s的公開內容" +msgstr "" #: actions/public.php:188 #, php-format @@ -3105,8 +3124,9 @@ msgid "Tag cloud" msgstr "" #: actions/recoverpassword.php:36 +#, fuzzy msgid "You are already logged in!" -msgstr "" +msgstr "已登入" #: actions/recoverpassword.php:62 msgid "No such recovery code." @@ -3129,14 +3149,16 @@ msgid "This confirmation code is too old. Please start again." msgstr "" #: actions/recoverpassword.php:111 +#, fuzzy msgid "Could not update user with confirmed email address." -msgstr "" +msgstr "無法更新使用者" #: actions/recoverpassword.php:152 +#, fuzzy 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 "" +msgstr "我們已寄出一å°ä¿¡åˆ°ä½ 帳號ä¸çš„ä¿¡ç®±ï¼Œå‘Šè¨´ä½ å¦‚ä½•å–å›žä½ çš„å¯†ç¢¼ã€‚" #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " @@ -3147,8 +3169,9 @@ msgid "Password recovery" msgstr "" #: actions/recoverpassword.php:191 +#, fuzzy msgid "Nickname or email address" -msgstr "" +msgstr "請輸入暱稱或電åä¿¡ç®±" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3159,12 +3182,14 @@ msgid "Recover" msgstr "" #: actions/recoverpassword.php:208 +#, fuzzy msgid "Reset password" -msgstr "" +msgstr "新密碼" #: actions/recoverpassword.php:209 +#, fuzzy msgid "Recover password" -msgstr "" +msgstr "新密碼" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" @@ -3187,8 +3212,9 @@ msgid "Enter a nickname or email address." msgstr "請輸入暱稱或電åä¿¡ç®±" #: actions/recoverpassword.php:282 +#, fuzzy msgid "No user with that email address or username." -msgstr "" +msgstr "查無æ¤ä½¿ç”¨è€…所註冊的信箱" #: actions/recoverpassword.php:299 msgid "No registered email address for that user." @@ -3216,7 +3242,7 @@ msgstr "" msgid "Password and confirmation do not match." msgstr "" -#: actions/recoverpassword.php:388 actions/register.php:248 +#: actions/recoverpassword.php:388 actions/register.php:255 msgid "Error setting user." msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" @@ -3224,101 +3250,103 @@ msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" msgid "New password successfully saved. You are now logged in." msgstr "新密碼已儲å˜æˆåŠŸã€‚ä½ å·²ç™»å…¥ã€‚" -#: actions/register.php:85 actions/register.php:189 actions/register.php:405 +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 msgid "Sorry, only invited people can register." msgstr "" -#: actions/register.php:92 +#: actions/register.php:99 #, fuzzy msgid "Sorry, invalid invitation code." msgstr "確èªç¢¼ç™¼ç”ŸéŒ¯èª¤" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "" -#: actions/register.php:114 actions/register.php:499 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" msgstr "" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." msgstr "" -#: actions/register.php:198 +#: actions/register.php:205 msgid "You can't register if you don't agree to the license." msgstr "" -#: actions/register.php:212 +#: actions/register.php:219 msgid "Email address already exists." msgstr "æ¤é›»å信箱已註冊éŽäº†" -#: actions/register.php:243 actions/register.php:265 +#: actions/register.php:250 actions/register.php:272 msgid "Invalid username or password." msgstr "使用者å稱或密碼無效" -#: actions/register.php:343 +#: 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:425 +#: actions/register.php:432 +#, fuzzy msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -msgstr "" +msgstr "1-64個å°å¯«è‹±æ–‡å—æ¯æˆ–數å—ï¼Œå‹¿åŠ æ¨™é»žç¬¦è™Ÿæˆ–ç©ºæ ¼" -#: actions/register.php:430 +#: actions/register.php:437 +#, fuzzy msgid "6 or more characters. Required." -msgstr "" +msgstr "6個以上å—å…ƒ" -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." msgstr "" #. TRANS: Link description in user account settings menu. -#: actions/register.php:438 actions/register.php:442 +#: actions/register.php:445 actions/register.php:449 #: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132 msgid "Email" msgstr "é›»åä¿¡ç®±" -#: actions/register.php:439 actions/register.php:443 +#: actions/register.php:446 actions/register.php:450 msgid "Used only for updates, announcements, and password recovery" msgstr "" -#: actions/register.php:450 +#: actions/register.php:457 msgid "Longer name, preferably your \"real\" name" msgstr "" -#: actions/register.php:511 +#: actions/register.php:518 #, php-format msgid "" "I understand that content and data of %1$s are private and confidential." msgstr "" -#: actions/register.php:521 +#: 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:525 +#: 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:528 +#: actions/register.php:535 msgid "All rights reserved." msgstr "" #. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. -#: actions/register.php:533 -#, fuzzy, php-format +#: 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 "ä¸åŒ…å«é€™äº›å€‹äººè³‡æ–™ï¼šå¯†ç¢¼ã€é›»åä¿¡ç®±ã€ç·šä¸Šå³æ™‚通信箱ã€é›»è©±è™Ÿç¢¼" +msgstr "" -#: actions/register.php:576 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3337,7 +3365,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:600 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3352,16 +3380,18 @@ msgid "" msgstr "" #: actions/remotesubscribe.php:112 +#, fuzzy msgid "Remote subscribe" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: actions/remotesubscribe.php:124 msgid "Subscribe to a remote user" msgstr "" #: actions/remotesubscribe.php:129 +#, fuzzy msgid "User nickname" -msgstr "" +msgstr "無暱稱" #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" @@ -3377,8 +3407,9 @@ msgstr "" #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:406 +#, fuzzy msgid "Subscribe" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" @@ -3393,37 +3424,32 @@ msgid "That’s a local profile! Login to subscribe." msgstr "" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "無法å–得轉æ›æ¨™è¨˜" +msgstr "" #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." msgstr "" #: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy msgid "No notice specified." -msgstr "新訊æ¯" +msgstr "" #: actions/repeat.php:76 msgid "You can't repeat your own notice." msgstr "" #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" -#: actions/repeat.php:114 lib/noticelist.php:667 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "新增" +msgstr "" #: actions/repeat.php:119 -#, fuzzy msgid "Repeated!" -msgstr "新增" +msgstr "" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3432,30 +3458,30 @@ msgid "Replies to %s" msgstr "" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/replies.php:199 #, 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 @@ -3468,33 +3494,30 @@ 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 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s on %2$s!" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #: actions/revokerole.php:82 msgid "User doesn't have this role." msgstr "" -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "更新個人圖åƒ" +msgstr "" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #: actions/sandbox.php:72 msgid "User is already sandboxed." @@ -3502,7 +3525,7 @@ msgstr "" #. TRANS: Menu item for site administration #: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "" @@ -3528,9 +3551,8 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." @@ -3546,7 +3568,7 @@ msgid "Icon" msgstr "" #. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 #, fuzzy msgid "Name" @@ -3554,18 +3576,17 @@ msgstr "暱稱" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "地點" +msgstr "" #. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 +#: actions/showapplication.php:187 actions/version.php:200 #: lib/applicationeditform.php:216 lib/groupeditform.php:172 #, fuzzy 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 "" @@ -3618,28 +3639,29 @@ msgid "Are you sure you want to reset your consumer key and secret?" msgstr "" #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "%s與好å‹" +msgstr "" #: actions/showfavorites.php:132 +#, fuzzy msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "無法儲å˜å€‹äººè³‡æ–™" #: actions/showfavorites.php:171 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/showfavorites.php:178 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/showfavorites.php:185 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/showfavorites.php:206 msgid "" @@ -3650,16 +3672,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 @@ -3672,14 +3694,13 @@ msgid "%s group" msgstr "" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "所有訂閱" +msgstr "" #: actions/showgroup.php:227 -#, fuzzy msgid "Group profile" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/showgroup.php:272 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:178 @@ -3715,11 +3736,11 @@ msgid "Notice feed for %s group (Atom)" msgstr "" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "ç„¡æ¤é€šçŸ¥" +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 "ä½•æ™‚åŠ å…¥æœƒå“¡çš„å‘¢ï¼Ÿ" @@ -3734,12 +3755,11 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 -#, fuzzy +#: actions/showgroup.php:439 msgid "Created" -msgstr "新增" +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." @@ -3749,7 +3769,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." @@ -3758,13 +3778,14 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" #: actions/showmessage.php:81 +#, fuzzy msgid "No such message." -msgstr "" +msgstr "ç„¡æ¤ä½¿ç”¨è€…" #: actions/showmessage.php:98 msgid "Only the sender and recipient may read this message." @@ -3781,9 +3802,8 @@ msgid "Message from %1$s on %2$s" msgstr "" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "更新個人圖åƒ" +msgstr "" #: actions/showstream.php:73 #, php-format @@ -3791,14 +3811,14 @@ msgid " tagged %s" msgstr "" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s與好å‹" +msgstr "" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/showstream.php:129 #, php-format @@ -3834,8 +3854,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 @@ -3899,9 +3919,8 @@ msgid "General" msgstr "" #: actions/siteadminpanel.php:224 -#, fuzzy msgid "Site name" -msgstr "新訊æ¯" +msgstr "" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" @@ -3979,9 +3998,8 @@ msgid "Edit site-wide message" msgstr "" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "新訊æ¯" +msgstr "" #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." @@ -4003,9 +4021,8 @@ msgstr "新訊æ¯" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4016,15 +4033,13 @@ msgstr "" #. TRANS: Message given in the SMS settings if SMS is not enabled on the site. #: actions/smssettings.php:97 -#, fuzzy msgid "SMS is not available." -msgstr "個人首é ä½å€éŒ¯èª¤" +msgstr "" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "線上å³æ™‚通信箱" +msgstr "" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4038,8 +4053,9 @@ msgstr "" #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 +#, fuzzy msgid "Confirmation code" -msgstr "" +msgstr "無確èªç¢¼" #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 @@ -4060,8 +4076,9 @@ msgstr "" #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 +#, fuzzy msgid "Phone number, no punctuation or spaces, with area code" -msgstr "" +msgstr "1-64個å°å¯«è‹±æ–‡å—æ¯æˆ–數å—ï¼Œå‹¿åŠ æ¨™é»žç¬¦è™Ÿæˆ–ç©ºæ ¼" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 @@ -4082,8 +4099,9 @@ msgstr "" #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 +#, fuzzy msgid "No phone number." -msgstr "" +msgstr "ç„¡æ¤ä½¿ç”¨è€…" #. TRANS: Message given saving SMS phone number without having selected a carrier. #: actions/smssettings.php:344 @@ -4097,8 +4115,9 @@ msgstr "" #. TRANS: Message given saving SMS phone number that is already set for another user. #: actions/smssettings.php:356 +#, fuzzy msgid "That phone number already belongs to another user." -msgstr "" +msgstr "æ¤Jabber ID已有人使用" #. TRANS: Message given saving valid SMS phone number that is to be confirmed. #: actions/smssettings.php:384 @@ -4110,14 +4129,15 @@ msgstr "確èªä¿¡å·²å¯„åˆ°ä½ çš„ç·šä¸Šå³æ™‚通信箱。%sé€çµ¦ä½ 得訊æ¯è¦å #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 +#, fuzzy msgid "That is the wrong confirmation number." -msgstr "" +msgstr "無法輸入確èªç¢¼" #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 #, fuzzy msgid "SMS confirmation cancelled." -msgstr "確èªå–消" +msgstr "無確èªç¢¼" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4151,12 +4171,13 @@ msgstr "" #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 +#, fuzzy msgid "No code entered" -msgstr "" +msgstr "無內容" #. TRANS: Menu item for site administration #: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 -#: lib/adminpanelaction.php:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4210,18 +4231,19 @@ msgid "Snapshots will be sent to this URL" msgstr "" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "" #: actions/subedit.php:70 +#, fuzzy msgid "You are not subscribed to that profile." -msgstr "" +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 "註冊失敗" +msgstr "無法新增訂閱" #: actions/subscribe.php:77 msgid "This action only accepts POST requests." @@ -4247,13 +4269,14 @@ msgid "%s subscribers" msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "所有訂閱" +msgstr "" #: actions/subscribers.php:63 +#, fuzzy msgid "These are the people who listen to your notices." -msgstr "" +msgstr "ç¾åœ¨%1$s在%2$sæˆç‚ºä½ 的粉絲囉" #: actions/subscribers.php:67 #, php-format @@ -4322,9 +4345,9 @@ msgid "SMS" msgstr "" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: actions/tag.php:87 #, php-format @@ -4332,9 +4355,9 @@ msgid "Notice feed for tag %s (RSS 1.0)" msgstr "" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "發é€çµ¦%s好å‹çš„訂閱" +msgstr "" #: actions/tag.php:99 #, php-format @@ -4342,9 +4365,8 @@ msgid "Notice feed for tag %s (Atom)" msgstr "" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "ç„¡æ¤æ–‡ä»¶" +msgstr "" #: actions/tagother.php:65 #, php-format @@ -4352,9 +4374,8 @@ msgid "Tag %s" msgstr "" #: actions/tagother.php:77 lib/userprofile.php:76 -#, fuzzy msgid "User profile" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 @@ -4379,7 +4400,7 @@ msgstr "" #: actions/tagother.php:200 #, fuzzy msgid "Could not save tags." -msgstr "無法å˜å–個人圖åƒè³‡æ–™" +msgstr "無法儲å˜å€‹äººè³‡æ–™" #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." @@ -4390,14 +4411,9 @@ 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." -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: actions/unsandbox.php:72 msgid "User is not sandboxed." @@ -4482,9 +4498,8 @@ msgid "Automatically subscribe new users to this user." msgstr "" #: actions/useradminpanel.php:251 -#, fuzzy msgid "Invitations" -msgstr "地點" +msgstr "" #: actions/useradminpanel.php:256 msgid "Invitations enabled" @@ -4505,7 +4520,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4515,8 +4530,9 @@ msgstr "接å—" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 +#, fuzzy msgid "Subscribe to this user" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: actions/userauthorization.php:219 msgid "Reject" @@ -4525,7 +4541,7 @@ msgstr "" #: actions/userauthorization.php:220 #, fuzzy msgid "Reject this subscription" -msgstr "所有訂閱" +msgstr "註冊確èª" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4579,9 +4595,9 @@ msgid "Avatar URL ‘%s’ is not valid." msgstr "" #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "無法讀å–æ¤%sURL的圖åƒ" +msgstr "" #: actions/userauthorization.php:355 #, php-format @@ -4604,18 +4620,18 @@ 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 -#, fuzzy, php-format +#, php-format msgid "%1$s groups, page %2$d" -msgstr "所有訂閱" +msgstr "" #: actions/usergroups.php:132 msgid "Search for more groups" msgstr "" #: actions/usergroups.php:159 -#, php-format +#, fuzzy, php-format msgid "%s is not a member of any group." -msgstr "" +msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #: actions/usergroups.php:164 #, php-format @@ -4627,29 +4643,29 @@ msgstr "" #. 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:69 -#: lib/atomusernoticefeed.php:75 +#: 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:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" msgstr "" -#: actions/version.php:153 +#: 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:161 +#: actions/version.php:163 msgid "Contributors" msgstr "" -#: actions/version.php:168 +#: 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 " @@ -4657,7 +4673,7 @@ msgid "" "any later version. " msgstr "" -#: actions/version.php:174 +#: 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 " @@ -4665,183 +4681,278 @@ msgid "" "for more details. " msgstr "" -#: actions/version.php:180 +#: 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:189 +#: actions/version.php:191 msgid "Plugins" msgstr "" #. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. -#: actions/version.php:196 lib/action.php:779 -#, fuzzy +#: actions/version.php:198 lib/action.php:789 msgid "Version" -msgstr "地點" +msgstr "" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" msgstr "" -#: classes/File.php:169 +#. 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:179 +#. 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:186 +#. 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 "ç„¡æ¤é€šçŸ¥" +msgstr "" -#: classes/Group_member.php:53 -#, fuzzy +#. 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 "無法更新使用者" +msgstr "" -#: classes/Group_member.php:60 -#, fuzzy +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 msgid "Group leave failed." -msgstr "ç„¡æ¤é€šçŸ¥" +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 -#, fuzzy, php-format +#. 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 "無法å˜å–個人圖åƒè³‡æ–™" +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 +#, fuzzy msgid "Could not insert message." -msgstr "" +msgstr "無法新增訂閱" -#: 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 "無法更新使用者" + +#. 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:176 +#: classes/Notice.php:190 #, fuzzy, php-format msgid "Database error inserting hashtag: %s" -msgstr "å¢žåŠ å›žè¦†æ™‚,資料庫發生錯誤: %s" +msgstr "個人圖åƒæ’入錯誤" -#: classes/Notice.php:245 +#. 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:249 +#. 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:254 +#. 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:260 +#. 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:266 +#. 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:332 classes/Notice.php:358 +#. 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 +#, fuzzy 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 "" -#: classes/Notice.php:967 -#, fuzzy +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:991 msgid "Problem saving group inbox." -msgstr "儲å˜ä½¿ç”¨è€…發生錯誤" +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:1552 +#: classes/Notice.php:1746 #, 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:737 +#, 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:746 +#, 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 +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 +#, fuzzy msgid "Already subscribed!" -msgstr "" +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." -msgstr "無法刪除帳號" +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." -msgstr "無法刪除帳號" +msgid "Could not delete subscription OMB token." +msgstr "無法新增訂閱" -#: 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 "無法新增訂閱" -#: 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 "無法å˜å–個人圖åƒè³‡æ–™" +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 "註冊失敗" +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 "註冊失敗" +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 "註冊失敗" +msgstr "無法儲å˜å€‹äººè³‡æ–™" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 @@ -4856,8 +4967,9 @@ msgstr "無法上傳個人圖åƒ" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 +#, fuzzy msgid "Change your password" -msgstr "" +msgstr "更改密碼" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:130 @@ -4866,9 +4978,8 @@ msgstr "" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 -#, fuzzy msgid "Design your profile" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 @@ -4892,217 +5003,207 @@ msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:436 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: 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:435 -#, fuzzy +#: lib/action.php:445 msgctxt "MENU" msgid "Personal" -msgstr "地點" +msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:447 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "更改密碼" +msgstr "" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:452 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "" #. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services -#: lib/action.php:445 +#: lib/action.php:455 msgid "Connect" msgstr "連çµ" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:458 msgctxt "TOOLTIP" msgid "Change site configuration" -msgstr "確èªä¿¡ç®±" +msgstr "" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:461 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: 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:458 -#, fuzzy +#: lib/action.php:468 msgctxt "MENU" msgid "Invite" -msgstr "尺寸錯誤" +msgstr "" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: 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:467 -#, fuzzy +#: lib/action.php:477 msgctxt "MENU" msgid "Logout" -msgstr "登出" +msgstr "" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:482 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "新增帳號" +msgstr "" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy +#: lib/action.php:485 msgctxt "MENU" msgid "Register" -msgstr "所有訂閱" +msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:488 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:491 #, fuzzy msgctxt "MENU" msgid "Login" msgstr "登入" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:494 #, fuzzy msgctxt "TOOLTIP" msgid "Help me!" msgstr "求救" -#: lib/action.php:487 +#: lib/action.php:497 #, fuzzy msgctxt "MENU" msgid "Help" msgstr "求救" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:500 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: 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:515 lib/adminpanelaction.php:399 +#: lib/action.php:525 lib/adminpanelaction.php:400 #, fuzzy msgid "Site notice" msgstr "新訊æ¯" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:592 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:659 #, fuzzy msgid "Page notice" msgstr "新訊æ¯" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:762 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:768 msgid "Help" msgstr "求救" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:771 msgid "About" msgstr "關於" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:774 msgid "FAQ" msgstr "常見å•é¡Œ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:779 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:783 msgid "Privacy" msgstr "" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:786 msgid "Source" msgstr "" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:792 msgid "Contact" msgstr "好å‹åå–®" -#: lib/action.php:784 +#: lib/action.php:794 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: 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:817 -#, fuzzy, php-format +#: lib/action.php:827 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%**是由[%%site.broughtby%%](%%site.broughtbyurl%%)所æ供的微型" -"部è½æ ¼æœå‹™" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:830 #, php-format msgid "**%%site.name%%** is a microblogging service." msgstr "**%%site.name%%**是個微型部è½æ ¼" #. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license. -#: lib/action.php:824 +#: lib/action.php:834 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5111,53 +5212,51 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, fuzzy +#: lib/action.php:850 msgid "Site content license" -msgstr "新訊æ¯" +msgstr "" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: 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:854 +#: 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:858 +#: 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:871 +#: 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:1182 +#: 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:1193 +#: 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:1203 -#, fuzzy +#: lib/action.php:1213 msgid "Before" -msgstr "之å‰çš„內容»" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. #: lib/activity.php:122 @@ -5203,74 +5302,72 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 +#: lib/adminpanelaction.php:350 #, fuzzy msgid "Basic site configuration" msgstr "確èªä¿¡ç®±" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" -msgstr "新訊æ¯" +msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 #, fuzzy msgid "Design configuration" msgstr "確èªä¿¡ç®±" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "地點" +msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 #, fuzzy msgid "User configuration" -msgstr "確èªä¿¡ç®±" +msgstr "無確èªç¢¼" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 #, fuzzy msgid "Access configuration" msgstr "確èªä¿¡ç®±" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 #, fuzzy msgid "Paths configuration" msgstr "確èªä¿¡ç®±" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 #, fuzzy msgid "Sessions configuration" msgstr "確èªä¿¡ç®±" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 #, fuzzy msgid "Edit site notice" msgstr "新訊æ¯" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 #, fuzzy msgid "Snapshots configuration" msgstr "確èªä¿¡ç®±" #. TRANS: Client error 401. -#: lib/apiauth.php:112 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5286,15 +5383,14 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 @@ -5401,11 +5497,11 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" msgstr "" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "" @@ -5426,9 +5522,8 @@ msgid "Notice with that id does not exist" msgstr "" #: lib/command.php:99 lib/command.php:596 -#, fuzzy msgid "User has no last notice" -msgstr "新訊æ¯" +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. @@ -5481,14 +5576,14 @@ msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" #: lib/command.php:339 #, fuzzy, php-format msgid "Could not join user %1$s to group %2$s" -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%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 -#, fuzzy, php-format +#, php-format msgid "Could not remove user %1$s from group %2$s" -msgstr "無法從 %s 建立OpenID" +msgstr "" #. TRANS: Whois output. %s is the full name of the queried user. #: lib/command.php:418 @@ -5498,23 +5593,23 @@ 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:263 -#, php-format +#: lib/command.php:422 lib/mail.php:268 +#, fuzzy, php-format msgid "Location: %s" -msgstr "" +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:266 -#, php-format +#: lib/command.php:426 lib/mail.php:271 +#, fuzzy, php-format msgid "Homepage: %s" -msgstr "" +msgstr "個人首é " #. TRANS: Whois output. %s is the bio information of the queried user. #: lib/command.php:430 -#, php-format +#, fuzzy, php-format msgid "About: %s" -msgstr "" +msgstr "關於" #: lib/command.php:457 #, php-format @@ -5538,25 +5633,24 @@ msgid "Direct message to %s sent" msgstr "" #: lib/command.php:494 +#, fuzzy msgid "Error sending direct message." -msgstr "" +msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" #: lib/command.php:514 -#, fuzzy msgid "Cannot repeat your own notice" -msgstr "儲å˜ä½¿ç”¨è€…發生錯誤" +msgstr "" #: lib/command.php:519 -#, fuzzy msgid "Already repeated that notice" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +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 -#, fuzzy, php-format +#, php-format msgid "Notice from %s repeated" -msgstr "更新個人圖åƒ" +msgstr "" #: lib/command.php:531 #, fuzzy @@ -5569,9 +5663,9 @@ msgid "Notice too long - maximum is %d characters, you sent %d" msgstr "" #: lib/command.php:571 -#, fuzzy, php-format +#, php-format msgid "Reply to %s sent" -msgstr "&s的微型部è½æ ¼" +msgstr "" #: lib/command.php:573 msgid "Error saving notice." @@ -5604,16 +5698,18 @@ msgid "Command not yet implemented." msgstr "" #: lib/command.php:685 +#, fuzzy msgid "Notification off." -msgstr "" +msgstr "無確èªç¢¼" #: lib/command.php:687 msgid "Can't turn off notification." msgstr "" #: lib/command.php:708 +#, fuzzy msgid "Notification on." -msgstr "" +msgstr "無確èªç¢¼" #: lib/command.php:710 msgid "Can't turn on notification." @@ -5748,9 +5844,8 @@ msgid "Database error" msgstr "" #: lib/designsettings.php:105 -#, fuzzy msgid "Upload file" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: lib/designsettings.php:109 msgid "" @@ -5828,14 +5923,13 @@ msgid "URL of the homepage or blog of the group or topic" msgstr "" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "請在140個å—以內æè¿°ä½ è‡ªå·±èˆ‡ä½ çš„èˆˆè¶£" +msgstr "" #: lib/groupeditform.php:179 msgid "" @@ -5852,14 +5946,13 @@ msgid "Group" msgstr "" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: lib/groupnav.php:102 -#, fuzzy, php-format +#, php-format msgid "%s blocked users" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: lib/groupnav.php:108 #, php-format @@ -5869,7 +5962,7 @@ msgstr "" #: lib/groupnav.php:113 #, fuzzy msgid "Logo" -msgstr "登出" +msgstr "登入" #: lib/groupnav.php:114 #, php-format @@ -5909,8 +6002,9 @@ msgid "That file is too big. The maximum file size is %s." msgstr "" #: lib/imagefile.php:93 +#, fuzzy msgid "Partial upload." -msgstr "" +msgstr "更新個人圖åƒ" #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." @@ -5921,9 +6015,8 @@ msgid "Not an image or corrupt file." msgstr "" #: lib/imagefile.php:122 -#, fuzzy msgid "Lost our file." -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" @@ -5962,9 +6055,8 @@ msgid "Login with a username and password" msgstr "使用者å稱或密碼無效" #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" -msgstr "新增帳號" +msgstr "" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 @@ -5995,9 +6087,16 @@ msgstr "" msgid "%1$s is now listening to your notices on %2$s." msgstr "ç¾åœ¨%1$s在%2$sæˆç‚ºä½ 的粉絲囉" +#: 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:249 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6010,28 +6109,21 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"ç¾åœ¨%1$s在%2$sæˆç‚ºä½ 的粉絲囉。\n" -"\n" -"\t%3$s\n" -"\n" -"\n" -"%4$s.\n" -"敬上。\n" #. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 +#: lib/mail.php:274 #, fuzzy, php-format msgid "Bio: %s" msgstr "自我介紹" #. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 -#, php-format +#: lib/mail.php:304 +#, fuzzy, php-format msgid "New email address for posting to %s" -msgstr "" +msgstr "查無æ¤ä½¿ç”¨è€…所註冊的信箱" #. TRANS: Body of notification mail for new posting email address -#: lib/mail.php:302 +#: lib/mail.php:308 #, php-format msgid "" "You have a new posting address on %1$s.\n" @@ -6045,30 +6137,31 @@ msgid "" msgstr "" #. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 -#, php-format +#: lib/mail.php:433 +#, fuzzy, php-format msgid "%s status" -msgstr "" +msgstr "%1$s的狀態是%2$s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 +#, fuzzy msgid "SMS confirmation" -msgstr "" +msgstr "無確èªç¢¼" #. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 +#: 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:478 +#: lib/mail.php:484 #, php-format msgid "You've been nudged by %s" msgstr "" #. TRANS: Body for 'nudge' notification email -#: lib/mail.php:483 +#: lib/mail.php:489 #, php-format msgid "" "%1$s (%2$s) is wondering what you are up to these days and is inviting you " @@ -6085,13 +6178,13 @@ msgid "" msgstr "" #. TRANS: Subject for direct-message notification email -#: lib/mail.php:530 +#: lib/mail.php:536 #, php-format msgid "New private message from %s" msgstr "" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 +#: lib/mail.php:541 #, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" @@ -6111,13 +6204,13 @@ msgid "" msgstr "" #. TRANS: Subject for favorite notification email -#: lib/mail.php:583 -#, fuzzy, php-format +#: lib/mail.php:589 +#, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "ç¾åœ¨%1$s在%2$sæˆç‚ºä½ 的粉絲囉" +msgstr "" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 +#: lib/mail.php:592 #, php-format msgid "" "%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n" @@ -6139,7 +6232,7 @@ msgid "" msgstr "" #. TRANS: Line in @-reply notification e-mail. %s is conversation URL. -#: lib/mail.php:645 +#: lib/mail.php:651 #, php-format msgid "" "The full conversation can be read here:\n" @@ -6147,13 +6240,13 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 +#: 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:654 +#: lib/mail.php:660 #, php-format msgid "" "%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n" @@ -6190,17 +6283,19 @@ 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:228 lib/noticelist.php:506 msgid "from" msgstr "" #: lib/mailhandler.php:37 +#, fuzzy msgid "Could not parse message." -msgstr "" +msgstr "無法更新使用者" #: lib/mailhandler.php:42 +#, fuzzy msgid "Not a registered user." -msgstr "" +msgstr "æ¤æ¢å¾©ç¢¼éŒ¯èª¤" #: lib/mailhandler.php:46 msgid "Sorry, that is not your incoming email address." @@ -6245,25 +6340,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 -#, fuzzy +#: lib/mediafile.php:202 lib/mediafile.php:238 msgid "Could not determine file's MIME type." -msgstr "無法更新使用者" +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 "" @@ -6305,14 +6399,12 @@ msgid "Attach a file" msgstr "" #: lib/noticeform.php:212 -#, fuzzy msgid "Share my location" -msgstr "無法儲å˜å€‹äººè³‡æ–™" +msgstr "" #: lib/noticeform.php:215 -#, fuzzy msgid "Do not share my location" -msgstr "無法儲å˜å€‹äººè³‡æ–™" +msgstr "" #: lib/noticeform.php:216 msgid "" @@ -6321,56 +6413,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:568 #, fuzzy msgid "in context" msgstr "無內容" -#: lib/noticelist.php:594 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "新增" +msgstr "" -#: lib/noticelist.php:621 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:622 +#: lib/noticelist.php:631 msgid "Reply" msgstr "" -#: lib/noticelist.php:666 -#, fuzzy +#: lib/noticelist.php:675 msgid "Notice repeated" -msgstr "更新個人圖åƒ" +msgstr "" #: lib/nudgeform.php:116 msgid "Nudge this user" @@ -6447,16 +6537,18 @@ msgid "Unknown" msgstr "" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 +#, fuzzy msgid "Subscriptions" -msgstr "" +msgstr "所有訂閱" #: lib/profileaction.php:126 msgid "All subscriptions" msgstr "所有訂閱" #: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90 +#, fuzzy msgid "Subscribers" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: lib/profileaction.php:161 #, fuzzy @@ -6480,7 +6572,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6504,31 +6596,28 @@ msgstr "" msgid "Popular" msgstr "" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "ç„¡æ¤æ–‡ä»¶" +msgstr "" #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: lib/repeatform.php:132 msgid "Yes" msgstr "" #: lib/repeatform.php:132 -#, fuzzy msgid "Repeat this notice" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6537,9 +6626,8 @@ msgid "Sandbox" msgstr "" #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: lib/searchaction.php:120 msgid "Search site" @@ -6582,14 +6670,12 @@ msgid "More..." msgstr "" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "新訊æ¯" +msgstr "" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: lib/subgroupnav.php:83 #, fuzzy, php-format @@ -6629,6 +6715,50 @@ msgstr "" 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 +#, fuzzy +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 +#, fuzzy +msgid "Error opening theme archive." +msgstr "æ›´æ–°é 端個人資料發生錯誤" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6638,26 +6768,26 @@ msgid "Unsandbox" msgstr "" #: lib/unsandboxform.php:80 -#, fuzzy msgid "Unsandbox this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "ç„¡æ¤ä½¿ç”¨è€…" +msgstr "" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 +#, fuzzy msgid "Unsubscribe from this user" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: lib/unsubscribeform.php:137 +#, fuzzy msgid "Unsubscribe" -msgstr "" +msgstr "æ¤å¸³è™Ÿå·²è¨»å†Š" #: lib/usernoprofileexception.php:58 #, php-format @@ -6680,7 +6810,7 @@ msgstr "" #: lib/userprofile.php:263 #, fuzzy msgid "Edit profile settings" -msgstr "線上å³æ™‚通è¨å®š" +msgstr "使用者è¨å®šç™¼ç”ŸéŒ¯èª¤" #: lib/userprofile.php:264 msgid "Edit" @@ -6699,9 +6829,8 @@ msgid "Moderate" msgstr "" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "ç„¡æ¤é€šçŸ¥" +msgstr "" #: lib/userprofile.php:366 msgctxt "role" @@ -6714,56 +6843,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1083 +#: 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:1086 +#: 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:1090 +#: 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:1093 +#: 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:1097 +#: 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:1100 +#: 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:1104 +#: 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:1107 +#: 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:1111 +#: 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:1114 +#: lib/util.php:1131 msgid "about a year ago" msgstr "" 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/Autocomplete/AutocompletePlugin.php b/plugins/Autocomplete/AutocompletePlugin.php index b2b18bf27..b2be365dd 100644 --- a/plugins/Autocomplete/AutocompletePlugin.php +++ b/plugins/Autocomplete/AutocompletePlugin.php @@ -22,7 +22,8 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @copyright 2010 Free Software Foundation http://fsf.org + * @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/ */ diff --git a/plugins/Autocomplete/autocomplete.php b/plugins/Autocomplete/autocomplete.php index 379390ffd..9a30ba01d 100644 --- a/plugins/Autocomplete/autocomplete.php +++ b/plugins/Autocomplete/autocomplete.php @@ -23,6 +23,7 @@ * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> * @copyright 2008-2009 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/ */ diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php index f7f28b4d6..11e3c0b84 100644 --- a/plugins/BitlyUrl/BitlyUrlPlugin.php +++ b/plugins/BitlyUrl/BitlyUrlPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/CasAuthentication/CasAuthenticationPlugin.php b/plugins/CasAuthentication/CasAuthenticationPlugin.php index 203e5fe42..1662db3eb 100644 --- a/plugins/CasAuthentication/CasAuthenticationPlugin.php +++ b/plugins/CasAuthentication/CasAuthenticationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/ClientSideShorten/ClientSideShortenPlugin.php b/plugins/ClientSideShorten/ClientSideShortenPlugin.php index ba1f7d3a7..57f5ad89e 100644 --- a/plugins/ClientSideShorten/ClientSideShortenPlugin.php +++ b/plugins/ClientSideShorten/ClientSideShortenPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/ClientSideShorten/shorten.php b/plugins/ClientSideShorten/shorten.php index 07c19e2e7..f67cbf3b2 100644 --- a/plugins/ClientSideShorten/shorten.php +++ b/plugins/ClientSideShorten/shorten.php @@ -23,6 +23,7 @@ * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> * @copyright 2008-2009 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/ */ diff --git a/plugins/DisqusPlugin.php b/plugins/DisqusPlugin.php new file mode 100644 index 000000000..dc56f320c --- /dev/null +++ b/plugins/DisqusPlugin.php @@ -0,0 +1,171 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugin to add Disqus commenting to notice pages + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @copyright 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); +} + +/** + * + * This plugin adds Disqus commenting to your notices. Enabling this + * plugin will make each notice page display the Disqus widget, and + * notice lists will display the number of commments each notice has. + * + * To use this plugin, you need to first register your site with Disqus + * and get a Discus 'shortname' for it. + * + * http://disqus.com + * + * To enable the plugin, put the following in you config.php: + * + * addPlugin( + * 'Disqus', array( + * 'shortname' => 'YOURSHORTNAME', + * 'div_style' => 'width:675px; padding-top:10px; position:relative; float:left;' + * ) + * ); + * + * NOTE: the 'div_style' in an optional parameter that passes in some + * inline CSS when creating the Disqus widget. It's a shortcut to make + * the widget look OK with the default StatusNet theme. If you leave + * it out you'll have to edit your theme CSS files to make the widget + * look good. You can also control the way the widget looks by + * adding style rules to your theme. + * + * See: http://help.disqus.com/entries/100878-css-customization + * + * @category Plugin + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see Event + */ + +class DisqusPlugin extends Plugin +{ + function onEndShowContentBlock($action) + { + if (get_class($action) == 'ShownoticeAction') { + + $attrs = array(); + $attrs['id'] = 'disqus_thread'; + + if ($this->div_style) { + $attrs['style'] = $this->div_style; + } + + $action->element('div', $attrs, null); + + $script = <<<ENDOFSCRIPT +var disqus_identifier = %d; + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = 'http://%s.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); +ENDOFSCRIPT; + + $action->inlineScript(sprintf($script, $action->notice->id, $this->shortname)); + + $attrs = array(); + + $attrs['id'] = 'disqus_thread_footer'; + + if ($this->div_style) { + $attrs['style'] = $this->div_style; + } + + $action->elementStart('div', $attrs); + $action->elementStart('noscript'); + + $action->raw('Please enable JavaScript to view the '); + $noscriptUrl = 'http://disqus.com/?ref_noscript=' . $this->shortname; + $action->element('a', array('href' => $noscriptUrl), 'comments powered by Disqus.'); + $action->elementEnd('noscript'); + + $action->elementStart('a', array('href' => 'http://disqus.com', 'class' => 'dsq-brlink')); + $action->raw('blog comments powered by '); + $action->element('span', array('class' => 'logo-disqus'), 'Disqus'); + $action->elementEnd('a'); + $action->elementEnd('div'); + } + } + + function onEndShowScripts($action) + { + // fugly + $script = <<<ENDOFSCRIPT +var disqus_shortname = '%s'; +(function () { + var s = document.createElement('script'); s.async = true; + s.src = 'http://disqus.com/forums/%s/count.js'; + (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); +}()); +ENDOFSCRIPT; + $action->inlineScript(sprintf($script, $this->shortname, $this->shortname)); + + return true; + } + + function onStartShowNoticeItem($noticeListItem) + { + if (empty($noticeListItem->notice->is_local)) { + return true; + } + + $noticeListItem->showNotice(); + $noticeListItem->showNoticeInfo(); + + $noticeUrl = $noticeListItem->notice->bestUrl(); + $noticeUrl .= '#disqus_thread'; + + $noticeListItem->out->element( + 'a', array('href' => $noticeUrl, 'class' => 'disqus_count', 'Comments') + ); + + $noticeListItem->showNoticeOptions(); + Event::handle('EndShowNoticeItem', array($noticeListItem)); + + return false; + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'Disqus', + 'version' => STATUSNET_VERSION, + 'author' => 'Zach Copley', + 'homepage' => 'http://status.net/wiki/Plugin:Disqus', + 'rawdescription' => + _m('Use <a href="http://disqus.com/">Disqus</a>'. + ' to add commenting to notice pages.')); + return true; + } +} diff --git a/plugins/EchoPlugin.php b/plugins/EchoPlugin.php new file mode 100644 index 000000000..7b51866eb --- /dev/null +++ b/plugins/EchoPlugin.php @@ -0,0 +1,116 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugin to add Echo/JS-Kit commenting to notice pages + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Plugin to use Echo (formerly JS-Kit) + * + * This plugin adds an Echo commenting widget to each notice page on + * your site. To get it to work, first you'll have to sign up for Echo + * (a for-pay service) and register your site's URL. + * + * http://aboutecho.com/ + * + * Once you've done that it's pretty straight forward to turn the + * plugin on; just add this to your config.php: + * + * addPlugin( + * 'Echo', + * array('div_style' => 'width:675px; padding-top:10px; position:relative; float:left;') + * ); + * + * NOTE: the 'div_style' in an optional parameter that passes in some + * inline CSS when creating the Echo widget. It's a shortcut to make + * the widget look OK with the default StatusNet theme. If you leave + * it out you'll have to edit your theme CSS files to make the widget + * look good. You can also control the way the widget looks by + * adding style rules to your theme. + * + * See: http://wiki.js-kit.com/Skinning-Guide#UsingCSSnbsptocustomizefontsandcolors + * + * @category Plugin + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + * + * @see Event + */ + +class EchoPlugin extends Plugin +{ + // NOTE: The Echo documentation says that this script will change on + // a per site basis, but I think that's incorrect. It always seems to + // be the same. + public $script = 'http://cdn.js-kit.com/scripts/comments.js'; + + function onEndShowScripts($action) + { + if (get_class($action) == 'ShownoticeAction') { + $action->script($this->script); + } + + return true; + } + + function onEndShowContentBlock($action) + { + if (get_class($action) == 'ShownoticeAction') { + + $attrs = array(); + $attrs['class'] = 'js-kit-comments'; + $attrs['permalink'] = $action->notice->uri; + $attrs['uniq'] = $action->notice->id; + + // NOTE: there are some other attributes that could be useful + // http://wiki.js-kit.com/Echo-Behavior + + if (!empty($this->div_style)) { + $attrs['style'] = $this->div_style; + } + + $action->element('div', $attrs, null); + } + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'Echo', + 'version' => STATUSNET_VERSION, + 'author' => 'Zach Copley', + 'homepage' => 'http://status.net/wiki/Plugin:Echo', + 'rawdescription' => + _m('Use <a href="http://aboutecho.com/">Echo</a>'. + ' to add commenting to notice pages.')); + return true; + } +} diff --git a/plugins/EmailAuthentication/EmailAuthenticationPlugin.php b/plugins/EmailAuthentication/EmailAuthenticationPlugin.php index 406c00073..4c018537b 100644 --- a/plugins/EmailAuthentication/EmailAuthenticationPlugin.php +++ b/plugins/EmailAuthentication/EmailAuthenticationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/Facebook/FacebookPlugin.php b/plugins/Facebook/FacebookPlugin.php index 5dba73a5d..19989a952 100644 --- a/plugins/Facebook/FacebookPlugin.php +++ b/plugins/Facebook/FacebookPlugin.php @@ -585,7 +585,7 @@ class FacebookPlugin extends Plugin function onStartEnqueueNotice($notice, &$transports) { - if (self::hasKeys()) { + if (self::hasKeys() && $notice->isLocal()) { array_push($transports, 'facebook'); } return true; diff --git a/plugins/Facebook/README b/plugins/Facebook/README index 14c1d3241..532f1d82e 100644 --- a/plugins/Facebook/README +++ b/plugins/Facebook/README @@ -38,11 +38,11 @@ editor or write them down. In Facebook's application editor, specify the following URLs for your app: -- Canvas Callback URL : http://example.net/mublog/facebook/app/ -- Post-Remove Callback URL: http://example.net/mublog/facebook/app/remove -- Post-Add Redirect URL : http://apps.facebook.com/yourapp/ -- Canvas Page URL : http://apps.facebook.com/yourapp/ -- Connect URL : http://example.net/mublog/ +- Canvas Callback URL : http://example.net/mublog/facebook/app/ +- Post-Remove Callback URL : http://example.net/mublog/facebook/app/remove +- Post-Authorize Redirect URL : http://apps.facebook.com/yourapp/ +- Canvas Page URL : http://apps.facebook.com/yourapp/ +- Connect URL : http://example.net/mublog/ *** ATTENTION *** These URLs have changed slightly since StatusNet version 0.8.1, diff --git a/plugins/Facebook/facebook/facebook.php b/plugins/Facebook/facebook/facebook.php index 440706cbc..76696c1d5 100644 --- a/plugins/Facebook/facebook/facebook.php +++ b/plugins/Facebook/facebook/facebook.php @@ -45,7 +45,9 @@ class Facebook { public $user; public $profile_user; public $canvas_user; + public $ext_perms = array(); protected $base_domain; + /* * Create a Facebook client like this: * @@ -104,17 +106,17 @@ class Facebook { * * For nitty-gritty details of when each of these is used, check out * http://wiki.developers.facebook.com/index.php/Verifying_The_Signature - * - * @param bool resolve_auth_token convert an auth token into a session */ - public function validate_fb_params($resolve_auth_token=true) { + public function validate_fb_params() { $this->fb_params = $this->get_valid_fb_params($_POST, 48 * 3600, 'fb_sig'); // note that with preload FQL, it's possible to receive POST params in // addition to GET, so use a different prefix to differentiate them if (!$this->fb_params) { $fb_params = $this->get_valid_fb_params($_GET, 48 * 3600, 'fb_sig'); - $fb_post_params = $this->get_valid_fb_params($_POST, 48 * 3600, 'fb_post_sig'); + $fb_post_params = $this->get_valid_fb_params($_POST, + 48 * 3600, // 48 hours + 'fb_post_sig'); $this->fb_params = array_merge($fb_params, $fb_post_params); } @@ -128,6 +130,9 @@ class Facebook { $this->fb_params['canvas_user'] : null; $this->base_domain = isset($this->fb_params['base_domain']) ? $this->fb_params['base_domain'] : null; + $this->ext_perms = isset($this->fb_params['ext_perms']) ? + explode(',', $this->fb_params['ext_perms']) + : array(); if (isset($this->fb_params['session_key'])) { $session_key = $this->fb_params['session_key']; @@ -141,13 +146,11 @@ class Facebook { $this->set_user($user, $session_key, $expires); - } - // if no Facebook parameters were found in the GET or POST variables, - // then fall back to cookies, which may have cached user information - // Cookies are also used to receive session data via the Javascript API - else if ($cookies = - $this->get_valid_fb_params($_COOKIE, null, $this->api_key)) { - + } else if ($cookies = + $this->get_valid_fb_params($_COOKIE, null, $this->api_key)) { + // if no Facebook parameters were found in the GET or POST variables, + // then fall back to cookies, which may have cached user information + // Cookies are also used to receive session data via the Javascript API $base_domain_cookie = 'base_domain_' . $this->api_key; if (isset($_COOKIE[$base_domain_cookie])) { $this->base_domain = $_COOKIE[$base_domain_cookie]; @@ -160,25 +163,6 @@ class Facebook { $cookies['session_key'], $expires); } - // finally, if we received no parameters, but the 'auth_token' GET var - // is present, then we are in the middle of auth handshake, - // so go ahead and create the session - else if ($resolve_auth_token && isset($_GET['auth_token']) && - $session = $this->do_get_session($_GET['auth_token'])) { - if ($this->generate_session_secret && - !empty($session['secret'])) { - $session_secret = $session['secret']; - } - - if (isset($session['base_domain'])) { - $this->base_domain = $session['base_domain']; - } - - $this->set_user($session['uid'], - $session['session_key'], - $session['expires'], - isset($session_secret) ? $session_secret : null); - } return !empty($this->fb_params); } @@ -309,11 +293,28 @@ class Facebook { // require_add and require_install have been removed. // see http://developer.facebook.com/news.php?blog=1&story=116 for more details - public function require_login() { - if ($user = $this->get_loggedin_user()) { + public function require_login($required_permissions = '') { + $user = $this->get_loggedin_user(); + $has_permissions = true; + + if ($required_permissions) { + $this->require_frame(); + $permissions = array_map('trim', explode(',', $required_permissions)); + foreach ($permissions as $permission) { + if (!in_array($permission, $this->ext_perms)) { + $has_permissions = false; + break; + } + } + } + + if ($user && $has_permissions) { return $user; } - $this->redirect($this->get_login_url(self::current_url(), $this->in_frame())); + + $this->redirect( + $this->get_login_url(self::current_url(), $this->in_frame(), + $required_permissions)); } public function require_frame() { @@ -342,10 +343,11 @@ class Facebook { return $page . '?' . http_build_query($params); } - public function get_login_url($next, $canvas) { + public function get_login_url($next, $canvas, $req_perms = '') { $page = self::get_facebook_url().'/login.php'; - $params = array('api_key' => $this->api_key, - 'v' => '1.0'); + $params = array('api_key' => $this->api_key, + 'v' => '1.0', + 'req_perms' => $req_perms); if ($next) { $params['next'] = $next; diff --git a/plugins/Facebook/facebook/facebookapi_php5_restlib.php b/plugins/Facebook/facebook/facebookapi_php5_restlib.php index fa1088cd0..e249a326b 100755 --- a/plugins/Facebook/facebook/facebookapi_php5_restlib.php +++ b/plugins/Facebook/facebook/facebookapi_php5_restlib.php @@ -569,7 +569,7 @@ function toggleDisplay(id, type) { return $this->call_method('facebook.events.invite', array('eid' => $eid, 'uids' => $uids, - 'personal_message', $personal_message)); + 'personal_message' => $personal_message)); } /** @@ -1350,53 +1350,6 @@ function toggleDisplay(id, type) { ); } - /** - * Dashboard API - */ - - /** - * Set the news for the specified user. - * - * @param int $uid The user for whom you are setting news for - * @param string $news Text of news to display - * - * @return bool Success - */ - public function dashboard_setNews($uid, $news) { - return $this->call_method('facebook.dashboard.setNews', - array('uid' => $uid, - 'news' => $news) - ); - } - - /** - * Get the current news of the specified user. - * - * @param int $uid The user to get the news of - * - * @return string The text of the current news for the user - */ - public function dashboard_getNews($uid) { - return json_decode( - $this->call_method('facebook.dashboard.getNews', - array('uid' => $uid) - ), true); - } - - /** - * Set the news for the specified user. - * - * @param int $uid The user you are clearing the news of - * - * @return bool Success - */ - public function dashboard_clearNews($uid) { - return $this->call_method('facebook.dashboard.clearNews', - array('uid' => $uid) - ); - } - - /** * Creates a note with the specified title and content. @@ -2005,7 +1958,7 @@ function toggleDisplay(id, type) { * @return array A list of strings describing any compile errors for the * submitted FBML */ - function profile_setFBML($markup, + public function profile_setFBML($markup, $uid=null, $profile='', $profile_action='', @@ -3267,9 +3220,8 @@ function toggleDisplay(id, type) { } else { $get['v'] = '1.0'; } - if (isset($this->use_ssl_resources) && - $this->use_ssl_resources) { - $post['return_ssl_resources'] = true; + if (isset($this->use_ssl_resources)) { + $post['return_ssl_resources'] = (bool) $this->use_ssl_resources; } return array($get, $post); } diff --git a/plugins/Facebook/facebooksettings.php b/plugins/Facebook/facebooksettings.php index 766d0e199..f94a346b5 100644 --- a/plugins/Facebook/facebooksettings.php +++ b/plugins/Facebook/facebooksettings.php @@ -54,22 +54,11 @@ class FacebooksettingsAction extends FacebookAction $noticesync = $this->boolean('noticesync'); $replysync = $this->boolean('replysync'); - $prefix = $this->trimmed('prefix'); $original = clone($this->flink); $this->flink->set_flags($noticesync, false, $replysync, false); $result = $this->flink->update($original); - if ($prefix == '' || $prefix == '0') { - // Facebook bug: saving empty strings to prefs now fails - // http://bugs.developers.facebook.com/show_bug.cgi?id=7110 - $trimmed = $prefix . ' '; - } else { - $trimmed = substr($prefix, 0, 128); - } - $this->facebook->api_client->data_setUserPreference(FACEBOOK_NOTICE_PREFIX, - $trimmed); - if ($result === false) { $this->showForm(_m('There was a problem saving your sync preferences!')); } else { @@ -110,16 +99,6 @@ class FacebooksettingsAction extends FacebookAction $this->elementStart('li'); - $prefix = trim($this->facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX)); - - $this->input('prefix', _m('Prefix'), - ($prefix) ? $prefix : null, - _m('A string to prefix notices with.')); - - $this->elementEnd('li'); - - $this->elementStart('li'); - $this->submit('save', _m('Save')); $this->elementEnd('li'); diff --git a/plugins/Facebook/facebookutil.php b/plugins/Facebook/facebookutil.php index ab2d42726..1290fed55 100644 --- a/plugins/Facebook/facebookutil.php +++ b/plugins/Facebook/facebookutil.php @@ -81,101 +81,251 @@ function isFacebookBound($notice, $flink) { function facebookBroadcastNotice($notice) { $facebook = getFacebook(); - $flink = Foreign_link::getByUserID($notice->profile_id, FACEBOOK_SERVICE); + $flink = Foreign_link::getByUserID( + $notice->profile_id, + FACEBOOK_SERVICE + ); if (isFacebookBound($notice, $flink)) { // Okay, we're good to go, update the FB status - $status = null; $fbuid = $flink->foreign_id; $user = $flink->getUser(); - $attachments = $notice->attachments(); try { - // Get the status 'verb' (prefix) the user has set + // Check permissions - // XXX: Does this call count against our per user FB request limit? - // If so we should consider storing verb elsewhere or not storing + common_debug( + 'FacebookPlugin - checking for publish_stream permission for user ' + . "$user->nickname ($user->id), Facebook UID: $fbuid" + ); - $prefix = trim($facebook->api_client->data_getUserPreference(FACEBOOK_NOTICE_PREFIX, - $fbuid)); + // NOTE: $facebook->api_client->users_hasAppPermission('publish_stream', $fbuid) + // has been returning bogus results, so we're using FQL to check for + // publish_stream permission now - $status = "$prefix $notice->content"; + $fql = "SELECT publish_stream FROM permissions WHERE uid = $fbuid"; + $result = $facebook->api_client->fql_query($fql); - common_debug("FacebookPlugin - checking for publish_stream permission for user $user->id"); + $canPublish = 0; - $can_publish = $facebook->api_client->users_hasAppPermission('publish_stream', - $fbuid); + if (!empty($result)) { + $canPublish = $result[0]['publish_stream']; + } + + if ($canPublish == 1) { + common_debug( + "FacebookPlugin - $user->nickname ($user->id), Facebook UID: $fbuid " + . 'has publish_stream permission.' + ); + } else { + common_debug( + "FacebookPlugin - $user->nickname ($user->id), Facebook UID: $fbuid " + . 'does NOT have publish_stream permission. Facebook ' + . 'returned: ' . var_export($result, true) + ); + } - common_debug("FacebookPlugin - checking for status_update permission for user $user->id"); + common_debug( + 'FacebookPlugin - checking for status_update permission for user ' + . "$user->nickname ($user->id), Facebook UID: $fbuid. " + ); + + $canUpdate = $facebook->api_client->users_hasAppPermission( + 'status_update', + $fbuid + ); + + if ($canUpdate == 1) { + common_debug( + "FacebookPlugin - $user->nickname ($user->id), Facebook UID: $fbuid " + . 'has status_update permission.' + ); + } else { + common_debug( + "FacebookPlugin - $user->nickname ($user->id), Facebook UID: $fbuid " + .'does NOT have status_update permission. Facebook ' + . 'returned: ' . var_export($canPublish, true) + ); + } - $can_update = $facebook->api_client->users_hasAppPermission('status_update', - $fbuid); - if (!empty($attachments) && $can_publish == 1) { - $fbattachment = format_attachments($attachments); - $facebook->api_client->stream_publish($status, $fbattachment, - null, null, $fbuid); - common_log(LOG_INFO, - "FacebookPlugin - Posted notice $notice->id w/attachment " . - "to Facebook user's stream (fbuid = $fbuid)."); - } elseif ($can_update == 1 || $can_publish == 1) { - $facebook->api_client->users_setStatus($status, $fbuid, false, true); - common_log(LOG_INFO, - "FacebookPlugin - Posted notice $notice->id to Facebook " . - "as a status update (fbuid = $fbuid)."); + // Post to Facebook + + if ($notice->hasAttachments() && $canPublish == 1) { + publishStream($notice, $user, $fbuid); + } elseif ($canUpdate == 1 || $canPublish == 1) { + statusUpdate($notice, $user, $fbuid); } else { $msg = "FacebookPlugin - Not sending notice $notice->id to Facebook " . - "because user $user->nickname hasn't given the " . + "because user $user->nickname has not given the " . 'Facebook app \'status_update\' or \'publish_stream\' permission.'; common_log(LOG_WARNING, $msg); } // Finally, attempt to update the user's profile box - if ($can_publish == 1 || $can_update == 1) { - updateProfileBox($facebook, $flink, $notice); + if ($canPublish == 1 || $canUpdate == 1) { + updateProfileBox($facebook, $flink, $notice, $user); } } catch (FacebookRestClientException $e) { + return handleFacebookError($e, $notice, $flink); + } + } - $code = $e->getCode(); - - $msg = "FacebookPlugin - Facebook returned error code $code: " . - $e->getMessage() . ' - ' . - "Unable to update Facebook status (notice $notice->id) " . - "for $user->nickname (user id: $user->id)!"; + return true; +} - common_log(LOG_WARNING, $msg); +function handleFacebookError($e, $notice, $flink) +{ + $fbuid = $flink->foreign_id; + $user = $flink->getUser(); + $code = $e->getCode(); + $errmsg = $e->getMessage(); + + // XXX: Check for any others? + switch($code) { + case 100: // Invalid parameter + $msg = "FacebookPlugin - Facebook claims notice %d was posted with an invalid parameter (error code 100):" + . "\"%s\" (Notice details: nickname=%s, user ID=%d, Facebook ID=%d, notice content=\"%s\"). " + . "Removing notice from the Facebook queue for safety."; + common_log( + LOG_ERR, sprintf( + $msg, + $notice->id, + $errmsg, + $user->nickname, + $user->id, + $fbuid, + $notice->content + ) + ); + return true; + break; + case 200: // Permissions error + case 250: // Updating status requires the extended permission status_update + remove_facebook_app($flink); + return true; // dequeue + break; + case 341: // Feed action request limit reached + $msg = "FacebookPlugin - User %s (User ID=%d, Facebook ID=%d) has exceeded " + . "his/her limit for posting notices to Facebook today. Dequeuing " + . "notice %d."; + common_log( + LOG_INFO, sprintf( + $msg, + $user->nickname, + $user->id, + $fbuid, + $notice->id + ) + ); + // @fixme: We want to rety at a later time when the throttling has expired + // instead of just giving up. + return true; + break; + default: + $msg = "FacebookPlugin - Facebook returned an error we don't know how to deal with while trying to " + . "post notice %d. Error code: %d, error message: \"%s\". (Notice details: " + . "nickname=%s, user ID=%d, Facebook ID=%d, notice content=\"%s\"). Removing notice " + . "from the Facebook queue for safety."; + common_log( + LOG_ERR, sprintf( + $msg, + $notice->id, + $code, + $errmsg, + $user->nickname, + $user->id, + $fbuid, + $notice->content + ) + ); + return true; // dequeue + break; + } +} - if ($code == 100 || $code == 200 || $code == 250) { +function statusUpdate($notice, $user, $fbuid) +{ + common_debug( + "FacebookPlugin - Attempting to post notice $notice->id " + . "as a status update for $user->nickname ($user->id), " + . "Facebook UID: $fbuid" + ); - // 100 The account is 'inactive' (probably - this is not well documented) - // 200 The application does not have permission to operate on the passed in uid parameter. - // 250 Updating status requires the extended permission status_update or publish_stream. - // see: http://wiki.developers.facebook.com/index.php/Users.setStatus#Example_Return_XML + $facebook = getFacebook(); + $result = $facebook->api_client->users_setStatus( + $notice->content, + $fbuid, + false, + true + ); + + common_debug('Facebook returned: ' . var_export($result, true)); + + common_log( + LOG_INFO, + "FacebookPlugin - Posted notice $notice->id as a status " + . "update for $user->nickname ($user->id), " + . "Facebook UID: $fbuid" + ); +} - remove_facebook_app($flink); +function publishStream($notice, $user, $fbuid) +{ + common_debug( + "FacebookPlugin - Attempting to post notice $notice->id " + . "as stream item with attachment for $user->nickname ($user->id), " + . "Facebook UID: $fbuid" + ); - } else { + $fbattachment = format_attachments($notice->attachments()); - // Try sending again later. + $facebook = getFacebook(); + $facebook->api_client->stream_publish( + $notice->content, + $fbattachment, + null, + null, + $fbuid + ); + + common_log( + LOG_INFO, + "FacebookPlugin - Posted notice $notice->id as a stream " + . "item with attachment for $user->nickname ($user->id), " + . "Facebook UID: $fbuid" + ); +} - return false; - } +function updateProfileBox($facebook, $flink, $notice, $user) { - } - } + $facebook = getFacebook(); + $fbaction = new FacebookAction( + $output = 'php://output', + $indent = null, + $facebook, + $flink + ); - return true; + $fbuid = $flink->foreign_id; -} + common_debug( + 'FacebookPlugin - Attempting to update profile box with ' + . "content from notice $notice->id for $user->nickname ($user->id), " + . "Facebook UID: $fbuid" + ); -function updateProfileBox($facebook, $flink, $notice) { - $fbaction = new FacebookAction($output = 'php://output', - $indent = null, $facebook, $flink); $fbaction->updateProfileBox($notice); + + common_debug( + 'FacebookPlugin - finished updating profile box for ' + . "$user->nickname ($user->id) Facebook UID: $fbuid" + ); + } function format_attachments($attachments) diff --git a/plugins/FirePHP/FirePHPPlugin.php b/plugins/FirePHP/FirePHPPlugin.php index 9143ff69c..d984ec1af 100644 --- a/plugins/FirePHP/FirePHPPlugin.php +++ b/plugins/FirePHP/FirePHPPlugin.php @@ -24,11 +24,13 @@ Author URI: http://candrews.integralblue.com/ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/** + * @category Plugin * @package MinifyPlugin * @maintainer Craig Andrews <candrews@integralblue.com> + * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php index bc5899943..3815a31fa 100644 --- a/plugins/GeonamesPlugin.php +++ b/plugins/GeonamesPlugin.php @@ -376,7 +376,7 @@ class GeonamesPlugin extends Plugin return true; } - $url = 'http://sw.geonames.org/' . $location->location_id . '/'; + $url = 'http://sws.geonames.org/' . $location->location_id . '/'; // it's been filled, so don't process further. return false; diff --git a/plugins/Gravatar/GravatarPlugin.php b/plugins/Gravatar/GravatarPlugin.php index 580852072..8a9721ea9 100644 --- a/plugins/Gravatar/GravatarPlugin.php +++ b/plugins/Gravatar/GravatarPlugin.php @@ -30,11 +30,13 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { class GravatarPlugin extends Plugin { - function onInitializePlugin() { + function onInitializePlugin() + { return true; } - function onStartAvatarFormData($action) { + function onStartAvatarFormData($action) + { $user = common_current_user(); $hasGravatar = $this->hasGravatar($user->id); @@ -43,7 +45,8 @@ class GravatarPlugin extends Plugin } } - function onEndAvatarFormData(&$action) { + function onEndAvatarFormData($action) + { $user = common_current_user(); $hasGravatar = $this->hasGravatar($user->id); @@ -89,7 +92,8 @@ class GravatarPlugin extends Plugin } } - function onStartAvatarSaveForm($action) { + function onStartAvatarSaveForm($action) + { if ($action->arg('add')) { $result = $this->gravatar_save(); @@ -178,7 +182,8 @@ class GravatarPlugin extends Plugin 'success' => true); } - function gravatar_url($email, $size) { + function gravatar_url($email, $size) + { $url = "http://www.gravatar.com/avatar.php?gravatar_id=". md5(strtolower($email)). "&default=".urlencode(Avatar::defaultImage($size)). @@ -197,4 +202,4 @@ class GravatarPlugin extends Plugin return true; } -} +}
\ No newline at end of file diff --git a/plugins/Imap/ImapPlugin.php b/plugins/Imap/ImapPlugin.php index d1e920b00..66be799d3 100644 --- a/plugins/Imap/ImapPlugin.php +++ b/plugins/Imap/ImapPlugin.php @@ -21,8 +21,9 @@ * * @category Plugin * @package StatusNet - * @author Zach Copley <zach@status.net> + * @author Craig Andrews <candrews@integralblue.com * @copyright 2009 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/ */ @@ -37,6 +38,7 @@ if (!defined('STATUSNET')) { * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com + * @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/ */ diff --git a/plugins/Imap/imapmanager.php b/plugins/Imap/imapmanager.php index e4fda5809..0bbd42e78 100644 --- a/plugins/Imap/imapmanager.php +++ b/plugins/Imap/imapmanager.php @@ -23,6 +23,8 @@ * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> * @copyright 2009-2010 StatusNet, Inc. + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org + * @maintainer Craig Andrews <candrews@integralblue.com> * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ diff --git a/plugins/InfiniteScroll/InfiniteScrollPlugin.php b/plugins/InfiniteScroll/InfiniteScrollPlugin.php index a4d1a5d05..50c1b5a20 100644 --- a/plugins/InfiniteScroll/InfiniteScrollPlugin.php +++ b/plugins/InfiniteScroll/InfiniteScrollPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/LdapAuthentication/LdapAuthenticationPlugin.php b/plugins/LdapAuthentication/LdapAuthenticationPlugin.php index 0dfc4c63b..52d326287 100644 --- a/plugins/LdapAuthentication/LdapAuthenticationPlugin.php +++ b/plugins/LdapAuthentication/LdapAuthenticationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/LdapAuthorization/LdapAuthorizationPlugin.php b/plugins/LdapAuthorization/LdapAuthorizationPlugin.php index 97103d158..3842385cf 100644 --- a/plugins/LdapAuthorization/LdapAuthorizationPlugin.php +++ b/plugins/LdapAuthorization/LdapAuthorizationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/LdapCommon/LdapCommon.php b/plugins/LdapCommon/LdapCommon.php index ee436d824..1f1647a75 100644 --- a/plugins/LdapCommon/LdapCommon.php +++ b/plugins/LdapCommon/LdapCommon.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/LdapCommon/MemcacheSchemaCache.php b/plugins/LdapCommon/MemcacheSchemaCache.php index 6b91d17d6..4ee2e8e16 100644 --- a/plugins/LdapCommon/MemcacheSchemaCache.php +++ b/plugins/LdapCommon/MemcacheSchemaCache.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/LilUrl/LilUrlPlugin.php b/plugins/LilUrl/LilUrlPlugin.php index c3e37c0c0..1c3d6f84b 100644 --- a/plugins/LilUrl/LilUrlPlugin.php +++ b/plugins/LilUrl/LilUrlPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index 868933fd4..e7240a644 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -125,8 +125,8 @@ class MapstractionPlugin extends Plugin $action->script('http://tile.cloudmade.com/wml/0.2/web-maps-lite.js'); break; case 'google': - $action->script(sprintf('http://maps.google.com/maps?file=api&v=2&sensor=false&key=%s', - $this->apikey)); + $action->script(sprintf('http://maps.google.com/maps?file=api&v=2&sensor=false&key=%s', + urlencode($this->apikey))); break; case 'microsoft': $action->script('http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6'); @@ -137,7 +137,7 @@ class MapstractionPlugin extends Plugin break; case 'yahoo': $action->script(sprintf('http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=%s', - $this->apikey)); + urlencode($this->apikey))); break; case 'geocommons': // don't support this yet default: diff --git a/plugins/Mapstraction/allmap.php b/plugins/Mapstraction/allmap.php index e73aa76e8..5dab670e2 100644 --- a/plugins/Mapstraction/allmap.php +++ b/plugins/Mapstraction/allmap.php @@ -38,6 +38,7 @@ if (!defined('STATUSNET')) { * @package StatusNet * @author Evan Prodromou <evan@status.net> * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ diff --git a/plugins/Mapstraction/map.php b/plugins/Mapstraction/map.php index b809c1b8e..7dab8e10a 100644 --- a/plugins/Mapstraction/map.php +++ b/plugins/Mapstraction/map.php @@ -38,6 +38,7 @@ if (!defined('STATUSNET')) { * @package StatusNet * @author Evan Prodromou <evan@status.net> * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ diff --git a/plugins/Mapstraction/usermap.js b/plugins/Mapstraction/usermap.js index 4b7a6c26b..53cfe6bb0 100644 --- a/plugins/Mapstraction/usermap.js +++ b/plugins/Mapstraction/usermap.js @@ -104,7 +104,7 @@ function showMapstraction(element, notices) { pt = new mxn.LatLonPoint(lat, lon); mkr = new mxn.Marker(pt); - mkr.setIcon(n['user']['profile_image_url']); + mkr.setIcon(n['user']['profile_image_url'], [24, 24]); mkr.setInfoBubble('<a href="'+ n['user']['profile_url'] + '">' + n['user']['screen_name'] + '</a>' + ' ' + n['html'] + '<br/><a href="'+ n['url'] + '">'+ n['created_at'] + '</a>'); diff --git a/plugins/Mapstraction/usermap.php b/plugins/Mapstraction/usermap.php index ff47b6ada..094334f60 100644 --- a/plugins/Mapstraction/usermap.php +++ b/plugins/Mapstraction/usermap.php @@ -38,6 +38,7 @@ if (!defined('STATUSNET')) { * @package StatusNet * @author Evan Prodromou <evan@status.net> * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ diff --git a/plugins/MemcachedPlugin.php b/plugins/MemcachedPlugin.php index 707e6db9a..77b989b95 100644 --- a/plugins/MemcachedPlugin.php +++ b/plugins/MemcachedPlugin.php @@ -22,8 +22,10 @@ * * @category Cache * @package StatusNet - * @author Evan Prodromou <evan@status.net>, Craig Andrews <candrews@integralblue.com> + * @author Evan Prodromou <evan@status.net> + * @author Craig Andrews <candrews@integralblue.com> * @copyright 2009 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/ */ @@ -43,8 +45,10 @@ if (!defined('STATUSNET')) { * * @category Cache * @package StatusNet - * @author Evan Prodromou <evan@status.net>, Craig Andrews <candrews@integralblue.com> + * @author Evan Prodromou <evan@status.net> + * @author Craig Andrews <candrews@integralblue.com> * @copyright 2009 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/ */ diff --git a/plugins/Meteor/MeteorPlugin.php b/plugins/Meteor/MeteorPlugin.php index 5600d5fcc..ec8c9e217 100644 --- a/plugins/Meteor/MeteorPlugin.php +++ b/plugins/Meteor/MeteorPlugin.php @@ -50,6 +50,7 @@ class MeteorPlugin extends RealtimePlugin public $controlport = null; public $controlserver = null; public $channelbase = null; + public $persistent = true; protected $_socket = null; function __construct($webserver=null, $webport=4670, $controlport=4671, $controlserver=null, $channelbase='') @@ -102,8 +103,14 @@ class MeteorPlugin extends RealtimePlugin function _connect() { $controlserver = (empty($this->controlserver)) ? $this->webserver : $this->controlserver; + + $errno = $errstr = null; + $timeout = 5; + $flags = STREAM_CLIENT_CONNECT; + if ($this->persistent) $flags |= STREAM_CLIENT_PERSISTENT; + // May throw an exception. - $this->_socket = stream_socket_client("tcp://{$controlserver}:{$this->controlport}"); + $this->_socket = stream_socket_client("tcp://{$controlserver}:{$this->controlport}", $errno, $errstr, $timeout, $flags); if (!$this->_socket) { throw new Exception("Couldn't connect to {$controlserver} on {$this->controlport}"); } @@ -124,8 +131,10 @@ class MeteorPlugin extends RealtimePlugin function _disconnect() { - $cnt = fwrite($this->_socket, "QUIT\n"); - @fclose($this->_socket); + if (!$this->persistent) { + $cnt = fwrite($this->_socket, "QUIT\n"); + @fclose($this->_socket); + } } // Meteord flips out with default '/' separator diff --git a/plugins/Minify/MinifyPlugin.php b/plugins/Minify/MinifyPlugin.php index 69def6064..13010e75a 100644 --- a/plugins/Minify/MinifyPlugin.php +++ b/plugins/Minify/MinifyPlugin.php @@ -29,6 +29,7 @@ Author URI: http://candrews.integralblue.com/ /** * @package MinifyPlugin * @maintainer Craig Andrews <candrews@integralblue.com> + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } 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/NoticeTitle/NoticeTitlePlugin.php b/plugins/NoticeTitle/NoticeTitlePlugin.php new file mode 100644 index 000000000..f7fb1e4d0 --- /dev/null +++ b/plugins/NoticeTitle/NoticeTitlePlugin.php @@ -0,0 +1,282 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * A plugin to add titles to notices + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category NoticeTitle + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +define('NOTICE_TITLE_PLUGIN_VERSION', '0.1'); + +/** + * NoticeTitle plugin to add an optional title to notices. + * + * Stores notice titles in a secondary table, notice_title. + * + * @category NoticeTitle + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class NoticeTitlePlugin extends Plugin +{ + /** + * Database schema setup + * + * Add the notice_title helper table + * + * @see Schema + * @see ColumnDef + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onCheckSchema() + { + $schema = Schema::get(); + + // For storing titles for notices + + $schema->ensureTable('notice_title', + array(new ColumnDef('notice_id', + 'integer', + null, + true, + 'PRI'), + new ColumnDef('title', + 'varchar', + Notice_title::MAXCHARS, + false))); + + return true; + } + + /** + * Load related modules when needed + * + * @param string $cls Name of the class to be loaded + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onAutoload($cls) + { + $dir = dirname(__FILE__); + + switch ($cls) + { + case 'Notice_title': + include_once $dir . '/'.$cls.'.php'; + return false; + default: + return true; + } + } + + /** + * Provide plugin version information. + * + * This data is used when showing the version page. + * + * @param array &$versions array of version data arrays; see EVENTS.txt + * + * @return boolean hook value + */ + + function onPluginVersion(&$versions) + { + $url = 'http://status.net/wiki/Plugin:NoticeTitle'; + + $versions[] = array('name' => 'NoticeTitle', + 'version' => NOTICE_TITLE_PLUGIN_VERSION, + 'author' => 'Evan Prodromou', + 'homepage' => $url, + 'rawdescription' => + _m('Adds optional titles to notices')); + return true; + } + + /** + * Show title entry when showing notice form + * + * @param Form $form Form being shown + * + * @return boolean hook value + */ + + function onStartShowNoticeFormData($form) + { + $form->out->element('style', + null, + 'label#notice_data-text-label { display: none }'); + $form->out->element('input', array('type' => 'text', + 'id' => 'notice_title', + 'name' => 'notice_title', + 'size' => 40, + 'maxlength' => Notice_title::MAXCHARS)); + return true; + } + + /** + * Validate notice title before saving + * + * @param Action $action NewNoticeAction being executed + * @param integer &$authorId Author ID + * @param string &$text Text of the notice + * @param array &$options Options array + * + * @return boolean hook value + */ + + function onStartNoticeSaveWeb($action, &$authorId, &$text, &$options) + { + $title = $action->trimmed('notice_title'); + if (!empty($title)) { + if (mb_strlen($title) > Notice_title::MAXCHARS) { + throw new Exception(sprintf(_m("Notice title too long (max %d)", + Notice_title::MAXCHARS))); + } + } + return true; + } + + /** + * Save notice title after notice is saved + * + * @param Action $action NewNoticeAction being executed + * @param Notice $notice Notice that was saved + * + * @return boolean hook value + */ + + function onEndNoticeSaveWeb($action, $notice) + { + if (!empty($notice)) { + + $title = $action->trimmed('notice_title'); + + if (!empty($title)) { + + $nt = new Notice_title(); + + $nt->notice_id = $notice->id; + $nt->title = $title; + + $nt->insert(); + } + } + + return true; + } + + /** + * Show the notice title in lists + * + * @param NoticeListItem $nli NoticeListItem being shown + * + * @return boolean hook value + */ + + function onStartShowNoticeItem($nli) + { + $title = Notice_title::fromNotice($nli->notice); + + if (!empty($title)) { + $nli->out->element('h4', array('class' => 'notice_title'), $title); + } + + return true; + } + + /** + * Show the notice title in RSS output + * + * @param Notice $notice Notice being shown + * @param array &$entry array of values used for RSS output + * + * @return boolean hook value + */ + + function onEndRssEntryArray($notice, &$entry) + { + $title = Notice_title::fromNotice($notice); + + if (!empty($title)) { + $entry['title'] = $title; + } + + return true; + } + + /** + * Show the notice title in Atom output + * + * @param Notice &$notice Notice being shown + * @param XMLStringer &$xs output context + * @param string &$output string to be output as title + * + * @return boolean hook value + */ + + function onStartActivityTitle(&$notice, &$xs, &$output) + { + $title = Notice_title::fromNotice($notice); + + if (!empty($title)) { + $output = $title; + } + + return true; + } + + /** + * Remove title when the notice is deleted + * + * @param Notice $notice Notice being deleted + * + * @return boolean hook value + */ + + function onNoticeDeleteRelated($notice) + { + $nt = Notice_title::staticGet('notice_id', $notice->id); + + if (!empty($nt)) { + $nt->delete(); + } + + return true; + } +} + diff --git a/plugins/NoticeTitle/Notice_title.php b/plugins/NoticeTitle/Notice_title.php new file mode 100644 index 000000000..b66ea9901 --- /dev/null +++ b/plugins/NoticeTitle/Notice_title.php @@ -0,0 +1,138 @@ +<?php +/** + * Data class for notice titles + * + * PHP version 5 + * + * @category Data + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; + +/** + * Data class for notice titles + * + * @category Action + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * @see DB_DataObject + */ + +class Notice_title extends Memcached_DataObject +{ + const MAXCHARS = 255; + + public $__table = 'notice_title'; // table name + public $notice_id; // int(4) primary_key not_null + public $title; // varchar(255) + + /** + * Get an instance by key + * + * This is a utility method to get a single instance with a given key value. + * + * @param string $k Key to use to lookup (usually 'user_id' for this class) + * @param mixed $v Value to lookup + * + * @return Notice_title object found, or null for no hits + * + */ + + function staticGet($k, $v=null) + { + return Memcached_DataObject::staticGet('Notice_title', $k, $v); + } + + /** + * return table definition for DB_DataObject + * + * DB_DataObject needs to know something about the table to manipulate + * instances. This method provides all the DB_DataObject needs to know. + * + * @return array array of column definitions + */ + + function table() + { + return array('notice_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'title' => DB_DATAOBJECT_STR); + } + + /** + * return key definitions for DB_DataObject + * + * @return array list of key field names + */ + + function keys() + { + return array_keys($this->keyTypes()); + } + + /** + * return key definitions for Memcached_DataObject + * + * @return array list mapping field names to key types + */ + + function keyTypes() + { + return array('notice_id' => 'K'); + } + + /** + * Magic formula for non-autoincrementing integer primary keys + * + * @return array magic three-false array that stops auto-incrementing. + */ + + function sequenceKey() + { + return array(false, false, false); + } + + /** + * Get a notice title based on the notice + * + * @param Notice $notice Notice to fetch a title for + * + * @return string title of the notice, or null if none + */ + + static function fromNotice($notice) + { + $nt = Notice_title::staticGet('notice_id', $notice->id); + if (empty($nt)) { + return null; + } else { + return $nt->title; + } + } +} diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index 5b153216e..6fef20d6f 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -28,6 +28,15 @@ set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/ext class FeedSubException extends Exception { + function __construct($msg=null) + { + $type = get_class($this); + if ($msg) { + parent::__construct("$type: $msg"); + } else { + parent::__construct($type); + } + } } class OStatusPlugin extends Plugin @@ -87,6 +96,8 @@ class OStatusPlugin extends Plugin // Outgoing from our internal PuSH hub $qm->connect('hubconf', 'HubConfQueueHandler'); + $qm->connect('hubprep', 'HubPrepQueueHandler'); + $qm->connect('hubout', 'HubOutQueueHandler'); // Outgoing Salmon replies (when we don't need a return value) @@ -102,8 +113,10 @@ class OStatusPlugin extends Plugin */ function onStartEnqueueNotice($notice, &$transports) { - // put our transport first, in case there's any conflict (like OMB) - array_unshift($transports, 'ostatus'); + if ($notice->isLocal()) { + // put our transport first, in case there's any conflict (like OMB) + array_unshift($transports, 'ostatus'); + } return true; } @@ -154,6 +167,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)); } @@ -473,6 +489,24 @@ class OStatusPlugin extends Plugin } /** + * Tell the FeedSub infrastructure whether we have any active OStatus + * usage for the feed; if not it'll be able to garbage-collect the + * feed subscription. + * + * @param FeedSub $feedsub + * @param integer $count in/out + * @return mixed hook return code + */ + function onFeedSubSubscriberCount($feedsub, &$count) + { + $oprofile = Ostatus_profile::staticGet('feeduri', $feedsub->uri); + if ($oprofile) { + $count += $oprofile->subscriberCount(); + } + return true; + } + + /** * When about to subscribe to a remote user, start a server-to-server * PuSH subscription if needed. If we can't establish that, abort. * @@ -949,4 +983,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/README b/plugins/OStatus/README index 3a98b7b25..ea5dfc055 100644 --- a/plugins/OStatus/README +++ b/plugins/OStatus/README @@ -1,18 +1,42 @@ -Plugin to support importing updates from external RSS and Atom feeds into your timeline. +Plugin to support importing and exporting notices through Atom and RSS feeds. +The OStatus plugin concentrates on user-to-user cases for federating StatusNet +and similar social networking / microblogging / blogging sites, but includes +low-level feed subscription systems which are used by some other plugins. + +Uses PubSubHubbub for push feed updates; currently non-PuSH feeds cannot be +subscribed unless an external PuSH hub proxy is used. -Uses PubSubHubbub for push feed updates; currently non-PuSH feeds cannot be subscribed. Configuration options available: $config['ostatus']['hub'] (default internal hub) - Set to URL of an external PuSH hub to use it instead of our internal hub. + Set to URL of an external PuSH hub to use it instead of our internal hub + for sending outgoing updates in user and group feeds. $config['ostatus']['hub_retries'] (default 0) Number of times to retry a PuSH send to consumers if using internal hub +Settings controlling incoming feed subscription: + +$config['feedsub']['fallback_hub'] + To subscribe to feeds that don't have a hub, an external PuSH proxy hub + such as Superfeedr may be used. Any feed without a hub of its own will + be subscribed through the specified hub URL instead. If the external hub + has usage charges, be aware that there is no restriction placed to how + many feeds may be subscribed! + + $config['feedsub']['fallback_hub'] = 'https://superfeedr.com/hubbub'; + +$config['feedsub']['hub_user'] +$config['feedsub']['hub_password'] + If using the fallback hub mode, these settings may be used to provide + HTTP authentication credentials for contacting the hub. Default hubs + specified from feeds are assumed to not require + + For testing, shouldn't be used in production: $config['ostatus']['skip_signatures'] @@ -23,12 +47,11 @@ $config['feedsub']['nohub'] (default require hub) Allow low-level feed subscription setup for feeds without hubs. Not actually usable at this stage, OStatus will check for hubs too - and we have no polling backend. + and we have no polling backend. (The fallback hub option can be used + with a 3rd-party service to provide such polling.) Todo: -* fully functional l10n -* redo non-OStatus feed support -** rssCloud support? -** possibly a polling daemon to support non-PuSH feeds? +* better support for feeds that aren't natively oriented at social networking * make use of tags/categories from feeds +* better repeat handling diff --git a/plugins/OStatus/actions/groupsalmon.php b/plugins/OStatus/actions/groupsalmon.php index d60725a71..5094dccf0 100644 --- a/plugins/OStatus/actions/groupsalmon.php +++ b/plugins/OStatus/actions/groupsalmon.php @@ -61,7 +61,7 @@ class GroupsalmonAction extends SalmonAction function handlePost() { // @fixme process all objects? - switch ($this->act->objects[0]->type) { + switch ($this->activity->objects[0]->type) { case ActivityObject::ARTICLE: case ActivityObject::BLOGENTRY: case ActivityObject::NOTE: @@ -74,7 +74,7 @@ class GroupsalmonAction extends SalmonAction // Notice must be to the attention of this group - $context = $this->act->context; + $context = $this->activity->context; if (empty($context->attention)) { throw new ClientException("Not to the attention of anyone."); 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/actions/usersalmon.php b/plugins/OStatus/actions/usersalmon.php index 6c360c49f..641e131ab 100644 --- a/plugins/OStatus/actions/usersalmon.php +++ b/plugins/OStatus/actions/usersalmon.php @@ -55,10 +55,10 @@ class UsersalmonAction extends SalmonAction */ function handlePost() { - common_log(LOG_INFO, "Received post of '{$this->act->objects[0]->id}' from '{$this->act->actor->id}'"); + common_log(LOG_INFO, "Received post of '{$this->activity->objects[0]->id}' from '{$this->activity->actor->id}'"); // @fixme: process all activity objects? - switch ($this->act->objects[0]->type) { + switch ($this->activity->objects[0]->type) { case ActivityObject::ARTICLE: case ActivityObject::BLOGENTRY: case ActivityObject::NOTE: @@ -72,7 +72,7 @@ class UsersalmonAction extends SalmonAction // Notice must either be a) in reply to a notice by this user // or b) to the attention of this user - $context = $this->act->context; + $context = $this->activity->context; if (!empty($context->replyToID)) { $notice = Notice::staticGet('uri', $context->replyToID); @@ -92,7 +92,7 @@ class UsersalmonAction extends SalmonAction throw new ClientException("Not to anyone in reply to anything!"); } - $existing = Notice::staticGet('uri', $this->act->objects[0]->id); + $existing = Notice::staticGet('uri', $this->activity->objects[0]->id); if (!empty($existing)) { common_log(LOG_ERR, "Not saving notice '{$existing->uri}'; already exists."); @@ -143,7 +143,7 @@ class UsersalmonAction extends SalmonAction function handleFavorite() { - $notice = $this->getNotice($this->act->objects[0]); + $notice = $this->getNotice($this->activity->objects[0]); $profile = $this->ensureProfile()->localProfile(); $old = Fave::pkeyGet(array('user_id' => $profile->id, @@ -164,7 +164,7 @@ class UsersalmonAction extends SalmonAction */ function handleUnfavorite() { - $notice = $this->getNotice($this->act->objects[0]); + $notice = $this->getNotice($this->activity->objects[0]); $profile = $this->ensureProfile()->localProfile(); $fave = Fave::pkeyGet(array('user_id' => $profile->id, diff --git a/plugins/OStatus/classes/FeedSub.php b/plugins/OStatus/classes/FeedSub.php index b10509dae..dd1968db1 100644 --- a/plugins/OStatus/classes/FeedSub.php +++ b/plugins/OStatus/classes/FeedSub.php @@ -207,8 +207,8 @@ class FeedSub extends Memcached_DataObject $discover = new FeedDiscovery(); $discover->discoverFromFeedURL($feeduri); - $huburi = $discover->getAtomLink('hub'); - if (!$huburi) { + $huburi = $discover->getHubLink(); + if (!$huburi && !common_config('feedsub', 'fallback_hub')) { throw new FeedSubNoHubException(); } @@ -241,8 +241,12 @@ class FeedSub extends Memcached_DataObject common_log(LOG_WARNING, "Attempting to (re)start PuSH subscription to $this->uri in unexpected state $this->sub_state"); } if (empty($this->huburi)) { - if (common_config('feedsub', 'nohub')) { + if (common_config('feedsub', 'fallback_hub')) { + // No native hub on this feed? + // Use our fallback hub, which handles polling on our behalf. + } else if (common_config('feedsub', 'nohub')) { // Fake it! We're just testing remote feeds w/o hubs. + // We'll never actually get updates in this mode. return true; } else { throw new ServerException("Attempting to start PuSH subscription for feed with no hub"); @@ -255,6 +259,9 @@ class FeedSub extends Memcached_DataObject /** * Send a PuSH unsubscription request to the hub for this feed. * The hub will later send us a confirmation POST to /main/push/callback. + * Warning: this will cancel the subscription even if someone else in + * the system is using it. Most callers will want garbageCollect() instead, + * which confirms there's no uses left. * * @return bool true on success, false on failure * @throws ServerException if feed state is not valid @@ -264,8 +271,12 @@ class FeedSub extends Memcached_DataObject common_log(LOG_WARNING, "Attempting to (re)end PuSH subscription to $this->uri in unexpected state $this->sub_state"); } if (empty($this->huburi)) { - if (common_config('feedsub', 'nohub')) { + if (common_config('feedsub', 'fallback_hub')) { + // No native hub on this feed? + // Use our fallback hub, which handles polling on our behalf. + } else if (common_config('feedsub', 'nohub')) { // Fake it! We're just testing remote feeds w/o hubs. + // We'll never actually get updates in this mode. return true; } else { throw new ServerException("Attempting to end PuSH subscription for feed with no hub"); @@ -275,6 +286,33 @@ class FeedSub extends Memcached_DataObject return $this->doSubscribe('unsubscribe'); } + /** + * Check if there are any active local uses of this feed, and if not then + * make sure it's inactive, unsubscribing if necessary. + * + * @return boolean true if the subscription is now inactive, false if still active. + */ + public function garbageCollect() + { + if ($this->sub_state == '' || $this->sub_state == 'inactive') { + // No active PuSH subscription, we can just leave it be. + return true; + } else { + // PuSH subscription is either active or in an indeterminate state. + // Check if we're out of subscribers, and if so send an unsubscribe. + $count = 0; + Event::handle('FeedSubSubscriberCount', array($this, &$count)); + + if ($count) { + common_log(LOG_INFO, __METHOD__ . ': ok, ' . $count . ' user(s) left for ' . $this->uri); + return false; + } else { + common_log(LOG_INFO, __METHOD__ . ': unsubscribing, no users left for ' . $this->uri); + return $this->unsubscribe(); + } + } + } + protected function doSubscribe($mode) { $orig = clone($this); @@ -296,7 +334,21 @@ class FeedSub extends Memcached_DataObject 'hub.secret' => $this->secret, 'hub.topic' => $this->uri); $client = new HTTPClient(); - $response = $client->post($this->huburi, $headers, $post); + if ($this->huburi) { + $hub = $this->huburi; + } else { + if (common_config('feedsub', 'fallback_hub')) { + $hub = common_config('feedsub', 'fallback_hub'); + if (common_config('feedsub', 'hub_user')) { + $u = common_config('feedsub', 'hub_user'); + $p = common_config('feedsub', 'hub_pass'); + $client->setAuth($u, $p); + } + } else { + throw new FeedSubException('WTF?'); + } + } + $response = $client->post($hub, $headers, $post); $status = $response->getStatus(); if ($status == 202) { common_log(LOG_INFO, __METHOD__ . ': sub req ok, awaiting verification callback'); diff --git a/plugins/OStatus/classes/HubSub.php b/plugins/OStatus/classes/HubSub.php index cdace3c1f..7db528a4e 100644 --- a/plugins/OStatus/classes/HubSub.php +++ b/plugins/OStatus/classes/HubSub.php @@ -260,6 +260,37 @@ class HubSub extends Memcached_DataObject $retries = intval(common_config('ostatus', 'hub_retries')); } + if (common_config('ostatus', 'local_push_bypass')) { + // If target is a local site, bypass the web server and drop the + // item directly into the target's input queue. + $url = parse_url($this->callback); + $wildcard = common_config('ostatus', 'local_wildcard'); + $site = Status_network::getFromHostname($url['host'], $wildcard); + + if ($site) { + if ($this->secret) { + $hmac = 'sha1=' . hash_hmac('sha1', $atom, $this->secret); + } else { + $hmac = ''; + } + + // Hack: at the moment we stick the subscription ID in the callback + // URL so we don't have to look inside the Atom to route the subscription. + // For now this means we need to extract that from the target URL + // so we can include it in the data. + $parts = explode('/', $url['path']); + $subId = intval(array_pop($parts)); + + $data = array('feedsub_id' => $subId, + 'post' => $atom, + 'hmac' => $hmac); + common_log(LOG_DEBUG, "Cross-site PuSH bypass enqueueing straight to $site->nickname feed $subId"); + $qm = QueueManager::get(); + $qm->enqueue($data, 'pushin', $site->nickname); + return; + } + } + // We dare not clone() as when the clone is discarded it'll // destroy the result data for the parent query. // @fixme use clone() again when it's safe to copy an @@ -274,6 +305,26 @@ class HubSub extends Memcached_DataObject } /** + * Queue up a large batch of pushes to multiple subscribers + * for this same topic update. + * + * If queues are disabled, this will run immediately. + * + * @param string $atom well-formed Atom feed + * @param array $pushCallbacks list of callback URLs + */ + function bulkDistribute($atom, $pushCallbacks) + { + $data = array('atom' => $atom, + 'topic' => $this->topic, + 'pushCallbacks' => $pushCallbacks); + common_log(LOG_INFO, "Queuing PuSH batch: $this->topic to " . + count($pushCallbacks) . " sites"); + $qm = QueueManager::get(); + $qm->enqueue($data, 'hubprep'); + } + + /** * Send a 'fat ping' to the subscriber's callback endpoint * containing the given Atom feed chunk. * diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 5d3f37cd0..cc4307b14 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -215,22 +215,13 @@ class Ostatus_profile extends Memcached_DataObject } /** - * Send a PuSH unsubscription request to the hub for this feed. - * The hub will later send us a confirmation POST to /main/push/callback. + * Check if this remote profile has any active local subscriptions, and + * if not drop the PuSH subscription feed. * * @return bool true on success, false on failure - * @throws ServerException if feed state is not valid */ public function unsubscribe() { - $feedsub = FeedSub::staticGet('uri', $this->feeduri); - if (!$feedsub || $feedsub->sub_state == '' || $feedsub->sub_state == 'inactive') { - // No active PuSH subscription, we can just leave it be. - return true; - } else { - // PuSH subscription is either active or in an indeterminate state. - // Send an unsubscribe. - return $feedsub->unsubscribe(); - } + $this->garbageCollect(); } /** @@ -241,19 +232,35 @@ class Ostatus_profile extends Memcached_DataObject */ public function garbageCollect() { + $feedsub = FeedSub::staticGet('uri', $this->feeduri); + return $feedsub->garbageCollect(); + } + + /** + * Check if this remote profile has any active local subscriptions, so the + * PuSH subscription layer can decide if it can drop the feed. + * + * This gets called via the FeedSubSubscriberCount event when running + * FeedSub::garbageCollect(). + * + * @return int + */ + public function subscriberCount() + { if ($this->isGroup()) { $members = $this->localGroup()->getMembers(0, 1); $count = $members->N; } else { $count = $this->localProfile()->subscriberCount(); } - if ($count == 0) { - common_log(LOG_INFO, "Unsubscribing from now-unused remote feed $this->feeduri"); - $this->unsubscribe(); - return true; - } else { - return false; - } + common_log(LOG_INFO, __METHOD__ . " SUB COUNT BEFORE: $count"); + + // Other plugins may be piggybacking on OStatus without having + // an active group or user-to-user subscription we know about. + Event::handle('Ostatus_profileSubscriberCount', array($this, &$count)); + common_log(LOG_INFO, __METHOD__ . " SUB COUNT AFTER: $count"); + + return $count; } /** @@ -438,26 +445,32 @@ class Ostatus_profile extends Memcached_DataObject * @param DOMElement $feed for context * @param string $source identifier ("push" or "salmon") */ + public function processEntry($entry, $feed, $source) { $activity = new Activity($entry, $feed); - // @todo process all activity objects - switch ($activity->objects[0]->type) { - case ActivityObject::ARTICLE: - case ActivityObject::BLOGENTRY: - case ActivityObject::NOTE: - case ActivityObject::STATUS: - case ActivityObject::COMMENT: - break; - default: - throw new ClientException("Can't handle that kind of post."); - } + if (Event::handle('StartHandleFeedEntry', array($activity))) { + + // @todo process all activity objects + switch ($activity->objects[0]->type) { + case ActivityObject::ARTICLE: + case ActivityObject::BLOGENTRY: + case ActivityObject::NOTE: + case ActivityObject::STATUS: + case ActivityObject::COMMENT: + case null: + if ($activity->verb == ActivityVerb::POST) { + $this->processPost($activity, $source); + } else { + common_log(LOG_INFO, "Ignoring activity with unrecognized verb $activity->verb"); + } + break; + default: + throw new ClientException("Can't handle that kind of post."); + } - if ($activity->verb == ActivityVerb::POST) { - $this->processPost($activity, $source); - } else { - common_log(LOG_INFO, "Ignoring activity with unrecognized verb $activity->verb"); + Event::handle('EndHandleFeedEntry', array($activity)); } } @@ -486,8 +499,17 @@ class Ostatus_profile extends Memcached_DataObject // OK here! assume the default } else if ($actor->id == $this->uri || $actor->link == $this->uri) { $this->updateFromActivityObject($actor); + } else if ($actor->id) { + // We have an ActivityStreams actor with an explicit ID that doesn't match the feed owner. + // This isn't what we expect from mainline OStatus person feeds! + // Group feeds go down another path, with different validation... + // Most likely this is a plain ol' blog feed of some kind which + // doesn't match our expectations. We'll take the entry, but ignore + // the <author> info. + common_log(LOG_WARNING, "Got an actor '{$actor->title}' ({$actor->id}) on single-user feed for {$this->uri}"); } else { - throw new Exception("Got an actor '{$actor->title}' ({$actor->id}) on single-user feed for {$this->uri}"); + // Plain <author> without ActivityStreams actor info. + // We'll just ignore this info for now and save the update under the feed's identity. } $oprofile = $this; @@ -668,7 +690,7 @@ class Ostatus_profile extends Memcached_DataObject common_log(LOG_DEBUG, "Original reply recipients: " . implode(', ', $attention_uris)); $groups = array(); $replies = array(); - foreach ($attention_uris as $recipient) { + foreach (array_unique($attention_uris) as $recipient) { // Is the recipient a local user? $user = User::staticGet('uri', $recipient); if ($user) { @@ -862,12 +884,12 @@ class Ostatus_profile extends Memcached_DataObject $feeduri = $discover->discoverFromFeedURL($feed_url); $hints['feedurl'] = $feeduri; - $huburi = $discover->getAtomLink('hub'); + $huburi = $discover->getHubLink(); $hints['hub'] = $huburi; $salmonuri = $discover->getAtomLink(Salmon::NS_REPLIES); $hints['salmon'] = $salmonuri; - if (!$huburi) { + if (!$huburi && !common_config('feedsub', 'fallback_hub')) { // We can only deal with folks with a PuSH hub throw new FeedSubNoHubException(); } @@ -1263,10 +1285,10 @@ class Ostatus_profile extends Memcached_DataObject $discover = new FeedDiscovery(); $discover->discoverFromFeedURL($hints['feedurl']); } - $huburi = $discover->getAtomLink('hub'); + $huburi = $discover->getHubLink(); } - if (!$huburi) { + if (!$huburi && !common_config('feedsub', 'fallback_hub')) { // We can only deal with folks with a PuSH hub throw new FeedSubNoHubException(); } diff --git a/plugins/OStatus/lib/discoveryhints.php b/plugins/OStatus/lib/discoveryhints.php index 34c9be277..fa2ead732 100644 --- a/plugins/OStatus/lib/discoveryhints.php +++ b/plugins/OStatus/lib/discoveryhints.php @@ -114,9 +114,10 @@ class DiscoveryHints { static function _hcard($body, $url) { - // DOMDocument::loadHTML may throw warnings on unrecognized elements. + // DOMDocument::loadHTML may throw warnings on unrecognized elements, + // and notices on unrecognized namespaces. - $old = error_reporting(error_reporting() & ~E_WARNING); + $old = error_reporting(error_reporting() & ~(E_WARNING | E_NOTICE)); $doc = new DOMDocument(); $doc->loadHTML($body); diff --git a/plugins/OStatus/lib/feeddiscovery.php b/plugins/OStatus/lib/feeddiscovery.php index 4ac243832..8a166a0be 100644 --- a/plugins/OStatus/lib/feeddiscovery.php +++ b/plugins/OStatus/lib/feeddiscovery.php @@ -88,6 +88,16 @@ class FeedDiscovery } /** + * Get the referenced PuSH hub link from an Atom feed. + * + * @return mixed string or false + */ + public function getHubLink() + { + return $this->getAtomLink('hub'); + } + + /** * @param string $url * @param bool $htmlOk pass false here if you don't want to follow web pages. * @return string with validated URL @@ -186,8 +196,9 @@ class FeedDiscovery */ function discoverFromHTML($url, $body) { - // DOMDocument::loadHTML may throw warnings on unrecognized elements. - $old = error_reporting(error_reporting() & ~E_WARNING); + // DOMDocument::loadHTML may throw warnings on unrecognized elements, + // and notices on unrecognized namespaces. + $old = error_reporting(error_reporting() & ~(E_WARNING | E_NOTICE)); $dom = new DOMDocument(); $ok = $dom->loadHTML($body); error_reporting($old); 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..967e5f6d1 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; } @@ -216,13 +210,13 @@ class MagicEnvelope } $data_element = $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'data')->item(0); - + $sig_element = $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'sig')->item(0); return array( - 'data' => trim($data_element->nodeValue), + 'data' => preg_replace('/\s/', '', $data_element->nodeValue), 'data_type' => $data_element->getAttribute('type'), 'encoding' => $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'encoding')->item(0)->nodeValue, 'alg' => $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'alg')->item(0)->nodeValue, - 'sig' => $env_element->getElementsByTagNameNS(MagicEnvelope::NS, 'sig')->item(0)->nodeValue, + 'sig' => preg_replace('/\s/', '', $sig_element->nodeValue), ); } diff --git a/plugins/OStatus/lib/ostatusqueuehandler.php b/plugins/OStatus/lib/ostatusqueuehandler.php index d1e58f1d6..8905d2e21 100644 --- a/plugins/OStatus/lib/ostatusqueuehandler.php +++ b/plugins/OStatus/lib/ostatusqueuehandler.php @@ -25,6 +25,18 @@ */ class OStatusQueueHandler extends QueueHandler { + // If we have more than this many subscribing sites on a single feed, + // break up the PuSH distribution into smaller batches which will be + // rolled into the queue progressively. This reduces disruption to + // other, shorter activities being enqueued while we work. + const MAX_UNBATCHED = 50; + + // Each batch (a 'hubprep' entry) will have this many items. + // Selected to provide a balance between queue packet size + // and number of batches that will end up getting processed. + // For 20,000 target sites, 1000 should work acceptably. + const BATCH_SIZE = 1000; + function transport() { return 'ostatus'; @@ -147,14 +159,31 @@ class OStatusQueueHandler extends QueueHandler /** * Queue up direct feed update pushes to subscribers on our internal hub. + * If there are a large number of subscriber sites, intermediate bulk + * distribution triggers may be queued. + * * @param string $atom update feed, containing only new/changed items * @param HubSub $sub open query of subscribers */ function pushFeedInternal($atom, $sub) { common_log(LOG_INFO, "Preparing $sub->N PuSH distribution(s) for $sub->topic"); + $n = 0; + $batch = array(); while ($sub->fetch()) { - $sub->distribute($atom); + $n++; + if ($n < self::MAX_UNBATCHED) { + $sub->distribute($atom); + } else { + $batch[] = $sub->callback; + if (count($batch) >= self::BATCH_SIZE) { + $sub->bulkDistribute($atom, $batch); + $batch = array(); + } + } + } + if (count($batch) >= 0) { + $sub->bulkDistribute($atom, $batch); } } 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/salmonaction.php b/plugins/OStatus/lib/salmonaction.php index fa9dc3b1d..9d6c6b269 100644 --- a/plugins/OStatus/lib/salmonaction.php +++ b/plugins/OStatus/lib/salmonaction.php @@ -47,7 +47,6 @@ class SalmonAction extends Action $xml = file_get_contents('php://input'); - // Check the signature $salmon = new Salmon; if (!$salmon->verifyMagicEnv($xml)) { @@ -58,7 +57,6 @@ class SalmonAction extends Action $env = $magic_env->parse($xml); $xml = $magic_env->unfold($env); } - $dom = DOMDocument::loadXML($xml); if ($dom->documentElement->namespaceURI != Activity::ATOM || @@ -67,7 +65,7 @@ class SalmonAction extends Action $this->clientError(_m('Salmon post must be an Atom entry.')); } - $this->act = new Activity($dom->documentElement); + $this->activity = new Activity($dom->documentElement); return true; } @@ -79,9 +77,9 @@ class SalmonAction extends Action { StatusNet::setApi(true); // Send smaller error pages - common_log(LOG_DEBUG, "Got a " . $this->act->verb); + common_log(LOG_DEBUG, "Got a " . $this->activity->verb); if (Event::handle('StartHandleSalmon', array($this->activity))) { - switch ($this->act->verb) + switch ($this->activity->verb) { case ActivityVerb::POST: $this->handlePost(); @@ -164,12 +162,12 @@ class SalmonAction extends Action */ function handleUpdateProfile() { - $oprofile = Ostatus_profile::getActorProfile($this->act); + $oprofile = Ostatus_profile::getActorProfile($this->activity); if ($oprofile) { common_log(LOG_INFO, "Got a profile-update ping from $oprofile->uri"); - $oprofile->updateFromActivityObject($this->act->actor); + $oprofile->updateFromActivityObject($this->activity->actor); } else { - common_log(LOG_INFO, "Ignoring profile-update ping from unknown " . $this->act->actor->id); + common_log(LOG_INFO, "Ignoring profile-update ping from unknown " . $this->activity->actor->id); } } @@ -178,10 +176,10 @@ class SalmonAction extends Action */ function ensureProfile() { - $actor = $this->act->actor; + $actor = $this->activity->actor; if (empty($actor->id)) { common_log(LOG_ERR, "broken actor: " . var_export($actor, true)); - common_log(LOG_ERR, "activity with no actor: " . var_export($this->act, true)); + common_log(LOG_ERR, "activity with no actor: " . var_export($this->activity, true)); throw new Exception("Received a salmon slap from unidentified actor."); } @@ -191,6 +189,6 @@ class SalmonAction extends Action function saveNotice() { $oprofile = $this->ensureProfile(); - return $oprofile->processPost($this->act, 'salmon'); + return $oprofile->processPost($this->activity, 'salmon'); } } 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/OStatus/scripts/update-profile.php b/plugins/OStatus/scripts/update-profile.php index d06de4f90..64afa0f35 100644 --- a/plugins/OStatus/scripts/update-profile.php +++ b/plugins/OStatus/scripts/update-profile.php @@ -55,7 +55,7 @@ print "Re-running feed discovery for profile URL $oprofile->uri\n"; // @fixme will bork where the URI isn't the profile URL for now $discover = new FeedDiscovery(); $feedurl = $discover->discoverFromURL($oprofile->uri); -$huburi = $discover->getAtomLink('hub'); +$huburi = $discover->getHubLink(); $salmonuri = $discover->getAtomLink(Salmon::NS_REPLIES); print " Feed URL: $feedurl\n"; diff --git a/plugins/OStatus/tests/FeedDiscoveryTest.php b/plugins/OStatus/tests/FeedDiscoveryTest.php index 1c5249701..0e6354a86 100644 --- a/plugins/OStatus/tests/FeedDiscoveryTest.php +++ b/plugins/OStatus/tests/FeedDiscoveryTest.php @@ -10,7 +10,7 @@ define('STATUSNET', true); define('LACONICA', true); require_once INSTALLDIR . '/lib/common.php'; -require_once INSTALLDIR . '/plugins/FeedSub/feedsub.php'; +require_once INSTALLDIR . '/plugins/OStatus/lib/feeddiscovery.php'; class FeedDiscoveryTest extends PHPUnit_Framework_TestCase { diff --git a/plugins/OpenID/OpenIDPlugin.php b/plugins/OpenID/OpenIDPlugin.php index fdcfacfa5..7d6a5dc00 100644 --- a/plugins/OpenID/OpenIDPlugin.php +++ b/plugins/OpenID/OpenIDPlugin.php @@ -20,7 +20,9 @@ * @category Plugin * @package StatusNet * @author Evan Prodromou <evan@status.net> + * @author Craig Andrews <candrews@integralblue.com> * @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/ */ @@ -38,6 +40,8 @@ if (!defined('STATUSNET')) { * @category Plugin * @package StatusNet * @author Evan Prodromou <evan@status.net> + * @author Craig Andrews <candrews@integralblue.com> + * @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/ * @link http://openid.net/ diff --git a/plugins/OpenID/finishaddopenid.php b/plugins/OpenID/finishaddopenid.php index e07ab764e..47b3f7fb1 100644 --- a/plugins/OpenID/finishaddopenid.php +++ b/plugins/OpenID/finishaddopenid.php @@ -138,13 +138,16 @@ class FinishaddopenidAction extends Action $this->message(_m('Error connecting user.')); return; } - if ($sreg) { - if (!oid_update_user($cur, $sreg)) { - // TRANS: message in case the user or the user profile cannot be saved in StatusNet. - $this->message(_m('Error updating profile')); - return; + if (Event::handle('StartOpenIDUpdateUser', array($cur, $canonical, &$sreg))) { + if ($sreg) { + if (!oid_update_user($cur, $sreg)) { + // TRANS: message in case the user or the user profile cannot be saved in StatusNet. + $this->message(_m('Error updating profile')); + return; + } } } + Event::handle('EndOpenIDUpdateUser', array($cur, $canonical, $sreg)); // success! diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index a9ab14199..0c03b5c4d 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -310,6 +310,8 @@ class FinishopenidloginAction extends Action return; } + Event::handle('StartOpenIDCreateNewUser', array($canonical, &$sreg)); + $location = ''; if (!empty($sreg['country'])) { if ($sreg['postcode']) { @@ -349,6 +351,8 @@ class FinishopenidloginAction extends Action $result = oid_link_user($user->id, $canonical, $display); + Event::handle('EndOpenIDCreateNewUser', array($user, $canonical, $sreg)); + oid_set_last($display); common_set_user($user); common_real_login(true); @@ -391,7 +395,11 @@ class FinishopenidloginAction extends Action return; } - oid_update_user($user, $sreg); + if (Event::handle('StartOpenIDUpdateUser', array($user, $canonical, &$sreg))) { + oid_update_user($user, $sreg); + } + Event::handle('EndOpenIDUpdateUser', array($user, $canonical, $sreg)); + oid_set_last($display); common_set_user($user); common_real_login(true); diff --git a/plugins/OpenID/openid.php b/plugins/OpenID/openid.php index 4dc924695..4ce350f77 100644 --- a/plugins/OpenID/openid.php +++ b/plugins/OpenID/openid.php @@ -145,9 +145,11 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) // Handle failure status return values. if (!$auth_request) { + common_log(LOG_ERR, __METHOD__ . ": mystery fail contacting $openid_url"); // TRANS: OpenID plugin message. Given when an OpenID is not valid. return _m('Not a valid OpenID.'); } else if (Auth_OpenID::isFailure($auth_request)) { + common_log(LOG_ERR, __METHOD__ . ": OpenID fail to $openid_url: $auth_request->message"); // TRANS: OpenID plugin server error. Given when the OpenID authentication request fails. // TRANS: %s is the failure message. return sprintf(_m('OpenID failure: %s'), $auth_request->message); @@ -230,11 +232,14 @@ function _oid_print_instructions() 'OpenID provider.')); } -# update a user from sreg parameters - -function oid_update_user(&$user, &$sreg) +/** + * Update a user from sreg parameters + * @param User $user + * @param array $sreg fields from OpenID sreg response + * @access private + */ +function oid_update_user($user, $sreg) { - $profile = $user->getProfile(); $orig_profile = clone($profile); diff --git a/plugins/OpenID/openidadminpanel.php b/plugins/OpenID/openidadminpanel.php index 063306366..ce4806cc8 100644 --- a/plugins/OpenID/openidadminpanel.php +++ b/plugins/OpenID/openidadminpanel.php @@ -91,6 +91,7 @@ class OpenidadminpanelAction extends AdminPanelAction ); static $booleans = array( + 'openid' => array('append_username'), 'site' => array('openidonly') ); @@ -223,6 +224,15 @@ class OpenIDAdminPanelForm extends AdminForm $this->unli(); $this->li(); + $this->out->checkbox( + 'append_username', _m('Append a username to base URL'), + (bool) $this->value('append_username', 'openid'), + _m('Login form will show the base URL and prompt for a username to add at the end. Use when OpenID provider URL should be the profile page for individual users.'), + 'true' + ); + $this->unli(); + + $this->li(); $this->input( 'required_team', _m('Required team'), diff --git a/plugins/OpenID/openidlogin.php b/plugins/OpenID/openidlogin.php index 34e00ccce..20d6e070c 100644 --- a/plugins/OpenID/openidlogin.php +++ b/plugins/OpenID/openidlogin.php @@ -33,6 +33,9 @@ class OpenidloginAction extends Action $provider = common_config('openid', 'trusted_provider'); if ($provider) { $openid_url = $provider; + if (common_config('openid', 'append_username')) { + $openid_url .= $this->trimmed('openid_username'); + } } else { $openid_url = $this->trimmed('openid_url'); } @@ -100,7 +103,15 @@ class OpenidloginAction extends Action function showScripts() { parent::showScripts(); - $this->autofocus('openid_url'); + if (common_config('openid', 'trusted_provider')) { + if (common_config('openid', 'append_username')) { + $this->autofocus('openid_username'); + } else { + $this->autofocus('rememberme'); + } + } else { + $this->autofocus('openid_url'); + } } function title() @@ -130,10 +141,17 @@ class OpenidloginAction extends Action $this->elementStart('ul', 'form_data'); $this->elementStart('li'); $provider = common_config('openid', 'trusted_provider'); + $appendUsername = common_config('openid', 'append_username'); if ($provider) { $this->element('label', array(), _m('OpenID provider')); $this->element('span', array(), $provider); + if ($appendUsername) { + $this->element('input', array('id' => 'openid_username', + 'name' => 'openid_username', + 'style' => 'float: none')); + } $this->element('p', 'form_guide', + ($appendUsername ? _m('Enter your username.') . ' ' : '') . _m('You will be sent to the provider\'s site for authentication.')); $this->hidden('openid_url', $provider); } else { diff --git a/plugins/OpenID/openidserver.php b/plugins/OpenID/openidserver.php index f7e3a45f2..b2cf1f8ac 100644 --- a/plugins/OpenID/openidserver.php +++ b/plugins/OpenID/openidserver.php @@ -23,6 +23,7 @@ * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> * @copyright 2008-2009 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/ */ @@ -43,6 +44,7 @@ require_once(INSTALLDIR.'/plugins/OpenID/User_openid_trustroot.php'); * @category Settings * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ @@ -69,7 +71,11 @@ class OpenidserverAction extends Action //cannot prompt the user to login in immediate mode, so answer false $response = $this->generateDenyResponse($request); }else{ - /* Go log in, and then come back. */ + // Go log in, and then come back. + // + // Note: 303 redirect rather than 307 to avoid + // prompting user for form resubmission if we + // were POSTed here. common_set_returnto($_SERVER['REQUEST_URI']); common_redirect(common_local_url('login'), 303); return; @@ -90,7 +96,12 @@ class OpenidserverAction extends Action $this->oserver->encodeResponse($denyResponse); //sign the response $_SESSION['openid_allow_url'] = $allowResponse->encodeToUrl(); $_SESSION['openid_deny_url'] = $denyResponse->encodeToUrl(); - //ask the user to trust this trust root + + // Ask the user to trust this trust root... + // + // Note: 303 redirect rather than 307 to avoid + // prompting user for form resubmission if we + // were POSTed here. common_redirect(common_local_url('openidtrust'), 303); return; } diff --git a/plugins/PtitUrl/PtitUrlPlugin.php b/plugins/PtitUrl/PtitUrlPlugin.php index ddba942e6..2963e8997 100644 --- a/plugins/PtitUrl/PtitUrlPlugin.php +++ b/plugins/PtitUrl/PtitUrlPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/RSSCloud/RSSCloudPlugin.php b/plugins/RSSCloud/RSSCloudPlugin.php index 661c32141..c1951cdbf 100644 --- a/plugins/RSSCloud/RSSCloudPlugin.php +++ b/plugins/RSSCloud/RSSCloudPlugin.php @@ -192,25 +192,13 @@ class RSSCloudPlugin extends Plugin function onStartEnqueueNotice($notice, &$transports) { - array_push($transports, 'rsscloud'); + if ($notice->isLocal()) { + array_push($transports, 'rsscloud'); + } return true; } /** - * Determine whether the notice was locally created - * - * @param Notice $notice the notice in question - * - * @return boolean locality - */ - - function _isLocal($notice) - { - return ($notice->is_local == Notice::LOCAL_PUBLIC || - $notice->is_local == Notice::LOCAL_NONPUBLIC); - } - - /** * Create the rsscloud_subscription table if it's not * already in the DB * diff --git a/plugins/Recaptcha/RecaptchaPlugin.php b/plugins/Recaptcha/RecaptchaPlugin.php index c585da43c..7cc34c568 100644 --- a/plugins/Recaptcha/RecaptchaPlugin.php +++ b/plugins/Recaptcha/RecaptchaPlugin.php @@ -62,12 +62,32 @@ class RecaptchaPlugin extends Plugin { $action->elementStart('li'); $action->raw('<label for="recaptcha">Captcha</label>'); - if($this->checkssl() === true) { - $action->raw(recaptcha_get_html($this->public_key), null, true); - } else { - $action->raw(recaptcha_get_html($this->public_key)); - } + + // AJAX API will fill this div out. + // We're calling that instead of the regular one so we stay compatible + // with application/xml+xhtml output as for mobile. + $action->element('div', array('id' => 'recaptcha')); $action->elementEnd('li'); + + $action->recaptchaPluginNeedsOutput = true; + return true; + } + + function onEndShowScripts($action) + { + if (isset($action->recaptchaPluginNeedsOutput) && $action->recaptchaPluginNeedsOutput) { + // Load the AJAX API + if ($this->checkssl()) { + $url = "https://api-secure.recaptcha.net/js/recaptcha_ajax.js"; + } else { + $url = "http://api.recaptcha.net/js/recaptcha_ajax.js"; + } + $action->script($url); + + // And when we're ready, fill out the captcha! + $key = json_encode($this->public_key); + $action->inlinescript("\$(function(){Recaptcha.create($key, 'recaptcha');});"); + } return true; } diff --git a/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php b/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php index 009a2f78e..af75b96e0 100644 --- a/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php +++ b/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php @@ -21,8 +21,9 @@ * * @category Plugin * @package StatusNet - * @author Craig Andrews <candrews@integralblue.com>, Brion Vibber <brion@status.net> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @author Craig Andrews <candrews@integralblue.com> + * @author Brion Vibber <brion@status.net> + * @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/ */ diff --git a/plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php b/plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php index dac5a1588..8a05a7734 100644 --- a/plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php +++ b/plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/SimpleUrl/SimpleUrlPlugin.php b/plugins/SimpleUrl/SimpleUrlPlugin.php index 6eac7dbb1..5e2e85878 100644 --- a/plugins/SimpleUrl/SimpleUrlPlugin.php +++ b/plugins/SimpleUrl/SimpleUrlPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/Sitemap/SitemapPlugin.php b/plugins/Sitemap/SitemapPlugin.php new file mode 100644 index 000000000..b6d3b1ad3 --- /dev/null +++ b/plugins/Sitemap/SitemapPlugin.php @@ -0,0 +1,224 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * Creates a dynamic sitemap for a StatusNet site + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Sample + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * Sitemap plugin + * + * @category Sample + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class SitemapPlugin extends Plugin +{ + const USERS_PER_MAP = 50000; + const NOTICES_PER_MAP = 50000; + + /** + * Load related modules when needed + * + * @param string $cls Name of the class to be loaded + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onAutoload($cls) + { + $dir = dirname(__FILE__); + + switch ($cls) + { + case 'Sitemap_user_count': + case 'Sitemap_notice_count': + require_once $dir . '/' . $cls . '.php'; + return false; + case 'SitemapindexAction': + case 'NoticesitemapAction': + case 'UsersitemapAction': + case 'SitemapadminpanelAction': + require_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; + return false; + case 'SitemapAction': + require_once $dir . '/' . strtolower($cls) . '.php'; + return false; + default: + return true; + } + } + + /** + * Add sitemap-related information at the end of robots.txt + * + * @param Action $action Action being run + * + * @return boolean hook value. + */ + + function onEndRobotsTxt($action) + { + $url = common_local_url('sitemapindex'); + + print "\nSitemap: $url\n"; + + return true; + } + + /** + * Map URLs to actions + * + * @param Net_URL_Mapper $m path-to-action mapper + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onRouterInitialized($m) + { + $m->connect('sitemapindex.xml', + array('action' => 'sitemapindex')); + + $m->connect('/notice-sitemap-:year-:month-:day-:index.xml', + array('action' => 'noticesitemap'), + array('year' => '[0-9]{4}', + 'month' => '[01][0-9]', + 'day' => '[0123][0-9]', + 'index' => '[1-9][0-9]*')); + + $m->connect('/user-sitemap-:year-:month-:day-:index.xml', + array('action' => 'usersitemap'), + array('year' => '[0-9]{4}', + 'month' => '[01][0-9]', + 'day' => '[0123][0-9]', + 'index' => '[1-9][0-9]*')); + + $m->connect('admin/sitemap', + array('action' => 'sitemapadminpanel')); + + return true; + } + + /** + * Meta tags for "claiming" a site + * + * We add extra meta tags that search engines like Yahoo!, Google, and Bing + * require to let you claim your site. + * + * @param Action $action Action being executed + * + * @return boolean hook value. + */ + + function onStartShowHeadElements($action) + { + $actionName = $action->trimmed('action'); + + $singleUser = common_config('singleuser', 'enabled'); + + // Different "top" pages if it's single user or not + + if (($singleUser && $actionName == 'showstream') || + (!$singleUser && $actionName == 'public')) { + + $keys = array('googlekey' => 'google-site-verification', + 'yahookey' => 'y_key', + 'bingkey' => 'msvalidate.01'); // XXX: is this the same for all sites? + + foreach ($keys as $config => $metaname) { + $content = common_config('sitemap', $config); + + if (!empty($content)) { + $action->element('meta', array('name' => $metaname, + 'content' => $content)); + } + } + } + + return true; + } + + /** + * Database schema setup + * + * We cache some data persistently to avoid overlong queries. + * + * @see Sitemap_user_count + * @see Sitemap_notice_count + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onCheckSchema() + { + $schema = Schema::get(); + + $schema->ensureTable('sitemap_user_count', + array(new ColumnDef('registration_date', 'date', null, + true, 'PRI'), + new ColumnDef('user_count', 'integer'), + new ColumnDef('created', 'datetime', + null, false), + new ColumnDef('modified', 'timestamp'))); + + $schema->ensureTable('sitemap_notice_count', + array(new ColumnDef('notice_date', 'date', null, + true, 'PRI'), + new ColumnDef('notice_count', 'integer'), + new ColumnDef('created', 'datetime', + null, false), + new ColumnDef('modified', 'timestamp'))); + + $userCreated = $schema->getColumnDef('user', 'created'); + + if (empty($userCreated) || $userCreated->key != 'MUL') { + $schema->createIndex('user', 'created'); + } + + return true; + } + + function onEndAdminPanelNav($menu) { + if (AdminPanelAction::canAdmin('sitemap')) { + // TRANS: Menu item title/tooltip + $menu_title = _('Sitemap configuration'); + // TRANS: Menu item for site administration + $menu->out->menuItem(common_local_url('sitemapadminpanel'), _('Sitemap'), + $menu_title, $action_name == 'sitemapadminpanel', 'nav_sitemap_admin_panel'); + } + return true; + } +} diff --git a/plugins/Sitemap/Sitemap_notice_count.php b/plugins/Sitemap/Sitemap_notice_count.php new file mode 100644 index 000000000..6e0061e97 --- /dev/null +++ b/plugins/Sitemap/Sitemap_notice_count.php @@ -0,0 +1,290 @@ +<?php +/** + * Data class for counting notice postings by date + * + * PHP version 5 + * + * @category Data + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; + +/** + * Data class for counting notices by date + * + * We make a separate sitemap for each notice posted by date. + * To save ourselves some (not inconsiderable) processing effort, + * we cache this data in the sitemap_notice_count table. Each + * row represents a day since the site has been started, with a count + * of notices posted on that day. Since, after the end of the day, + * this number doesn't change, it's a good candidate for persistent caching. + * + * @category Data + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * @see DB_DataObject + */ + +class Sitemap_notice_count extends Memcached_DataObject +{ + public $__table = 'sitemap_notice_count'; // table name + + public $notice_date; // date primary_key not_null + public $notice_count; // int(4) + public $created; + public $modified; + + /** + * Get an instance by key + * + * This is a utility method to get a single instance with a given key value. + * + * @param string $k Key to use to lookup (usually 'notice_id' for this class) + * @param mixed $v Value to lookup + * + * @return Sitemap_notice_count object found, or null for no hits + * + */ + + function staticGet($k, $v=null) + { + return Memcached_DataObject::staticGet('Sitemap_notice_count', $k, $v); + } + + /** + * return table definition for DB_DataObject + * + * DB_DataObject needs to know something about the table to manipulate + * instances. This method provides all the DB_DataObject needs to know. + * + * @return array array of column definitions + */ + + function table() + { + return array('notice_date' => DB_DATAOBJECT_DATE + DB_DATAOBJECT_NOTNULL, + 'notice_count' => DB_DATAOBJECT_INT, + 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL, + 'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL); + } + + /** + * return key definitions for DB_DataObject + * + * DB_DataObject needs to know about keys that the table has; this function + * defines them. + * + * @return array key definitions + */ + + function keys() + { + return array('notice_date' => 'K'); + } + + /** + * return key definitions for Memcached_DataObject + * + * Our caching system uses the same key definitions, but uses a different + * method to get them. + * + * @return array key definitions + */ + + function keyTypes() + { + return $this->keys(); + } + + static function getAll() + { + $noticeCounts = self::cacheGet('sitemap:notice:counts'); + + if ($noticeCounts === false) { + + $snc = new Sitemap_notice_count(); + $snc->orderBy('notice_date DESC'); + + // Fetch the first one to check up-to-date-itude + + $n = $snc->find(true); + + $today = self::today(); + $noticeCounts = array(); + + if (!$n) { // No counts saved yet + $noticeCounts = self::initializeCounts(); + } else if ($snc->notice_date < $today) { // There are counts but not up to today + $noticeCounts = self::fillInCounts($snc->notice_date); + } else if ($snc->notice_date == $today) { // Refresh today's + $noticeCounts[$today] = self::updateToday(); + } + + // starts with second-to-last date + + while ($snc->fetch()) { + $noticeCounts[$snc->notice_date] = $snc->notice_count; + } + + // Cache notice counts for 4 hours. + + self::cacheSet('sitemap:notice:counts', $noticeCounts, null, time() + 4 * 60 * 60); + } + + return $noticeCounts; + } + + static function initializeCounts() + { + $firstDate = self::getFirstDate(); // awww + $today = self::today(); + + $counts = array(); + + for ($d = $firstDate; $d <= $today; $d = self::incrementDay($d)) { + $n = self::getCount($d); + self::insertCount($d, $n); + $counts[$d] = $n; + } + + return $counts; + } + + static function fillInCounts($lastDate) + { + $today = self::today(); + + $counts = array(); + + $n = self::getCount($lastDate); + self::updateCount($lastDate, $n); + + $counts[$lastDate] = $n; + + for ($d = self::incrementDay($lastDate); $d <= $today; $d = self::incrementDay($d)) { + $n = self::getCount($d); + self::insertCount($d, $n); + } + + return $counts; + } + + static function updateToday() + { + $today = self::today(); + + $n = self::getCount($today); + self::updateCount($today, $n); + + return $n; + } + + static function getCount($d) + { + $notice = new Notice(); + $notice->whereAdd('created BETWEEN "'.$d.' 00:00:00" AND "'.self::incrementDay($d).' 00:00:00"'); + $notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC); + $n = $notice->count(); + + return $n; + } + + static function insertCount($d, $n) + { + $snc = new Sitemap_notice_count(); + + $snc->notice_date = DB_DataObject_Cast::date($d); + + $snc->notice_count = $n; + $snc->created = common_sql_now(); + $snc->modified = $snc->created; + + if (!$snc->insert()) { + common_log(LOG_WARNING, "Could not save user counts for '$d'"); + } + } + + static function updateCount($d, $n) + { + $snc = Sitemap_notice_count::staticGet('notice_date', DB_DataObject_Cast::date($d)); + + if (empty($snc)) { + throw new Exception("No such registration date: $d"); + } + + $orig = clone($snc); + + $snc->notice_date = DB_DataObject_Cast::date($d); + + $snc->notice_count = $n; + $snc->created = common_sql_now(); + $snc->modified = $snc->created; + + if (!$snc->update($orig)) { + common_log(LOG_WARNING, "Could not save user counts for '$d'"); + } + } + + static function incrementDay($d) + { + $dt = self::dateStrToInt($d); + return self::dateIntToStr($dt + 24 * 60 * 60); + } + + static function dateStrToInt($d) + { + return strtotime($d.' 00:00:00'); + } + + static function dateIntToStr($dt) + { + return date('Y-m-d', $dt); + } + + static function getFirstDate() + { + $n = new Notice(); + + $n->selectAdd(); + $n->selectAdd('date(min(created)) as first_date'); + + if ($n->find(true)) { + return $n->first_date; + } else { + // Is this right? + return self::dateIntToStr(time()); + } + } + + static function today() + { + return self::dateIntToStr(time()); + } +} diff --git a/plugins/Sitemap/Sitemap_user_count.php b/plugins/Sitemap/Sitemap_user_count.php new file mode 100644 index 000000000..98dd05bfe --- /dev/null +++ b/plugins/Sitemap/Sitemap_user_count.php @@ -0,0 +1,286 @@ +<?php +/** + * Data class for counting user registrations by date + * + * PHP version 5 + * + * @category Data + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; + +/** + * Data class for counting users by date + * + * We make a separate sitemap for each user registered by date. + * To save ourselves some processing effort, we cache this data + * + * @category Action + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * @see DB_DataObject + */ + +class Sitemap_user_count extends Memcached_DataObject +{ + public $__table = 'sitemap_user_count'; // table name + + public $registration_date; // date primary_key not_null + public $user_count; // int(4) + public $created; + public $modified; + + /** + * Get an instance by key + * + * This is a utility method to get a single instance with a given key value. + * + * @param string $k Key to use to lookup (usually 'user_id' for this class) + * @param mixed $v Value to lookup + * + * @return Sitemap_user_count object found, or null for no hits + * + */ + + function staticGet($k, $v=null) + { + return Memcached_DataObject::staticGet('Sitemap_user_count', $k, $v); + } + + /** + * return table definition for DB_DataObject + * + * DB_DataObject needs to know something about the table to manipulate + * instances. This method provides all the DB_DataObject needs to know. + * + * @return array array of column definitions + */ + + function table() + { + return array('registration_date' => DB_DATAOBJECT_DATE + DB_DATAOBJECT_NOTNULL, + 'user_count' => DB_DATAOBJECT_INT, + 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL, + 'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL); + } + + /** + * return key definitions for DB_DataObject + * + * DB_DataObject needs to know about keys that the table has; this function + * defines them. + * + * @return array key definitions + */ + + function keys() + { + return array('registration_date' => 'K'); + } + + function sequenceKey() + { + return array(false, false, false); + } + + /** + * return key definitions for Memcached_DataObject + * + * Our caching system uses the same key definitions, but uses a different + * method to get them. + * + * @return array key definitions + */ + + function keyTypes() + { + return $this->keys(); + } + + static function getAll() + { + $userCounts = self::cacheGet('sitemap:user:counts'); + + if ($userCounts === false) { + + $suc = new Sitemap_user_count(); + $suc->orderBy('registration_date DESC'); + + // Fetch the first one to check up-to-date-itude + + $n = $suc->find(true); + + $today = self::today(); + $userCounts = array(); + + if (!$n) { // No counts saved yet + $userCounts = self::initializeCounts(); + } else if ($suc->registration_date < $today) { // There are counts but not up to today + $userCounts = self::fillInCounts($suc->registration_date); + } else if ($suc->registration_date == $today) { // Refresh today's + $userCounts[$today] = self::updateToday(); + } + + // starts with second-to-last date + + while ($suc->fetch()) { + $userCounts[$suc->registration_date] = $suc->user_count; + } + + // Cache user counts for 4 hours. + + self::cacheSet('sitemap:user:counts', $userCounts, null, time() + 4 * 60 * 60); + } + + return $userCounts; + } + + static function initializeCounts() + { + $firstDate = self::getFirstDate(); // awww + $today = self::today(); + + $counts = array(); + + for ($d = $firstDate; $d <= $today; $d = self::incrementDay($d)) { + $n = self::getCount($d); + self::insertCount($d, $n); + $counts[$d] = $n; + } + + return $counts; + } + + static function fillInCounts($lastDate) + { + $today = self::today(); + + $counts = array(); + + $n = self::getCount($lastDate); + self::updateCount($lastDate, $n); + + $counts[$lastDate] = $n; + + for ($d = self::incrementDay($lastDate); $d <= $today; $d = self::incrementDay($d)) { + $n = self::getCount($d); + self::insertCount($d, $n); + } + + return $counts; + } + + static function updateToday() + { + $today = self::today(); + + $n = self::getCount($today); + self::updateCount($today, $n); + + return $n; + } + + static function getCount($d) + { + $user = new User(); + $user->whereAdd('created BETWEEN "'.$d.' 00:00:00" AND "'.self::incrementDay($d).' 00:00:00"'); + $n = $user->count(); + + return $n; + } + + static function insertCount($d, $n) + { + $suc = new Sitemap_user_count(); + + $suc->registration_date = DB_DataObject_Cast::date($d); + $suc->user_count = $n; + $suc->created = common_sql_now(); + $suc->modified = $suc->created; + + if (!$suc->insert()) { + common_log(LOG_WARNING, "Could not save user counts for '$d'"); + } + } + + static function updateCount($d, $n) + { + $suc = Sitemap_user_count::staticGet('registration_date', DB_DataObject_Cast::date($d)); + + if (empty($suc)) { + throw new Exception("No such registration date: $d"); + } + + $orig = clone($suc); + + $suc->registration_date = DB_DataObject_Cast::date($d); + $suc->user_count = $n; + $suc->created = common_sql_now(); + $suc->modified = $suc->created; + + if (!$suc->update($orig)) { + common_log(LOG_WARNING, "Could not save user counts for '$d'"); + } + } + + static function incrementDay($d) + { + $dt = self::dateStrToInt($d); + return self::dateIntToStr($dt + 24 * 60 * 60); + } + + static function dateStrToInt($d) + { + return strtotime($d.' 00:00:00'); + } + + static function dateIntToStr($dt) + { + return date('Y-m-d', $dt); + } + + static function getFirstDate() + { + $u = new User(); + $u->selectAdd(); + $u->selectAdd('date(min(created)) as first_date'); + if ($u->find(true)) { + return $u->first_date; + } else { + // Is this right? + return self::dateIntToStr(time()); + } + } + + static function today() + { + return self::dateIntToStr(time()); + } +} diff --git a/plugins/Sitemap/noticesitemap.php b/plugins/Sitemap/noticesitemap.php new file mode 100644 index 000000000..7d9d2e5d6 --- /dev/null +++ b/plugins/Sitemap/noticesitemap.php @@ -0,0 +1,137 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Show list of user pages + * + * 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 Sitemap + * @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); +} + +/** + * sitemap for users + * + * @category Sitemap + * @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 NoticesitemapAction extends SitemapAction +{ + var $notices = null; + var $j = 0; + + function prepare($args) + { + parent::prepare($args); + + $y = $this->trimmed('year'); + + $m = $this->trimmed('month'); + $d = $this->trimmed('day'); + + $i = $this->trimmed('index'); + + $y += 0; + $m += 0; + $d += 0; + $i += 0; + + $this->notices = $this->getNotices($y, $m, $d, $i); + $this->j = 0; + + return true; + } + + function nextUrl() + { + if ($this->j < count($this->notices)) { + $n = $this->notices[$this->j]; + $this->j++; + return array(common_local_url('shownotice', array('notice' => $n[0])), + common_date_w3dtf($n[1]), + 'never', + null); + } else { + return null; + } + } + + function getNotices($y, $m, $d, $i) + { + $n = Notice::cacheGet("sitemap:notice:$y:$m:$d:$i"); + + if ($n === false) { + + $notice = new Notice(); + + $begindt = sprintf('%04d-%02d-%02d 00:00:00', $y, $m, $d); + + // XXX: estimates 1d == 24h, which screws up days + // with leap seconds (1d == 24h + 1s). Thankfully they're + // few and far between. + + $theend = strtotime($begindt) + (24 * 60 * 60); + $enddt = common_sql_date($theend); + + $notice->selectAdd(); + $notice->selectAdd('id, created'); + + $notice->whereAdd("created >= '$begindt'"); + $notice->whereAdd("created < '$enddt'"); + + $notice->whereAdd('is_local = ' . Notice::LOCAL_PUBLIC); + + $notice->orderBy('created'); + + $offset = ($i-1) * SitemapPlugin::NOTICES_PER_MAP; + $limit = SitemapPlugin::NOTICES_PER_MAP; + + $notice->limit($offset, $limit); + + $notice->find(); + + $n = array(); + + while ($notice->fetch()) { + $n[] = array($notice->id, $notice->created); + } + + $c = Cache::instance(); + + if (!empty($c)) { + $c->set(Cache::key("sitemap:notice:$y:$m:$d:$i"), + $n, + Cache::COMPRESSED, + ((time() > $theend) ? (time() + 90 * 24 * 60 * 60) : (time() + 5 * 60))); + } + } + + return $n; + } +} 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/Sitemap/sitemapaction.php b/plugins/Sitemap/sitemapaction.php new file mode 100644 index 000000000..73b9248a3 --- /dev/null +++ b/plugins/Sitemap/sitemapaction.php @@ -0,0 +1,118 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Superclass for sitemap-generating actions + * + * 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 Sitemap + * @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); +} + +/** + * superclass for sitemap actions + * + * @category Sitemap + * @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 SitemapAction extends Action +{ + /** + * handle the action + * + * @param array $args unused. + * + * @return void + */ + + function handle($args) + { + parent::handle($args); + + header('Content-Type: text/xml; charset=UTF-8'); + $this->startXML(); + + $this->elementStart('urlset', array('xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9')); + + while (list($url, $lm, $cf, $p) = $this->nextUrl()) { + $this->showUrl($url, $lm, $cf, $p); + } + + $this->elementEnd('urlset'); + + $this->endXML(); + } + + function lastModified() + { + $y = $this->trimmed('year'); + + $m = $this->trimmed('month'); + $d = $this->trimmed('day'); + + $y += 0; + $m += 0; + $d += 0; + + $begdate = strtotime("$y-$m-$d 00:00:00"); + $enddate = $begdate + (24 * 60 * 60); + + if ($enddate < time()) { + return $enddate; + } else { + return null; + } + } + + function showUrl($url, $lastMod=null, $changeFreq=null, $priority=null) + { + $this->elementStart('url'); + $this->element('loc', null, $url); + if (!is_null($lastMod)) { + $this->element('lastmod', null, $lastMod); + } + if (!is_null($changeFreq)) { + $this->element('changefreq', null, $changeFreq); + } + if (!is_null($priority)) { + $this->element('priority', null, $priority); + } + $this->elementEnd('url'); + } + + function nextUrl() + { + return null; + } + + function isReadOnly() + { + return true; + } +} diff --git a/plugins/Sitemap/sitemapadminpanel.php b/plugins/Sitemap/sitemapadminpanel.php new file mode 100644 index 000000000..3c295b08e --- /dev/null +++ b/plugins/Sitemap/sitemapadminpanel.php @@ -0,0 +1,205 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Sitemap 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 Sitemap + * @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 sitemap settings + * + * @category Sitemap + * @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 SitemapadminpanelAction extends AdminPanelAction +{ + /** + * Returns the page title + * + * @return string page title + */ + + function title() + { + return _('Sitemap'); + } + + /** + * Instructions for using this form. + * + * @return string instructions + */ + + function getInstructions() + { + return _('Sitemap settings for this StatusNet site'); + } + + /** + * Show the site admin panel form + * + * @return void + */ + + function showForm() + { + $form = new SitemapAdminPanelForm($this); + $form->show(); + return; + } + + /** + * Save settings from the form + * + * @return void + */ + + function saveSettings() + { + static $settings = array('sitemap' => array('googlekey', 'yahookey', 'bingkey')); + + $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 sitemap admin panel + */ + +class SitemapAdminPanelForm extends AdminForm +{ + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'form_sitemap_admin_panel'; + } + + /** + * class of the form + * + * @return string class of the form + */ + + function formClass() + { + return 'form_sitemap'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('sitemapadminpanel'); + } + + /** + * Data elements of the form + * + * @return void + */ + + function formData() + { + $this->out->elementStart('fieldset', array('id' => 'sitemap_admin')); + $this->out->elementStart('ul', 'form_data'); + $this->li(); + $this->input('googlekey', + _('Google key'), + _('Google Webmaster Tools verification key'), + 'sitemap'); + $this->unli(); + $this->li(); + $this->input('yahookey', + _('Yahoo key'), + _('Yahoo! Site Explorer verification key'), + 'sitemap'); + $this->unli(); + $this->li(); + $this->input('bingkey', + _('Bing key'), + _('Bing Webmaster Tools verification key'), + 'sitemap'); + $this->unli(); + $this->out->elementEnd('ul'); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit('submit', _('Save'), 'submit', null, _('Save sitemap settings')); + } +} diff --git a/plugins/Sitemap/sitemapindex.php b/plugins/Sitemap/sitemapindex.php new file mode 100644 index 000000000..169e3031c --- /dev/null +++ b/plugins/Sitemap/sitemapindex.php @@ -0,0 +1,128 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Generate sitemap index + * + * 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 Sitemap + * @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); +} + +/** + * Show the sitemap index + * + * @category Sitemap + * @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 SitemapindexAction extends Action +{ + /** + * handle the action + * + * @param array $args unused. + * + * @return void + */ + + function handle($args) + { + header('Content-Type: text/xml; charset=UTF-8'); + $this->startXML(); + + $this->elementStart('sitemapindex', array('xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9')); + + $this->showNoticeSitemaps(); + $this->showUserSitemaps(); + + $this->elementEnd('sitemapindex'); + + $this->endXML(); + } + + function showUserSitemaps() + { + $userCounts = Sitemap_user_count::getAll(); + + foreach ($userCounts as $dt => $cnt) { + $cnt = $cnt+0; + + if ($cnt == 0) { + continue; + } + + $n = (int)$cnt / (int)SitemapPlugin::USERS_PER_MAP; + if (($cnt % SitemapPlugin::USERS_PER_MAP) != 0) { + $n++; + } + for ($i = 1; $i <= $n; $i++) { + $this->showSitemap('user', $dt, $i); + } + } + } + + function showNoticeSitemaps() + { + $noticeCounts = Sitemap_notice_count::getAll(); + + foreach ($noticeCounts as $dt => $cnt) { + if ($cnt == 0) { + continue; + } + $n = $cnt / SitemapPlugin::NOTICES_PER_MAP; + if ($cnt % SitemapPlugin::NOTICES_PER_MAP) { + $n++; + } + for ($i = 1; $i <= $n; $i++) { + $this->showSitemap('notice', $dt, $i); + } + } + } + + function showSitemap($prefix, $dt, $i) + { + list($y, $m, $d) = explode('-', $dt); + + $this->elementStart('sitemap'); + $this->element('loc', null, common_local_url($prefix.'sitemap', + array('year' => $y, + 'month' => $m, + 'day' => $d, + 'index' => $i))); + + $begdate = strtotime("$y-$m-$d 00:00:00"); + $enddate = $begdate + (24 * 60 * 60); + + if ($enddate < time()) { + $this->element('lastmod', null, date(DATE_W3C, $enddate)); + } + + $this->elementEnd('sitemap'); + } +} diff --git a/plugins/Sitemap/usersitemap.php b/plugins/Sitemap/usersitemap.php new file mode 100644 index 000000000..de1200715 --- /dev/null +++ b/plugins/Sitemap/usersitemap.php @@ -0,0 +1,128 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Show list of user pages + * + * 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 Sitemap + * @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); +} + +/** + * sitemap for users + * + * @category Sitemap + * @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 UsersitemapAction extends SitemapAction +{ + var $users = null; + var $j = 0; + + function prepare($args) + { + parent::prepare($args); + + $y = $this->trimmed('year'); + + $m = $this->trimmed('month'); + $d = $this->trimmed('day'); + + $i = $this->trimmed('index'); + + $y += 0; + $m += 0; + $d += 0; + $i += 0; + + $this->users = $this->getUsers($y, $m, $d, $i); + $this->j = 0; + return true; + } + + function nextUrl() + { + if ($this->j < count($this->users)) { + $nickname = $this->users[$this->j]; + $this->j++; + return array(common_profile_url($nickname), null, null, '1.0'); + } else { + return null; + } + } + + function getUsers($y, $m, $d, $i) + { + $u = User::cacheGet("sitemap:user:$y:$m:$d:$i"); + + if ($u === false) { + + $user = new User(); + + $begindt = sprintf('%04d-%02d-%02d 00:00:00', $y, $m, $d); + + // XXX: estimates 1d == 24h, which screws up days + // with leap seconds (1d == 24h + 1s). Thankfully they're + // few and far between. + + $theend = strtotime($begindt) + (24 * 60 * 60); + $enddt = common_sql_date($theend); + + $user->selectAdd(); + $user->selectAdd('nickname'); + $user->whereAdd("created >= '$begindt'"); + $user->whereAdd("created < '$enddt'"); + + $user->orderBy('created'); + + $offset = ($i-1) * SitemapPlugin::USERS_PER_MAP; + $limit = SitemapPlugin::USERS_PER_MAP; + + $user->limit($offset, $limit); + + $user->find(); + + while ($user->fetch()) { + $u[] = $user->nickname; + } + + $c = Cache::instance(); + + if (!empty($c)) { + $c->set(Cache::key("sitemap:user:$y:$m:$d:$i"), + $u, + Cache::COMPRESSED, + ((time() > $theend) ? (time() + 90 * 24 * 60 * 60) : (time() + 5 * 60))); + } + } + + return $u; + } +} diff --git a/plugins/SubMirror/SubMirrorPlugin.php b/plugins/SubMirror/SubMirrorPlugin.php new file mode 100644 index 000000000..80c6c5a88 --- /dev/null +++ b/plugins/SubMirror/SubMirrorPlugin.php @@ -0,0 +1,168 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2009-2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * @package SubMirrorPlugin + * @maintainer Brion Vibber <brion@status.net> + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + + +class SubMirrorPlugin extends Plugin +{ + /** + * Hook for RouterInitialized event. + * + * @param Net_URL_Mapper $m path-to-action mapper + * @return boolean hook return + */ + function onRouterInitialized($m) + { + $m->connect('settings/mirror', + array('action' => 'mirrorsettings')); + $m->connect('settings/mirror/add', + array('action' => 'addmirror')); + $m->connect('settings/mirror/edit', + array('action' => 'editmirror')); + return true; + } + + /** + * Automatically load the actions and libraries used by the plugin + * + * @param Class $cls the class + * + * @return boolean hook return + * + */ + function onAutoload($cls) + { + $base = dirname(__FILE__); + $lower = strtolower($cls); + $files = array("$base/lib/$lower.php", + "$base/classes/$cls.php"); + if (substr($lower, -6) == 'action') { + $files[] = "$base/actions/" . substr($lower, 0, -6) . ".php"; + } + foreach ($files as $file) { + if (file_exists($file)) { + include_once $file; + return false; + } + } + return true; + } + + function handle($notice) + { + // Is anybody mirroring? + $mirror = new SubMirror(); + $mirror->subscribed = $notice->profile_id; + if ($mirror->find()) { + while ($mirror->fetch()) { + $mirror->repeat($notice); + } + } + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'SubMirror', + 'version' => STATUSNET_VERSION, + 'author' => 'Brion Vibber', + 'homepage' => 'http://status.net/wiki/Plugin:SubMirror', + 'rawdescription' => + _m('Pull feeds into your timeline!')); + + return true; + } + + /** + * Menu item for settings + * + * @param Action &$action Action being executed + * + * @return boolean hook return + */ + + function onEndAccountSettingsNav(&$action) + { + $action_name = $action->trimmed('action'); + + $action->menuItem(common_local_url('mirrorsettings'), + // TRANS: SubMirror plugin menu item on user settings page. + _m('MENU', 'Mirroring'), + // TRANS: SubMirror plugin tooltip for user settings menu item. + _m('Configure mirroring of posts from other feeds'), + $action_name === 'mirrorsettings'); + + return true; + } + + function onCheckSchema() + { + $schema = Schema::get(); + $schema->ensureTable('submirror', SubMirror::schemaDef()); + + // @hack until key definition support is merged + SubMirror::fixIndexes($schema); + return true; + } + + /** + * Set up queue handlers for outgoing hub pushes + * @param QueueManager $qm + * @return boolean hook return + */ + function onEndInitializeQueueManager(QueueManager $qm) + { + // After each notice save, check if there's any repeat mirrors. + $qm->connect('mirror', 'MirrorQueueHandler'); + return true; + } + + function onStartEnqueueNotice($notice, &$transports) + { + $transports[] = 'mirror'; + } + + /** + * Let the OStatus subscription garbage collection know if we're + * making use of a remote feed, so it doesn't get dropped out + * from under us. + * + * @param Ostatus_profile $oprofile + * @param int $count in/out + * @return mixed hook return value + */ + function onOstatus_profileSubscriberCount($oprofile, &$count) + { + if ($oprofile->profile_id) { + $mirror = new SubMirror(); + $mirror->subscribed = $oprofile->profile_id; + if ($mirror->find()) { + while ($mirror->fetch()) { + $count++; + } + } + } + return true; + } +} diff --git a/plugins/SubMirror/actions/addmirror.php b/plugins/SubMirror/actions/addmirror.php new file mode 100644 index 000000000..5acdf1dfe --- /dev/null +++ b/plugins/SubMirror/actions/addmirror.php @@ -0,0 +1,77 @@ +<?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/>. + * + * PHP version 5 + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Takes parameters: + * + * - feed: a profile ID + * - token: session token to prevent CSRF attacks + * - ajax: boolean; whether to return Ajax or full-browser results + * + * Only works if the current user is logged in. + * + * @category Action + * @package StatusNet + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +class AddMirrorAction extends BaseMirrorAction +{ + var $feedurl; + + /** + * Check pre-requisites and instantiate attributes + * + * @param Array $args array of arguments (URL, GET, POST) + * + * @return boolean success flag + */ + + function prepare($args) + { + parent::prepare($args); + $this->feedurl = $this->validateFeedUrl($this->trimmed('feedurl')); + $this->profile = $this->profileForFeed($this->feedurl); + return true; + } + + function saveMirror() + { + if ($this->oprofile->subscribe()) { + SubMirror::saveMirror($this->user, $this->profile); + } else { + $this->serverError(_m("Could not subscribe to feed.")); + } + } +} diff --git a/plugins/SubMirror/actions/basemirror.php b/plugins/SubMirror/actions/basemirror.php new file mode 100644 index 000000000..be6942efa --- /dev/null +++ b/plugins/SubMirror/actions/basemirror.php @@ -0,0 +1,175 @@ +<?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/>. + * + * PHP version 5 + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Takes parameters: + * + * - feed: a profile ID + * - token: session token to prevent CSRF attacks + * - ajax: boolean; whether to return Ajax or full-browser results + * + * Only works if the current user is logged in. + * + * @category Action + * @package StatusNet + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +abstract class BaseMirrorAction extends Action +{ + var $user; + var $profile; + + /** + * Check pre-requisites and instantiate attributes + * + * @param Array $args array of arguments (URL, GET, POST) + * + * @return boolean success flag + */ + + function prepare($args) + { + parent::prepare($args); + return $this->sharedBoilerplate(); + } + + protected function validateFeedUrl($url) + { + if (common_valid_http_url($url)) { + return $url; + } else { + $this->clientError(_m("Invalid feed URL.")); + } + } + + protected function validateProfile($id) + { + $id = intval($id); + $profile = Profile::staticGet('id', $id); + if ($profile && $profile->id != $this->user->id) { + return $profile; + } + // TRANS: Error message returned to user when setting up feed mirroring, but we were unable to resolve the given URL to a working feed. + $this->clientError(_m("Invalid profile for mirroring.")); + } + + /** + * + * @param string $url + * @return Profile + */ + protected function profileForFeed($url) + { + try { + // Maybe we got a web page? + $oprofile = Ostatus_profile::ensureProfileURL($url); + } catch (Exception $e) { + // Direct feed URL? + $oprofile = Ostatus_profile::ensureFeedURL($url); + } + if ($oprofile->isGroup()) { + $this->clientError(_m("Can't mirror a StatusNet group at this time.")); + } + $this->oprofile = $oprofile; // @fixme ugly side effect :D + return $oprofile->localProfile(); + } + + /** + * @fixme none of this belongs in end classes + * this stuff belongs in shared code! + */ + function sharedBoilerplate() + { + // Only allow POST requests + + if ($_SERVER['REQUEST_METHOD'] != 'POST') { + $this->clientError(_('This action only accepts POST requests.')); + return false; + } + + // CSRF protection + + $token = $this->trimmed('token'); + + if (!$token || $token != common_session_token()) { + $this->clientError(_('There was a problem with your session token.'. + ' Try again, please.')); + return false; + } + + // Only for logged-in users + + $this->user = common_current_user(); + + if (empty($this->user)) { + $this->clientError(_('Not logged in.')); + return false; + } + return true; + } + + /** + * Handle request + * + * Does the subscription and returns results. + * + * @param Array $args unused. + * + * @return void + */ + + function handle($args) + { + // Throws exception on error + $this->saveMirror(); + + if ($this->boolean('ajax')) { + $this->startHTML('text/xml;charset=utf-8'); + $this->elementStart('head'); + $this->element('title', null, _('Subscribed')); + $this->elementEnd('head'); + $this->elementStart('body'); + $unsubscribe = new EditMirrorForm($this, $this->profile); + $unsubscribe->show(); + $this->elementEnd('body'); + $this->elementEnd('html'); + } else { + $url = common_local_url('mirrorsettings'); + common_redirect($url, 303); + } + } + + abstract function saveMirror(); +} diff --git a/plugins/SubMirror/actions/editmirror.php b/plugins/SubMirror/actions/editmirror.php new file mode 100644 index 000000000..c7fdab0d6 --- /dev/null +++ b/plugins/SubMirror/actions/editmirror.php @@ -0,0 +1,112 @@ +<?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/>. + * + * PHP version 5 + * + * @category Action + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Takes parameters: + * + * - feed: a profile ID + * - token: session token to prevent CSRF attacks + * - ajax: boolean; whether to return Ajax or full-browser results + * + * Only works if the current user is logged in. + * + * @category Action + * @package StatusNet + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPLv3 + * @link http://status.net/ + */ + +class EditMirrorAction extends BaseMirrorAction +{ + + /** + * Check pre-requisites and instantiate attributes + * + * @param Array $args array of arguments (URL, GET, POST) + * + * @return boolean success flag + */ + + function prepare($args) + { + parent::prepare($args); + + $this->profile = $this->validateProfile($this->trimmed('profile')); + + $this->mirror = SubMirror::pkeyGet(array('subscriber' => $this->user->id, + 'subscribed' => $this->profile->id)); + + if (!$this->mirror) { + $this->clientError(_m("Requested invalid profile to edit.")); + } + + $this->style = $this->validateStyle($this->trimmed('style')); + + // DO NOT change to $this->boolean(), it will be wrong. + // We're checking for the presence of the setting, not its value. + $this->delete = (bool)$this->arg('delete'); + + return true; + } + + protected function validateStyle($style) + { + $allowed = array('repeat', 'copy'); + if (in_array($style, $allowed)) { + return $style; + } else { + $this->clientError(_m("Bad form data.")); + } + } + + function saveMirror() + { + $mirror = SubMirror::getMirror($this->user, $this->profile); + if (!$mirror) { + $this->clientError(_m('Requested edit of missing mirror')); + } + + if ($this->delete) { + $mirror->delete(); + $oprofile = Ostatus_profile::staticGet('profile_id', $this->profile->id); + if ($oprofile) { + $oprofile->garbageCollect(); + } + } else if ($this->style != $mirror->style) { + $orig = clone($mirror); + $mirror->style = $this->style; + $mirror->modified = common_sql_now(); + $mirror->update($orig); + } + } +} diff --git a/plugins/SubMirror/actions/mirrorsettings.php b/plugins/SubMirror/actions/mirrorsettings.php new file mode 100644 index 000000000..5463a8dc0 --- /dev/null +++ b/plugins/SubMirror/actions/mirrorsettings.php @@ -0,0 +1,106 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * 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 Plugins + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +class MirrorSettingsAction extends AccountSettingsAction +{ + /** + * Title of the page + * + * @return string Page title + */ + + function title() + { + return _m('Feed mirror settings'); + } + + /** + * Instructions for use + * + * @return string Instructions for use + */ + + function getInstructions() + { + return _m('You can mirror updates from many RSS and Atom feeds ' . + 'into your StatusNet timeline!'); + } + + /** + * Show the form for OpenID management + * + * We have one form with a few different submit buttons to do different things. + * + * @return void + */ + + function showContent() + { + $user = common_current_user(); + + $this->showAddFeedForm(); + + $mirror = new SubMirror(); + $mirror->subscriber = $user->id; + if ($mirror->find()) { + while ($mirror->fetch()) { + $this->showFeedForm($mirror); + } + } + } + + function showFeedForm($mirror) + { + $profile = Profile::staticGet('id', $mirror->subscribed); + if ($profile) { + $form = new EditMirrorForm($this, $profile); + $form->show(); + } + } + + function showAddFeedForm() + { + $form = new AddMirrorForm($this); + $form->show(); + } + + /** + * Handle a POST request + * + * Muxes to different sub-functions based on which button was pushed + * + * @return void + */ + + function handlePost() + { + } +} diff --git a/plugins/SubMirror/classes/SubMirror.php b/plugins/SubMirror/classes/SubMirror.php new file mode 100644 index 000000000..bd8fc80a5 --- /dev/null +++ b/plugins/SubMirror/classes/SubMirror.php @@ -0,0 +1,229 @@ +<?php +/* + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** + * @package SubMirrorPlugin + * @maintainer Brion Vibber <brion@status.net> + */ + +class SubMirror extends Memcached_DataObject +{ + public $__table = 'submirror'; + + public $subscriber; + public $subscribed; + + public $style; + + public $created; + public $modified; + + public /*static*/ function staticGet($k, $v=null) + { + return parent::staticGet(__CLASS__, $k, $v); + } + + /** + * return table definition for DB_DataObject + * + * DB_DataObject needs to know something about the table to manipulate + * instances. This method provides all the DB_DataObject needs to know. + * + * @return array array of column definitions + */ + + function table() + { + return array('subscriber' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'subscribed' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + + 'style' => DB_DATAOBJECT_STR, + + 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL, + 'modified' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL); + } + + static function schemaDef() + { + // @fixme need a reverse key on (subscribed, subscriber) as well + return array(new ColumnDef('subscriber', 'integer', + null, false, 'PRI'), + new ColumnDef('subscribed', 'integer', + null, false, 'PRI'), + + new ColumnDef('style', 'varchar', + 16, true), + + new ColumnDef('created', 'datetime', + null, false), + new ColumnDef('modified', 'datetime', + null, false)); + } + + /** + * Temporary hack to set up the compound index, since we can't do + * it yet through regular Schema interface. (Coming for 1.0...) + * + * @param Schema $schema + * @return void + */ + static function fixIndexes($schema) + { + try { + $schema->createIndex('submirror', array('subscribed', 'subscriber')); + } catch (Exception $e) { + common_log(LOG_ERR, __METHOD__ . ': ' . $e->getMessage()); + } + } + + /** + * return key definitions for DB_DataObject + * + * DB_DataObject needs to know about keys that the table has; this function + * defines them. + * + * @return array key definitions + */ + + function keys() + { + return array_keys($this->keyTypes()); + } + + /** + * return key definitions for Memcached_DataObject + * + * Our caching system uses the same key definitions, but uses a different + * method to get them. + * + * @return array key definitions + */ + + function keyTypes() + { + // @fixme keys + // need a sane key for reverse lookup too + return array('subscriber' => 'K', 'subscribed' => 'K'); + } + + function sequenceKey() + { + return array(false, false, false); + } + + /** + * @param Profile $subscribed + * @param Profile $subscribed + * @return SubMirror + * @throws ServerException + */ + public static function saveMirror($subscriber, $subscribed, $style='repeat') + { + // @fixme make sure they're subscribed! + $mirror = new SubMirror(); + + $mirror->subscriber = $subscriber->id; + $mirror->subscribed = $subscribed->id; + $mirror->style = $style; + + $mirror->created = common_sql_now(); + $mirror->modified = common_sql_now(); + $mirror->insert(); + + return $mirror; + } + + /** + * @param Notice $notice + * @return mixed Notice on successful mirroring, boolean if not + */ + public function mirrorNotice($notice) + { + $profile = Profile::staticGet('id', $this->subscriber); + if (!$profile) { + common_log(LOG_ERROR, "SubMirror plugin skipping auto-repeat of notice $notice->id for missing user $profile->id"); + return false; + } + + if ($this->style == 'copy') { + return $this->copyNotice($profile, $notice); + } else { // default to repeat mode + return $this->repeatNotice($profile, $notice); + } + } + + /** + * Mirror a notice using StatusNet's repeat functionality. + * This retains attribution within the site, and other nice things, + * but currently ends up looking like 'RT @foobar bla bla' when + * bridged out over OStatus or TwitterBridge. + * + * @param Notice $notice + * @return mixed Notice on successful repeat, true if already repeated, false on failure + */ + protected function repeatNotice($profile, $notice) + { + if($profile->hasRepeated($notice->id)) { + common_log(LOG_INFO, "SubMirror plugin skipping auto-repeat of notice $notice->id for user $profile->id; already repeated."); + return true; + } else { + common_log(LOG_INFO, "SubMirror plugin auto-repeating notice $notice->id for $profile->id"); + return $notice->repeat($profile->id, 'mirror'); + } + } + + /** + * Mirror a notice by emitting a new notice with the same contents. + * Kind of dirty, but if pulling an external data feed into an account + * that may be what you want. + * + * @param Notice $notice + * @return mixed Notice on successful repeat, true if already repeated, false on failure + */ + protected function copyNotice($profile, $notice) + { + $options = array('is_local' => Notice::LOCAL_PUBLIC, + 'url' => $notice->bestUrl(), // pass through the foreign link... + 'rendered' => $notice->rendered); + + $saved = Notice::saveNew($profile->id, + $notice->content, + 'feed', + $options); + return $saved; + } + + public /*static*/ function pkeyGet($v) + { + return parent::pkeyGet(__CLASS__, $v); + } + + /** + * Get the mirroring setting for a pair of profiles, if existing. + * + * @param Profile $subscriber + * @param Profile $subscribed + * @return mixed Profile or empty + */ + public static function getMirror($subscriber, $subscribed) + { + return self::pkeyGet(array('subscriber' => $subscriber->id, + 'subscribed' => $subscribed->id)); + } +} diff --git a/plugins/SubMirror/lib/addmirrorform.php b/plugins/SubMirror/lib/addmirrorform.php new file mode 100644 index 000000000..0a798c9ea --- /dev/null +++ b/plugins/SubMirror/lib/addmirrorform.php @@ -0,0 +1,141 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * 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/>. + * + * @package StatusNet + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +class AddMirrorForm extends Form +{ + + /** + * Name of the form + * + * Sub-classes should overload this with the name of their form. + * + * @return void + */ + + function formLegend() + { + } + + /** + * Visible or invisible data elements + * + * Display the form fields that make up the data of the form. + * Sub-classes should overload this to show their data. + * + * @return void + */ + + function formData() + { + $this->out->elementStart('fieldset'); + + $this->out->elementStart('ul'); + + $this->li(); + $this->doInput('addmirror-feedurl', + 'feedurl', + _m('Web page or feed URL:'), + $this->out->trimmed('feedurl')); + $this->unli(); + + $this->li(); + $this->out->submit('addmirror-save', _m('Add feed')); + $this->unli(); + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + } + + private function doInput($id, $name, $label, $value=null, $instructions=null) + { + $this->out->element('label', array('for' => $id), $label); + $attrs = array('name' => $name, + 'type' => 'text', + 'id' => $id, + 'style' => 'width: 80%'); + if ($value) { + $attrs['value'] = $value; + } + $this->out->element('input', $attrs); + if ($instructions) { + $this->out->element('p', 'form_guide', $instructions); + } + } + + /** + * Buttons for form actions + * + * Submit and cancel buttons (or whatever) + * Sub-classes should overload this to show their own buttons. + * + * @return void + */ + + function formActions() + { + } + + /** + * ID of the form + * + * Should be unique on the page. Sub-classes should overload this + * to show their own IDs. + * + * @return string ID of the form + */ + + function id() + { + return 'add-mirror-form'; + } + + /** + * Action of the form. + * + * URL to post to. Should be overloaded by subclasses to give + * somewhere to post to. + * + * @return string URL to post to + */ + + function action() + { + return common_local_url('addmirror'); + } + + /** + * Class of the form. + * + * @return string the form's class + */ + + function formClass() + { + return 'form_settings'; + } + +} diff --git a/plugins/SubMirror/lib/editmirrorform.php b/plugins/SubMirror/lib/editmirrorform.php new file mode 100644 index 000000000..8236da389 --- /dev/null +++ b/plugins/SubMirror/lib/editmirrorform.php @@ -0,0 +1,189 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * 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/>. + * + * @package StatusNet + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +class EditMirrorForm extends Form +{ + function __construct($action, $profile) + { + parent::__construct($action); + + $this->profile = clone($profile); + $this->user = common_current_user(); + $this->mirror = SubMirror::pkeyGet(array('subscriber' => $this->user->id, + 'subscribed' => $this->profile->id)); + } + + /** + * Name of the form + * + * Sub-classes should overload this with the name of their form. + * + * @return void + */ + + function formLegend() + { + } + + /** + * Visible or invisible data elements + * + * Display the form fields that make up the data of the form. + * Sub-classes should overload this to show their data. + * + * @return void + */ + + function formData() + { + $this->out->elementStart('fieldset'); + + $this->out->hidden('profile', $this->profile->id); + + $this->out->elementStart('div', array('style' => 'float: left; width: 80px;')); + $img = $this->getAvatar($this->profile); + $feed = $this->getFeed($this->profile); + $this->out->elementStart('a', array('href' => $this->profile->profileurl)); + $this->out->element('img', array('src' => $img, 'style' => 'float: left')); + $this->out->elementEnd('a'); + $this->out->elementEnd('div'); + + + $this->out->elementStart('div', array('style' => 'margin-left: 80px; margin-right: 20px')); + $this->out->elementStart('p'); + $this->out->elementStart('div'); + $this->out->element('a', array('href' => $this->profile->profileurl), $this->profile->getBestName()); + $this->out->elementEnd('div'); + $this->out->elementStart('div'); + if ($feed) { + $this->out->text(_m('LABEL', 'Remote feed:') . ' '); + //$this->out->element('a', array('href' => $feed), $feed); + $this->out->element('input', array('value' => $feed, 'readonly' => 'readonly', 'style' => 'width: 100%')); + } else { + $this->out->text(_m('LABEL', 'Local user')); + } + $this->out->elementEnd('div'); + $this->out->elementEnd('p'); + + $this->out->elementStart('fieldset', array('style' => 'margin-top: 20px')); + $this->out->element('legend', false, _m("Mirroring style")); + + $styles = array('repeat' => _m("Repeat: reference the original user's post (sometimes shows as 'RT @blah')"), + 'copy' => _m("Repost the content under my account")); + foreach ($styles as $key => $label) { + $this->out->elementStart('div'); + $attribs = array('type' => 'radio', + 'value' => $key, + 'name' => 'style', + 'id' => $this->id() . '-style'); + if ($key == $this->mirror->style || ($key == 'repeat' && empty($this->mirror->style))) { + $attribs['checked'] = 'checked'; + } + $this->out->element('input', $attribs); + $this->out->element('span', false, $label); // @fixme should be label, but the styles muck it up for now + $this->out->elementEnd('div'); + + } + $this->out->elementEnd('fieldset'); + + + $this->out->elementStart('div'); + $this->out->submit($this->id() . '-save', _m('Save')); + $this->out->element('input', array('type' => 'submit', + 'value' => _m('Stop mirroring'), + 'name' => 'delete', + 'class' => 'submit')); + $this->out->elementEnd('div'); + + $this->out->elementEnd('div'); + $this->out->elementEnd('fieldset'); + } + + private function getAvatar($profile) + { + $avatar = $this->profile->getAvatar(48); + if ($avatar) { + return $avatar->displayUrl(); + } else { + return Avatar::defaultImage(48); + } + } + + private function getFeed($profile) + { + // Ok this is a bit of a hack. ;) + if (class_exists('Ostatus_profile')) { + $oprofile = Ostatus_profile::staticGet('profile_id', $profile->id); + if ($oprofile) { + return $oprofile->feeduri; + } + } + var_dump('wtf'); + return false; + } + + /** + * ID of the form + * + * Should be unique on the page. Sub-classes should overload this + * to show their own IDs. + * + * @return string ID of the form + */ + + function id() + { + return 'edit-mirror-form-' . $this->profile->id; + } + + /** + * Action of the form. + * + * URL to post to. Should be overloaded by subclasses to give + * somewhere to post to. + * + * @return string URL to post to + */ + + function action() + { + return common_local_url('editmirror'); + } + + /** + * Class of the form. + * + * @return string the form's class + */ + + function formClass() + { + return 'form_settings'; + } + +} diff --git a/plugins/SubMirror/lib/mirrorqueuehandler.php b/plugins/SubMirror/lib/mirrorqueuehandler.php new file mode 100644 index 000000000..92b36b5eb --- /dev/null +++ b/plugins/SubMirror/lib/mirrorqueuehandler.php @@ -0,0 +1,45 @@ +<?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/>. + */ + +/** + * Check for subscription mirroring options on each newly seen post! + * + * @package SubMirror + * @author Brion Vibber <brion@status.net> + */ + +class MirrorQueueHandler extends QueueHandler +{ + function transport() + { + return 'mirror'; + } + + function handle($notice) + { + $mirror = new SubMirror(); + $mirror->subscribed = $notice->profile_id; + if ($mirror->find()) { + while ($mirror->fetch()) { + $mirror->mirrorNotice($notice); + } + } + return true; + } +} diff --git a/plugins/TabFocus/TabFocusPlugin.php b/plugins/TabFocus/TabFocusPlugin.php index bf89c478c..46e329d8a 100644 --- a/plugins/TabFocus/TabFocusPlugin.php +++ b/plugins/TabFocus/TabFocusPlugin.php @@ -23,7 +23,7 @@ * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> * @author Paul Irish <paul.irish@isobar.net> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/TightUrl/TightUrlPlugin.php b/plugins/TightUrl/TightUrlPlugin.php index e2d494a7b..b8e5addb1 100644 --- a/plugins/TightUrl/TightUrlPlugin.php +++ b/plugins/TightUrl/TightUrlPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> - * @copyright 2009 Craig Andrews http://candrews.integralblue.com + * @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/ */ diff --git a/plugins/TinyMCE/TinyMCEPlugin.php b/plugins/TinyMCE/TinyMCEPlugin.php new file mode 100644 index 000000000..ca16f6059 --- /dev/null +++ b/plugins/TinyMCE/TinyMCEPlugin.php @@ -0,0 +1,325 @@ +<?php + +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * Use TinyMCE library to allow rich text editing in the browser + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category WYSIWYG + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * Use TinyMCE library to allow rich text editing in the browser + * + * Converts the notice form in browser to a rich-text editor. + * + * @category WYSIWYG + * @package StatusNet + * @author Evan Prodromou <evan@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ +class TinyMCEPlugin extends Plugin +{ + + var $html; + + function onEndShowScripts($action) + { + if (common_logged_in ()) { + $action->script(common_path('plugins/TinyMCE/js/jquery.tinymce.js')); + $action->inlineScript($this->_inlineScript()); + } + + return true; + } + + function onEndShowStyles($action) + { + $action->style('span#notice_data-text_container, span#notice_data-text_parent { float: left }'); + return true; + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'TinyMCE', + 'version' => STATUSNET_VERSION, + 'author' => 'Evan Prodromou', + 'homepage' => 'http://status.net/wiki/Plugin:TinyMCE', + 'rawdescription' => + _m('Use TinyMCE library to allow rich text editing in the browser')); + return true; + } + + /** + * Sanitize HTML input and strip out potentially dangerous bits. + * + * @param string $raw HTML + * @return string HTML + */ + private function sanitizeHtml($raw) + { + require_once INSTALLDIR . '/extlib/htmLawed/htmLawed.php'; + + $config = array('safe' => 1, + 'deny_attribute' => 'id,style,on*'); + + return htmLawed($raw, $config); + } + + /** + * Strip HTML to plaintext string + * + * @param string $html HTML + * @return string plaintext, single line + */ + private function stripHtml($html) + { + return str_replace("\n", " ", html_entity_decode(strip_tags($html), ENT_QUOTES, 'UTF-8')); + } + + /** + * Hook for new-notice form processing to take our HTML goodies; + * won't affect API posting etc. + * + * @param NewNoticeAction $action + * @param User $user + * @param string $content + * @param array $options + * @return boolean hook return + */ + function onStartSaveNewNoticeWeb($action, $user, &$content, &$options) + { + if ($action->arg('richedit')) { + $html = $this->sanitizeHtml($content); + $options['rendered'] = $html; + $content = $this->stripHtml($html); + } + return true; + } + + /** + * Hook for new-notice form processing to process file upload appending... + * + * @param NewNoticeAction $action + * @param MediaFile $media + * @param string $content + * @param array $options + * @return boolean hook return + */ + function onStartSaveNewNoticeAppendAttachment($action, $media, &$content, &$options) + { + if ($action->arg('richedit')) { + // See if we've got a placeholder inline image; if so, fill it! + $dom = new DOMDocument(); + + if ($dom->loadHTML($options['rendered'])) { + $imgs = $dom->getElementsByTagName('img'); + foreach ($imgs as $img) { + if (preg_match('/(^| )placeholder( |$)/', $img->getAttribute('class'))) { + // Create a link to the attachment page... + $this->formatAttachment($img, $media); + } + } + $options['rendered'] = $this->saveHtml($dom); + } + + // The regular code will append the short URL to the plaintext content. + // Carry on and let it through... + } + return true; + } + + /** + * Format the attachment placeholder img with the final version. + * + * @param DOMElement $img + * @param MediaFile $media + */ + private function formatAttachment($img, $media) + { + $parent = $img->parentNode; + $dom = $img->ownerDocument; + + $link = $dom->createElement('a'); + $link->setAttribute('href', $media->fileurl); + $link->setAttribute('title', File::url($media->filename)); + + if ($this->isEmbeddable($media)) { + // Fix the the <img> attributes and wrap the link around it... + $this->insertImage($img, $media); + $parent->replaceChild($link, $img); //it dies in here?! + $link->appendChild($img); + } else { + // Not an image? Replace it with a text link. + $link->setAttribute('rel', 'external'); + $link->setAttribute('class', 'attachment'); + $link->setAttribute('id', 'attachment-' . $media->fileRecord->id); + $text = $dom->createTextNode($media->shortUrl()); + $link->appendChild($text); + $parent->replaceChild($link, $img); + } + } + + /** + * Is this media file a type we can display inline? + * + * @param MediaFile $media + * @return boolean + */ + private function isEmbeddable($media) + { + $showable = array('image/png', + 'image/gif', + 'image/jpeg'); + return in_array($media->mimetype, $showable); + } + + /** + * Rewrite and resize a placeholder image element to match the uploaded + * file. If the holder is smaller than the file, the file is scaled to fit + * with correct aspect ratio (but will be loaded at full resolution). + * + * @param DOMElement $img + * @param MediaFile $media + */ + private function insertImage($img, $media) + { + $img->setAttribute('src', $media->fileRecord->url); + + $holderWidth = intval($img->getAttribute('width')); + $holderHeight = intval($img->getAttribute('height')); + + $path = File::path($media->filename); + $imgInfo = getimagesize($path); + + if ($imgInfo) { + $origWidth = $imgInfo[0]; + $origHeight = $imgInfo[1]; + + list($width, $height) = $this->sizeBox( + $origWidth, $origHeight, + $holderWidth, $holderHeight); + + $img->setAttribute('width', $width); + $img->setAttribute('height', $height); + } + } + + /** + * + * @param int $origWidth + * @param int $origHeight + * @param int $holderWidth + * @param int $holderHeight + * @return array($width, $height) + */ + private function sizeBox($origWidth, $origHeight, $holderWidth, $holderHeight) + { + $holderAspect = $holderWidth / $holderHeight; + $origAspect = $origWidth / $origHeight; + if ($origAspect >= 1.0) { + // wide image + if ($origWidth > $holderWidth) { + return array($holderWidth, intval($holderWidth / $origAspect)); + } else { + return array($origWidth, $origHeight); + } + } else { + if ($origHeight > $holderHeight) { + return array(intval($holderWidth * $origAspect), $holderHeight); + } else { + return array($origWidth, $origHeight); + } + } + } + + private function saveHtml($dom) + { + $html = $dom->saveHTML(); + // hack to remove surrounding crap added to the dom + // all we wanted was a fragment + $stripped = preg_replace('/^.*<body[^>]*>(.*)<\/body.*$/is', '$1', $html); + return $stripped; + } + + function _inlineScript() + { + $path = common_path('plugins/TinyMCE/js/tiny_mce.js'); + $placeholder = common_path('plugins/TinyMCE/icons/placeholder.png'); + + // Note: the normal on-submit triggering to save data from + // the HTML editor into the textarea doesn't play well with + // our AJAX form submission. Manually moving it to trigger + // on our send button click. + $scr = <<<END_OF_SCRIPT + $().ready(function() { + var noticeForm = $('#form_notice'); + $('textarea#notice_data-text').tinymce({ + script_url : '{$path}', + // General options + theme : "advanced", + plugins : "paste,fullscreen,autoresize,inlinepopups,tabfocus,linkautodetect", + theme_advanced_buttons1 : "bold,italic,strikethrough,|,undo,redo,|,link,unlink,image,|,fullscreen", + theme_advanced_buttons2 : "", + theme_advanced_buttons3 : "", + add_form_submit_trigger : false, + theme_advanced_resizing : true, + tabfocus_elements: ":prev,:next", + setup: function(ed) { + noticeForm.append('<input type="hidden" name="richedit" value="1">'); + + $('#notice_action-submit').click(function() { + tinymce.triggerSave(); + }); + + var origCounter = SN.U.CharacterCount; + SN.U.CharacterCount = function(form) { + var text = $(ed.getDoc()).text(); + return text.length; + }; + ed.onKeyUp.add(function (ed, e) { + SN.U.Counter(noticeForm); + }); + + $('#'+SN.C.S.NoticeDataAttach).change(function() { + var img = '<img src="{$placeholder}" class="placeholder" width="320" height="240">'; + var html = tinyMCE.activeEditor.getContent(); + ed.setContent(html + img); + }); + } + }); + }); +END_OF_SCRIPT; + + return $scr; + } + +} diff --git a/plugins/TinyMCE/icons/placeholder.png b/plugins/TinyMCE/icons/placeholder.png Binary files differnew file mode 100644 index 000000000..911f257d5 --- /dev/null +++ b/plugins/TinyMCE/icons/placeholder.png diff --git a/plugins/TinyMCE/icons/placeholder.xcf b/plugins/TinyMCE/icons/placeholder.xcf Binary files differnew file mode 100644 index 000000000..e05f8a9c9 --- /dev/null +++ b/plugins/TinyMCE/icons/placeholder.xcf diff --git a/plugins/TinyMCE/js/jquery.tinymce.js b/plugins/TinyMCE/js/jquery.tinymce.js new file mode 100644 index 000000000..4866c2a06 --- /dev/null +++ b/plugins/TinyMCE/js/jquery.tinymce.js @@ -0,0 +1 @@ +(function(b){var e,d,a=[],c=window;b.fn.tinymce=function(j){var p=this,g,k,h,m,i,l="",n="";if(!p.length){return p}if(!j){return tinyMCE.get(p[0].id)}function o(){var r=[],q=0;if(f){f();f=null}p.each(function(t,u){var s,w=u.id,v=j.oninit;if(!w){u.id=w=tinymce.DOM.uniqueId()}s=new tinymce.Editor(w,j);r.push(s);if(v){s.onInit.add(function(){var x,y=v;if(++q==r.length){if(tinymce.is(y,"string")){x=(y.indexOf(".")===-1)?null:tinymce.resolve(y.replace(/\.\w+$/,""));y=tinymce.resolve(y)}y.apply(x||tinymce,r)}})}});b.each(r,function(t,s){s.render()})}if(!c.tinymce&&!d&&(g=j.script_url)){d=1;h=g.substring(0,g.lastIndexOf("/"));if(/_(src|dev)\.js/g.test(g)){n="_src"}m=g.lastIndexOf("?");if(m!=-1){l=g.substring(m+1)}c.tinyMCEPreInit=c.tinyMCEPreInit||{base:h,suffix:n,query:l};if(g.indexOf("gzip")!=-1){i=j.language||"en";g=g+(/\?/.test(g)?"&":"?")+"js=true&core=true&suffix="+escape(n)+"&themes="+escape(j.theme)+"&plugins="+escape(j.plugins)+"&languages="+i;if(!c.tinyMCE_GZ){tinyMCE_GZ={start:function(){tinymce.suffix=n;function q(r){tinymce.ScriptLoader.markDone(tinyMCE.baseURI.toAbsolute(r))}q("langs/"+i+".js");q("themes/"+j.theme+"/editor_template"+n+".js");q("themes/"+j.theme+"/langs/"+i+".js");b.each(j.plugins.split(","),function(s,r){if(r){q("plugins/"+r+"/editor_plugin"+n+".js");q("plugins/"+r+"/langs/"+i+".js")}})},end:function(){}}}}b.ajax({type:"GET",url:g,dataType:"script",cache:true,success:function(){tinymce.dom.Event.domLoaded=1;d=2;if(j.script_loaded){j.script_loaded()}o();b.each(a,function(q,r){r()})}})}else{if(d===1){a.push(o)}else{o()}}return p};b.extend(b.expr[":"],{tinymce:function(g){return g.id&&!!tinyMCE.get(g.id)}});function f(){function i(l){if(l==="remove"){this.each(function(n,o){var m=h(o);if(m){m.remove()}})}this.find("span.mceEditor,div.mceEditor").each(function(n,o){var m=tinyMCE.get(o.id.replace(/_parent$/,""));if(m){m.remove()}})}function k(n){var m=this,l;if(n!==e){i.call(m);m.each(function(p,q){var o;if(o=tinyMCE.get(q.id)){o.setContent(n)}})}else{if(m.length>0){if(l=tinyMCE.get(m[0].id)){return l.getContent()}}}}function h(m){var l=null;(m)&&(m.id)&&(c.tinymce)&&(l=tinyMCE.get(m.id));return l}function g(l){return !!((l)&&(l.length)&&(c.tinymce)&&(l.is(":tinymce")))}var j={};b.each(["text","html","val"],function(n,l){var o=j[l]=b.fn[l],m=(l==="text");b.fn[l]=function(s){var p=this;if(!g(p)){return o.apply(p,arguments)}if(s!==e){k.call(p.filter(":tinymce"),s);o.apply(p.not(":tinymce"),arguments);return p}else{var r="";var q=arguments;(m?p:p.eq(0)).each(function(u,v){var t=h(v);r+=t?(m?t.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):t.getContent()):o.apply(b(v),q)});return r}}});b.each(["append","prepend"],function(n,m){var o=j[m]=b.fn[m],l=(m==="prepend");b.fn[m]=function(q){var p=this;if(!g(p)){return o.apply(p,arguments)}if(q!==e){p.filter(":tinymce").each(function(s,t){var r=h(t);r&&r.setContent(l?q+r.getContent():r.getContent()+q)});o.apply(p.not(":tinymce"),arguments);return p}}});b.each(["remove","replaceWith","replaceAll","empty"],function(m,l){var n=j[l]=b.fn[l];b.fn[l]=function(){i.call(this,l);return n.apply(this,arguments)}});j.attr=b.fn.attr;b.fn.attr=function(n,q,o){var m=this;if((!n)||(n!=="value")||(!g(m))){return j.attr.call(m,n,q,o)}if(q!==e){k.call(m.filter(":tinymce"),q);j.attr.call(m.not(":tinymce"),n,q,o);return m}else{var p=m[0],l=h(p);return l?l.getContent():j.attr.call(b(p),n,q,o)}}}})(jQuery);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/langs/en.js b/plugins/TinyMCE/js/langs/en.js new file mode 100644 index 000000000..ea4a1b0e1 --- /dev/null +++ b/plugins/TinyMCE/js/langs/en.js @@ -0,0 +1,170 @@ +tinyMCE.addI18n({en:{
+common:{
+edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?",
+apply:"Apply",
+insert:"Insert",
+update:"Update",
+cancel:"Cancel",
+close:"Close",
+browse:"Browse",
+class_name:"Class",
+not_set:"-- Not set --",
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?",
+clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.",
+popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.",
+invalid_data:"Error: Invalid values entered, these are marked in red.",
+more_colors:"More colors"
+},
+contextmenu:{
+align:"Alignment",
+left:"Left",
+center:"Center",
+right:"Right",
+full:"Full"
+},
+insertdatetime:{
+date_fmt:"%Y-%m-%d",
+time_fmt:"%H:%M:%S",
+insertdate_desc:"Insert date",
+inserttime_desc:"Insert time",
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
+months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
+},
+print:{
+print_desc:"Print"
+},
+preview:{
+preview_desc:"Preview"
+},
+directionality:{
+ltr_desc:"Direction left to right",
+rtl_desc:"Direction right to left"
+},
+layer:{
+insertlayer_desc:"Insert new layer",
+forward_desc:"Move forward",
+backward_desc:"Move backward",
+absolute_desc:"Toggle absolute positioning",
+content:"New layer..."
+},
+save:{
+save_desc:"Save",
+cancel_desc:"Cancel all changes"
+},
+nonbreaking:{
+nonbreaking_desc:"Insert non-breaking space character"
+},
+iespell:{
+iespell_desc:"Run spell checking",
+download:"ieSpell not detected. Do you want to install it now?"
+},
+advhr:{
+advhr_desc:"Horizontal rule"
+},
+emotions:{
+emotions_desc:"Emotions"
+},
+searchreplace:{
+search_desc:"Find",
+replace_desc:"Find/Replace"
+},
+advimage:{
+image_desc:"Insert/edit image"
+},
+advlink:{
+link_desc:"Insert/edit link"
+},
+xhtmlxtras:{
+cite_desc:"Citation",
+abbr_desc:"Abbreviation",
+acronym_desc:"Acronym",
+del_desc:"Deletion",
+ins_desc:"Insertion",
+attribs_desc:"Insert/Edit Attributes"
+},
+style:{
+desc:"Edit CSS Style"
+},
+paste:{
+paste_text_desc:"Paste as Plain Text",
+paste_word_desc:"Paste from Word",
+selectall_desc:"Select All",
+plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.",
+plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode."
+},
+paste_dlg:{
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."
+},
+table:{
+desc:"Inserts a new table",
+row_before_desc:"Insert row before",
+row_after_desc:"Insert row after",
+delete_row_desc:"Delete row",
+col_before_desc:"Insert column before",
+col_after_desc:"Insert column after",
+delete_col_desc:"Remove column",
+split_cells_desc:"Split merged table cells",
+merge_cells_desc:"Merge table cells",
+row_desc:"Table row properties",
+cell_desc:"Table cell properties",
+props_desc:"Table properties",
+paste_row_before_desc:"Paste table row before",
+paste_row_after_desc:"Paste table row after",
+cut_row_desc:"Cut table row",
+copy_row_desc:"Copy table row",
+del:"Delete table",
+row:"Row",
+col:"Column",
+cell:"Cell"
+},
+autosave:{
+unload_msg:"The changes you made will be lost if you navigate away from this page.",
+restore_content:"Restore auto-saved content.",
+warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?."
+},
+fullscreen:{
+desc:"Toggle fullscreen mode"
+},
+media:{
+desc:"Insert / edit embedded media",
+edit:"Edit embedded media"
+},
+fullpage:{
+desc:"Document properties"
+},
+template:{
+desc:"Insert predefined template content"
+},
+visualchars:{
+desc:"Visual control characters on/off."
+},
+spellchecker:{
+desc:"Toggle spellchecker",
+menu:"Spellchecker settings",
+ignore_word:"Ignore word",
+ignore_words:"Ignore all",
+langs:"Languages",
+wait:"Please wait...",
+sug:"Suggestions",
+no_sug:"No suggestions",
+no_mpell:"No misspellings found."
+},
+pagebreak:{
+desc:"Insert page break."
+},
+advlist:{
+types:"Types",
+def:"Default",
+lower_alpha:"Lower alpha",
+lower_greek:"Lower greek",
+lower_roman:"Lower roman",
+upper_alpha:"Upper alpha",
+upper_roman:"Upper roman",
+circle:"Circle",
+disc:"Disc",
+square:"Square"
+}}});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/license.txt b/plugins/TinyMCE/js/license.txt new file mode 100644 index 000000000..60d6d4c8f --- /dev/null +++ b/plugins/TinyMCE/js/license.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/plugins/TinyMCE/js/plugins/advhr/css/advhr.css b/plugins/TinyMCE/js/plugins/advhr/css/advhr.css new file mode 100644 index 000000000..0e2283498 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advhr/css/advhr.css @@ -0,0 +1,5 @@ +input.radio {border:1px none #000; background:transparent; vertical-align:middle;}
+.panel_wrapper div.current {height:80px;}
+#width {width:50px; vertical-align:middle;}
+#width2 {width:50px; vertical-align:middle;}
+#size {width:100px;}
diff --git a/plugins/TinyMCE/js/plugins/advhr/editor_plugin.js b/plugins/TinyMCE/js/plugins/advhr/editor_plugin.js new file mode 100644 index 000000000..4d3b062de --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advhr/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advhr/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/advhr/editor_plugin_src.js new file mode 100644 index 000000000..0c652d330 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advhr/editor_plugin_src.js @@ -0,0 +1,57 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.AdvancedHRPlugin', {
+ init : function(ed, url) {
+ // Register commands
+ ed.addCommand('mceAdvancedHr', function() {
+ ed.windowManager.open({
+ file : url + '/rule.htm',
+ width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),
+ height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ // Register buttons
+ ed.addButton('advhr', {
+ title : 'advhr.advhr_desc',
+ cmd : 'mceAdvancedHr'
+ });
+
+ ed.onNodeChange.add(function(ed, cm, n) {
+ cm.setActive('advhr', n.nodeName == 'HR');
+ });
+
+ ed.onClick.add(function(ed, e) {
+ e = e.target;
+
+ if (e.nodeName === 'HR')
+ ed.selection.select(e);
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Advanced HR',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advhr/js/rule.js b/plugins/TinyMCE/js/plugins/advhr/js/rule.js new file mode 100644 index 000000000..b6cbd66c7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advhr/js/rule.js @@ -0,0 +1,43 @@ +var AdvHRDialog = {
+ init : function(ed) {
+ var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;
+
+ w = dom.getAttrib(n, 'width');
+ f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');
+ f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';
+ f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');
+ selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');
+ },
+
+ update : function() {
+ var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';
+
+ h = '<hr';
+
+ if (f.size.value) {
+ h += ' size="' + f.size.value + '"';
+ st += ' height:' + f.size.value + 'px;';
+ }
+
+ if (f.width.value) {
+ h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';
+ st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';
+ }
+
+ if (f.noshade.checked) {
+ h += ' noshade="noshade"';
+ st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';
+ }
+
+ if (ed.settings.inline_styles)
+ h += ' style="' + tinymce.trim(st) + '"';
+
+ h += ' />';
+
+ ed.execCommand("mceInsertContent", false, h);
+ tinyMCEPopup.close();
+ }
+};
+
+tinyMCEPopup.requireLangPack();
+tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);
diff --git a/plugins/TinyMCE/js/plugins/advhr/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/advhr/langs/en_dlg.js new file mode 100644 index 000000000..873bfd8d3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advhr/langs/en_dlg.js @@ -0,0 +1,5 @@ +tinyMCE.addI18n('en.advhr_dlg',{
+width:"Width",
+size:"Height",
+noshade:"No shadow"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advhr/rule.htm b/plugins/TinyMCE/js/plugins/advhr/rule.htm new file mode 100644 index 000000000..fc37b2aec --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advhr/rule.htm @@ -0,0 +1,57 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advhr.advhr_desc}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/rule.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <link href="css/advhr.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<form onsubmit="AdvHRDialog.update();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="width">{#advhr_dlg.width}</label></td>
+ <td class="nowrap">
+ <input id="width" name="width" type="text" value="" class="mceFocus" />
+ <select name="width2" id="width2">
+ <option value="">px</option>
+ <option value="%">%</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="size">{#advhr_dlg.size}</label></td>
+ <td><select id="size" name="size">
+ <option value="">Normal</option>
+ <option value="1">1</option>
+ <option value="2">2</option>
+ <option value="3">3</option>
+ <option value="4">4</option>
+ <option value="5">5</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td><label for="noshade">{#advhr_dlg.noshade}</label></td>
+ <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/advimage/css/advimage.css b/plugins/TinyMCE/js/plugins/advimage/css/advimage.css new file mode 100644 index 000000000..0a6251a69 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/css/advimage.css @@ -0,0 +1,13 @@ +#src_list, #over_list, #out_list {width:280px;}
+.mceActionPanel {margin-top:7px;}
+.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}
+.checkbox {border:0;}
+.panel_wrapper div.current {height:305px;}
+#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
+#align, #classlist {width:150px;}
+#width, #height {vertical-align:middle; width:50px; text-align:center;}
+#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}
+#class_list {width:180px;}
+input {width: 280px;}
+#constrain, #onmousemovecheck {width:auto;}
+#id, #dir, #lang, #usemap, #longdesc {width:200px;}
diff --git a/plugins/TinyMCE/js/plugins/advimage/editor_plugin.js b/plugins/TinyMCE/js/plugins/advimage/editor_plugin.js new file mode 100644 index 000000000..4c7a9c3a8 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advimage/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/advimage/editor_plugin_src.js new file mode 100644 index 000000000..2625dd213 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/editor_plugin_src.js @@ -0,0 +1,50 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.AdvancedImagePlugin', {
+ init : function(ed, url) {
+ // Register commands
+ ed.addCommand('mceAdvImage', function() {
+ // Internal image object like a flash placeholder
+ if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+ return;
+
+ ed.windowManager.open({
+ file : url + '/image.htm',
+ width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),
+ height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ // Register buttons
+ ed.addButton('image', {
+ title : 'advimage.image_desc',
+ cmd : 'mceAdvImage'
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Advanced image',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advimage/image.htm b/plugins/TinyMCE/js/plugins/advimage/image.htm new file mode 100644 index 000000000..79cff3f19 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/image.htm @@ -0,0 +1,232 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advimage_dlg.dialog_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/validate.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/image.js"></script>
+ <link href="css/advimage.css" rel="stylesheet" type="text/css" />
+</head>
+<body id="advimage" style="display: none">
+ <form onsubmit="ImageDialog.insert();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>
+ <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#advimage_dlg.general}</legend>
+
+ <table class="properties">
+ <tr>
+ <td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>
+ <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" /></td>
+ <td id="srcbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td><label for="src_list">{#advimage_dlg.image_list}</label></td>
+ <td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"><option value=""></option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td>
+ <td colspan="2"><input id="alt" name="alt" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td>
+ <td colspan="2"><input id="title" name="title" type="text" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#advimage_dlg.preview}</legend>
+ <div id="prev"></div>
+ </fieldset>
+ </div>
+
+ <div id="appearance_panel" class="panel">
+ <fieldset>
+ <legend>{#advimage_dlg.tab_appearance}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td>
+ <td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();">
+ <option value="">{#not_set}</option>
+ <option value="baseline">{#advimage_dlg.align_baseline}</option>
+ <option value="top">{#advimage_dlg.align_top}</option>
+ <option value="middle">{#advimage_dlg.align_middle}</option>
+ <option value="bottom">{#advimage_dlg.align_bottom}</option>
+ <option value="text-top">{#advimage_dlg.align_texttop}</option>
+ <option value="text-bottom">{#advimage_dlg.align_textbottom}</option>
+ <option value="left">{#advimage_dlg.align_left}</option>
+ <option value="right">{#advimage_dlg.align_right}</option>
+ </select>
+ </td>
+ <td rowspan="6" valign="top">
+ <div class="alignPreview">
+ <img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />
+ Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
+ nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
+ edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
+ erat volutpat.
+ </div>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>
+ <td class="nowrap">
+ <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" /> x
+ <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" /> px
+ </td>
+ </tr>
+
+ <tr>
+ <td> </td>
+ <td><table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
+ <td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>
+ </tr>
+ </table></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td>
+ <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td>
+ <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td>
+ <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="class_list">{#class_name}</label></td>
+ <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td>
+ <td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td>
+ </tr>
+
+ <!-- <tr>
+ <td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td>
+ <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
+ </tr> -->
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{#advimage_dlg.swap_image}</legend>
+
+ <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" />
+ <label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>
+
+ <table border="0" cellpadding="4" cellspacing="0" width="100%">
+ <tr>
+ <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td>
+ <td><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td>
+ <td id="onmouseoversrccontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td><label for="over_list">{#advimage_dlg.image_list}</label></td>
+ <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td>
+ <td class="column2"><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td>
+ <td id="onmouseoutsrccontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td><label for="out_list">{#advimage_dlg.image_list}</label></td>
+ <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#advimage_dlg.misc}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td>
+ <td><input id="id" name="id" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" onchange="ImageDialog.changeAppearance();">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#advimage_dlg.ltr}</option>
+ <option value="rtl">{#advimage_dlg.rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td>
+ <td>
+ <input id="usemap" name="usemap" type="text" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>
+ <td><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="longdesc" name="longdesc" type="text" value="" /></td>
+ <td id="longdesccontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/advimage/img/sample.gif b/plugins/TinyMCE/js/plugins/advimage/img/sample.gif Binary files differnew file mode 100644 index 000000000..53bf6890b --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/img/sample.gif diff --git a/plugins/TinyMCE/js/plugins/advimage/js/image.js b/plugins/TinyMCE/js/plugins/advimage/js/image.js new file mode 100644 index 000000000..3bda86a2d --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/js/image.js @@ -0,0 +1,443 @@ +var ImageDialog = {
+ preInit : function() {
+ var url;
+
+ tinyMCEPopup.requireLangPack();
+
+ if (url = tinyMCEPopup.getParam("external_image_list_url"))
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+ },
+
+ init : function(ed) {
+ var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode();
+
+ tinyMCEPopup.resizeToInnerSize();
+ this.fillClassList('class_list');
+ this.fillFileList('src_list', 'tinyMCEImageList');
+ this.fillFileList('over_list', 'tinyMCEImageList');
+ this.fillFileList('out_list', 'tinyMCEImageList');
+ TinyMCE_EditableSelects.init();
+
+ if (n.nodeName == 'IMG') {
+ nl.src.value = dom.getAttrib(n, 'src');
+ nl.width.value = dom.getAttrib(n, 'width');
+ nl.height.value = dom.getAttrib(n, 'height');
+ nl.alt.value = dom.getAttrib(n, 'alt');
+ nl.title.value = dom.getAttrib(n, 'title');
+ nl.vspace.value = this.getAttrib(n, 'vspace');
+ nl.hspace.value = this.getAttrib(n, 'hspace');
+ nl.border.value = this.getAttrib(n, 'border');
+ selectByValue(f, 'align', this.getAttrib(n, 'align'));
+ selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);
+ nl.style.value = dom.getAttrib(n, 'style');
+ nl.id.value = dom.getAttrib(n, 'id');
+ nl.dir.value = dom.getAttrib(n, 'dir');
+ nl.lang.value = dom.getAttrib(n, 'lang');
+ nl.usemap.value = dom.getAttrib(n, 'usemap');
+ nl.longdesc.value = dom.getAttrib(n, 'longdesc');
+ nl.insert.value = ed.getLang('update');
+
+ if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))
+ nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
+
+ if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))
+ nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
+
+ if (ed.settings.inline_styles) {
+ // Move attribs to styles
+ if (dom.getAttrib(n, 'align'))
+ this.updateStyle('align');
+
+ if (dom.getAttrib(n, 'hspace'))
+ this.updateStyle('hspace');
+
+ if (dom.getAttrib(n, 'border'))
+ this.updateStyle('border');
+
+ if (dom.getAttrib(n, 'vspace'))
+ this.updateStyle('vspace');
+ }
+ }
+
+ // Setup browse button
+ document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+ if (isVisible('srcbrowser'))
+ document.getElementById('src').style.width = '260px';
+
+ // Setup browse button
+ document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');
+ if (isVisible('overbrowser'))
+ document.getElementById('onmouseoversrc').style.width = '260px';
+
+ // Setup browse button
+ document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');
+ if (isVisible('outbrowser'))
+ document.getElementById('onmouseoutsrc').style.width = '260px';
+
+ // If option enabled default contrain proportions to checked
+ if (ed.getParam("advimage_constrain_proportions", true))
+ f.constrain.checked = true;
+
+ // Check swap image if valid data
+ if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)
+ this.setSwapImage(true);
+ else
+ this.setSwapImage(false);
+
+ this.changeAppearance();
+ this.showPreviewImage(nl.src.value, 1);
+ },
+
+ insert : function(file, title) {
+ var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];
+
+ if (f.src.value === '') {
+ if (ed.selection.getNode().nodeName == 'IMG') {
+ ed.dom.remove(ed.selection.getNode());
+ ed.execCommand('mceRepaint');
+ }
+
+ tinyMCEPopup.close();
+ return;
+ }
+
+ if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {
+ if (!f.alt.value) {
+ tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {
+ if (s)
+ t.insertAndClose();
+ });
+
+ return;
+ }
+ }
+
+ t.insertAndClose();
+ },
+
+ insertAndClose : function() {
+ var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;
+
+ tinyMCEPopup.restoreSelection();
+
+ // Fixes crash in Safari
+ if (tinymce.isWebKit)
+ ed.getWin().focus();
+
+ if (!ed.settings.inline_styles) {
+ args = {
+ vspace : nl.vspace.value,
+ hspace : nl.hspace.value,
+ border : nl.border.value,
+ align : getSelectValue(f, 'align')
+ };
+ } else {
+ // Remove deprecated values
+ args = {
+ vspace : '',
+ hspace : '',
+ border : '',
+ align : ''
+ };
+ }
+
+ tinymce.extend(args, {
+ src : nl.src.value,
+ width : nl.width.value,
+ height : nl.height.value,
+ alt : nl.alt.value,
+ title : nl.title.value,
+ 'class' : getSelectValue(f, 'class_list'),
+ style : nl.style.value,
+ id : nl.id.value,
+ dir : nl.dir.value,
+ lang : nl.lang.value,
+ usemap : nl.usemap.value,
+ longdesc : nl.longdesc.value
+ });
+
+ args.onmouseover = args.onmouseout = '';
+
+ if (f.onmousemovecheck.checked) {
+ if (nl.onmouseoversrc.value)
+ args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";
+
+ if (nl.onmouseoutsrc.value)
+ args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";
+ }
+
+ el = ed.selection.getNode();
+
+ if (el && el.nodeName == 'IMG') {
+ ed.dom.setAttribs(el, args);
+ } else {
+ ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
+ ed.dom.setAttribs('__mce_tmp', args);
+ ed.dom.setAttrib('__mce_tmp', 'id', '');
+ ed.undoManager.add();
+ }
+
+ tinyMCEPopup.close();
+ },
+
+ getAttrib : function(e, at) {
+ var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
+
+ if (ed.settings.inline_styles) {
+ switch (at) {
+ case 'align':
+ if (v = dom.getStyle(e, 'float'))
+ return v;
+
+ if (v = dom.getStyle(e, 'vertical-align'))
+ return v;
+
+ break;
+
+ case 'hspace':
+ v = dom.getStyle(e, 'margin-left')
+ v2 = dom.getStyle(e, 'margin-right');
+
+ if (v && v == v2)
+ return parseInt(v.replace(/[^0-9]/g, ''));
+
+ break;
+
+ case 'vspace':
+ v = dom.getStyle(e, 'margin-top')
+ v2 = dom.getStyle(e, 'margin-bottom');
+ if (v && v == v2)
+ return parseInt(v.replace(/[^0-9]/g, ''));
+
+ break;
+
+ case 'border':
+ v = 0;
+
+ tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
+ sv = dom.getStyle(e, 'border-' + sv + '-width');
+
+ // False or not the same as prev
+ if (!sv || (sv != v && v !== 0)) {
+ v = 0;
+ return false;
+ }
+
+ if (sv)
+ v = sv;
+ });
+
+ if (v)
+ return parseInt(v.replace(/[^0-9]/g, ''));
+
+ break;
+ }
+ }
+
+ if (v = dom.getAttrib(e, at))
+ return v;
+
+ return '';
+ },
+
+ setSwapImage : function(st) {
+ var f = document.forms[0];
+
+ f.onmousemovecheck.checked = st;
+ setBrowserDisabled('overbrowser', !st);
+ setBrowserDisabled('outbrowser', !st);
+
+ if (f.over_list)
+ f.over_list.disabled = !st;
+
+ if (f.out_list)
+ f.out_list.disabled = !st;
+
+ f.onmouseoversrc.disabled = !st;
+ f.onmouseoutsrc.disabled = !st;
+ },
+
+ fillClassList : function(id) {
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+ if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
+ cl = [];
+
+ tinymce.each(v.split(';'), function(v) {
+ var p = v.split('=');
+
+ cl.push({'title' : p[0], 'class' : p[1]});
+ });
+ } else
+ cl = tinyMCEPopup.editor.dom.getClasses();
+
+ if (cl.length > 0) {
+ lst.options.length = 0;
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+
+ tinymce.each(cl, function(o) {
+ lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
+ });
+ } else
+ dom.remove(dom.getParent(id, 'tr'));
+ },
+
+ fillFileList : function(id, l) {
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+ l = window[l];
+ lst.options.length = 0;
+
+ if (l && l.length > 0) {
+ lst.options[lst.options.length] = new Option('', '');
+
+ tinymce.each(l, function(o) {
+ lst.options[lst.options.length] = new Option(o[0], o[1]);
+ });
+ } else
+ dom.remove(dom.getParent(id, 'tr'));
+ },
+
+ resetImageData : function() {
+ var f = document.forms[0];
+
+ f.elements.width.value = f.elements.height.value = '';
+ },
+
+ updateImageData : function(img, st) {
+ var f = document.forms[0];
+
+ if (!st) {
+ f.elements.width.value = img.width;
+ f.elements.height.value = img.height;
+ }
+
+ this.preloadImg = img;
+ },
+
+ changeAppearance : function() {
+ var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');
+
+ if (img) {
+ if (ed.getParam('inline_styles')) {
+ ed.dom.setAttrib(img, 'style', f.style.value);
+ } else {
+ img.align = f.align.value;
+ img.border = f.border.value;
+ img.hspace = f.hspace.value;
+ img.vspace = f.vspace.value;
+ }
+ }
+ },
+
+ changeHeight : function() {
+ var f = document.forms[0], tp, t = this;
+
+ if (!f.constrain.checked || !t.preloadImg) {
+ return;
+ }
+
+ if (f.width.value == "" || f.height.value == "")
+ return;
+
+ tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;
+ f.height.value = tp.toFixed(0);
+ },
+
+ changeWidth : function() {
+ var f = document.forms[0], tp, t = this;
+
+ if (!f.constrain.checked || !t.preloadImg) {
+ return;
+ }
+
+ if (f.width.value == "" || f.height.value == "")
+ return;
+
+ tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;
+ f.width.value = tp.toFixed(0);
+ },
+
+ updateStyle : function(ty) {
+ var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});
+
+ if (tinyMCEPopup.editor.settings.inline_styles) {
+ // Handle align
+ if (ty == 'align') {
+ dom.setStyle(img, 'float', '');
+ dom.setStyle(img, 'vertical-align', '');
+
+ v = getSelectValue(f, 'align');
+ if (v) {
+ if (v == 'left' || v == 'right')
+ dom.setStyle(img, 'float', v);
+ else
+ img.style.verticalAlign = v;
+ }
+ }
+
+ // Handle border
+ if (ty == 'border') {
+ dom.setStyle(img, 'border', '');
+
+ v = f.border.value;
+ if (v || v == '0') {
+ if (v == '0')
+ img.style.border = '0';
+ else
+ img.style.border = v + 'px solid black';
+ }
+ }
+
+ // Handle hspace
+ if (ty == 'hspace') {
+ dom.setStyle(img, 'marginLeft', '');
+ dom.setStyle(img, 'marginRight', '');
+
+ v = f.hspace.value;
+ if (v) {
+ img.style.marginLeft = v + 'px';
+ img.style.marginRight = v + 'px';
+ }
+ }
+
+ // Handle vspace
+ if (ty == 'vspace') {
+ dom.setStyle(img, 'marginTop', '');
+ dom.setStyle(img, 'marginBottom', '');
+
+ v = f.vspace.value;
+ if (v) {
+ img.style.marginTop = v + 'px';
+ img.style.marginBottom = v + 'px';
+ }
+ }
+
+ // Merge
+ dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img');
+ }
+ },
+
+ changeMouseMove : function() {
+ },
+
+ showPreviewImage : function(u, st) {
+ if (!u) {
+ tinyMCEPopup.dom.setHTML('prev', '');
+ return;
+ }
+
+ if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))
+ this.resetImageData();
+
+ u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);
+
+ if (!st)
+ tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');
+ else
+ tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');
+ }
+};
+
+ImageDialog.preInit();
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/plugins/TinyMCE/js/plugins/advimage/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/advimage/langs/en_dlg.js new file mode 100644 index 000000000..f493d196f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/langs/en_dlg.js @@ -0,0 +1,43 @@ +tinyMCE.addI18n('en.advimage_dlg',{
+tab_general:"General",
+tab_appearance:"Appearance",
+tab_advanced:"Advanced",
+general:"General",
+title:"Title",
+preview:"Preview",
+constrain_proportions:"Constrain proportions",
+langdir:"Language direction",
+langcode:"Language code",
+long_desc:"Long description link",
+style:"Style",
+classes:"Classes",
+ltr:"Left to right",
+rtl:"Right to left",
+id:"Id",
+map:"Image map",
+swap_image:"Swap image",
+alt_image:"Alternative image",
+mouseover:"for mouse over",
+mouseout:"for mouse out",
+misc:"Miscellaneous",
+example_img:"Appearance preview image",
+missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.",
+dialog_title:"Insert/edit image",
+src:"Image URL",
+alt:"Image description",
+list:"Image list",
+border:"Border",
+dimensions:"Dimensions",
+vspace:"Vertical space",
+hspace:"Horizontal space",
+align:"Alignment",
+align_baseline:"Baseline",
+align_top:"Top",
+align_middle:"Middle",
+align_bottom:"Bottom",
+align_texttop:"Text top",
+align_textbottom:"Text bottom",
+align_left:"Left",
+align_right:"Right",
+image_list:"Image list"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advlink/css/advlink.css b/plugins/TinyMCE/js/plugins/advlink/css/advlink.css new file mode 100644 index 000000000..14364316a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/css/advlink.css @@ -0,0 +1,8 @@ +.mceLinkList, .mceAnchorList, #targetlist {width:280px;}
+.mceActionPanel {margin-top:7px;}
+.panel_wrapper div.current {height:320px;}
+#classlist, #title, #href {width:280px;}
+#popupurl, #popupname {width:200px;}
+#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}
+#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}
+#events_panel input {width:200px;}
diff --git a/plugins/TinyMCE/js/plugins/advlink/editor_plugin.js b/plugins/TinyMCE/js/plugins/advlink/editor_plugin.js new file mode 100644 index 000000000..983fe5a9c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advlink/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/advlink/editor_plugin_src.js new file mode 100644 index 000000000..14e46a762 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/editor_plugin_src.js @@ -0,0 +1,61 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
+ init : function(ed, url) {
+ this.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceAdvLink', function() {
+ var se = ed.selection;
+
+ // No selection and not in link
+ if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))
+ return;
+
+ ed.windowManager.open({
+ file : url + '/link.htm',
+ width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),
+ height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ // Register buttons
+ ed.addButton('link', {
+ title : 'advlink.link_desc',
+ cmd : 'mceAdvLink'
+ });
+
+ ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
+
+ ed.onNodeChange.add(function(ed, cm, n, co) {
+ cm.setDisabled('link', co && n.nodeName != 'A');
+ cm.setActive('link', n.nodeName == 'A' && !n.name);
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Advanced link',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advlink/js/advlink.js b/plugins/TinyMCE/js/plugins/advlink/js/advlink.js new file mode 100644 index 000000000..b78e82f76 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/js/advlink.js @@ -0,0 +1,528 @@ +/* Functions for the advlink plugin popup */
+
+tinyMCEPopup.requireLangPack();
+
+var templates = {
+ "window.open" : "window.open('${url}','${target}','${options}')"
+};
+
+function preinit() {
+ var url;
+
+ if (url = tinyMCEPopup.getParam("external_link_list_url"))
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+}
+
+function changeClass() {
+ var f = document.forms[0];
+
+ f.classes.value = getSelectValue(f, 'classlist');
+}
+
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ var formObj = document.forms[0];
+ var inst = tinyMCEPopup.editor;
+ var elm = inst.selection.getNode();
+ var action = "insert";
+ var html;
+
+ document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
+ document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
+ document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
+ document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
+ document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
+
+ // Link list
+ html = getLinkListHTML('linklisthref','href');
+ if (html == "")
+ document.getElementById("linklisthrefrow").style.display = 'none';
+ else
+ document.getElementById("linklisthrefcontainer").innerHTML = html;
+
+ // Resize some elements
+ if (isVisible('hrefbrowser'))
+ document.getElementById('href').style.width = '260px';
+
+ if (isVisible('popupurlbrowser'))
+ document.getElementById('popupurl').style.width = '180px';
+
+ elm = inst.dom.getParent(elm, "A");
+ if (elm != null && elm.nodeName == "A")
+ action = "update";
+
+ formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
+
+ setPopupControlsDisabled(true);
+
+ if (action == "update") {
+ var href = inst.dom.getAttrib(elm, 'href');
+ var onclick = inst.dom.getAttrib(elm, 'onclick');
+
+ // Setup form data
+ setFormValue('href', href);
+ setFormValue('title', inst.dom.getAttrib(elm, 'title'));
+ setFormValue('id', inst.dom.getAttrib(elm, 'id'));
+ setFormValue('style', inst.dom.getAttrib(elm, "style"));
+ setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));
+ setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));
+ setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));
+ setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));
+ setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));
+ setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));
+ setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
+ setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
+ setFormValue('type', inst.dom.getAttrib(elm, 'type'));
+ setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));
+ setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));
+ setFormValue('onclick', onclick);
+ setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));
+ setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));
+ setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));
+ setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));
+ setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));
+ setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));
+ setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
+ setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
+ setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
+ setFormValue('target', inst.dom.getAttrib(elm, 'target'));
+ setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
+
+ // Parse onclick data
+ if (onclick != null && onclick.indexOf('window.open') != -1)
+ parseWindowOpen(onclick);
+ else
+ parseFunction(onclick);
+
+ // Select by the values
+ selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));
+ selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));
+ selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));
+ selectByValue(formObj, 'linklisthref', href);
+
+ if (href.charAt(0) == '#')
+ selectByValue(formObj, 'anchorlist', href);
+
+ addClassesToList('classlist', 'advlink_styles');
+
+ selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
+ selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
+ } else
+ addClassesToList('classlist', 'advlink_styles');
+}
+
+function checkPrefix(n) {
+ if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))
+ n.value = 'mailto:' + n.value;
+
+ if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))
+ n.value = 'http://' + n.value;
+}
+
+function setFormValue(name, value) {
+ document.forms[0].elements[name].value = value;
+}
+
+function parseWindowOpen(onclick) {
+ var formObj = document.forms[0];
+
+ // Preprocess center code
+ if (onclick.indexOf('return false;') != -1) {
+ formObj.popupreturn.checked = true;
+ onclick = onclick.replace('return false;', '');
+ } else
+ formObj.popupreturn.checked = false;
+
+ var onClickData = parseLink(onclick);
+
+ if (onClickData != null) {
+ formObj.ispopup.checked = true;
+ setPopupControlsDisabled(false);
+
+ var onClickWindowOptions = parseOptions(onClickData['options']);
+ var url = onClickData['url'];
+
+ formObj.popupname.value = onClickData['target'];
+ formObj.popupurl.value = url;
+ formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
+ formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
+
+ formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
+ formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
+
+ if (formObj.popupleft.value.indexOf('screen') != -1)
+ formObj.popupleft.value = "c";
+
+ if (formObj.popuptop.value.indexOf('screen') != -1)
+ formObj.popuptop.value = "c";
+
+ formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
+ formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
+ formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
+ formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
+ formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
+ formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
+ formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
+
+ buildOnClick();
+ }
+}
+
+function parseFunction(onclick) {
+ var formObj = document.forms[0];
+ var onClickData = parseLink(onclick);
+
+ // TODO: Add stuff here
+}
+
+function getOption(opts, name) {
+ return typeof(opts[name]) == "undefined" ? "" : opts[name];
+}
+
+function setPopupControlsDisabled(state) {
+ var formObj = document.forms[0];
+
+ formObj.popupname.disabled = state;
+ formObj.popupurl.disabled = state;
+ formObj.popupwidth.disabled = state;
+ formObj.popupheight.disabled = state;
+ formObj.popupleft.disabled = state;
+ formObj.popuptop.disabled = state;
+ formObj.popuplocation.disabled = state;
+ formObj.popupscrollbars.disabled = state;
+ formObj.popupmenubar.disabled = state;
+ formObj.popupresizable.disabled = state;
+ formObj.popuptoolbar.disabled = state;
+ formObj.popupstatus.disabled = state;
+ formObj.popupreturn.disabled = state;
+ formObj.popupdependent.disabled = state;
+
+ setBrowserDisabled('popupurlbrowser', state);
+}
+
+function parseLink(link) {
+ link = link.replace(new RegExp(''', 'g'), "'");
+
+ var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
+
+ // Is function name a template function
+ var template = templates[fnName];
+ if (template) {
+ // Build regexp
+ var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
+ var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
+ var replaceStr = "";
+ for (var i=0; i<variableNames.length; i++) {
+ // Is string value
+ if (variableNames[i].indexOf("'${") != -1)
+ regExp += "'(.*)'";
+ else // Number value
+ regExp += "([0-9]*)";
+
+ replaceStr += "$" + (i+1);
+
+ // Cleanup variable name
+ variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
+
+ if (i != variableNames.length-1) {
+ regExp += "\\s*,\\s*";
+ replaceStr += "<delim>";
+ } else
+ regExp += ".*";
+ }
+
+ regExp += "\\);?";
+
+ // Build variable array
+ var variables = [];
+ variables["_function"] = fnName;
+ var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
+ for (var i=0; i<variableNames.length; i++)
+ variables[variableNames[i]] = variableValues[i];
+
+ return variables;
+ }
+
+ return null;
+}
+
+function parseOptions(opts) {
+ if (opts == null || opts == "")
+ return [];
+
+ // Cleanup the options
+ opts = opts.toLowerCase();
+ opts = opts.replace(/;/g, ",");
+ opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+ var optionChunks = opts.split(',');
+ var options = [];
+
+ for (var i=0; i<optionChunks.length; i++) {
+ var parts = optionChunks[i].split('=');
+
+ if (parts.length == 2)
+ options[parts[0]] = parts[1];
+ }
+
+ return options;
+}
+
+function buildOnClick() {
+ var formObj = document.forms[0];
+
+ if (!formObj.ispopup.checked) {
+ formObj.onclick.value = "";
+ return;
+ }
+
+ var onclick = "window.open('";
+ var url = formObj.popupurl.value;
+
+ onclick += url + "','";
+ onclick += formObj.popupname.value + "','";
+
+ if (formObj.popuplocation.checked)
+ onclick += "location=yes,";
+
+ if (formObj.popupscrollbars.checked)
+ onclick += "scrollbars=yes,";
+
+ if (formObj.popupmenubar.checked)
+ onclick += "menubar=yes,";
+
+ if (formObj.popupresizable.checked)
+ onclick += "resizable=yes,";
+
+ if (formObj.popuptoolbar.checked)
+ onclick += "toolbar=yes,";
+
+ if (formObj.popupstatus.checked)
+ onclick += "status=yes,";
+
+ if (formObj.popupdependent.checked)
+ onclick += "dependent=yes,";
+
+ if (formObj.popupwidth.value != "")
+ onclick += "width=" + formObj.popupwidth.value + ",";
+
+ if (formObj.popupheight.value != "")
+ onclick += "height=" + formObj.popupheight.value + ",";
+
+ if (formObj.popupleft.value != "") {
+ if (formObj.popupleft.value != "c")
+ onclick += "left=" + formObj.popupleft.value + ",";
+ else
+ onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
+ }
+
+ if (formObj.popuptop.value != "") {
+ if (formObj.popuptop.value != "c")
+ onclick += "top=" + formObj.popuptop.value + ",";
+ else
+ onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
+ }
+
+ if (onclick.charAt(onclick.length-1) == ',')
+ onclick = onclick.substring(0, onclick.length-1);
+
+ onclick += "');";
+
+ if (formObj.popupreturn.checked)
+ onclick += "return false;";
+
+ // tinyMCE.debug(onclick);
+
+ formObj.onclick.value = onclick;
+
+ if (formObj.href.value == "")
+ formObj.href.value = url;
+}
+
+function setAttrib(elm, attrib, value) {
+ var formObj = document.forms[0];
+ var valueElm = formObj.elements[attrib.toLowerCase()];
+ var dom = tinyMCEPopup.editor.dom;
+
+ if (typeof(value) == "undefined" || value == null) {
+ value = "";
+
+ if (valueElm)
+ value = valueElm.value;
+ }
+
+ // Clean up the style
+ if (attrib == 'style')
+ value = dom.serializeStyle(dom.parseStyle(value), 'a');
+
+ dom.setAttrib(elm, attrib, value);
+}
+
+function getAnchorListHTML(id, target) {
+ var inst = tinyMCEPopup.editor;
+ var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i;
+ var html = "";
+
+ html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" o2nfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
+ html += 'this.options[this.selectedIndex].value;">';
+ html += '<option value="">---</option>';
+
+ for (i=0; i<nodes.length; i++) {
+ if ((name = inst.dom.getAttrib(nodes[i], "name")) != "")
+ html += '<option value="#' + name + '">' + name + '</option>';
+ }
+
+ html += '</select>';
+
+ return html;
+}
+
+function insertAction() {
+ var inst = tinyMCEPopup.editor;
+ var elm, elementArray, i;
+
+ elm = inst.selection.getNode();
+ checkPrefix(document.forms[0].href);
+
+ elm = inst.dom.getParent(elm, "A");
+
+ // Remove element if there is no href
+ if (!document.forms[0].href.value) {
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");
+ i = inst.selection.getBookmark();
+ inst.dom.remove(elm, 1);
+ inst.selection.moveToBookmark(i);
+ tinyMCEPopup.execCommand("mceEndUndoLevel");
+ tinyMCEPopup.close();
+ return;
+ }
+
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+ // Create new anchor elements
+ if (elm == null) {
+ inst.getDoc().execCommand("unlink", false, null);
+ tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+ elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});
+ for (i=0; i<elementArray.length; i++)
+ setAllAttribs(elm = elementArray[i]);
+ } else
+ setAllAttribs(elm);
+
+ // Don't move caret if selection was image
+ if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {
+ inst.focus();
+ inst.selection.select(elm);
+ inst.selection.collapse(0);
+ tinyMCEPopup.storeSelection();
+ }
+
+ tinyMCEPopup.execCommand("mceEndUndoLevel");
+ tinyMCEPopup.close();
+}
+
+function setAllAttribs(elm) {
+ var formObj = document.forms[0];
+ var href = formObj.href.value;
+ var target = getSelectValue(formObj, 'targetlist');
+
+ setAttrib(elm, 'href', href);
+ setAttrib(elm, 'title');
+ setAttrib(elm, 'target', target == '_self' ? '' : target);
+ setAttrib(elm, 'id');
+ setAttrib(elm, 'style');
+ setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
+ setAttrib(elm, 'rel');
+ setAttrib(elm, 'rev');
+ setAttrib(elm, 'charset');
+ setAttrib(elm, 'hreflang');
+ setAttrib(elm, 'dir');
+ setAttrib(elm, 'lang');
+ setAttrib(elm, 'tabindex');
+ setAttrib(elm, 'accesskey');
+ setAttrib(elm, 'type');
+ setAttrib(elm, 'onfocus');
+ setAttrib(elm, 'onblur');
+ setAttrib(elm, 'onclick');
+ setAttrib(elm, 'ondblclick');
+ setAttrib(elm, 'onmousedown');
+ setAttrib(elm, 'onmouseup');
+ setAttrib(elm, 'onmouseover');
+ setAttrib(elm, 'onmousemove');
+ setAttrib(elm, 'onmouseout');
+ setAttrib(elm, 'onkeypress');
+ setAttrib(elm, 'onkeydown');
+ setAttrib(elm, 'onkeyup');
+
+ // Refresh in old MSIE
+ if (tinyMCE.isMSIE5)
+ elm.outerHTML = elm.outerHTML;
+}
+
+function getSelectValue(form_obj, field_name) {
+ var elm = form_obj.elements[field_name];
+
+ if (!elm || elm.options == null || elm.selectedIndex == -1)
+ return "";
+
+ return elm.options[elm.selectedIndex].value;
+}
+
+function getLinkListHTML(elm_id, target_form_element, onchange_func) {
+ if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
+ return "";
+
+ var html = "";
+
+ html += '<select id="' + elm_id + '" name="' + elm_id + '"';
+ html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+ html += 'this.options[this.selectedIndex].value;';
+
+ if (typeof(onchange_func) != "undefined")
+ html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+ html += '"><option value="">---</option>';
+
+ for (var i=0; i<tinyMCELinkList.length; i++)
+ html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
+
+ html += '</select>';
+
+ return html;
+
+ // tinyMCE.debug('-- image list start --', html, '-- image list end --');
+}
+
+function getTargetListHTML(elm_id, target_form_element) {
+ var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
+ var html = '';
+
+ html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
+ html += 'this.options[this.selectedIndex].value;">';
+ html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
+ html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
+ html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
+ html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';
+
+ for (var i=0; i<targets.length; i++) {
+ var key, value;
+
+ if (targets[i] == "")
+ continue;
+
+ key = targets[i].split('=')[0];
+ value = targets[i].split('=')[1];
+
+ html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
+ }
+
+ html += '</select>';
+
+ return html;
+}
+
+// While loading
+preinit();
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/advlink/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/advlink/langs/en_dlg.js new file mode 100644 index 000000000..c71ffbd0f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/langs/en_dlg.js @@ -0,0 +1,52 @@ +tinyMCE.addI18n('en.advlink_dlg',{
+title:"Insert/edit link",
+url:"Link URL",
+target:"Target",
+titlefield:"Title",
+is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
+is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
+list:"Link list",
+general_tab:"General",
+popup_tab:"Popup",
+events_tab:"Events",
+advanced_tab:"Advanced",
+general_props:"General properties",
+popup_props:"Popup properties",
+event_props:"Events",
+advanced_props:"Advanced properties",
+popup_opts:"Options",
+anchor_names:"Anchors",
+target_same:"Open in this window / frame",
+target_parent:"Open in parent window / frame",
+target_top:"Open in top frame (replaces all frames)",
+target_blank:"Open in new window",
+popup:"Javascript popup",
+popup_url:"Popup URL",
+popup_name:"Window name",
+popup_return:"Insert 'return false'",
+popup_scrollbars:"Show scrollbars",
+popup_statusbar:"Show status bar",
+popup_toolbar:"Show toolbars",
+popup_menubar:"Show menu bar",
+popup_location:"Show location bar",
+popup_resizable:"Make window resizable",
+popup_dependent:"Dependent (Mozilla/Firefox only)",
+popup_size:"Size",
+popup_position:"Position (X/Y)",
+id:"Id",
+style:"Style",
+classes:"Classes",
+target_name:"Target name",
+langdir:"Language direction",
+target_langcode:"Target language",
+langcode:"Language code",
+encoding:"Target character encoding",
+mime:"Target MIME type",
+rel:"Relationship page to target",
+rev:"Relationship target to page",
+tabindex:"Tabindex",
+accesskey:"Accesskey",
+ltr:"Left to right",
+rtl:"Right to left",
+link_list:"Link list"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advlink/link.htm b/plugins/TinyMCE/js/plugins/advlink/link.htm new file mode 100644 index 000000000..876669c6b --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/link.htm @@ -0,0 +1,333 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advlink_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/validate.js"></script>
+ <script type="text/javascript" src="js/advlink.js"></script>
+ <link href="css/advlink.css" rel="stylesheet" type="text/css" />
+</head>
+<body id="advlink" style="display: none">
+ <form onsubmit="insertAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>
+ <li id="popup_tab"><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>
+ <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#advlink_dlg.general_props}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>
+ <td><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" /></td>
+ <td id="hrefbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr id="linklisthrefrow">
+ <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>
+ <td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>
+ <td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>
+ </tr>
+ <tr>
+ <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>
+ <td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>
+ <td><input id="title" name="title" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td><label id="classlabel" for="classlist">{#class_name}</label></td>
+ <td>
+ <select id="classlist" name="classlist" onchange="changeClass();">
+ <option value="" selected="selected">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="popup_panel" class="panel">
+ <fieldset>
+ <legend>{#advlink_dlg.popup_props}</legend>
+
+ <input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
+ <label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
+ <td id="popupurlbrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label> </td>
+ <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label>{#advlink_dlg.popup_size}</label> </td>
+ <td class="nowrap">
+ <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" /> x
+ <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" /> px
+ </td>
+ </tr>
+ <tr>
+ <td class="nowrap" id="labelleft"><label>{#advlink_dlg.popup_position}</label> </td>
+ <td class="nowrap">
+ <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" /> /
+ <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" /> (c /c = center)
+ </td>
+ </tr>
+ </table>
+
+ <fieldset>
+ <legend>{#advlink_dlg.popup_opts}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>
+ <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>
+ <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>
+ <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
+ <td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>
+ <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
+ <td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>
+ </tr>
+ </table>
+ </fieldset>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{#advlink_dlg.advanced_props}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td>
+ <td><input id="id" name="id" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>
+ <td><input type="text" id="style" name="style" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>
+ <td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>
+ <td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td>
+ <td>
+ <select id="dir" name="dir">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#advlink_dlg.ltr}</option>
+ <option value="rtl">{#advlink_dlg.rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>
+ <td><input type="text" id="hreflang" name="hreflang" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>
+ <td><input type="text" id="charset" name="charset" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>
+ <td><input type="text" id="type" name="type" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>
+ <td><select id="rel" name="rel">
+ <option value="">{#not_set}</option>
+ <option value="lightbox">Lightbox</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ <option value="nofollow">No Follow</option>
+ <option value="tag">Tag</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>
+ <td><select id="rev" name="rev">
+ <option value="">{#not_set}</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>
+ <td><input type="text" id="tabindex" name="tabindex" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>
+ <td><input type="text" id="accesskey" name="accesskey" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#advlink_dlg.event_props}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="column1"><label for="onfocus">onfocus</label></td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onblur">onblur</label></td>
+ <td><input id="onblur" name="onblur" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onclick">onclick</label></td>
+ <td><input id="onclick" name="onclick" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="ondblclick">ondblclick</label></td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onmousedown">onmousedown</label></td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onmouseup">onmouseup</label></td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onmouseover">onmouseover</label></td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onmousemove">onmousemove</label></td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onmouseout">onmouseout</label></td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onkeypress">onkeypress</label></td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onkeydown">onkeydown</label></td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="onkeyup">onkeyup</label></td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/advlist/editor_plugin.js b/plugins/TinyMCE/js/plugins/advlist/editor_plugin.js new file mode 100644 index 000000000..02d16971a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlist/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.AdvListPlugin",{init:function(b,c){var d=this;d.editor=b;function e(g){var f=[];a(g.split(/,/),function(h){f.push({title:"advlist."+(h=="default"?"def":h.replace(/-/g,"_")),styles:{listStyleType:h=="default"?"":h}})});return f}d.numlist=b.getParam("advlist_number_styles")||e("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");d.bullist=b.getParam("advlist_bullet_styles")||e("default,circle,disc,square")},createControl:function(d,b){var f=this,e,h;if(d=="numlist"||d=="bullist"){if(f[d][0].title=="advlist.def"){h=f[d][0]}function c(i,k){var j=true;a(k.styles,function(m,l){if(f.editor.dom.getStyle(i,l)!=m){j=false;return false}});return j}function g(){var k,i=f.editor,l=i.dom,j=i.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName==(d=="bullist"?"OL":"UL")||c(k,h)){i.execCommand(d=="bullist"?"InsertUnorderedList":"InsertOrderedList")}if(h){k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyles(k,h.styles);k.removeAttribute("_mce_style")}}}e=b.createSplitButton(d,{title:"advanced."+d+"_desc","class":"mce_"+d,onclick:function(){g()}});e.onRenderMenu.add(function(i,j){j.onShowMenu.add(function(){var m=f.editor.dom,l=m.getParent(f.editor.selection.getNode(),"ol,ul"),k;if(l||h){k=f[d];a(j.items,function(n){var o=true;n.setSelected(0);if(l&&!n.isDisabled()){a(k,function(p){if(p.id==n.id){if(!c(l,p)){o=false;return false}}});if(o){n.setSelected(1)}}});if(!l){j.items[h.id].setSelected(1)}}});j.add({id:f.editor.dom.uniqueId(),title:"advlist.types","class":"mceMenuItemTitle"}).setDisabled(1);a(f[d],function(k){k.id=f.editor.dom.uniqueId();j.add({id:k.id,title:k.title,onclick:function(){h=k;g()}})})});return e}},getInfo:function(){return{longname:"Advanced lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlist",tinymce.plugins.AdvListPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/advlist/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/advlist/editor_plugin_src.js new file mode 100644 index 000000000..a61887a92 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlist/editor_plugin_src.js @@ -0,0 +1,154 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var each = tinymce.each;
+
+ tinymce.create('tinymce.plugins.AdvListPlugin', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ function buildFormats(str) {
+ var formats = [];
+
+ each(str.split(/,/), function(type) {
+ formats.push({
+ title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),
+ styles : {
+ listStyleType : type == 'default' ? '' : type
+ }
+ });
+ });
+
+ return formats;
+ };
+
+ // Setup number formats from config or default
+ t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");
+ t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");
+ },
+
+ createControl: function(name, cm) {
+ var t = this, btn, format;
+
+ if (name == 'numlist' || name == 'bullist') {
+ // Default to first item if it's a default item
+ if (t[name][0].title == 'advlist.def')
+ format = t[name][0];
+
+ function hasFormat(node, format) {
+ var state = true;
+
+ each(format.styles, function(value, name) {
+ // Format doesn't match
+ if (t.editor.dom.getStyle(node, name) != value) {
+ state = false;
+ return false;
+ }
+ });
+
+ return state;
+ };
+
+ function applyListFormat() {
+ var list, ed = t.editor, dom = ed.dom, sel = ed.selection;
+
+ // Check for existing list element
+ list = dom.getParent(sel.getNode(), 'ol,ul');
+
+ // Switch/add list type if needed
+ if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))
+ ed.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');
+
+ // Append styles to new list element
+ if (format) {
+ list = dom.getParent(sel.getNode(), 'ol,ul');
+
+ if (list) {
+ dom.setStyles(list, format.styles);
+ list.removeAttribute('_mce_style');
+ }
+ }
+ };
+
+ btn = cm.createSplitButton(name, {
+ title : 'advanced.' + name + '_desc',
+ 'class' : 'mce_' + name,
+ onclick : function() {
+ applyListFormat();
+ }
+ });
+
+ btn.onRenderMenu.add(function(btn, menu) {
+ menu.onShowMenu.add(function() {
+ var dom = t.editor.dom, list = dom.getParent(t.editor.selection.getNode(), 'ol,ul'), fmtList;
+
+ if (list || format) {
+ fmtList = t[name];
+
+ // Unselect existing items
+ each(menu.items, function(item) {
+ var state = true;
+
+ item.setSelected(0);
+
+ if (list && !item.isDisabled()) {
+ each(fmtList, function(fmt) {
+ if (fmt.id == item.id) {
+ if (!hasFormat(list, fmt)) {
+ state = false;
+ return false;
+ }
+ }
+ });
+
+ if (state)
+ item.setSelected(1);
+ }
+ });
+
+ // Select the current format
+ if (!list)
+ menu.items[format.id].setSelected(1);
+ }
+ });
+
+ menu.add({id : t.editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+ each(t[name], function(item) {
+ item.id = t.editor.dom.uniqueId();
+
+ menu.add({id : item.id, title : item.title, onclick : function() {
+ format = item;
+ applyListFormat();
+ }});
+ });
+ });
+
+ return btn;
+ }
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Advanced lists',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/autoresize/editor_plugin.js b/plugins/TinyMCE/js/plugins/autoresize/editor_plugin.js new file mode 100644 index 000000000..1676b154a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/autoresize/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this;if(a.getParam("fullscreen_is_enabled")){return}function b(){var h=a.getDoc(),e=h.body,j=h.documentElement,g=tinymce.DOM,i=d.autoresize_min_height,f;f=tinymce.isIE?e.scrollHeight:j.offsetHeight;if(f>d.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/autoresize/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/autoresize/editor_plugin_src.js new file mode 100644 index 000000000..c260b7a24 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/autoresize/editor_plugin_src.js @@ -0,0 +1,119 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + /** + * Auto Resize + * + * This plugin automatically resizes the content area to fit its content height. + * It will retain a minimum height, which is the height of the content area when + * it's initialized. + */ + tinymce.create('tinymce.plugins.AutoResizePlugin', { + /** + * Initializes the plugin, this will be executed after the plugin has been created. + * This call is done before the editor instance has finished it's initialization so use the onInit event + * of the editor instance to intercept that event. + * + * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. + * @param {string} url Absolute URL to where the plugin is located. + */ + init : function(ed, url) { + var t = this; + + if (ed.getParam('fullscreen_is_enabled')) + return; + + /** + * This method gets executed each time the editor needs to resize. + */ + function resize() { + var d = ed.getDoc(), b = d.body, de = d.documentElement, DOM = tinymce.DOM, resizeHeight = t.autoresize_min_height, myHeight; + + // Get height differently depending on the browser used + myHeight = tinymce.isIE ? b.scrollHeight : de.offsetHeight; + + // Don't make it smaller than the minimum height + if (myHeight > t.autoresize_min_height) + resizeHeight = myHeight; + + // Resize content element + DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px'); + + // if we're throbbing, we'll re-throb to match the new size + if (t.throbbing) { + ed.setProgressState(false); + ed.setProgressState(true); + } + }; + + t.editor = ed; + + // Define minimum height + t.autoresize_min_height = ed.getElement().offsetHeight; + + // Add appropriate listeners for resizing content area + ed.onChange.add(resize); + ed.onSetContent.add(resize); + ed.onPaste.add(resize); + ed.onKeyUp.add(resize); + ed.onPostRender.add(resize); + + if (ed.getParam('autoresize_on_init', true)) { + // Things to do when the editor is ready + ed.onInit.add(function(ed, l) { + // Show throbber until content area is resized properly + ed.setProgressState(true); + t.throbbing = true; + + // Hide scrollbars + ed.getBody().style.overflowY = "hidden"; + }); + + ed.onLoadContent.add(function(ed, l) { + resize(); + + // Because the content area resizes when its content CSS loads, + // and we can't easily add a listener to its onload event, + // we'll just trigger a resize after a short loading period + setTimeout(function() { + resize(); + + // Disable throbber + ed.setProgressState(false); + t.throbbing = false; + }, 1250); + }); + } + + // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); + ed.addCommand('mceAutoResize', resize); + }, + + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @return {Object} Name/value array containing information about the plugin. + */ + getInfo : function() { + return { + longname : 'Auto Resize', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('autoresize', tinymce.plugins.AutoResizePlugin); +})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/autosave/editor_plugin.js b/plugins/TinyMCE/js/plugins/autosave/editor_plugin.js new file mode 100644 index 000000000..6e485400b --- /dev/null +++ b/plugins/TinyMCE/js/plugins/autosave/editor_plugin.js @@ -0,0 +1 @@ +(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s| |<\/?p[^>]*>|<br[^>]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){h.storeDraft();i.nodeChanged()},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();m.save("TinyMCE")},getItem:function(l){var m=i.getElement();m.load("TinyMCE");return m.getAttribute(l)},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,i=h.storage;if(i){content=i.getItem(h.key);if(content){h.editor.setContent(content);h.onRestoreDraft.dispatch(h,{content:content})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime()<i.getTime()){return b}h.removeDraft()}else{return b}}}return false},removeDraft:function(){var h=this,k=h.storage,i=h.key,j;if(k){j=k.getItem(i);k.removeItem(i);k.removeItem(i+"_expires");if(j){h.onRemoveDraft.dispatch(h,{content:j})}}},"static":{_beforeUnloadHandler:function(h){var i;e.each(tinyMCE.editors,function(j){if(j.plugins.autosave){j.plugins.autosave.storeDraft()}if(j.getParam("fullscreen_is_enabled")){return}if(!i&&j.isDirty()&&j.getParam("autosave_ask_before_unload")){i=j.getLang("autosave.unload_msg")}});return i}}});e.PluginManager.add("autosave",e.plugins.AutoSave)})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/autosave/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/autosave/editor_plugin_src.js new file mode 100644 index 000000000..581e8f6d2 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/autosave/editor_plugin_src.js @@ -0,0 +1,422 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ *
+ * Adds auto-save capability to the TinyMCE text editor to rescue content
+ * inadvertently lost. This plugin was originally developed by Speednet
+ * and that project can be found here: http://code.google.com/p/tinyautosave/
+ *
+ * TECHNOLOGY DISCUSSION:
+ *
+ * The plugin attempts to use the most advanced features available in the current browser to save
+ * as much content as possible. There are a total of four different methods used to autosave the
+ * content. In order of preference, they are:
+ *
+ * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain
+ * on the client computer. Data stored in the localStorage area has no expiration date, so we must
+ * manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed
+ * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As
+ * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7,
+ * localStorage is stored in the following folder:
+ * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder]
+ *
+ * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage,
+ * except it is designed to expire after a certain amount of time. Because the specification
+ * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and
+ * manage the expiration ourselves. sessionStorage has similar storage characteristics to
+ * localStorage, although it seems to have better support by Firefox 3 at the moment. (That will
+ * certainly change as Firefox continues getting better at HTML 5 adoption.)
+ *
+ * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a
+ * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client
+ * computer. The feature is available for IE 5+, which makes it available for every version of IE
+ * supported by TinyMCE. The content is persistent across browser restarts and expires on the
+ * date/time specified, just like a cookie. However, the data is not cleared when the user clears
+ * cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData,
+ * like other Microsoft IE browser technologies, is implemented as a behavior attached to a
+ * specific DOM object, so in this case we attach the behavior to the same DOM element that the
+ * TinyMCE editor instance is attached to.
+ */
+
+(function(tinymce) {
+ // Setup constants to help the compressor to reduce script size
+ var PLUGIN_NAME = 'autosave',
+ RESTORE_DRAFT = 'restoredraft',
+ TRUE = true,
+ undefined,
+ unloadHandlerAdded,
+ Dispatcher = tinymce.util.Dispatcher;
+
+ /**
+ * This plugin adds auto-save capability to the TinyMCE text editor to rescue content
+ * inadvertently lost. By using localStorage.
+ *
+ * @class tinymce.plugins.AutoSave
+ */
+ tinymce.create('tinymce.plugins.AutoSave', {
+ /**
+ * Initializes the plugin, this will be executed after the plugin has been created.
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
+ * of the editor instance to intercept that event.
+ *
+ * @method init
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+ * @param {string} url Absolute URL to where the plugin is located.
+ */
+ init : function(ed, url) {
+ var self = this, settings = ed.settings;
+
+ self.editor = ed;
+
+ // Parses the specified time string into a milisecond number 10m, 10s etc.
+ function parseTime(time) {
+ var multipels = {
+ s : 1000,
+ m : 60000
+ };
+
+ time = /^(\d+)([ms]?)$/.exec('' + time);
+
+ return (time[2] ? multipels[time[2]] : 1) * parseInt(time);
+ };
+
+ // Default config
+ tinymce.each({
+ ask_before_unload : TRUE,
+ interval : '30s',
+ retention : '20m',
+ minlength : 50
+ }, function(value, key) {
+ key = PLUGIN_NAME + '_' + key;
+
+ if (settings[key] === undefined)
+ settings[key] = value;
+ });
+
+ // Parse times
+ settings.autosave_interval = parseTime(settings.autosave_interval);
+ settings.autosave_retention = parseTime(settings.autosave_retention);
+
+ // Register restore button
+ ed.addButton(RESTORE_DRAFT, {
+ title : PLUGIN_NAME + ".restore_content",
+ onclick : function() {
+ if (ed.getContent({draft: true}).replace(/\s| |<\/?p[^>]*>|<br[^>]*>/gi, "").length > 0) {
+ // Show confirm dialog if the editor isn't empty
+ ed.windowManager.confirm(
+ PLUGIN_NAME + ".warning_message",
+ function(ok) {
+ if (ok)
+ self.restoreDraft();
+ }
+ );
+ } else
+ self.restoreDraft();
+ }
+ });
+
+ // Enable/disable restoredraft button depending on if there is a draft stored or not
+ ed.onNodeChange.add(function() {
+ var controlManager = ed.controlManager;
+
+ if (controlManager.get(RESTORE_DRAFT))
+ controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft());
+ });
+
+ ed.onInit.add(function() {
+ // Check if the user added the restore button, then setup auto storage logic
+ if (ed.controlManager.get(RESTORE_DRAFT)) {
+ // Setup storage engine
+ self.setupStorage(ed);
+
+ // Auto save contents each interval time
+ setInterval(function() {
+ self.storeDraft();
+ ed.nodeChanged();
+ }, settings.autosave_interval);
+ }
+ });
+
+ /**
+ * This event gets fired when a draft is stored to local storage.
+ *
+ * @event onStoreDraft
+ * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
+ * @param {Object} draft Draft object containing the HTML contents of the editor.
+ */
+ self.onStoreDraft = new Dispatcher(self);
+
+ /**
+ * This event gets fired when a draft is restored from local storage.
+ *
+ * @event onStoreDraft
+ * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
+ * @param {Object} draft Draft object containing the HTML contents of the editor.
+ */
+ self.onRestoreDraft = new Dispatcher(self);
+
+ /**
+ * This event gets fired when a draft removed/expired.
+ *
+ * @event onRemoveDraft
+ * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
+ * @param {Object} draft Draft object containing the HTML contents of the editor.
+ */
+ self.onRemoveDraft = new Dispatcher(self);
+
+ // Add ask before unload dialog only add one unload handler
+ if (!unloadHandlerAdded) {
+ window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler;
+ unloadHandlerAdded = TRUE;
+ }
+ },
+
+ /**
+ * Returns information about the plugin as a name/value array.
+ * The current keys are longname, author, authorurl, infourl and version.
+ *
+ * @method getInfo
+ * @return {Object} Name/value array containing information about the plugin.
+ */
+ getInfo : function() {
+ return {
+ longname : 'Auto save',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ /**
+ * Returns an expiration date UTC string.
+ *
+ * @method getExpDate
+ * @return {String} Expiration date UTC string.
+ */
+ getExpDate : function() {
+ return new Date(
+ new Date().getTime() + this.editor.settings.autosave_retention
+ ).toUTCString();
+ },
+
+ /**
+ * This method will setup the storage engine. If the browser has support for it.
+ *
+ * @method setupStorage
+ */
+ setupStorage : function(ed) {
+ var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";
+
+ self.key = PLUGIN_NAME + ed.id;
+
+ // Loop though each storage engine type until we find one that works
+ tinymce.each([
+ function() {
+ // Try HTML5 Local Storage
+ if (localStorage) {
+ localStorage.setItem(testKey, testVal);
+
+ if (localStorage.getItem(testKey) === testVal) {
+ localStorage.removeItem(testKey);
+
+ return localStorage;
+ }
+ }
+ },
+
+ function() {
+ // Try HTML5 Session Storage
+ if (sessionStorage) {
+ sessionStorage.setItem(testKey, testVal);
+
+ if (sessionStorage.getItem(testKey) === testVal) {
+ sessionStorage.removeItem(testKey);
+
+ return sessionStorage;
+ }
+ }
+ },
+
+ function() {
+ // Try IE userData
+ if (tinymce.isIE) {
+ ed.getElement().style.behavior = "url('#default#userData')";
+
+ // Fake localStorage on old IE
+ return {
+ autoExpires : TRUE,
+
+ setItem : function(key, value) {
+ var userDataElement = ed.getElement();
+
+ userDataElement.setAttribute(key, value);
+ userDataElement.expires = self.getExpDate();
+ userDataElement.save("TinyMCE");
+ },
+
+ getItem : function(key) {
+ var userDataElement = ed.getElement();
+
+ userDataElement.load("TinyMCE");
+
+ return userDataElement.getAttribute(key);
+ },
+
+ removeItem : function(key) {
+ ed.getElement().removeAttribute(key);
+ }
+ };
+ }
+ },
+ ], function(setup) {
+ // Try executing each function to find a suitable storage engine
+ try {
+ self.storage = setup();
+
+ if (self.storage)
+ return false;
+ } catch (e) {
+ // Ignore
+ }
+ });
+ },
+
+ /**
+ * This method will store the current contents in the the storage engine.
+ *
+ * @method storeDraft
+ */
+ storeDraft : function() {
+ var self = this, storage = self.storage, editor = self.editor, expires, content;
+
+ // Is the contents dirty
+ if (storage) {
+ // If there is no existing key and the contents hasn't been changed since
+ // it's original value then there is no point in saving a draft
+ if (!storage.getItem(self.key) && !editor.isDirty())
+ return;
+
+ // Store contents if the contents if longer than the minlength of characters
+ content = editor.getContent({draft: true});
+ if (content.length > editor.settings.autosave_minlength) {
+ expires = self.getExpDate();
+
+ // Store expiration date if needed IE userData has auto expire built in
+ if (!self.storage.autoExpires)
+ self.storage.setItem(self.key + "_expires", expires);
+
+ self.storage.setItem(self.key, content);
+ self.onStoreDraft.dispatch(self, {
+ expires : expires,
+ content : content
+ });
+ }
+ }
+ },
+
+ /**
+ * This method will restore the contents from the storage engine back to the editor.
+ *
+ * @method restoreDraft
+ */
+ restoreDraft : function() {
+ var self = this, storage = self.storage;
+
+ if (storage) {
+ content = storage.getItem(self.key);
+
+ if (content) {
+ self.editor.setContent(content);
+ self.onRestoreDraft.dispatch(self, {
+ content : content
+ });
+ }
+ }
+ },
+
+ /**
+ * This method will return true/false if there is a local storage draft available.
+ *
+ * @method hasDraft
+ * @return {boolean} true/false state if there is a local draft.
+ */
+ hasDraft : function() {
+ var self = this, storage = self.storage, expDate, exists;
+
+ if (storage) {
+ // Does the item exist at all
+ exists = !!storage.getItem(self.key);
+ if (exists) {
+ // Storage needs autoexpire
+ if (!self.storage.autoExpires) {
+ expDate = new Date(storage.getItem(self.key + "_expires"));
+
+ // Contents hasn't expired
+ if (new Date().getTime() < expDate.getTime())
+ return TRUE;
+
+ // Remove it if it has
+ self.removeDraft();
+ } else
+ return TRUE;
+ }
+ }
+
+ return false;
+ },
+
+ /**
+ * Removes the currently stored draft.
+ *
+ * @method removeDraft
+ */
+ removeDraft : function() {
+ var self = this, storage = self.storage, key = self.key, content;
+
+ if (storage) {
+ // Get current contents and remove the existing draft
+ content = storage.getItem(key);
+ storage.removeItem(key);
+ storage.removeItem(key + "_expires");
+
+ // Dispatch remove event if we had any contents
+ if (content) {
+ self.onRemoveDraft.dispatch(self, {
+ content : content
+ });
+ }
+ }
+ },
+
+ "static" : {
+ // Internal unload handler will be called before the page is unloaded
+ _beforeUnloadHandler : function(e) {
+ var msg;
+
+ tinymce.each(tinyMCE.editors, function(ed) {
+ // Store a draft for each editor instance
+ if (ed.plugins.autosave)
+ ed.plugins.autosave.storeDraft();
+
+ // Never ask in fullscreen mode
+ if (ed.getParam("fullscreen_is_enabled"))
+ return;
+
+ // Setup a return message if the editor is dirty
+ if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload"))
+ msg = ed.getLang("autosave.unload_msg");
+ });
+
+ return msg;
+ }
+ }
+ });
+
+ tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave);
+})(tinymce);
diff --git a/plugins/TinyMCE/js/plugins/autosave/langs/en.js b/plugins/TinyMCE/js/plugins/autosave/langs/en.js new file mode 100644 index 000000000..fce6bd3e1 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/autosave/langs/en.js @@ -0,0 +1,4 @@ +tinyMCE.addI18n('en.autosave',{
+restore_content: "Restore auto-saved content",
+warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/bbcode/editor_plugin.js b/plugins/TinyMCE/js/plugins/bbcode/editor_plugin.js new file mode 100644 index 000000000..930fdff0a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/bbcode/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/<font>(.*?)<\/font>/gi,"$1");b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");b(/<u>/gi,"[u]");b(/<blockquote[^>]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/<br \/>/gi,"\n");b(/<br\/>/gi,"\n");b(/<br>/gi,"\n");b(/<p>/gi,"");b(/<\/p>/gi,"\n");b(/ /gi," ");b(/"/gi,'"');b(/</gi,"<");b(/>/gi,">");b(/&/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"<br />");b(/\[b\]/gi,"<strong>");b(/\[\/b\]/gi,"</strong>");b(/\[i\]/gi,"<em>");b(/\[\/i\]/gi,"</em>");b(/\[u\]/gi,"<u>");b(/\[\/u\]/gi,"</u>");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>');b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span> ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span> ');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/bbcode/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/bbcode/editor_plugin_src.js new file mode 100644 index 000000000..5586637f3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/bbcode/editor_plugin_src.js @@ -0,0 +1,120 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.BBCodePlugin', {
+ init : function(ed, url) {
+ var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();
+
+ ed.onBeforeSetContent.add(function(ed, o) {
+ o.content = t['_' + dialect + '_bbcode2html'](o.content);
+ });
+
+ ed.onPostProcess.add(function(ed, o) {
+ if (o.set)
+ o.content = t['_' + dialect + '_bbcode2html'](o.content);
+
+ if (o.get)
+ o.content = t['_' + dialect + '_html2bbcode'](o.content);
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'BBCode Plugin',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ // HTML -> BBCode in PunBB dialect
+ _punbb_html2bbcode : function(s) {
+ s = tinymce.trim(s);
+
+ function rep(re, str) {
+ s = s.replace(re, str);
+ };
+
+ // example: <strong> to [b]
+ rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
+ rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
+ rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
+ rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
+ rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
+ rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
+ rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
+ rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
+ rep(/<font>(.*?)<\/font>/gi,"$1");
+ rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
+ rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
+ rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
+ rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
+ rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
+ rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
+ rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
+ rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
+ rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
+ rep(/<\/(strong|b)>/gi,"[/b]");
+ rep(/<(strong|b)>/gi,"[b]");
+ rep(/<\/(em|i)>/gi,"[/i]");
+ rep(/<(em|i)>/gi,"[i]");
+ rep(/<\/u>/gi,"[/u]");
+ rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
+ rep(/<u>/gi,"[u]");
+ rep(/<blockquote[^>]*>/gi,"[quote]");
+ rep(/<\/blockquote>/gi,"[/quote]");
+ rep(/<br \/>/gi,"\n");
+ rep(/<br\/>/gi,"\n");
+ rep(/<br>/gi,"\n");
+ rep(/<p>/gi,"");
+ rep(/<\/p>/gi,"\n");
+ rep(/ /gi," ");
+ rep(/"/gi,"\"");
+ rep(/</gi,"<");
+ rep(/>/gi,">");
+ rep(/&/gi,"&");
+
+ return s;
+ },
+
+ // BBCode -> HTML from PunBB dialect
+ _punbb_bbcode2html : function(s) {
+ s = tinymce.trim(s);
+
+ function rep(re, str) {
+ s = s.replace(re, str);
+ };
+
+ // example: [b] to <strong>
+ rep(/\n/gi,"<br />");
+ rep(/\[b\]/gi,"<strong>");
+ rep(/\[\/b\]/gi,"</strong>");
+ rep(/\[i\]/gi,"<em>");
+ rep(/\[\/i\]/gi,"</em>");
+ rep(/\[u\]/gi,"<u>");
+ rep(/\[\/u\]/gi,"</u>");
+ rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
+ rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
+ rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
+ rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
+ rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span> ");
+ rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span> ");
+
+ return s;
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/contextmenu/editor_plugin.js b/plugins/TinyMCE/js/plugins/contextmenu/editor_plugin.js new file mode 100644 index 000000000..9749e5164 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/contextmenu/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(d){var f=this,g;f.editor=d;f.onContextMenu=new tinymce.util.Dispatcher(this);d.onContextMenu.add(function(h,i){if(!i.ctrlKey){if(g){h.selection.setRng(g)}f._getMenu(h).showMenu(i.clientX,i.clientY);a.add(h.getDoc(),"click",function(j){e(h,j)});a.cancel(i)}});d.onRemove.add(function(){if(f._menu){f._menu.removeAll()}});function e(h,i){g=null;if(i&&i.button==2){g=h.selection.getRng();return}if(f._menu){f._menu.removeAll();f._menu.destroy();a.remove(h.getDoc(),"click",e)}}d.onMouseDown.add(e);d.onKeyDown.add(e)},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/contextmenu/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/contextmenu/editor_plugin_src.js new file mode 100644 index 000000000..13813a64e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/contextmenu/editor_plugin_src.js @@ -0,0 +1,147 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;
+
+ /**
+ * This plugin a context menu to TinyMCE editor instances.
+ *
+ * @class tinymce.plugins.ContextMenu
+ */
+ tinymce.create('tinymce.plugins.ContextMenu', {
+ /**
+ * Initializes the plugin, this will be executed after the plugin has been created.
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
+ * of the editor instance to intercept that event.
+ *
+ * @method init
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+ * @param {string} url Absolute URL to where the plugin is located.
+ */
+ init : function(ed) {
+ var t = this, lastRng;
+
+ t.editor = ed;
+
+ /**
+ * This event gets fired when the context menu is shown.
+ *
+ * @event onContextMenu
+ * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event.
+ * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed.
+ */
+ t.onContextMenu = new tinymce.util.Dispatcher(this);
+
+ ed.onContextMenu.add(function(ed, e) {
+ if (!e.ctrlKey) {
+ // Restore the last selection since it was removed
+ if (lastRng)
+ ed.selection.setRng(lastRng);
+
+ t._getMenu(ed).showMenu(e.clientX, e.clientY);
+ Event.add(ed.getDoc(), 'click', function(e) {
+ hide(ed, e);
+ });
+ Event.cancel(e);
+ }
+ });
+
+ ed.onRemove.add(function() {
+ if (t._menu)
+ t._menu.removeAll();
+ });
+
+ function hide(ed, e) {
+ lastRng = null;
+
+ // Since the contextmenu event moves
+ // the selection we need to store it away
+ if (e && e.button == 2) {
+ lastRng = ed.selection.getRng();
+ return;
+ }
+
+ if (t._menu) {
+ t._menu.removeAll();
+ t._menu.destroy();
+ Event.remove(ed.getDoc(), 'click', hide);
+ }
+ };
+
+ ed.onMouseDown.add(hide);
+ ed.onKeyDown.add(hide);
+ },
+
+ /**
+ * Returns information about the plugin as a name/value array.
+ * The current keys are longname, author, authorurl, infourl and version.
+ *
+ * @method getInfo
+ * @return {Object} Name/value array containing information about the plugin.
+ */
+ getInfo : function() {
+ return {
+ longname : 'Contextmenu',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ _getMenu : function(ed) {
+ var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p1, p2;
+
+ if (m) {
+ m.removeAll();
+ m.destroy();
+ }
+
+ p1 = DOM.getPos(ed.getContentAreaContainer());
+ p2 = DOM.getPos(ed.getContainer());
+
+ m = ed.controlManager.createDropMenu('contextmenu', {
+ offset_x : p1.x + ed.getParam('contextmenu_offset_x', 0),
+ offset_y : p1.y + ed.getParam('contextmenu_offset_y', 0),
+ constrain : 1
+ });
+
+ t._menu = m;
+
+ m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);
+ m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);
+ m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});
+
+ if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {
+ m.addSeparator();
+ m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
+ m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
+ }
+
+ m.addSeparator();
+ m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
+
+ m.addSeparator();
+ am = m.addMenu({title : 'contextmenu.align'});
+ am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});
+ am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});
+ am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});
+ am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});
+
+ t.onContextMenu.dispatch(t, m, el, col);
+
+ return m;
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/directionality/editor_plugin.js b/plugins/TinyMCE/js/plugins/directionality/editor_plugin.js new file mode 100644 index 000000000..bce8e7399 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/directionality/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/directionality/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/directionality/editor_plugin_src.js new file mode 100644 index 000000000..4444959bf --- /dev/null +++ b/plugins/TinyMCE/js/plugins/directionality/editor_plugin_src.js @@ -0,0 +1,82 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Directionality', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ ed.addCommand('mceDirectionLTR', function() {
+ var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
+
+ if (e) {
+ if (ed.dom.getAttrib(e, "dir") != "ltr")
+ ed.dom.setAttrib(e, "dir", "ltr");
+ else
+ ed.dom.setAttrib(e, "dir", "");
+ }
+
+ ed.nodeChanged();
+ });
+
+ ed.addCommand('mceDirectionRTL', function() {
+ var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock);
+
+ if (e) {
+ if (ed.dom.getAttrib(e, "dir") != "rtl")
+ ed.dom.setAttrib(e, "dir", "rtl");
+ else
+ ed.dom.setAttrib(e, "dir", "");
+ }
+
+ ed.nodeChanged();
+ });
+
+ ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
+ ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
+
+ ed.onNodeChange.add(t._nodeChange, t);
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Directionality',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ _nodeChange : function(ed, cm, n) {
+ var dom = ed.dom, dir;
+
+ n = dom.getParent(n, dom.isBlock);
+ if (!n) {
+ cm.setDisabled('ltr', 1);
+ cm.setDisabled('rtl', 1);
+ return;
+ }
+
+ dir = dom.getAttrib(n, 'dir');
+ cm.setActive('ltr', dir == "ltr");
+ cm.setDisabled('ltr', 0);
+ cm.setActive('rtl', dir == "rtl");
+ cm.setDisabled('rtl', 0);
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/emotions/editor_plugin.js b/plugins/TinyMCE/js/plugins/emotions/editor_plugin.js new file mode 100644 index 000000000..dbdd8ffb5 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/editor_plugin.js @@ -0,0 +1 @@ +(function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/emotions/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/emotions/editor_plugin_src.js new file mode 100644 index 000000000..71d541697 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/editor_plugin_src.js @@ -0,0 +1,43 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function(tinymce) {
+ tinymce.create('tinymce.plugins.EmotionsPlugin', {
+ init : function(ed, url) {
+ // Register commands
+ ed.addCommand('mceEmotion', function() {
+ ed.windowManager.open({
+ file : url + '/emotions.htm',
+ width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),
+ height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ // Register buttons
+ ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Emotions',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);
+})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/emotions/emotions.htm b/plugins/TinyMCE/js/plugins/emotions/emotions.htm new file mode 100644 index 000000000..55a1d72fa --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/emotions.htm @@ -0,0 +1,40 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#emotions_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/emotions.js"></script>
+</head>
+<body style="display: none">
+ <div align="center">
+ <div class="title">{#emotions_dlg.title}:<br /><br /></div>
+
+ <table border="0" cellspacing="0" cellpadding="4">
+ <tr>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}" title="{#emotions_dlg.cool}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}" title="{#emotions_dlg.cry}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}" title="{#emotions_dlg.embarassed}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}" title="{#emotions_dlg.foot_in_mouth}" /></a></td>
+ </tr>
+ <tr>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}" title="{#emotions_dlg.frown}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}" title="{#emotions_dlg.innocent}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}" title="{#emotions_dlg.kiss}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}" title="{#emotions_dlg.laughing}" /></a></td>
+ </tr>
+ <tr>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}" title="{#emotions_dlg.money_mouth}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}" title="{#emotions_dlg.sealed}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}" title="{#emotions_dlg.smile}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}" title="{#emotions_dlg.surprised}" /></a></td>
+ </tr>
+ <tr>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}" title="{#emotions_dlg.tongue_out}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}" title="{#emotions_dlg.undecided}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}" title="{#emotions_dlg.wink}" /></a></td>
+ <td><a href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}" title="{#emotions_dlg.yell}" /></a></td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-cool.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cool.gif Binary files differnew file mode 100644 index 000000000..ba90cc36f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cool.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-cry.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cry.gif Binary files differnew file mode 100644 index 000000000..74d897a4f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cry.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-embarassed.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-embarassed.gif Binary files differnew file mode 100644 index 000000000..963a96b8a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-embarassed.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-foot-in-mouth.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-foot-in-mouth.gif Binary files differnew file mode 100644 index 000000000..16f68cc1e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-foot-in-mouth.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-frown.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-frown.gif Binary files differnew file mode 100644 index 000000000..716f55e16 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-frown.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-innocent.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-innocent.gif Binary files differnew file mode 100644 index 000000000..334d49e0e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-innocent.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-kiss.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-kiss.gif Binary files differnew file mode 100644 index 000000000..4efd549ed --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-kiss.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-laughing.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-laughing.gif Binary files differnew file mode 100644 index 000000000..1606c119e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-laughing.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-money-mouth.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-money-mouth.gif Binary files differnew file mode 100644 index 000000000..ca2451e10 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-money-mouth.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-sealed.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-sealed.gif Binary files differnew file mode 100644 index 000000000..b33d3cca1 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-sealed.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-smile.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-smile.gif Binary files differnew file mode 100644 index 000000000..e6a9e60d5 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-smile.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-surprised.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-surprised.gif Binary files differnew file mode 100644 index 000000000..cb99cdd91 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-surprised.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-tongue-out.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-tongue-out.gif Binary files differnew file mode 100644 index 000000000..2075dc160 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-tongue-out.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-undecided.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-undecided.gif Binary files differnew file mode 100644 index 000000000..bef7e2573 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-undecided.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-wink.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-wink.gif Binary files differnew file mode 100644 index 000000000..9faf1aff8 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-wink.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-yell.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-yell.gif Binary files differnew file mode 100644 index 000000000..648e6e879 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/img/smiley-yell.gif diff --git a/plugins/TinyMCE/js/plugins/emotions/js/emotions.js b/plugins/TinyMCE/js/plugins/emotions/js/emotions.js new file mode 100644 index 000000000..c54936709 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/js/emotions.js @@ -0,0 +1,22 @@ +tinyMCEPopup.requireLangPack();
+
+var EmotionsDialog = {
+ init : function(ed) {
+ tinyMCEPopup.resizeToInnerSize();
+ },
+
+ insert : function(file, title) {
+ var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+ tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
+ src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
+ alt : ed.getLang(title),
+ title : ed.getLang(title),
+ border : 0
+ }));
+
+ tinyMCEPopup.close();
+ }
+};
+
+tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
diff --git a/plugins/TinyMCE/js/plugins/emotions/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/emotions/langs/en_dlg.js new file mode 100644 index 000000000..3b57ad9e3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/langs/en_dlg.js @@ -0,0 +1,20 @@ +tinyMCE.addI18n('en.emotions_dlg',{
+title:"Insert emotion",
+desc:"Emotions",
+cool:"Cool",
+cry:"Cry",
+embarassed:"Embarassed",
+foot_in_mouth:"Foot in mouth",
+frown:"Frown",
+innocent:"Innocent",
+kiss:"Kiss",
+laughing:"Laughing",
+money_mouth:"Money mouth",
+sealed:"Sealed",
+smile:"Smile",
+surprised:"Surprised",
+tongue_out:"Tongue out",
+undecided:"Undecided",
+wink:"Wink",
+yell:"Yell"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/example/dialog.htm b/plugins/TinyMCE/js/plugins/example/dialog.htm new file mode 100644 index 000000000..50b2b3445 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/dialog.htm @@ -0,0 +1,22 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#example_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/dialog.js"></script>
+</head>
+<body>
+
+<form onsubmit="ExampleDialog.insert();return false;" action="#">
+ <p>Here is a example dialog.</p>
+ <p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
+ <p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
+
+ <div class="mceActionPanel">
+ <input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/example/editor_plugin.js b/plugins/TinyMCE/js/plugins/example/editor_plugin.js new file mode 100644 index 000000000..ec1f81ea4 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/example/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/example/editor_plugin_src.js new file mode 100644 index 000000000..9a0e7da15 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/editor_plugin_src.js @@ -0,0 +1,84 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ // Load plugin specific language pack
+ tinymce.PluginManager.requireLangPack('example');
+
+ tinymce.create('tinymce.plugins.ExamplePlugin', {
+ /**
+ * Initializes the plugin, this will be executed after the plugin has been created.
+ * This call is done before the editor instance has finished it's initialization so use the onInit event
+ * of the editor instance to intercept that event.
+ *
+ * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
+ * @param {string} url Absolute URL to where the plugin is located.
+ */
+ init : function(ed, url) {
+ // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
+ ed.addCommand('mceExample', function() {
+ ed.windowManager.open({
+ file : url + '/dialog.htm',
+ width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
+ height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url, // Plugin absolute URL
+ some_custom_arg : 'custom arg' // Custom argument
+ });
+ });
+
+ // Register example button
+ ed.addButton('example', {
+ title : 'example.desc',
+ cmd : 'mceExample',
+ image : url + '/img/example.gif'
+ });
+
+ // Add a node change handler, selects the button in the UI when a image is selected
+ ed.onNodeChange.add(function(ed, cm, n) {
+ cm.setActive('example', n.nodeName == 'IMG');
+ });
+ },
+
+ /**
+ * Creates control instances based in the incomming name. This method is normally not
+ * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
+ * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
+ * method can be used to create those.
+ *
+ * @param {String} n Name of the control to create.
+ * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
+ * @return {tinymce.ui.Control} New control instance or null if no control was created.
+ */
+ createControl : function(n, cm) {
+ return null;
+ },
+
+ /**
+ * Returns information about the plugin as a name/value array.
+ * The current keys are longname, author, authorurl, infourl and version.
+ *
+ * @return {Object} Name/value array containing information about the plugin.
+ */
+ getInfo : function() {
+ return {
+ longname : 'Example plugin',
+ author : 'Some author',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
+ version : "1.0"
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/example/img/example.gif b/plugins/TinyMCE/js/plugins/example/img/example.gif Binary files differnew file mode 100644 index 000000000..1ab5da446 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/img/example.gif diff --git a/plugins/TinyMCE/js/plugins/example/js/dialog.js b/plugins/TinyMCE/js/plugins/example/js/dialog.js new file mode 100644 index 000000000..fa8341132 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/js/dialog.js @@ -0,0 +1,19 @@ +tinyMCEPopup.requireLangPack();
+
+var ExampleDialog = {
+ init : function() {
+ var f = document.forms[0];
+
+ // Get the selected contents as text and place it in the input
+ f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
+ f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
+ },
+
+ insert : function() {
+ // Insert the contents from the input into the document
+ tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
+ tinyMCEPopup.close();
+ }
+};
+
+tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
diff --git a/plugins/TinyMCE/js/plugins/example/langs/en.js b/plugins/TinyMCE/js/plugins/example/langs/en.js new file mode 100644 index 000000000..e0784f80f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/langs/en.js @@ -0,0 +1,3 @@ +tinyMCE.addI18n('en.example',{
+ desc : 'This is just a template button'
+});
diff --git a/plugins/TinyMCE/js/plugins/example/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/example/langs/en_dlg.js new file mode 100644 index 000000000..ebcf948da --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/langs/en_dlg.js @@ -0,0 +1,3 @@ +tinyMCE.addI18n('en.example_dlg',{
+ title : 'This is just a example title'
+});
diff --git a/plugins/TinyMCE/js/plugins/fullpage/css/fullpage.css b/plugins/TinyMCE/js/plugins/fullpage/css/fullpage.css new file mode 100644 index 000000000..7a3334f08 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/css/fullpage.css @@ -0,0 +1,182 @@ +/* Hide the advanced tab */
+#advanced_tab {
+ display: none;
+}
+
+#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
+ width: 280px;
+}
+
+#doctype, #docencoding {
+ width: 200px;
+}
+
+#langcode {
+ width: 30px;
+}
+
+#bgimage {
+ width: 220px;
+}
+
+#fontface {
+ width: 240px;
+}
+
+#leftmargin, #rightmargin, #topmargin, #bottommargin {
+ width: 50px;
+}
+
+.panel_wrapper div.current {
+ height: 400px;
+}
+
+#stylesheet, #style {
+ width: 240px;
+}
+
+/* Head list classes */
+
+.headlistwrapper {
+ width: 100%;
+}
+
+.addbutton, .removebutton, .moveupbutton, .movedownbutton {
+ border-top: 1px solid;
+ border-left: 1px solid;
+ border-bottom: 1px solid;
+ border-right: 1px solid;
+ border-color: #F0F0EE;
+ cursor: default;
+ display: block;
+ width: 20px;
+ height: 20px;
+}
+
+#doctypes {
+ width: 200px;
+}
+
+.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover {
+ border: 1px solid #0A246A;
+ background-color: #B6BDD2;
+}
+
+.addbutton {
+ background-image: url('../images/add.gif');
+ float: left;
+ margin-right: 3px;
+}
+
+.removebutton {
+ background-image: url('../images/remove.gif');
+ float: left;
+}
+
+.moveupbutton {
+ background-image: url('../images/move_up.gif');
+ float: left;
+ margin-right: 3px;
+}
+
+.movedownbutton {
+ background-image: url('../images/move_down.gif');
+ float: left;
+}
+
+.selected {
+ border: 1px solid #0A246A;
+ background-color: #B6BDD2;
+}
+
+.toolbar {
+ width: 100%;
+}
+
+#headlist {
+ width: 100%;
+ margin-top: 3px;
+ font-size: 11px;
+}
+
+#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
+ display: none;
+}
+
+#addmenu {
+ position: absolute;
+ border: 1px solid gray;
+ display: none;
+ z-index: 100;
+ background-color: white;
+}
+
+#addmenu a {
+ display: block;
+ width: 100%;
+ line-height: 20px;
+ text-decoration: none;
+ background-color: white;
+}
+
+#addmenu a:hover {
+ background-color: #B6BDD2;
+ color: black;
+}
+
+#addmenu span {
+ padding-left: 10px;
+ padding-right: 10px;
+}
+
+#updateElementPanel {
+ display: none;
+}
+
+#script_element .panel_wrapper div.current {
+ height: 108px;
+}
+
+#style_element .panel_wrapper div.current {
+ height: 108px;
+}
+
+#link_element .panel_wrapper div.current {
+ height: 140px;
+}
+
+#element_script_value {
+ width: 100%;
+ height: 100px;
+}
+
+#element_comment_value {
+ width: 100%;
+ height: 120px;
+}
+
+#element_style_value {
+ width: 100%;
+ height: 100px;
+}
+
+#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
+ width: 250px;
+}
+
+.updateElementButton {
+ margin-top: 3px;
+}
+
+/* MSIE specific styles */
+
+* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
+ width: 22px;
+ height: 22px;
+}
+
+textarea {
+ height: 55px;
+}
+
+.panel_wrapper div.current {height:420px;}
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/fullpage/editor_plugin.js b/plugins/TinyMCE/js/plugins/fullpage/editor_plugin.js new file mode 100644 index 000000000..aeaa66979 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceFullPageProperties",function(){a.windowManager.open({file:b+"/fullpage.htm",width:430+parseInt(a.getLang("fullpage.delta_width",0)),height:495+parseInt(a.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:b,head_html:c.head})});a.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});a.onBeforeSetContent.add(c._setContent,c);a.onSetContent.add(c._setBodyAttribs,c);a.onGetContent.add(c._getContent,c)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_setBodyAttribs:function(d,a){var l,c,e,g,b,h,j,f=this.head.match(/body(.*?)>/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c<e;c++){g=l[c].split("=");b=g[0].replace(/\s/,"");h=g[1];if(h){h=h.replace(/^\s+/,"").replace(/\s+$/,"");j=h.match(/^["'](.*)["']$/);if(j){h=j[1]}}else{h=b}d.dom.setAttrib(d.getBody(),"style",h)}}}},_createSerializer:function(){return new tinymce.dom.Serializer({dom:this.editor.dom,apply_source_formatting:true})},_setContent:function(d,b){var h=this,a,j,f=b.content,g,i="";if(b.format=="raw"&&h.head){return}if(b.source_view&&d.getParam("fullpage_hide_in_source_view")){return}f=f.replace(/<(\/?)BODY/gi,"<$1body");a=f.indexOf("<body");if(a!=-1){a=f.indexOf(">",a);h.head=f.substring(0,a+1);j=f.indexOf("</body",a);if(j==-1){j=f.indexOf("</body",j)}b.content=f.substring(a+1,j);h.foot=f.substring(j);function e(c){return c.replace(/<\/?[A-Z]+/g,function(k){return k.toLowerCase()})}h.head=e(h.head);h.foot=e(h.foot)}else{h.head="";if(d.getParam("fullpage_default_xml_pi")){h.head+='<?xml version="1.0" encoding="'+d.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}h.head+=d.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');h.head+="\n<html>\n<head>\n<title>"+d.getParam("fullpage_default_title","Untitled document")+"</title>\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='<meta http-equiv="Content-Type" content="'+g+'" />\n'}if(g=d.getParam("fullpage_default_font_family")){i+="font-family: "+g+";"}if(g=d.getParam("fullpage_default_font_size")){i+="font-size: "+g+";"}if(g=d.getParam("fullpage_default_text_color")){i+="color: "+g+";"}h.head+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n";h.foot="\n</body>\n</html>"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/fullpage/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/fullpage/editor_plugin_src.js new file mode 100644 index 000000000..a2c9df898 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/editor_plugin_src.js @@ -0,0 +1,153 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.FullPagePlugin', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceFullPageProperties', function() {
+ ed.windowManager.open({
+ file : url + '/fullpage.htm',
+ width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
+ height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url,
+ head_html : t.head
+ });
+ });
+
+ // Register buttons
+ ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
+
+ ed.onBeforeSetContent.add(t._setContent, t);
+ ed.onSetContent.add(t._setBodyAttribs, t);
+ ed.onGetContent.add(t._getContent, t);
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Fullpage',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private plugin internal methods
+
+ _setBodyAttribs : function(ed, o) {
+ var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i);
+
+ if (attr && attr[1]) {
+ bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);
+
+ if (bdattr) {
+ for(i = 0, len = bdattr.length; i < len; i++) {
+ kv = bdattr[i].split('=');
+ k = kv[0].replace(/\s/,'');
+ v = kv[1];
+
+ if (v) {
+ v = v.replace(/^\s+/,'').replace(/\s+$/,'');
+ t = v.match(/^["'](.*)["']$/);
+
+ if (t)
+ v = t[1];
+ } else
+ v = k;
+
+ ed.dom.setAttrib(ed.getBody(), 'style', v);
+ }
+ }
+ }
+ },
+
+ _createSerializer : function() {
+ return new tinymce.dom.Serializer({
+ dom : this.editor.dom,
+ apply_source_formatting : true
+ });
+ },
+
+ _setContent : function(ed, o) {
+ var t = this, sp, ep, c = o.content, v, st = '';
+
+ // Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate
+ if (o.format == 'raw' && t.head)
+ return;
+
+ if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))
+ return;
+
+ // Parse out head, body and footer
+ c = c.replace(/<(\/?)BODY/gi, '<$1body');
+ sp = c.indexOf('<body');
+
+ if (sp != -1) {
+ sp = c.indexOf('>', sp);
+ t.head = c.substring(0, sp + 1);
+
+ ep = c.indexOf('</body', sp);
+ if (ep == -1)
+ ep = c.indexOf('</body', ep);
+
+ o.content = c.substring(sp + 1, ep);
+ t.foot = c.substring(ep);
+
+ function low(s) {
+ return s.replace(/<\/?[A-Z]+/g, function(a) {
+ return a.toLowerCase();
+ })
+ };
+
+ t.head = low(t.head);
+ t.foot = low(t.foot);
+ } else {
+ t.head = '';
+ if (ed.getParam('fullpage_default_xml_pi'))
+ t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
+
+ t.head += ed.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
+ t.head += '\n<html>\n<head>\n<title>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n';
+
+ if (v = ed.getParam('fullpage_default_encoding'))
+ t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n';
+
+ if (v = ed.getParam('fullpage_default_font_family'))
+ st += 'font-family: ' + v + ';';
+
+ if (v = ed.getParam('fullpage_default_font_size'))
+ st += 'font-size: ' + v + ';';
+
+ if (v = ed.getParam('fullpage_default_text_color'))
+ st += 'color: ' + v + ';';
+
+ t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n';
+ t.foot = '\n</body>\n</html>';
+ }
+ },
+
+ _getContent : function(ed, o) {
+ var t = this;
+
+ if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))
+ o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/fullpage/fullpage.htm b/plugins/TinyMCE/js/plugins/fullpage/fullpage.htm new file mode 100644 index 000000000..c32afaf2d --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/fullpage.htm @@ -0,0 +1,571 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#fullpage_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="js/fullpage.js"></script>
+ <link href="css/fullpage.css" rel="stylesheet" type="text/css" />
+</head>
+<body id="advlink" style="display: none">
+ <form onsubmit="updateAction();return false;" name="fullpage" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>
+ <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="meta_panel" class="panel current">
+ <fieldset>
+ <legend>{#fullpage_dlg.meta_props}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label> </td>
+ <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label> </td>
+ <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label> </td>
+ <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label> </td>
+ <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label> </td>
+ <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label> </td>
+ <td>
+ <select id="metarobots" name="metarobots">
+ <option value="">{#not_set}</option>
+ <option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>
+ <option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>
+ <option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>
+ <option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#fullpage_dlg.langprops}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td>
+ <td>
+ <select id="docencoding" name="docencoding">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="doctypes">{#fullpage_dlg.doctypes}</label> </td>
+ <td>
+ <select id="doctypes" name="doctypes">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label> </td>
+ <td><input type="text" id="langcode" name="langcode" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td>
+ <td>
+ <select id="langdir" name="langdir">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#fullpage_dlg.ltr}</option>
+ <option value="rtl">{#fullpage_dlg.rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label> </td>
+ <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="appearance_panel" class="panel">
+ <fieldset>
+ <legend>{#fullpage_dlg.appearance_textprops}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td>
+ <td>
+ <select id="fontface" name="fontface" onchange="changedStyleField(this);">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td>
+ <td>
+ <select id="fontsize" name="fontsize" onchange="changedStyleField(this);">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);" /></td>
+ <td id="textcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#fullpage_dlg.appearance_bgprops}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bgimage" name="bgimage" type="text" value="" onchange="changedStyleField(this);" /></td>
+ <td id="bgimage_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);" /></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#fullpage_dlg.appearance_marginprops}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td>
+ <td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+ <td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td>
+ <td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td>
+ <td><input id="topmargin" name="topmargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+ <td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td>
+ <td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="changedStyleField(this);" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#fullpage_dlg.appearance_linkprops}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');changedStyleField(this);" /></td>
+ <td id="link_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+
+ <td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);" /></td>
+ <td id="visited_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');changedStyleField(this);" /></td>
+ <td id="active_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+
+ <td> </td>
+ <td> </td>
+
+<!-- <td class="column1"><label for="hover_color">{#fullpage_dlg.hover_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="hover_color" name="hover_color" type="text" value="" size="9" onchange="changedStyleField(this);" /></td>
+ <td id="hover_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td> -->
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#fullpage_dlg.appearance_style}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td>
+ <td><table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
+ <td id="stylesheet_browsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="style">{#fullpage_dlg.style}</label></td>
+ <td><input id="style" name="style" type="text" value="" onchange="changedStyleField(this);" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <div id="addmenu">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><td><a href="javascript:addHeadElm('title');" onmousedown="return false;"><span>{#fullpage_dlg.add_title}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('meta');" onmousedown="return false;"><span>{#fullpage_dlg.add_meta}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('script');" onmousedown="return false;"><span>{#fullpage_dlg.add_script}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('style');" onmousedown="return false;"><span>{#fullpage_dlg.add_style}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('link');" onmousedown="return false;"><span>{#fullpage_dlg.add_link}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('base');" onmousedown="return false;"><span>{#fullpage_dlg.add_base}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('comment');" onmousedown="return false;"><span>{#fullpage_dlg.add_comment}</span></a></td></tr>
+ </table>
+ </div>
+
+ <fieldset>
+ <legend>{#fullpage_dlg.head_elements}</legend>
+
+ <div class="headlistwrapper">
+ <div class="toolbar">
+ <div style="float: left">
+ <a id="addbutton" href="javascript:showAddMenu();" onmousedown="return false;" class="addbutton" title="{#fullpage_dlg.add}"></a>
+ <a href="#" onmousedown="return false;" class="removebutton" title="{#fullpage_dlg.remove}"></a>
+ </div>
+ <div style="float: right">
+ <a href="#" onmousedown="return false;" class="moveupbutton" title="{#fullpage_dlg.moveup}"></a>
+ <a href="#" onmousedown="return false;" class="movedownbutton" title="{#fullpage_dlg.movedown}"></a>
+ </div>
+ <br style="clear: both" />
+ </div>
+ <select id="headlist" size="26" onchange="updateHeadElm(this.options[this.selectedIndex].value);">
+ <option value="title_0"><title>Some title bla bla bla</title></option>
+ <option value="meta_1"><meta name="keywords">Some bla bla bla</meta></option>
+ <option value="meta_2"><meta name="description">Some bla bla bla bla bla bla bla bla bla</meta></option>
+ <option value="script_3"><script language="javascript">...</script></option>
+ <option value="style_4"><style>...</style></option>
+ <option value="base_5"><base href="." /></option>
+ <option value="comment_6"><!-- ... --></option>
+ <option value="link_7"><link href="." /></option>
+ </select>
+ </div>
+ </fieldset>
+
+ <fieldset id="meta_element">
+ <legend>{#fullpage_dlg.meta_element}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_meta_type">{#fullpage_dlg.type}</label></td>
+ <td><select id="element_meta_type">
+ <option value="name">name</option>
+ <option value="http-equiv">http-equiv</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_meta_name">{#fullpage_dlg.name}</label></td>
+ <td><input id="element_meta_name" name="element_meta_name" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_meta_content">{#fullpage_dlg.content}</label></td>
+ <td><input id="element_meta_content" name="element_meta_content" type="text" value="" /></td>
+ </tr>
+ </table>
+
+ <input type="button" id="meta_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="title_element">
+ <legend>{#fullpage_dlg.title_element}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_title">{#fullpage_dlg.meta_title}</label></td>
+ <td><input id="element_title" name="element_title" type="text" value="" /></td>
+ </tr>
+ </table>
+
+ <input type="button" id="title_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="script_element">
+ <legend>{#fullpage_dlg.script_element}</legend>
+
+ <div class="tabs">
+ <ul>
+ <li id="script_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
+ <li id="script_value_tab"><span><a href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
+ </ul>
+ </div>
+
+ <br style="clear: both" />
+
+ <div class="panel_wrapper">
+ <div id="script_props_panel" class="panel current">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_script_type">{#fullpage_dlg.type}</label></td>
+ <td><select id="element_script_type">
+ <option value="text/javascript">text/javascript</option>
+ <option value="text/jscript">text/jscript</option>
+ <option value="text/vbscript">text/vbscript</option>
+ <option value="text/vbs">text/vbs</option>
+ <option value="text/ecmascript">text/ecmascript</option>
+ <option value="text/xml">text/xml</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_script_src">{#fullpage_dlg.src}</label></td>
+ <td><table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="element_script_src" name="element_script_src" type="text" value="" /></td>
+ <td id="script_src_pickcontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_script_charset">{#fullpage_dlg.charset}</label></td>
+ <td><select id="element_script_charset"><option value="">{#not_set}</option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_script_defer">{#fullpage_dlg.defer}</label></td>
+ <td><input type="checkbox" id="element_script_defer" name="element_script_defer" class="checkbox" /></td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="script_value_panel" class="panel">
+ <textarea id="element_script_value"></textarea>
+ </div>
+ </div>
+
+ <input type="button" id="script_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="style_element">
+ <legend>{#fullpage_dlg.style_element}</legend>
+
+ <div class="tabs">
+ <ul>
+ <li id="style_props_tab" class="current"><span><a href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');" onmousedown="return false;">{#fullpage_dlg.properties}</a></span></li>
+ <li id="style_value_tab"><span><a href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');" onmousedown="return false;">{#fullpage_dlg.value}</a></span></li>
+ </ul>
+ </div>
+
+ <br style="clear: both" />
+
+ <div class="panel_wrapper">
+ <div id="style_props_panel" class="panel current">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_style_type">{#fullpage_dlg.type}</label></td>
+ <td><select id="element_style_type">
+ <option value="text/css">text/css</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_style_media">{#fullpage_dlg.media}</label></td>
+ <td><select id="element_style_media"></select></td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="style_value_panel" class="panel">
+ <textarea id="element_style_value"></textarea>
+ </div>
+ </div>
+
+ <input type="button" id="style_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="base_element">
+ <legend>{#fullpage_dlg.base_element}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_base_href">{#fullpage_dlg.href}</label></td>
+ <td><input id="element_base_href" name="element_base_href" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_base_target">{#fullpage_dlg.target}</label></td>
+ <td><input id="element_base_target" name="element_base_target" type="text" value="" /></td>
+ </tr>
+ </table>
+
+ <input type="button" id="base_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="link_element">
+ <legend>{#fullpage_dlg.link_element}</legend>
+
+ <div class="tabs">
+ <ul>
+ <li id="link_general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');" onmousedown="return false;">{#fullpage_dlg.general_props}</a></span></li>
+ <li id="link_advanced_tab"><span><a href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');" onmousedown="return false;">{#fullpage_dlg.advanced_props}</a></span></li>
+ </ul>
+ </div>
+
+ <br style="clear: both" />
+
+ <div class="panel_wrapper">
+ <div id="link_general_panel" class="panel current">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_link_href">{#fullpage_dlg.href}</label></td>
+ <td><table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="element_link_href" name="element_link_href" type="text" value="" /></td>
+ <td id="link_href_pickcontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_link_title">{#fullpage_dlg.meta_title}</label></td>
+ <td><input id="element_link_title" name="element_link_title" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_link_type">{#fullpage_dlg.type}</label></td>
+ <td><select id="element_link_type" name="element_link_type">
+ <option value="text/css">text/css</option>
+ <option value="text/javascript">text/javascript</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_link_media">{#fullpage_dlg.media}</label></td>
+ <td><select id="element_link_media" name="element_link_media"></select></td>
+ </tr>
+ <tr>
+ <td><label for="element_style_rel">{#fullpage_dlg.rel}</label></td>
+ <td><select id="element_style_rel" name="element_style_rel">
+ <option value="">{#not_set}</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="link_advanced_panel" class="panel">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="column1"><label for="element_link_charset">{#fullpage_dlg.charset}</label></td>
+ <td><select id="element_link_charset"><option value="">{#not_set}</option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_link_hreflang">{#fullpage_dlg.hreflang}</label></td>
+ <td><input id="element_link_hreflang" name="element_link_hreflang" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="element_link_target">{#fullpage_dlg.target}</label></td>
+ <td><input id="element_link_target" name="element_link_target" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td><label for="element_style_rev">{#fullpage_dlg.rev}</label></td>
+ <td><select id="element_style_rev" name="element_style_rev">
+ <option value="">{#not_set}</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <input type="button" id="link_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="comment_element">
+ <legend>{#fullpage_dlg.comment_element}</legend>
+
+ <textarea id="element_comment_value"></textarea>
+
+ <input type="button" id="comment_updateelement" class="updateElementButton" name="update" value="{#update}" onclick="updateElement();" />
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="update" value="{#update}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/fullpage/js/fullpage.js b/plugins/TinyMCE/js/plugins/fullpage/js/fullpage.js new file mode 100644 index 000000000..a1bb719a3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/js/fullpage.js @@ -0,0 +1,471 @@ +/**
+ * fullpage.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+tinyMCEPopup.requireLangPack();
+
+var doc;
+
+var defaultDocTypes =
+ 'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
+ 'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
+ 'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
+ 'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
+ 'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
+ 'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
+ 'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
+
+var defaultEncodings =
+ 'Western european (iso-8859-1)=iso-8859-1,' +
+ 'Central European (iso-8859-2)=iso-8859-2,' +
+ 'Unicode (UTF-8)=utf-8,' +
+ 'Chinese traditional (Big5)=big5,' +
+ 'Cyrillic (iso-8859-5)=iso-8859-5,' +
+ 'Japanese (iso-2022-jp)=iso-2022-jp,' +
+ 'Greek (iso-8859-7)=iso-8859-7,' +
+ 'Korean (iso-2022-kr)=iso-2022-kr,' +
+ 'ASCII (us-ascii)=us-ascii';
+
+var defaultMediaTypes =
+ 'all=all,' +
+ 'screen=screen,' +
+ 'print=print,' +
+ 'tty=tty,' +
+ 'tv=tv,' +
+ 'projection=projection,' +
+ 'handheld=handheld,' +
+ 'braille=braille,' +
+ 'aural=aural';
+
+var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
+var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
+
+function init() {
+ var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style;
+
+ // Setup doctype select box
+ doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(',');
+ for (i=0; i<doctypes.length; i++) {
+ p = doctypes[i].split('=');
+
+ if (p.length > 1)
+ addSelectValue(f, 'doctypes', p[0], p[1]);
+ }
+
+ // Setup fonts select box
+ fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';');
+ for (i=0; i<fonts.length; i++) {
+ p = fonts[i].split('=');
+
+ if (p.length > 1)
+ addSelectValue(f, 'fontface', p[0], p[1]);
+ }
+
+ // Setup fontsize select box
+ fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
+ for (i=0; i<fonts.length; i++)
+ addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
+
+ // Setup mediatype select boxs
+ mediaTypes = ed.getParam("fullpage_media_types", defaultMediaTypes).split(',');
+ for (i=0; i<mediaTypes.length; i++) {
+ p = mediaTypes[i].split('=');
+
+ if (p.length > 1) {
+ addSelectValue(f, 'element_style_media', p[0], p[1]);
+ addSelectValue(f, 'element_link_media', p[0], p[1]);
+ }
+ }
+
+ // Setup encodings select box
+ encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(',');
+ for (i=0; i<encodings.length; i++) {
+ p = encodings[i].split('=');
+
+ if (p.length > 1) {
+ addSelectValue(f, 'docencoding', p[0], p[1]);
+ addSelectValue(f, 'element_script_charset', p[0], p[1]);
+ addSelectValue(f, 'element_link_charset', p[0], p[1]);
+ }
+ }
+
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+ document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
+ //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color');
+ document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
+ document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
+ document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
+ document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
+ document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage');
+ document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage');
+ document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
+
+ // Resize some elements
+ if (isVisible('stylesheetbrowser'))
+ document.getElementById('stylesheet').style.width = '220px';
+
+ if (isVisible('link_href_browser'))
+ document.getElementById('element_link_href').style.width = '230px';
+
+ if (isVisible('bgimage_browser'))
+ document.getElementById('bgimage').style.width = '210px';
+
+ // Add iframe
+ dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}});
+ doc = dom.get('documentIframe').contentWindow.document;
+ h = tinyMCEPopup.getWindowArg('head_html');
+
+ // Preprocess the HTML disable scripts and urls
+ h = h.replace(/<script>/gi, '<script type="text/javascript">');
+ h = h.replace(/type=([\"\'])?/gi, 'type=$1-mce-');
+ h = h.replace(/(src=|href=)/g, '_mce_$1');
+
+ // Write in the content in the iframe
+ doc.write(h + '</body></html>');
+ doc.close();
+
+ // Parse xml and doctype
+ xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
+ xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, h, 1);
+ docType = getReItem(/<\!DOCTYPE.*?>/gi, h.replace(/\n/g, ''), 0).replace(/ +/g, ' ');
+ f.langcode.value = getReItem(/lang="(.*?)"/gi, h, 1);
+
+ // Parse title
+ if (e = doc.getElementsByTagName('title')[0])
+ el.metatitle.value = e.textContent || e.text;
+
+ // Parse meta
+ tinymce.each(doc.getElementsByTagName('meta'), function(n) {
+ var na = (n.getAttribute('name', 2) || '').toLowerCase(), va = n.getAttribute('content', 2), eq = n.getAttribute('httpEquiv', 2) || '';
+
+ e = el['meta' + na];
+
+ if (na == 'robots') {
+ selectByValue(f, 'metarobots', tinymce.trim(va), true, true);
+ return;
+ }
+
+ switch (eq.toLowerCase()) {
+ case "content-type":
+ tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, va, 1);
+
+ // Override XML encoding
+ if (tmp != "")
+ xmlEnc = tmp;
+
+ return;
+ }
+
+ if (e)
+ e.value = va;
+ });
+
+ selectByValue(f, 'doctypes', docType, true, true);
+ selectByValue(f, 'docencoding', xmlEnc, true, true);
+ selectByValue(f, 'langdir', doc.body.getAttribute('dir', 2) || '', true, true);
+
+ if (xmlVer != '')
+ el.xml_pi.checked = true;
+
+ // Parse appearance
+
+ // Parse primary stylesheet
+ tinymce.each(doc.getElementsByTagName("link"), function(l) {
+ var m = l.getAttribute('media', 2) || '', t = l.getAttribute('type', 2) || '';
+
+ if (t == "-mce-text/css" && (m == "" || m == "screen" || m == "all") && (l.getAttribute('rel', 2) || '') == "stylesheet") {
+ f.stylesheet.value = l.getAttribute('_mce_href', 2) || '';
+ return false;
+ }
+ });
+
+ // Get from style elements
+ tinymce.each(doc.getElementsByTagName("style"), function(st) {
+ var tmp = parseStyleElement(st);
+
+ for (x=0; x<tmp.length; x++) {
+ if (tmp[x].rule.indexOf('a:visited') != -1 && tmp[x].data['color'])
+ f.visited_color.value = tmp[x].data['color'];
+
+ if (tmp[x].rule.indexOf('a:link') != -1 && tmp[x].data['color'])
+ f.link_color.value = tmp[x].data['color'];
+
+ if (tmp[x].rule.indexOf('a:active') != -1 && tmp[x].data['color'])
+ f.active_color.value = tmp[x].data['color'];
+ }
+ });
+
+ f.textcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "text");
+ f.active_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "alink");
+ f.link_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "link");
+ f.visited_color.value = tinyMCEPopup.dom.getAttrib(doc.body, "vlink");
+ f.bgcolor.value = tinyMCEPopup.dom.getAttrib(doc.body, "bgcolor");
+ f.bgimage.value = tinyMCEPopup.dom.getAttrib(doc.body, "background");
+
+ // Get from style info
+ style = tinyMCEPopup.dom.parseStyle(tinyMCEPopup.dom.getAttrib(doc.body, 'style'));
+
+ if (style['font-family'])
+ selectByValue(f, 'fontface', style['font-family'], true, true);
+ else
+ selectByValue(f, 'fontface', ed.getParam("fullpage_default_fontface", ""), true, true);
+
+ if (style['font-size'])
+ selectByValue(f, 'fontsize', style['font-size'], true, true);
+ else
+ selectByValue(f, 'fontsize', ed.getParam("fullpage_default_fontsize", ""), true, true);
+
+ if (style['color'])
+ f.textcolor.value = convertRGBToHex(style['color']);
+
+ if (style['background-image'])
+ f.bgimage.value = style['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+ if (style['background-color'])
+ f.bgcolor.value = style['background-color'];
+
+ if (style['margin']) {
+ tmp = style['margin'].replace(/[^0-9 ]/g, '');
+ tmp = tmp.split(/ +/);
+ f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
+ f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
+ f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
+ f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
+ }
+
+ if (style['margin-left'])
+ f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
+
+ if (style['margin-right'])
+ f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
+
+ if (style['margin-top'])
+ f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
+
+ if (style['margin-bottom'])
+ f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
+
+ f.style.value = tinyMCEPopup.dom.serializeStyle(style);
+
+ // Update colors
+ updateColor('textcolor_pick', 'textcolor');
+ updateColor('bgcolor_pick', 'bgcolor');
+ updateColor('visited_color_pick', 'visited_color');
+ updateColor('active_color_pick', 'active_color');
+ updateColor('link_color_pick', 'link_color');
+}
+
+function getReItem(r, s, i) {
+ var c = r.exec(s);
+
+ if (c && c.length > i)
+ return c[i];
+
+ return '';
+}
+
+function updateAction() {
+ var f = document.forms[0], nl, i, h, v, s, head, html, l, tmp, addlink = true, ser;
+
+ head = doc.getElementsByTagName('head')[0];
+
+ // Fix scripts without a type
+ nl = doc.getElementsByTagName('script');
+ for (i=0; i<nl.length; i++) {
+ if (tinyMCEPopup.dom.getAttrib(nl[i], '_mce_type') == '')
+ nl[i].setAttribute('_mce_type', 'text/javascript');
+ }
+
+ // Get primary stylesheet
+ nl = doc.getElementsByTagName("link");
+ for (i=0; i<nl.length; i++) {
+ l = nl[i];
+
+ tmp = tinyMCEPopup.dom.getAttrib(l, 'media');
+
+ if (tinyMCEPopup.dom.getAttrib(l, '_mce_type') == "text/css" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCEPopup.dom.getAttrib(l, 'rel') == "stylesheet") {
+ addlink = false;
+
+ if (f.stylesheet.value == '')
+ l.parentNode.removeChild(l);
+ else
+ l.setAttribute('_mce_href', f.stylesheet.value);
+
+ break;
+ }
+ }
+
+ // Add new link
+ if (f.stylesheet.value != '') {
+ l = doc.createElement('link');
+
+ l.setAttribute('type', 'text/css');
+ l.setAttribute('_mce_href', f.stylesheet.value);
+ l.setAttribute('rel', 'stylesheet');
+
+ head.appendChild(l);
+ }
+
+ setMeta(head, 'keywords', f.metakeywords.value);
+ setMeta(head, 'description', f.metadescription.value);
+ setMeta(head, 'author', f.metaauthor.value);
+ setMeta(head, 'copyright', f.metacopyright.value);
+ setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
+ setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
+
+ doc.body.dir = getSelectValue(f, 'langdir');
+ doc.body.style.cssText = f.style.value;
+
+ doc.body.setAttribute('vLink', f.visited_color.value);
+ doc.body.setAttribute('link', f.link_color.value);
+ doc.body.setAttribute('text', f.textcolor.value);
+ doc.body.setAttribute('aLink', f.active_color.value);
+
+ doc.body.style.fontFamily = getSelectValue(f, 'fontface');
+ doc.body.style.fontSize = getSelectValue(f, 'fontsize');
+ doc.body.style.backgroundColor = f.bgcolor.value;
+
+ if (f.leftmargin.value != '')
+ doc.body.style.marginLeft = f.leftmargin.value + 'px';
+
+ if (f.rightmargin.value != '')
+ doc.body.style.marginRight = f.rightmargin.value + 'px';
+
+ if (f.bottommargin.value != '')
+ doc.body.style.marginBottom = f.bottommargin.value + 'px';
+
+ if (f.topmargin.value != '')
+ doc.body.style.marginTop = f.topmargin.value + 'px';
+
+ html = doc.getElementsByTagName('html')[0];
+ html.setAttribute('lang', f.langcode.value);
+ html.setAttribute('xml:lang', f.langcode.value);
+
+ if (f.bgimage.value != '')
+ doc.body.style.backgroundImage = "url('" + f.bgimage.value + "')";
+ else
+ doc.body.style.backgroundImage = '';
+
+ ser = tinyMCEPopup.editor.plugins.fullpage._createSerializer();
+ ser.setRules('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml::lang|xmlns],body[style|dir|vlink|link|text|alink],head');
+
+ h = ser.serialize(doc.documentElement);
+ h = h.substring(0, h.lastIndexOf('</body>'));
+
+ if (h.indexOf('<title>') == -1)
+ h = h.replace(/<head.*?>/, '$&\n' + '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
+ else
+ h = h.replace(/<title>(.*?)<\/title>/, '<title>' + tinyMCEPopup.dom.encode(f.metatitle.value) + '</title>');
+
+ if ((v = getSelectValue(f, 'doctypes')) != '')
+ h = v + '\n' + h;
+
+ if (f.xml_pi.checked) {
+ s = '<?xml version="1.0"';
+
+ if ((v = getSelectValue(f, 'docencoding')) != '')
+ s += ' encoding="' + v + '"';
+
+ s += '?>\n';
+ h = s + h;
+ }
+
+ h = h.replace(/type=\"\-mce\-/gi, 'type="');
+
+ tinyMCEPopup.editor.plugins.fullpage.head = h;
+ tinyMCEPopup.editor.plugins.fullpage._setBodyAttribs(tinyMCEPopup.editor, {});
+ tinyMCEPopup.close();
+}
+
+function changedStyleField(field) {
+}
+
+function setMeta(he, k, v) {
+ var nl, i, m;
+
+ nl = he.getElementsByTagName('meta');
+ for (i=0; i<nl.length; i++) {
+ if (k == 'Content-Type' && tinyMCEPopup.dom.getAttrib(nl[i], 'http-equiv') == k) {
+ if (v == '')
+ nl[i].parentNode.removeChild(nl[i]);
+ else
+ nl[i].setAttribute('content', "text/html; charset=" + v);
+
+ return;
+ }
+
+ if (tinyMCEPopup.dom.getAttrib(nl[i], 'name') == k) {
+ if (v == '')
+ nl[i].parentNode.removeChild(nl[i]);
+ else
+ nl[i].setAttribute('content', v);
+ return;
+ }
+ }
+
+ if (v == '')
+ return;
+
+ m = doc.createElement('meta');
+
+ if (k == 'Content-Type')
+ m.httpEquiv = k;
+ else
+ m.setAttribute('name', k);
+
+ m.setAttribute('content', v);
+ he.appendChild(m);
+}
+
+function parseStyleElement(e) {
+ var v = e.innerHTML;
+ var p, i, r;
+
+ v = v.replace(/<!--/gi, '');
+ v = v.replace(/-->/gi, '');
+ v = v.replace(/[\n\r]/gi, '');
+ v = v.replace(/\s+/gi, ' ');
+
+ r = [];
+ p = v.split(/{|}/);
+
+ for (i=0; i<p.length; i+=2) {
+ if (p[i] != "")
+ r[r.length] = {rule : tinymce.trim(p[i]), data : tinyMCEPopup.dom.parseStyle(p[i+1])};
+ }
+
+ return r;
+}
+
+function serializeStyleElement(d) {
+ var i, s, st;
+
+ s = '<!--\n';
+
+ for (i=0; i<d.length; i++) {
+ s += d[i].rule + ' {\n';
+
+ st = tinyMCE.serializeStyle(d[i].data);
+
+ if (st != '')
+ st += ';';
+
+ s += st.replace(/;/g, ';\n');
+ s += '}\n';
+
+ if (i != d.length - 1)
+ s += '\n';
+ }
+
+ s += '\n-->';
+
+ return s;
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/fullpage/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/fullpage/langs/en_dlg.js new file mode 100644 index 000000000..f5801b8b3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/langs/en_dlg.js @@ -0,0 +1,85 @@ +tinyMCE.addI18n('en.fullpage_dlg',{
+title:"Document properties",
+meta_tab:"General",
+appearance_tab:"Appearance",
+advanced_tab:"Advanced",
+meta_props:"Meta information",
+langprops:"Language and encoding",
+meta_title:"Title",
+meta_keywords:"Keywords",
+meta_description:"Description",
+meta_robots:"Robots",
+doctypes:"Doctype",
+langcode:"Language code",
+langdir:"Language direction",
+ltr:"Left to right",
+rtl:"Right to left",
+xml_pi:"XML declaration",
+encoding:"Character encoding",
+appearance_bgprops:"Background properties",
+appearance_marginprops:"Body margins",
+appearance_linkprops:"Link colors",
+appearance_textprops:"Text properties",
+bgcolor:"Background color",
+bgimage:"Background image",
+left_margin:"Left margin",
+right_margin:"Right margin",
+top_margin:"Top margin",
+bottom_margin:"Bottom margin",
+text_color:"Text color",
+font_size:"Font size",
+font_face:"Font face",
+link_color:"Link color",
+hover_color:"Hover color",
+visited_color:"Visited color",
+active_color:"Active color",
+textcolor:"Color",
+fontsize:"Font size",
+fontface:"Font family",
+meta_index_follow:"Index and follow the links",
+meta_index_nofollow:"Index and don't follow the links",
+meta_noindex_follow:"Do not index but follow the links",
+meta_noindex_nofollow:"Do not index and don\'t follow the links",
+appearance_style:"Stylesheet and style properties",
+stylesheet:"Stylesheet",
+style:"Style",
+author:"Author",
+copyright:"Copyright",
+add:"Add new element",
+remove:"Remove selected element",
+moveup:"Move selected element up",
+movedown:"Move selected element down",
+head_elements:"Head elements",
+info:"Information",
+add_title:"Title element",
+add_meta:"Meta element",
+add_script:"Script element",
+add_style:"Style element",
+add_link:"Link element",
+add_base:"Base element",
+add_comment:"Comment node",
+title_element:"Title element",
+script_element:"Script element",
+style_element:"Style element",
+base_element:"Base element",
+link_element:"Link element",
+meta_element:"Meta element",
+comment_element:"Comment",
+src:"Src",
+language:"Language",
+href:"Href",
+target:"Target",
+type:"Type",
+charset:"Charset",
+defer:"Defer",
+media:"Media",
+properties:"Properties",
+name:"Name",
+value:"Value",
+content:"Content",
+rel:"Rel",
+rev:"Rev",
+hreflang:"Href lang",
+general_props:"General",
+advanced_props:"Advanced"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/fullscreen/editor_plugin.js b/plugins/TinyMCE/js/plugins/fullscreen/editor_plugin.js new file mode 100644 index 000000000..4437bd266 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullscreen/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(c,d){var e=this,f={},b;e.editor=c;c.addCommand("mceFullScreen",function(){var h,i=a.doc.documentElement;if(c.getParam("fullscreen_is_enabled")){if(c.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",e.resizeFunc);tinyMCE.get(c.getParam("fullscreen_editor_id")).setContent(c.getContent({format:"raw"}),{format:"raw"});tinyMCE.remove(c);a.remove("mce_fullscreen_container");i.style.overflow=c.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",c.getParam("fullscreen_overflow"));a.win.scrollTo(c.getParam("fullscreen_scrollx"),c.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(c.getParam("fullscreen_new_window")){h=a.win.open(d+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{h.resizeTo(screen.availWidth,screen.availHeight)}catch(g){}}else{tinyMCE.oldSettings=tinyMCE.settings;f.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";f.fullscreen_html_overflow=a.getStyle(i,"overflow",1);b=a.getViewPort();f.fullscreen_scrollx=b.x;f.fullscreen_scrolly=b.y;if(tinymce.isOpera&&f.fullscreen_overflow=="visible"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&f.fullscreen_overflow=="scroll"){f.fullscreen_overflow="auto"}if(tinymce.isIE&&(f.fullscreen_html_overflow=="visible"||f.fullscreen_html_overflow=="scroll")){f.fullscreen_html_overflow="auto"}if(f.fullscreen_overflow=="0px"){f.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");i.style.overflow="hidden";b=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){b.h-=1}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+(tinymce.isIE6||(tinymce.isIE&&!a.boxModel)?"absolute":"fixed")+";top:0;left:0;width:"+b.w+"px;height:"+b.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(c.settings,function(j,k){f[k]=j});f.id="mce_fullscreen";f.width=n.clientWidth;f.height=n.clientHeight-15;f.fullscreen_is_enabled=true;f.fullscreen_editor_id=c.id;f.theme_advanced_resizing=false;f.save_onsavecallback=function(){c.setContent(tinyMCE.get(f.id).getContent({format:"raw"}),{format:"raw"});c.execCommand("mceSave")};tinymce.each(c.getParam("fullscreen_settings"),function(l,j){f[j]=l});if(f.theme_advanced_toolbar_location==="external"){f.theme_advanced_toolbar_location="top"}e.fullscreenEditor=new tinymce.Editor("mce_fullscreen",f);e.fullscreenEditor.onInit.add(function(){e.fullscreenEditor.setContent(c.getContent());e.fullscreenEditor.focus()});e.fullscreenEditor.render();e.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");e.fullscreenElement.update();e.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var m=tinymce.DOM.getViewPort(),k=e.fullscreenEditor,j,l;j=k.dom.getSize(k.getContainer().firstChild);l=k.dom.getSize(k.getContainer().getElementsByTagName("iframe")[0]);k.theme.resizeTo(m.w-j.w+l.w,m.h-j.h+l.h)})}});c.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});c.onNodeChange.add(function(h,g){g.setActive("fullscreen",h.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/fullscreen/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/fullscreen/editor_plugin_src.js new file mode 100644 index 000000000..0efd9bbe5 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullscreen/editor_plugin_src.js @@ -0,0 +1,151 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var DOM = tinymce.DOM;
+
+ tinymce.create('tinymce.plugins.FullScreenPlugin', {
+ init : function(ed, url) {
+ var t = this, s = {}, vp;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceFullScreen', function() {
+ var win, de = DOM.doc.documentElement;
+
+ if (ed.getParam('fullscreen_is_enabled')) {
+ if (ed.getParam('fullscreen_new_window'))
+ closeFullscreen(); // Call to close in new window
+ else {
+ DOM.win.setTimeout(function() {
+ tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
+ tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
+ tinyMCE.remove(ed);
+ DOM.remove('mce_fullscreen_container');
+ de.style.overflow = ed.getParam('fullscreen_html_overflow');
+ DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
+ DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
+ tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
+ }, 10);
+ }
+
+ return;
+ }
+
+ if (ed.getParam('fullscreen_new_window')) {
+ win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
+ try {
+ win.resizeTo(screen.availWidth, screen.availHeight);
+ } catch (e) {
+ // Ignore
+ }
+ } else {
+ tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
+ s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
+ s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
+ vp = DOM.getViewPort();
+ s.fullscreen_scrollx = vp.x;
+ s.fullscreen_scrolly = vp.y;
+
+ // Fixes an Opera bug where the scrollbars doesn't reappear
+ if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
+ s.fullscreen_overflow = 'auto';
+
+ // Fixes an IE bug where horizontal scrollbars would appear
+ if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
+ s.fullscreen_overflow = 'auto';
+
+ // Fixes an IE bug where the scrollbars doesn't reappear
+ if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
+ s.fullscreen_html_overflow = 'auto';
+
+ if (s.fullscreen_overflow == '0px')
+ s.fullscreen_overflow = '';
+
+ DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
+ de.style.overflow = 'hidden'; //Fix for IE6/7
+ vp = DOM.getViewPort();
+ DOM.win.scrollTo(0, 0);
+
+ if (tinymce.isIE)
+ vp.h -= 1;
+
+ n = DOM.add(DOM.doc.body, 'div', {id : 'mce_fullscreen_container', style : 'position:' + (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel) ? 'absolute' : 'fixed') + ';top:0;left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
+ DOM.add(n, 'div', {id : 'mce_fullscreen'});
+
+ tinymce.each(ed.settings, function(v, n) {
+ s[n] = v;
+ });
+
+ s.id = 'mce_fullscreen';
+ s.width = n.clientWidth;
+ s.height = n.clientHeight - 15;
+ s.fullscreen_is_enabled = true;
+ s.fullscreen_editor_id = ed.id;
+ s.theme_advanced_resizing = false;
+ s.save_onsavecallback = function() {
+ ed.setContent(tinyMCE.get(s.id).getContent({format : 'raw'}), {format : 'raw'});
+ ed.execCommand('mceSave');
+ };
+
+ tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
+ s[k] = v;
+ });
+
+ if (s.theme_advanced_toolbar_location === 'external')
+ s.theme_advanced_toolbar_location = 'top';
+
+ t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
+ t.fullscreenEditor.onInit.add(function() {
+ t.fullscreenEditor.setContent(ed.getContent());
+ t.fullscreenEditor.focus();
+ });
+
+ t.fullscreenEditor.render();
+
+ t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
+ t.fullscreenElement.update();
+ //document.body.overflow = 'hidden';
+
+ t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
+ var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
+
+ // Get outer/inner size to get a delta size that can be used to calc the new iframe size
+ outerSize = fed.dom.getSize(fed.getContainer().firstChild);
+ innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
+
+ fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
+ });
+ }
+ });
+
+ // Register buttons
+ ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
+
+ ed.onNodeChange.add(function(ed, cm) {
+ cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Fullscreen',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/fullscreen/fullscreen.htm b/plugins/TinyMCE/js/plugins/fullscreen/fullscreen.htm new file mode 100644 index 000000000..4c4f27e48 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullscreen/fullscreen.htm @@ -0,0 +1,109 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title></title>
+ <script type="text/javascript" src="../../tiny_mce.js"></script>
+ <script type="text/javascript">
+ function patchCallback(settings, key) {
+ if (settings[key])
+ settings[key] = "window.opener." + settings[key];
+ }
+
+ var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;
+
+ // Clone array
+ for (var n in paSe)
+ settings[n] = paSe[n];
+
+ // Override options for fullscreen
+ for (var n in paSe.fullscreen_settings)
+ settings[n] = paSe.fullscreen_settings[n];
+
+ // Patch callbacks, make them point to window.opener
+ patchCallback(settings, 'urlconverter_callback');
+ patchCallback(settings, 'insertlink_callback');
+ patchCallback(settings, 'insertimage_callback');
+ patchCallback(settings, 'setupcontent_callback');
+ patchCallback(settings, 'save_callback');
+ patchCallback(settings, 'onchange_callback');
+ patchCallback(settings, 'init_instance_callback');
+ patchCallback(settings, 'file_browser_callback');
+ patchCallback(settings, 'cleanup_callback');
+ patchCallback(settings, 'execcommand_callback');
+ patchCallback(settings, 'oninit');
+
+ // Set options
+ delete settings.id;
+ settings['mode'] = 'exact';
+ settings['elements'] = 'fullscreenarea';
+ settings['add_unload_trigger'] = false;
+ settings['ask'] = false;
+ settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
+ settings['fullscreen_is_enabled'] = true;
+ settings['fullscreen_editor_id'] = oeID;
+ settings['theme_advanced_resizing'] = false;
+ settings['strict_loading_mode'] = true;
+
+ settings.save_onsavecallback = function() {
+ window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
+ window.opener.tinyMCE.get(oeID).execCommand('mceSave');
+ window.close();
+ };
+
+ function unloadHandler(e) {
+ moveContent();
+ }
+
+ function moveContent() {
+ window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());
+ }
+
+ function closeFullscreen() {
+ moveContent();
+ window.close();
+ }
+
+ function doParentSubmit() {
+ moveContent();
+
+ if (window.opener.tinyMCE.selectedInstance.formElement.form)
+ window.opener.tinyMCE.selectedInstance.formElement.form.submit();
+
+ window.close();
+
+ return false;
+ }
+
+ function render() {
+ var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
+
+ e.value = window.opener.tinyMCE.get(oeID).getContent();
+
+ vp = dom.getViewPort();
+ settings.width = vp.w;
+ settings.height = vp.h - 15;
+
+ tinymce.dom.Event.add(window, 'resize', function() {
+ var vp = dom.getViewPort();
+
+ tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
+ });
+
+ tinyMCE.init(settings);
+ }
+
+ // Add onunload
+ tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
+ </script>
+</head>
+<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
+<form onsubmit="doParentSubmit();">
+<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
+</form>
+
+<script type="text/javascript">
+ render();
+</script>
+
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/iespell/editor_plugin.js b/plugins/TinyMCE/js/plugins/iespell/editor_plugin.js new file mode 100644 index 000000000..e9cba106c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/iespell/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/iespell/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/iespell/editor_plugin_src.js new file mode 100644 index 000000000..1b2bb9846 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/iespell/editor_plugin_src.js @@ -0,0 +1,54 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.IESpell', {
+ init : function(ed, url) {
+ var t = this, sp;
+
+ if (!tinymce.isIE)
+ return;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceIESpell', function() {
+ try {
+ sp = new ActiveXObject("ieSpell.ieSpellExtension");
+ sp.CheckDocumentNode(ed.getDoc().documentElement);
+ } catch (e) {
+ if (e.number == -2146827859) {
+ ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {
+ if (s)
+ window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
+ });
+ } else
+ ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);
+ }
+ });
+
+ // Register buttons
+ ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'IESpell (IE Only)',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/editor_plugin.js b/plugins/TinyMCE/js/plugins/inlinepopups/editor_plugin.js new file mode 100644 index 000000000..07ea477b7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/editor_plugin.js @@ -0,0 +1 @@ +(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(r,j){var y=this,i,k="",q=y.editor,g=0,s=0,h,m,n,o,l,v,x;r=r||{};j=j||{};if(!r.inline){return y.parent(r,j)}if(!r.type){y.bookmark=q.selection.getBookmark(1)}i=d.uniqueId();h=d.getViewPort();r.width=parseInt(r.width||320);r.height=parseInt(r.height||240)+(tinymce.isIE?8:0);r.min_width=parseInt(r.min_width||150);r.min_height=parseInt(r.min_height||100);r.max_width=parseInt(r.max_width||2000);r.max_height=parseInt(r.max_height||2000);r.left=r.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(r.width/2)));r.top=r.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(r.height/2)));r.movable=r.resizable=true;j.mce_width=r.width;j.mce_height=r.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=r.auto_focus;y.features=r;y.params=j;y.onOpen.dispatch(y,r,j);if(r.type){k+=" mceModal";if(r.type){k+=" mce"+r.type.substring(0,1).toUpperCase()+r.type.substring(1)}r.resizable=false}if(r.statusbar){k+=" mceStatusbar"}if(r.resizable){k+=" mceResizable"}if(r.minimizable){k+=" mceMinimizable"}if(r.maximizable){k+=" mceMaximizable"}if(r.movable){k+=" mceMovable"}y._addAll(d.doc.body,["div",{id:i,"class":q.settings.inlinepopups_skin||"clearlooks2",style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},r.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!r.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;s+=d.get(i+"_top").clientHeight;s+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:r.top,left:r.left,width:r.width+g,height:r.height+s});x=r.url||r.file;if(x){if(tinymce.relaxedDomain){x+=(x.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}x=tinymce._addVer(x)}if(!r.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:r.width,height:r.height});d.setAttrib(i+"_ifr","src",x)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(r.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",r.content.replace("\n","<br />"))}n=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=y.windows[i];y.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return y._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return y._startDrag(i,t,u.className.substring(13))}}}}}});o=a.add(i,"click",function(f){var p=f.target;y.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":y.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":r.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});v=y.windows[i]={id:i,mousedown_func:n,click_func:o,element:new b(i,{blocker:1,container:q.getContainer()}),iframeElement:new b(i+"_ifr"),features:r,deltaWidth:g,deltaHeight:s};v.iframeElement.on("focus",function(){y.focus(i)});if(y.count==0&&y.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(y.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:y.zIndex-1}});d.show("mceModalBlocker")}else{d.setStyle("mceModalBlocker","z-index",y.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}y.focus(i);y._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}y.count++;return v},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(j,l){var h=this,g,k=d.doc,f=0,i,l;l=h._findId(l||j);if(!h.windows[l]){h.parent(j);return}h.count--;if(h.count==0){d.remove("mceModalBlocker")}if(g=h.windows[l]){h.onClose.dispatch(h);a.remove(k,"mousedown",g.mousedownFunc);a.remove(k,"click",g.clickFunc);a.clear(l);a.clear(l+"_ifr");d.setAttrib(l+"_ifr","src",'javascript:""');g.element.remove();delete h.windows[l];e(h.windows,function(m){if(m.zIndex>f){i=m;f=m.zIndex}});if(i){h.focus(i.id)}}},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/inlinepopups/editor_plugin_src.js new file mode 100644 index 000000000..e991683de --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/editor_plugin_src.js @@ -0,0 +1,635 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
+
+ tinymce.create('tinymce.plugins.InlinePopups', {
+ init : function(ed, url) {
+ // Replace window manager
+ ed.onBeforeRenderUI.add(function() {
+ ed.windowManager = new tinymce.InlineWindowManager(ed);
+ DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'InlinePopups',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
+ InlineWindowManager : function(ed) {
+ var t = this;
+
+ t.parent(ed);
+ t.zIndex = 300000;
+ t.count = 0;
+ t.windows = {};
+ },
+
+ open : function(f, p) {
+ var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u;
+
+ f = f || {};
+ p = p || {};
+
+ // Run native windows
+ if (!f.inline)
+ return t.parent(f, p);
+
+ // Only store selection if the type is a normal window
+ if (!f.type)
+ t.bookmark = ed.selection.getBookmark(1);
+
+ id = DOM.uniqueId();
+ vp = DOM.getViewPort();
+ f.width = parseInt(f.width || 320);
+ f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
+ f.min_width = parseInt(f.min_width || 150);
+ f.min_height = parseInt(f.min_height || 100);
+ f.max_width = parseInt(f.max_width || 2000);
+ f.max_height = parseInt(f.max_height || 2000);
+ f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
+ f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
+ f.movable = f.resizable = true;
+ p.mce_width = f.width;
+ p.mce_height = f.height;
+ p.mce_inline = true;
+ p.mce_window_id = id;
+ p.mce_auto_focus = f.auto_focus;
+
+ // Transpose
+// po = DOM.getPos(ed.getContainer());
+// f.left -= po.x;
+// f.top -= po.y;
+
+ t.features = f;
+ t.params = p;
+ t.onOpen.dispatch(t, f, p);
+
+ if (f.type) {
+ opt += ' mceModal';
+
+ if (f.type)
+ opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
+
+ f.resizable = false;
+ }
+
+ if (f.statusbar)
+ opt += ' mceStatusbar';
+
+ if (f.resizable)
+ opt += ' mceResizable';
+
+ if (f.minimizable)
+ opt += ' mceMinimizable';
+
+ if (f.maximizable)
+ opt += ' mceMaximizable';
+
+ if (f.movable)
+ opt += ' mceMovable';
+
+ // Create DOM objects
+ t._addAll(DOM.doc.body,
+ ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'},
+ ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
+ ['div', {id : id + '_top', 'class' : 'mceTop'},
+ ['div', {'class' : 'mceLeft'}],
+ ['div', {'class' : 'mceCenter'}],
+ ['div', {'class' : 'mceRight'}],
+ ['span', {id : id + '_title'}, f.title || '']
+ ],
+
+ ['div', {id : id + '_middle', 'class' : 'mceMiddle'},
+ ['div', {id : id + '_left', 'class' : 'mceLeft'}],
+ ['span', {id : id + '_content'}],
+ ['div', {id : id + '_right', 'class' : 'mceRight'}]
+ ],
+
+ ['div', {id : id + '_bottom', 'class' : 'mceBottom'},
+ ['div', {'class' : 'mceLeft'}],
+ ['div', {'class' : 'mceCenter'}],
+ ['div', {'class' : 'mceRight'}],
+ ['span', {id : id + '_status'}, 'Content']
+ ],
+
+ ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+ ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+ ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+ ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
+ ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
+ ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
+ ]
+ ]
+ );
+
+ DOM.setStyles(id, {top : -10000, left : -10000});
+
+ // Fix gecko rendering bug, where the editors iframe messed with window contents
+ if (tinymce.isGecko)
+ DOM.setStyle(id, 'overflow', 'auto');
+
+ // Measure borders
+ if (!f.type) {
+ dw += DOM.get(id + '_left').clientWidth;
+ dw += DOM.get(id + '_right').clientWidth;
+ dh += DOM.get(id + '_top').clientHeight;
+ dh += DOM.get(id + '_bottom').clientHeight;
+ }
+
+ // Resize window
+ DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
+
+ u = f.url || f.file;
+ if (u) {
+ if (tinymce.relaxedDomain)
+ u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
+
+ u = tinymce._addVer(u);
+ }
+
+ if (!f.type) {
+ DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
+ DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
+ DOM.setAttrib(id + '_ifr', 'src', u);
+ } else {
+ DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
+
+ if (f.type == 'confirm')
+ DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
+
+ DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
+ DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
+ }
+
+ // Register events
+ mdf = Event.add(id, 'mousedown', function(e) {
+ var n = e.target, w, vp;
+
+ w = t.windows[id];
+ t.focus(id);
+
+ if (n.nodeName == 'A' || n.nodeName == 'a') {
+ if (n.className == 'mceMax') {
+ w.oldPos = w.element.getXY();
+ w.oldSize = w.element.getSize();
+
+ vp = DOM.getViewPort();
+
+ // Reduce viewport size to avoid scrollbars
+ vp.w -= 2;
+ vp.h -= 2;
+
+ w.element.moveTo(vp.x, vp.y);
+ w.element.resizeTo(vp.w, vp.h);
+ DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
+ DOM.addClass(id + '_wrapper', 'mceMaximized');
+ } else if (n.className == 'mceMed') {
+ // Reset to old size
+ w.element.moveTo(w.oldPos.x, w.oldPos.y);
+ w.element.resizeTo(w.oldSize.w, w.oldSize.h);
+ w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
+
+ DOM.removeClass(id + '_wrapper', 'mceMaximized');
+ } else if (n.className == 'mceMove')
+ return t._startDrag(id, e, n.className);
+ else if (DOM.hasClass(n, 'mceResize'))
+ return t._startDrag(id, e, n.className.substring(13));
+ }
+ });
+
+ clf = Event.add(id, 'click', function(e) {
+ var n = e.target;
+
+ t.focus(id);
+
+ if (n.nodeName == 'A' || n.nodeName == 'a') {
+ switch (n.className) {
+ case 'mceClose':
+ t.close(null, id);
+ return Event.cancel(e);
+
+ case 'mceButton mceOk':
+ case 'mceButton mceCancel':
+ f.button_func(n.className == 'mceButton mceOk');
+ return Event.cancel(e);
+ }
+ }
+ });
+
+ // Add window
+ w = t.windows[id] = {
+ id : id,
+ mousedown_func : mdf,
+ click_func : clf,
+ element : new Element(id, {blocker : 1, container : ed.getContainer()}),
+ iframeElement : new Element(id + '_ifr'),
+ features : f,
+ deltaWidth : dw,
+ deltaHeight : dh
+ };
+
+ w.iframeElement.on('focus', function() {
+ t.focus(id);
+ });
+
+ // Setup blocker
+ if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
+ DOM.add(DOM.doc.body, 'div', {
+ id : 'mceModalBlocker',
+ 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
+ style : {zIndex : t.zIndex - 1}
+ });
+
+ DOM.show('mceModalBlocker'); // Reduces flicker in IE
+ } else
+ DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
+
+ if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
+ DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
+
+ t.focus(id);
+ t._fixIELayout(id, 1);
+
+ // Focus ok button
+ if (DOM.get(id + '_ok'))
+ DOM.get(id + '_ok').focus();
+
+ t.count++;
+
+ return w;
+ },
+
+ focus : function(id) {
+ var t = this, w;
+
+ if (w = t.windows[id]) {
+ w.zIndex = this.zIndex++;
+ w.element.setStyle('zIndex', w.zIndex);
+ w.element.update();
+
+ id = id + '_wrapper';
+ DOM.removeClass(t.lastId, 'mceFocus');
+ DOM.addClass(id, 'mceFocus');
+ t.lastId = id;
+ }
+ },
+
+ _addAll : function(te, ne) {
+ var i, n, t = this, dom = tinymce.DOM;
+
+ if (is(ne, 'string'))
+ te.appendChild(dom.doc.createTextNode(ne));
+ else if (ne.length) {
+ te = te.appendChild(dom.create(ne[0], ne[1]));
+
+ for (i=2; i<ne.length; i++)
+ t._addAll(te, ne[i]);
+ }
+ },
+
+ _startDrag : function(id, se, ac) {
+ var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
+
+ // Get positons and sizes
+// cp = DOM.getPos(t.editor.getContainer());
+ cp = {x : 0, y : 0};
+ vp = DOM.getViewPort();
+
+ // Reduce viewport size to avoid scrollbars while dragging
+ vp.w -= 2;
+ vp.h -= 2;
+
+ sex = se.screenX;
+ sey = se.screenY;
+ dx = dy = dw = dh = 0;
+
+ // Handle mouse up
+ mu = Event.add(d, 'mouseup', function(e) {
+ Event.remove(d, 'mouseup', mu);
+ Event.remove(d, 'mousemove', mm);
+
+ if (eb)
+ eb.remove();
+
+ we.moveBy(dx, dy);
+ we.resizeBy(dw, dh);
+ sz = we.getSize();
+ DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
+ t._fixIELayout(id, 1);
+
+ return Event.cancel(e);
+ });
+
+ if (ac != 'Move')
+ startMove();
+
+ function startMove() {
+ if (eb)
+ return;
+
+ t._fixIELayout(id, 0);
+
+ // Setup event blocker
+ DOM.add(d.body, 'div', {
+ id : 'mceEventBlocker',
+ 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
+ style : {zIndex : t.zIndex + 1}
+ });
+
+ if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
+ DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
+
+ eb = new Element('mceEventBlocker');
+ eb.update();
+
+ // Setup placeholder
+ p = we.getXY();
+ sz = we.getSize();
+ sx = cp.x + p.x - vp.x;
+ sy = cp.y + p.y - vp.y;
+ DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
+ ph = new Element('mcePlaceHolder');
+ };
+
+ // Handle mouse move/drag
+ mm = Event.add(d, 'mousemove', function(e) {
+ var x, y, v;
+
+ startMove();
+
+ x = e.screenX - sex;
+ y = e.screenY - sey;
+
+ switch (ac) {
+ case 'ResizeW':
+ dx = x;
+ dw = 0 - x;
+ break;
+
+ case 'ResizeE':
+ dw = x;
+ break;
+
+ case 'ResizeN':
+ case 'ResizeNW':
+ case 'ResizeNE':
+ if (ac == "ResizeNW") {
+ dx = x;
+ dw = 0 - x;
+ } else if (ac == "ResizeNE")
+ dw = x;
+
+ dy = y;
+ dh = 0 - y;
+ break;
+
+ case 'ResizeS':
+ case 'ResizeSW':
+ case 'ResizeSE':
+ if (ac == "ResizeSW") {
+ dx = x;
+ dw = 0 - x;
+ } else if (ac == "ResizeSE")
+ dw = x;
+
+ dh = y;
+ break;
+
+ case 'mceMove':
+ dx = x;
+ dy = y;
+ break;
+ }
+
+ // Boundary check
+ if (dw < (v = w.features.min_width - sz.w)) {
+ if (dx !== 0)
+ dx += dw - v;
+
+ dw = v;
+ }
+
+ if (dh < (v = w.features.min_height - sz.h)) {
+ if (dy !== 0)
+ dy += dh - v;
+
+ dh = v;
+ }
+
+ dw = Math.min(dw, w.features.max_width - sz.w);
+ dh = Math.min(dh, w.features.max_height - sz.h);
+ dx = Math.max(dx, vp.x - (sx + vp.x));
+ dy = Math.max(dy, vp.y - (sy + vp.y));
+ dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
+ dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
+
+ // Move if needed
+ if (dx + dy !== 0) {
+ if (sx + dx < 0)
+ dx = 0;
+
+ if (sy + dy < 0)
+ dy = 0;
+
+ ph.moveTo(sx + dx, sy + dy);
+ }
+
+ // Resize if needed
+ if (dw + dh !== 0)
+ ph.resizeTo(sz.w + dw, sz.h + dh);
+
+ return Event.cancel(e);
+ });
+
+ return Event.cancel(se);
+ },
+
+ resizeBy : function(dw, dh, id) {
+ var w = this.windows[id];
+
+ if (w) {
+ w.element.resizeBy(dw, dh);
+ w.iframeElement.resizeBy(dw, dh);
+ }
+ },
+
+ close : function(win, id) {
+ var t = this, w, d = DOM.doc, ix = 0, fw, id;
+
+ id = t._findId(id || win);
+
+ // Probably not inline
+ if (!t.windows[id]) {
+ t.parent(win);
+ return;
+ }
+
+ t.count--;
+
+ if (t.count == 0)
+ DOM.remove('mceModalBlocker');
+
+ if (w = t.windows[id]) {
+ t.onClose.dispatch(t);
+ Event.remove(d, 'mousedown', w.mousedownFunc);
+ Event.remove(d, 'click', w.clickFunc);
+ Event.clear(id);
+ Event.clear(id + '_ifr');
+
+ DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
+ w.element.remove();
+ delete t.windows[id];
+
+ // Find front most window and focus that
+ each (t.windows, function(w) {
+ if (w.zIndex > ix) {
+ fw = w;
+ ix = w.zIndex;
+ }
+ });
+
+ if (fw)
+ t.focus(fw.id);
+ }
+ },
+
+ setTitle : function(w, ti) {
+ var e;
+
+ w = this._findId(w);
+
+ if (e = DOM.get(w + '_title'))
+ e.innerHTML = DOM.encode(ti);
+ },
+
+ alert : function(txt, cb, s) {
+ var t = this, w;
+
+ w = t.open({
+ title : t,
+ type : 'alert',
+ button_func : function(s) {
+ if (cb)
+ cb.call(s || t, s);
+
+ t.close(null, w.id);
+ },
+ content : DOM.encode(t.editor.getLang(txt, txt)),
+ inline : 1,
+ width : 400,
+ height : 130
+ });
+ },
+
+ confirm : function(txt, cb, s) {
+ var t = this, w;
+
+ w = t.open({
+ title : t,
+ type : 'confirm',
+ button_func : function(s) {
+ if (cb)
+ cb.call(s || t, s);
+
+ t.close(null, w.id);
+ },
+ content : DOM.encode(t.editor.getLang(txt, txt)),
+ inline : 1,
+ width : 400,
+ height : 130
+ });
+ },
+
+ // Internal functions
+
+ _findId : function(w) {
+ var t = this;
+
+ if (typeof(w) == 'string')
+ return w;
+
+ each(t.windows, function(wo) {
+ var ifr = DOM.get(wo.id + '_ifr');
+
+ if (ifr && w == ifr.contentWindow) {
+ w = wo.id;
+ return false;
+ }
+ });
+
+ return w;
+ },
+
+ _fixIELayout : function(id, s) {
+ var w, img;
+
+ if (!tinymce.isIE6)
+ return;
+
+ // Fixes the bug where hover flickers and does odd things in IE6
+ each(['n','s','w','e','nw','ne','sw','se'], function(v) {
+ var e = DOM.get(id + '_resize_' + v);
+
+ DOM.setStyles(e, {
+ width : s ? e.clientWidth : '',
+ height : s ? e.clientHeight : '',
+ cursor : DOM.getStyle(e, 'cursor', 1)
+ });
+
+ DOM.setStyle(id + "_bottom", 'bottom', '-1px');
+
+ e = 0;
+ });
+
+ // Fixes graphics glitch
+ if (w = this.windows[id]) {
+ // Fixes rendering bug after resize
+ w.element.hide();
+ w.element.show();
+
+ // Forced a repaint of the window
+ //DOM.get(id).style.filter = '';
+
+ // IE has a bug where images used in CSS won't get loaded
+ // sometimes when the cache in the browser is disabled
+ // This fix tries to solve it by loading the images using the image object
+ each(DOM.select('div,a', id), function(e, i) {
+ if (e.currentStyle.backgroundImage != 'none') {
+ img = new Image();
+ img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
+ }
+ });
+
+ DOM.get(id).style.filter = '';
+ }
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
+})();
+
diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/alert.gif Binary files differnew file mode 100644 index 000000000..94abd0876 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/alert.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/button.gif Binary files differnew file mode 100644 index 000000000..e671094cb --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/button.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif Binary files differnew file mode 100644 index 000000000..6baf64ad3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif Binary files differnew file mode 100644 index 000000000..497307a85 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/corners.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/corners.gif Binary files differnew file mode 100644 index 000000000..c894b2e83 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/corners.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif Binary files differnew file mode 100644 index 000000000..c2a2ad454 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif Binary files differnew file mode 100644 index 000000000..43a735f22 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/window.css b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/window.css new file mode 100644 index 000000000..5e6fd7d3c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/window.css @@ -0,0 +1,90 @@ +/* Clearlooks 2 */ + +/* Reset */ +.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block} + +/* General */ +.clearlooks2 {position:absolute; direction:ltr} +.clearlooks2 .mceWrapper {position:static} +.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%} +.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)} +.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none} + +/* Top */ +.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px} +.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)} +.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)} +.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0} +.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold} +.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0} +.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px} +.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0} +.clearlooks2 .mceFocus .mceTop span {color:#FFF} + +/* Middle */ +.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0} +.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)} +.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0} +.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF} +.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)} + +/* Bottom */ +.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px} +.clearlooks2 .mceBottom {left:0; bottom:0; width:100%} +.clearlooks2 .mceBottom div {top:0} +.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px} +.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px} +.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0} +.clearlooks2 .mceBottom span {display:none} +.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px} +.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0} +.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px} +.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0} +.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px} + +/* Actions */ +.clearlooks2 a {width:29px; height:16px; top:3px;} +.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0} +.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0} +.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0} +.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0} +.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px} +.clearlooks2 .mceMovable .mceMove {display:block} +.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px} +.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px} +.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px} +.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px} +.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} +.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} +.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px} +.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px} +.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px} + +/* Resize */ +.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px} +.clearlooks2 .mceResizable .mceResize {display:block} +.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none} +.clearlooks2 .mceMinimizable .mceMin {display:block} +.clearlooks2 .mceMaximizable .mceMax {display:block} +.clearlooks2 .mceMaximized .mceMed {display:block} +.clearlooks2 .mceMaximized .mceMax {display:none} +.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize} +.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize} +.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize} +.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;} +.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize} +.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize} +.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize} +.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize} + +/* Alert/Confirm */ +.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0} +.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px} +.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal} +.clearlooks2 a:hover {font-weight:bold;} +.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5} +.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px} +.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)} +.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px} +.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto} +.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/template.htm b/plugins/TinyMCE/js/plugins/inlinepopups/template.htm new file mode 100644 index 000000000..f9ec64219 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/template.htm @@ -0,0 +1,387 @@ +<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>Template for dialogs</title>
+<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />
+</head>
+<body>
+
+<div class="mceEditor">
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px;">
+ <div class="mceWrapper">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Blured</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px;">
+ <div class="mceWrapper mceMovable mceFocus">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Focused</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
+ <div class="mceWrapper mceMovable mceFocus mceStatusbar">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
+ <div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar, Resizable</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
+ <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Resizable, Maximizable</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
+ <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Blurred, Maximizable, Statusbar, Resizable</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
+ <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Maximized, Maximizable, Minimizable</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
+ <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Blured</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>Content</span>
+ <div class="mceRight"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Statusbar text.</span>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceMin" href="#"></a>
+ <a class="mceMax" href="#"></a>
+ <a class="mceMed" href="#"></a>
+ <a class="mceClose" href="#"></a>
+ <a class="mceResize mceResizeN" href="#"></a>
+ <a class="mceResize mceResizeS" href="#"></a>
+ <a class="mceResize mceResizeW" href="#"></a>
+ <a class="mceResize mceResizeE" href="#"></a>
+ <a class="mceResize mceResizeNW" href="#"></a>
+ <a class="mceResize mceResizeNE" href="#"></a>
+ <a class="mceResize mceResizeSW" href="#"></a>
+ <a class="mceResize mceResizeSE" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
+ <div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Alert</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ </span>
+ <div class="mceRight"></div>
+ <div class="mceIcon"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceButton mceOk" href="#">Ok</a>
+ <a class="mceClose" href="#"></a>
+ </div>
+ </div>
+
+ <div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
+ <div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
+ <div class="mceTop">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ <span>Confirm</span>
+ </div>
+
+ <div class="mceMiddle">
+ <div class="mceLeft"></div>
+ <span>
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ This is a very long error message. This is a very long error message.
+ </span>
+ <div class="mceRight"></div>
+ <div class="mceIcon"></div>
+ </div>
+
+ <div class="mceBottom">
+ <div class="mceLeft"></div>
+ <div class="mceCenter"></div>
+ <div class="mceRight"></div>
+ </div>
+
+ <a class="mceMove" href="#"></a>
+ <a class="mceButton mceOk" href="#">Ok</a>
+ <a class="mceButton mceCancel" href="#">Cancel</a>
+ <a class="mceClose" href="#"></a>
+ </div>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/insertdatetime/editor_plugin.js b/plugins/TinyMCE/js/plugins/insertdatetime/editor_plugin.js new file mode 100644 index 000000000..938ce6b17 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/insertdatetime/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length<d){for(var f=0;f<(d-g.length);f++){g="0"+g}}return g}a=a.replace("%D","%m/%d/%y");a=a.replace("%r","%I:%M:%S %p");a=a.replace("%Y",""+e.getFullYear());a=a.replace("%y",""+e.getYear());a=a.replace("%m",b(e.getMonth()+1,2));a=a.replace("%d",b(e.getDate(),2));a=a.replace("%H",""+b(e.getHours(),2));a=a.replace("%M",""+b(e.getMinutes(),2));a=a.replace("%S",""+b(e.getSeconds(),2));a=a.replace("%I",""+((e.getHours()+11)%12+1));a=a.replace("%p",""+(e.getHours()<12?"AM":"PM"));a=a.replace("%B",""+c.getLang("insertdatetime.months_long").split(",")[e.getMonth()]);a=a.replace("%b",""+c.getLang("insertdatetime.months_short").split(",")[e.getMonth()]);a=a.replace("%A",""+c.getLang("insertdatetime.day_long").split(",")[e.getDay()]);a=a.replace("%a",""+c.getLang("insertdatetime.day_short").split(",")[e.getDay()]);a=a.replace("%%","%");return a}});tinymce.PluginManager.add("insertdatetime",tinymce.plugins.InsertDateTime)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/insertdatetime/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/insertdatetime/editor_plugin_src.js new file mode 100644 index 000000000..181c791ec --- /dev/null +++ b/plugins/TinyMCE/js/plugins/insertdatetime/editor_plugin_src.js @@ -0,0 +1,83 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.InsertDateTime', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ ed.addCommand('mceInsertDate', function() {
+ var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));
+
+ ed.execCommand('mceInsertContent', false, str);
+ });
+
+ ed.addCommand('mceInsertTime', function() {
+ var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));
+
+ ed.execCommand('mceInsertContent', false, str);
+ });
+
+ ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});
+ ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Insert date/time',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ _getDateTime : function(d, fmt) {
+ var ed = this.editor;
+
+ function addZeros(value, len) {
+ value = "" + value;
+
+ if (value.length < len) {
+ for (var i=0; i<(len-value.length); i++)
+ value = "0" + value;
+ }
+
+ return value;
+ };
+
+ fmt = fmt.replace("%D", "%m/%d/%y");
+ fmt = fmt.replace("%r", "%I:%M:%S %p");
+ fmt = fmt.replace("%Y", "" + d.getFullYear());
+ fmt = fmt.replace("%y", "" + d.getYear());
+ fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+ fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+ fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+ fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+ fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+ fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+ fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);
+ fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);
+ fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);
+ fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);
+ fmt = fmt.replace("%%", "%");
+
+ return fmt;
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/layer/editor_plugin.js b/plugins/TinyMCE/js/plugins/layer/editor_plugin.js new file mode 100644 index 000000000..f88a6dd28 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/layer/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Layer",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertLayer",c._insertLayer,c);a.addCommand("mceMoveForward",function(){c._move(1)});a.addCommand("mceMoveBackward",function(){c._move(-1)});a.addCommand("mceMakeAbsolute",function(){c._toggleAbsolute()});a.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});a.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});a.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});a.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});a.onInit.add(function(){if(tinymce.isIE){a.getDoc().execCommand("2D-Position",false,true)}});a.onNodeChange.add(c._nodeChange,c);a.onVisualAid.add(c._visualAid,c)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var c,d;c=this._getParentLayer(e);d=b.dom.getParent(e,"DIV,P,IMG");if(!d){a.setDisabled("absolute",1);a.setDisabled("moveforward",1);a.setDisabled("movebackward",1)}else{a.setDisabled("absolute",0);a.setDisabled("moveforward",!c);a.setDisabled("movebackward",!c);a.setActive("absolute",c&&c.style.position.toLowerCase()=="absolute")}},_visualAid:function(a,c,b){var d=a.dom;tinymce.each(d.select("div,p",c),function(f){if(/^(absolute|relative|static)$/i.test(f.style.position)){if(b){d.addClass(f,"mceItemVisualAid")}else{d.removeClass(f,"mceItemVisualAid")}}})},_move:function(h){var b=this.editor,f,g=[],e=this._getParentLayer(b.selection.getNode()),c=-1,j=-1,a;a=[];tinymce.walk(b.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){a.push(d)}},"childNodes");for(f=0;f<a.length;f++){g[f]=a[f].style.zIndex?parseInt(a[f].style.zIndex):0;if(c<0&&a[f]==e){c=f}}if(h<0){for(f=0;f<g.length;f++){if(g[f]<g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{if(g[c]>0){a[c].style.zIndex=g[c]-1}}}else{for(f=0;f<g.length;f++){if(g[f]>g[c]){j=f;break}}if(j>-1){a[c].style.zIndex=g[j];a[j].style.zIndex=g[c]}else{a[c].style.zIndex=g[c]+1}}b.execCommand("mceRepaint")},_getParentLayer:function(a){return this.editor.dom.getParent(a,function(b){return b.nodeType==1&&/^(absolute|relative|static)$/i.test(b.style.position)})},_insertLayer:function(){var a=this.editor,b=a.dom.getPos(a.dom.getParent(a.selection.getNode(),"*"));a.dom.add(a.getBody(),"div",{style:{position:"absolute",left:b.x,top:(b.y>20?b.y:20),width:100,height:100},"class":"mceItemVisualAid"},a.selection.getContent()||a.getLang("layer.content"))},_toggleAbsolute:function(){var a=this.editor,b=this._getParentLayer(a.selection.getNode());if(!b){b=a.dom.getParent(a.selection.getNode(),"DIV,P,IMG")}if(b){if(b.style.position.toLowerCase()=="absolute"){a.dom.setStyles(b,{position:"",left:"",top:"",width:"",height:""});a.dom.removeClass(b,"mceItemVisualAid")}else{if(b.style.left==""){b.style.left=20+"px"}if(b.style.top==""){b.style.top=20+"px"}if(b.style.width==""){b.style.width=b.width?(b.width+"px"):"100px"}if(b.style.height==""){b.style.height=b.height?(b.height+"px"):"100px"}b.style.position="absolute";a.addVisual(a.getBody())}a.execCommand("mceRepaint");a.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/layer/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/layer/editor_plugin_src.js new file mode 100644 index 000000000..d5aa86548 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/layer/editor_plugin_src.js @@ -0,0 +1,212 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Layer', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceInsertLayer', t._insertLayer, t);
+
+ ed.addCommand('mceMoveForward', function() {
+ t._move(1);
+ });
+
+ ed.addCommand('mceMoveBackward', function() {
+ t._move(-1);
+ });
+
+ ed.addCommand('mceMakeAbsolute', function() {
+ t._toggleAbsolute();
+ });
+
+ // Register buttons
+ ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
+ ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
+ ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
+ ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
+
+ ed.onInit.add(function() {
+ if (tinymce.isIE)
+ ed.getDoc().execCommand('2D-Position', false, true);
+ });
+
+ ed.onNodeChange.add(t._nodeChange, t);
+ ed.onVisualAid.add(t._visualAid, t);
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Layer',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ _nodeChange : function(ed, cm, n) {
+ var le, p;
+
+ le = this._getParentLayer(n);
+ p = ed.dom.getParent(n, 'DIV,P,IMG');
+
+ if (!p) {
+ cm.setDisabled('absolute', 1);
+ cm.setDisabled('moveforward', 1);
+ cm.setDisabled('movebackward', 1);
+ } else {
+ cm.setDisabled('absolute', 0);
+ cm.setDisabled('moveforward', !le);
+ cm.setDisabled('movebackward', !le);
+ cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
+ }
+ },
+
+ // Private methods
+
+ _visualAid : function(ed, e, s) {
+ var dom = ed.dom;
+
+ tinymce.each(dom.select('div,p', e), function(e) {
+ if (/^(absolute|relative|static)$/i.test(e.style.position)) {
+ if (s)
+ dom.addClass(e, 'mceItemVisualAid');
+ else
+ dom.removeClass(e, 'mceItemVisualAid');
+ }
+ });
+ },
+
+ _move : function(d) {
+ var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
+
+ nl = [];
+ tinymce.walk(ed.getBody(), function(n) {
+ if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
+ nl.push(n);
+ }, 'childNodes');
+
+ // Find z-indexes
+ for (i=0; i<nl.length; i++) {
+ z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
+
+ if (ci < 0 && nl[i] == le)
+ ci = i;
+ }
+
+ if (d < 0) {
+ // Move back
+
+ // Try find a lower one
+ for (i=0; i<z.length; i++) {
+ if (z[i] < z[ci]) {
+ fi = i;
+ break;
+ }
+ }
+
+ if (fi > -1) {
+ nl[ci].style.zIndex = z[fi];
+ nl[fi].style.zIndex = z[ci];
+ } else {
+ if (z[ci] > 0)
+ nl[ci].style.zIndex = z[ci] - 1;
+ }
+ } else {
+ // Move forward
+
+ // Try find a higher one
+ for (i=0; i<z.length; i++) {
+ if (z[i] > z[ci]) {
+ fi = i;
+ break;
+ }
+ }
+
+ if (fi > -1) {
+ nl[ci].style.zIndex = z[fi];
+ nl[fi].style.zIndex = z[ci];
+ } else
+ nl[ci].style.zIndex = z[ci] + 1;
+ }
+
+ ed.execCommand('mceRepaint');
+ },
+
+ _getParentLayer : function(n) {
+ return this.editor.dom.getParent(n, function(n) {
+ return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
+ });
+ },
+
+ _insertLayer : function() {
+ var ed = this.editor, p = ed.dom.getPos(ed.dom.getParent(ed.selection.getNode(), '*'));
+
+ ed.dom.add(ed.getBody(), 'div', {
+ style : {
+ position : 'absolute',
+ left : p.x,
+ top : (p.y > 20 ? p.y : 20),
+ width : 100,
+ height : 100
+ },
+ 'class' : 'mceItemVisualAid'
+ }, ed.selection.getContent() || ed.getLang('layer.content'));
+ },
+
+ _toggleAbsolute : function() {
+ var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
+
+ if (!le)
+ le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
+
+ if (le) {
+ if (le.style.position.toLowerCase() == "absolute") {
+ ed.dom.setStyles(le, {
+ position : '',
+ left : '',
+ top : '',
+ width : '',
+ height : ''
+ });
+
+ ed.dom.removeClass(le, 'mceItemVisualAid');
+ } else {
+ if (le.style.left == "")
+ le.style.left = 20 + 'px';
+
+ if (le.style.top == "")
+ le.style.top = 20 + 'px';
+
+ if (le.style.width == "")
+ le.style.width = le.width ? (le.width + 'px') : '100px';
+
+ if (le.style.height == "")
+ le.style.height = le.height ? (le.height + 'px') : '100px';
+
+ le.style.position = "absolute";
+ ed.addVisual(ed.getBody());
+ }
+
+ ed.execCommand('mceRepaint');
+ ed.nodeChanged();
+ }
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/legacyoutput/editor_plugin.js b/plugins/TinyMCE/js/plugins/legacyoutput/editor_plugin.js new file mode 100644 index 000000000..29d43c524 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/legacyoutput/editor_plugin.js @@ -0,0 +1 @@ +(function(a){a.onAddEditor.addToTop(function(c,b){b.settings.inline_styles=false});a.create("tinymce.plugins.LegacyOutput",{init:function(b){b.onInit.add(function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",e=a.explode(b.settings.font_size_style_values),d=b.serializer;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignfull:{selector:c,attributes:{align:"full"}},bold:{inline:"b"},italic:{inline:"i"},underline:{inline:"u"},strikethrough:{inline:"strike"},fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(f){return a.inArray(e,f.value)+1}}},forecolor:{inline:"font",styles:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});d._setup();a.each("b,i,u,strike".split(","),function(f){var g=d.rules[f];if(!g){d.addRules(f)}});if(!d.rules.font){d.addRules("font[face|size|color|style]")}a.each(c.split(","),function(f){var h=d.rules[f],g;if(h){a.each(h.attribs,function(j,i){if(i.name=="align"){g=true;return false}});if(!g){h.attribs.push({name:"align"})}}});b.onNodeChange.add(function(g,k){var j,f,h,i;f=g.dom.getParent(g.selection.getNode(),"font");if(f){h=f.face;i=f.size}if(j=k.get("fontselect")){j.select(function(l){return l==h})}if(j=k.get("fontsizeselect")){j.select(function(m){var l=a.inArray(e,m.fontSize);return l+1==i})}})})},getInfo:function(){return{longname:"LegacyOutput",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("legacyoutput",a.plugins.LegacyOutput)})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/legacyoutput/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/legacyoutput/editor_plugin_src.js new file mode 100644 index 000000000..e852da15e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/legacyoutput/editor_plugin_src.js @@ -0,0 +1,136 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ *
+ * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align
+ * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash
+ *
+ * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are
+ * not apart of the newer specifications for HTML and XHTML.
+ */
+
+(function(tinymce) {
+ // Override inline_styles setting to force TinyMCE to produce deprecated contents
+ tinymce.onAddEditor.addToTop(function(tinymce, editor) {
+ editor.settings.inline_styles = false;
+ });
+
+ // Create the legacy ouput plugin
+ tinymce.create('tinymce.plugins.LegacyOutput', {
+ init : function(editor) {
+ editor.onInit.add(function() {
+ var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img',
+ fontSizes = tinymce.explode(editor.settings.font_size_style_values),
+ serializer = editor.serializer;
+
+ // Override some internal formats to produce legacy elements and attributes
+ editor.formatter.register({
+ // Change alignment formats to use the deprecated align attribute
+ alignleft : {selector : alignElements, attributes : {align : 'left'}},
+ aligncenter : {selector : alignElements, attributes : {align : 'center'}},
+ alignright : {selector : alignElements, attributes : {align : 'right'}},
+ alignfull : {selector : alignElements, attributes : {align : 'full'}},
+
+ // Change the basic formatting elements to use deprecated element types
+ bold : {inline : 'b'},
+ italic : {inline : 'i'},
+ underline : {inline : 'u'},
+ strikethrough : {inline : 'strike'},
+
+ // Change font size and font family to use the deprecated font element
+ fontname : {inline : 'font', attributes : {face : '%value'}},
+ fontsize : {
+ inline : 'font',
+ attributes : {
+ size : function(vars) {
+ return tinymce.inArray(fontSizes, vars.value) + 1;
+ }
+ }
+ },
+
+ // Setup font elements for colors as well
+ forecolor : {inline : 'font', styles : {color : '%value'}},
+ hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}}
+ });
+
+ // Force parsing of the serializer rules
+ serializer._setup();
+
+ // Check that deprecated elements are allowed if not add them
+ tinymce.each('b,i,u,strike'.split(','), function(name) {
+ var rule = serializer.rules[name];
+
+ if (!rule)
+ serializer.addRules(name);
+ });
+
+ // Add font element if it's missing
+ if (!serializer.rules["font"])
+ serializer.addRules("font[face|size|color|style]");
+
+ // Add the missing and depreacted align attribute for the serialization engine
+ tinymce.each(alignElements.split(','), function(name) {
+ var rule = serializer.rules[name], found;
+
+ if (rule) {
+ tinymce.each(rule.attribs, function(name, attr) {
+ if (attr.name == 'align') {
+ found = true;
+ return false;
+ }
+ });
+
+ if (!found)
+ rule.attribs.push({name : 'align'});
+ }
+ });
+
+ // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes
+ editor.onNodeChange.add(function(editor, control_manager) {
+ var control, fontElm, fontName, fontSize;
+
+ // Find font element get it's name and size
+ fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');
+ if (fontElm) {
+ fontName = fontElm.face;
+ fontSize = fontElm.size;
+ }
+
+ // Select/unselect the font name in droplist
+ if (control = control_manager.get('fontselect')) {
+ control.select(function(value) {
+ return value == fontName;
+ });
+ }
+
+ // Select/unselect the font size in droplist
+ if (control = control_manager.get('fontsizeselect')) {
+ control.select(function(value) {
+ var index = tinymce.inArray(fontSizes, value.fontSize);
+
+ return index + 1 == fontSize;
+ });
+ }
+ });
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'LegacyOutput',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput);
+})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/linkautodetect/changelog.txt b/plugins/TinyMCE/js/plugins/linkautodetect/changelog.txt new file mode 100644 index 000000000..ecab340ab --- /dev/null +++ b/plugins/TinyMCE/js/plugins/linkautodetect/changelog.txt @@ -0,0 +1,9 @@ +0.1 2009-04-15 - initial version
+0.11 2009-05-10 - Fix for email addresses with two periods in the domain
+ were incorrectly converted to http links. Fix submitted
+ by Ralph Slooten.
+ Fix for tinyMCE.isIE that needed to be tinymce.isIE.
+0.12 2009-06-23 - Fix for URLs that have an HTML anchor identifier in them, such as
+ http://www.palmpre.org/forums/palm-pre/85-copy-and-paste.html#post457
+ Previously, it would create a link to only
+ http://www.palmpre.org/forums/palm-pre/85-copy-and-paste.html
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/linkautodetect/editor_plugin.js b/plugins/TinyMCE/js/plugins/linkautodetect/editor_plugin.js new file mode 100644 index 000000000..7e97a78e4 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/linkautodetect/editor_plugin.js @@ -0,0 +1,7 @@ + +(function(){tinymce.create('tinymce.plugins.LinkAutoDetect',{init:function(ed,url){var t=this;t.RE_email=/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/i;t.RE_url=/^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$/i;ed.onKeyPress.add(t.onKeyPress,t);ed.onKeyUp.add(t.onKeyUp,t);},getInfo:function(){return{longname:'Link Auto Detect',author:'Ubernote/Shane Tomlinson',authorurl:'http://www.ubernote.com',infourl:'http://www.ubernote.com',version:'0.2'};},onKeyPress:function(ed,ev,o){if(tinymce.isIE){return;} +var s=ed.selection.getSel();var textNode=s.anchorNode;var createLink=function(searchfor,hlink,midStart){var leftText=textNode;var rightText=leftText.splitText(s.anchorOffset);var midText=leftText.splitText(midStart);var midEnd=midText.data.search(searchfor);if(midEnd!=-1){rightText=midText.splitText(midEnd);} +var tag=ed.dom.create('a',{href:hlink},midText.data);var a=midText.parentNode.insertBefore(tag,rightText);s.collapse(rightText,0);ed.dom.remove(midText);};if((ev.which==13||ev.which==32)&&textNode.nodeType==3&&textNode.data.length>3&&textNode.data.indexOf('.')>=0&&!ed.dom.getParent(textNode,'a')){var midStart=textNode.data.substring(0,s.anchorOffset).search(/\S{4,}$/);if(midStart!=-1){var matchData=textNode.data.substring(0,s.anchorOffset).replace(/^.*?(\S*)$/,'$1');var matchURL=matchData.match(this.RE_url);var matchEmail=matchData.match(this.RE_email);if(matchEmail){createLink(/[^a-zA-Z0-9\.@_\-]/,'mailto:'+matchEmail[0],midStart);} +else if(matchURL){createLink(/[^a-zA-Z0-9\._\-\/\&\?#=:@]/,(matchURL[1]?'':'http://')+matchURL[0],midStart);}}}},onKeyUp:function(ed,ev,o){if(tinymce.isIE){return;} +var s=ed.selection.getSel();var textNode=s.anchorNode;var a=ed.dom.getParent(textNode,'a');if(!(ev.which&&(ev.which==13||ev.which==32))&&(ev.which||ev.keyCode==8||ev.keyCode==46)&&(textNode.nodeType==3)&&(a)){var matchEmail=s.anchorNode.data.match(this.RE_email);var matchURL=textNode.data.match(this.RE_url);if(matchEmail){ed.dom.setAttrib(a,'href','mailto:'+textNode.data);} +if(matchURL){ed.dom.setAttrib(a,'href',(matchURL[1]?'':'http://')+matchURL[0]);}}}});tinymce.PluginManager.add('linkautodetect',tinymce.plugins.LinkAutoDetect);})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/linkautodetect/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/linkautodetect/editor_plugin_src.js new file mode 100644 index 000000000..d2693927c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/linkautodetect/editor_plugin_src.js @@ -0,0 +1,141 @@ +/**
+ * $Id: editor_plugin_src.js 2009-05-10
+ *
+ * @author Ubernote/Shane Tomlinson
+ * http://www.ubernote.com
+ * set117@gmail.com
+ *
+ * Detect emails and urls as they are typed in Mozilla/Safari/Chrome and Opera
+ * Borrowed from both Typo3 http://typo3.org/ and Xinha http://xinha.gogo.co.nz/
+ * Heavily modified and cleaned up.
+ *
+ * Original license info from Xinha at the bottom.
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.LinkAutoDetect', {
+ init : function(ed, url) {
+ var t = this;
+ t.RE_email = /^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/i;
+ t.RE_url = /^((https?|ftp|news):\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$/i;
+ ed.onKeyPress.add( t.onKeyPress, t );
+ ed.onKeyUp.add( t.onKeyUp, t );
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Link Auto Detect',
+ author : 'Ubernote/Shane Tomlinson',
+ authorurl : 'http://www.ubernote.com',
+ infourl : 'http://www.ubernote.com',
+ version : '0.2'
+ };
+ },
+
+ onKeyPress : function(ed, ev, o) {
+ if(tinymce.isIE) {
+ // IE already does auto-detect, so no worries.
+ return;
+ } // end if
+
+ var s = ed.selection.getSel();
+ var textNode = s.anchorNode;
+
+ var createLink = function (searchfor, hlink, midStart) {
+ var leftText = textNode;
+ var rightText = leftText.splitText(s.anchorOffset);
+ var midText = leftText.splitText(midStart);
+ var midEnd = midText.data.search(searchfor);
+ if (midEnd != -1) {
+ rightText = midText.splitText(midEnd);
+ } // end if
+ var tag = ed.dom.create('a', { href: hlink }, midText.data);
+ var a = midText.parentNode.insertBefore(tag, rightText);
+
+ // We are going to put the cursor into the first position after
+ // the anchor and let the browser take care of inserting the space/enter.
+ s.collapse(rightText, 0);
+ ed.dom.remove(midText);
+ };
+
+ // Space or Enter, see if the text just typed looks like a URL, or email address and link it accordingly
+ if((ev.which == 13 || ev.which == 32)
+ && textNode.nodeType == 3 && textNode.data.length > 3
+ && textNode.data.indexOf('.') >= 0 && !ed.dom.getParent(textNode, 'a')) {
+ var midStart = textNode.data.substring(0,s.anchorOffset).search(/\S{4,}$/);
+ if(midStart != -1) {
+ var matchData = textNode.data.substring(0,s.anchorOffset).replace(/^.*?(\S*)$/, '$1');
+ var matchURL = matchData.match(this.RE_url);
+ var matchEmail = matchData.match(this.RE_email);
+ if(matchEmail) {
+ createLink(/[^a-zA-Z0-9\.@_\-]/, 'mailto:' + matchEmail[0], midStart);
+ }
+ else if(matchURL) {
+ createLink( /[^a-zA-Z0-9\._\-\/\&\?#=:@]/, (matchURL[1] ? '' : 'http://') + matchURL[0], midStart);
+ }
+ } // end if
+ }
+ },
+
+ onKeyUp : function(ed, ev, o) {
+ if(tinymce.isIE) {
+ // IE already does auto-detect, so no worries.
+ return;
+ } // end if
+
+ var s = ed.selection.getSel();
+ var textNode = s.anchorNode;
+ var a = ed.dom.getParent(textNode, 'a');
+
+ if( ! (ev.which && ( ev.which == 13 || ev.which == 32))
+ && (ev.which || ev.keyCode == 8 || ev.keyCode == 46)
+ && (textNode.nodeType == 3) && (a)) {
+ // See if we might be changing a link
+ var matchEmail = s.anchorNode.data.match(this.RE_email);
+ var matchURL = textNode.data.match(this.RE_url);
+ if(matchEmail) {
+ ed.dom.setAttrib(a, 'href', 'mailto:' + textNode.data);
+ } // end if
+ if(matchURL) {
+ ed.dom.setAttrib(a, 'href', (matchURL[1] ? '' : 'http://') + matchURL[0]);
+ } // end if
+ } // end if
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('linkautodetect', tinymce.plugins.LinkAutoDetect);
+})();
+
+/*
+htmlArea License (based on BSD license)
+Copyright (c) 2002-2004, interactivetools.com, inc.
+Copyright (c) 2003-2004 dynarch.com
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1) Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+2) Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3) Neither the name of interactivetools.com, inc. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+*/
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/media/css/content.css b/plugins/TinyMCE/js/plugins/media/css/content.css new file mode 100644 index 000000000..1bf6a7586 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/css/content.css @@ -0,0 +1,6 @@ +.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc;}
+.mceItemShockWave {background-image: url(../img/shockwave.gif);}
+.mceItemFlash {background-image:url(../img/flash.gif);}
+.mceItemQuickTime {background-image:url(../img/quicktime.gif);}
+.mceItemWindowsMedia {background-image:url(../img/windowsmedia.gif);}
+.mceItemRealMedia {background-image:url(../img/realmedia.gif);}
diff --git a/plugins/TinyMCE/js/plugins/media/css/media.css b/plugins/TinyMCE/js/plugins/media/css/media.css new file mode 100644 index 000000000..2d087944d --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/css/media.css @@ -0,0 +1,16 @@ +#id, #name, #hspace, #vspace, #class_name, #align { width: 100px }
+#hspace, #vspace { width: 50px }
+#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }
+#flash_base, #flash_flashvars { width: 240px }
+#width, #height { width: 40px }
+#src, #media_type { width: 250px }
+#class { width: 120px }
+#prev { margin: 0; border: 1px solid black; width: 380px; height: 230px; overflow: auto }
+.panel_wrapper div.current { height: 390px; overflow: auto }
+#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }
+.mceAddSelectValue { background-color: #DDDDDD }
+#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }
+#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }
+#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }
+#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }
+#qt_qtsrc { width: 200px }
diff --git a/plugins/TinyMCE/js/plugins/media/editor_plugin.js b/plugins/TinyMCE/js/plugins/media/editor_plugin.js new file mode 100644 index 000000000..4bbe367e3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.MediaPlugin",{init:function(b,c){var e=this;e.editor=b;e.url=c;function f(g){return/^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(g.className)}b.onPreInit.add(function(){b.serializer.addRules("param[name|value|_mce_value]")});b.addCommand("mceMedia",function(){b.windowManager.open({file:c+"/media.htm",width:430+parseInt(b.getLang("media.delta_width",0)),height:470+parseInt(b.getLang("media.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("media",{title:"media.desc",cmd:"mceMedia"});b.onNodeChange.add(function(h,g,i){g.setActive("media",i.nodeName=="IMG"&&f(i))});b.onInit.add(function(){var g={mceItemFlash:"flash",mceItemShockWave:"shockwave",mceItemWindowsMedia:"windowsmedia",mceItemQuickTime:"quicktime",mceItemRealMedia:"realmedia"};b.selection.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.selection.onBeforeSetContent.add(e._objectsToSpans,e);if(b.settings.content_css!==false){b.dom.loadCSS(c+"/css/content.css")}if(b.theme&&b.theme.onResolveName){b.theme.onResolveName.add(function(h,i){if(i.name=="img"){a(g,function(l,j){if(b.dom.hasClass(i.node,j)){i.name=l;i.title=b.dom.getAttrib(i.node,"title");return false}})}})}if(b&&b.plugins.contextmenu){b.plugins.contextmenu.onContextMenu.add(function(i,h,j){if(j.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(j.className)){h.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});b.onBeforeSetContent.add(e._objectsToSpans,e);b.onSetContent.add(function(){e._spansToImgs(b.getBody())});b.onPreProcess.add(function(g,i){var h=g.dom;if(i.set){e._spansToImgs(i.node);a(h.select("IMG",i.node),function(k){var j;if(f(k)){j=e._parse(k.title);h.setAttrib(k,"width",h.getAttrib(k,"width",j.width||100));h.setAttrib(k,"height",h.getAttrib(k,"height",j.height||100))}})}if(i.get){a(h.select("IMG",i.node),function(m){var l,j,k;if(g.getParam("media_use_script")){if(f(m)){m.className=m.className.replace(/mceItem/g,"mceTemp")}return}switch(m.className){case"mceItemFlash":l="d27cdb6e-ae6d-11cf-96b8-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="application/x-shockwave-flash";break;case"mceItemShockWave":l="166b1bca-3f9c-11cf-8075-444553540000";j="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0";k="application/x-director";break;case"mceItemWindowsMedia":l=g.getParam("media_wmp6_compatible")?"05589fa1-c356-11ce-bf01-00aa0055595a":"6bf52a52-394a-11d3-b153-00c04f79faa6";j="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";k="application/x-mplayer2";break;case"mceItemQuickTime":l="02bf25d5-8c17-4b23-bc80-d3488abddc6b";j="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0";k="video/quicktime";break;case"mceItemRealMedia":l="cfcdaa03-8be4-11cf-b84b-0020afbbccfa";j="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0";k="audio/x-pn-realaudio-plugin";break}if(l){h.replace(e._buildObj({classid:l,codebase:j,type:k},m),m)}})}});b.onPostProcess.add(function(g,h){h.content=h.content.replace(/_mce_value=/g,"value=")});function d(g,h){h=new RegExp(h+'="([^"]+)"',"g").exec(g);return h?b.dom.decode(h[1]):""}b.onPostProcess.add(function(g,h){if(g.getParam("media_use_script")){h.content=h.content.replace(/<img[^>]+>/g,function(j){var i=d(j,"class");if(/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(i)){at=e._parse(d(j,"title"));at.width=d(j,"width");at.height=d(j,"height");j='<script type="text/javascript">write'+i.substring(7)+"({"+e._serialize(at)+"});<\/script>"}return j})}})},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_objectsToSpans:function(b,e){var c=this,d=e.content;d=d.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,function(g,f,i){var h=c._parse(i);return'<img class="mceItem'+f+'" title="'+b.dom.encode(i)+'" src="'+c.url+'/img/trans.gif" width="'+h.width+'" height="'+h.height+'" />'});d=d.replace(/<object([^>]*)>/gi,'<span class="mceItemObject" $1>');d=d.replace(/<embed([^>]*)\/?>/gi,'<span class="mceItemEmbed" $1></span>');d=d.replace(/<embed([^>]*)>/gi,'<span class="mceItemEmbed" $1>');d=d.replace(/<\/(object)([^>]*)>/gi,"</span>");d=d.replace(/<\/embed>/gi,"");d=d.replace(/<param([^>]*)>/gi,function(g,f){return"<span "+f.replace(/value=/gi,"_mce_value=")+' class="mceItemParam"></span>'});d=d.replace(/\/ class=\"mceItemParam\"><\/span>/gi,'class="mceItemParam"></span>');e.content=d},_buildObj:function(g,h){var d,c=this.editor,f=c.dom,e=this._parse(h.title),b;b=c.getParam("media_strict",true)&&g.type=="application/x-shockwave-flash";e.width=g.width=f.getAttrib(h,"width")||100;e.height=g.height=f.getAttrib(h,"height")||100;if(e.src){e.src=c.convertURL(e.src,"src",h)}if(b){d=f.create("span",{id:e.id,_mce_name:"object",type:"application/x-shockwave-flash",data:e.src,style:f.getAttrib(h,"style"),width:g.width,height:g.height})}else{d=f.create("span",{id:e.id,_mce_name:"object",classid:"clsid:"+g.classid,style:f.getAttrib(h,"style"),codebase:g.codebase,width:g.width,height:g.height})}a(e,function(j,i){if(!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(i)){if(g.type=="application/x-mplayer2"&&i=="src"&&!e.url){i="url"}if(j){f.add(d,"span",{_mce_name:"param",name:i,_mce_value:j})}}});if(!b){f.add(d,"span",tinymce.extend({_mce_name:"embed",type:g.type,style:f.getAttrib(h,"style")},e))}return d},_spansToImgs:function(e){var d=this,f=d.editor.dom,b,c;a(f.select("span",e),function(g){if(f.getAttrib(g,"class")=="mceItemObject"){c=f.getAttrib(g,"classid").toLowerCase().replace(/\s+/g,"");switch(c){case"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000":f.replace(d._createImg("mceItemFlash",g),g);break;case"clsid:166b1bca-3f9c-11cf-8075-444553540000":f.replace(d._createImg("mceItemShockWave",g),g);break;case"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6":case"clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95":case"clsid:05589fa1-c356-11ce-bf01-00aa0055595a":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}return}if(f.getAttrib(g,"class")=="mceItemEmbed"){switch(f.getAttrib(g,"type")){case"application/x-shockwave-flash":f.replace(d._createImg("mceItemFlash",g),g);break;case"application/x-director":f.replace(d._createImg("mceItemShockWave",g),g);break;case"application/x-mplayer2":f.replace(d._createImg("mceItemWindowsMedia",g),g);break;case"video/quicktime":f.replace(d._createImg("mceItemQuickTime",g),g);break;case"audio/x-pn-realaudio-plugin":f.replace(d._createImg("mceItemRealMedia",g),g);break;default:f.replace(d._createImg("mceItemFlash",g),g)}}})},_createImg:function(c,h){var b,g=this.editor.dom,f={},e="",d;d=["id","name","width","height","bgcolor","align","flashvars","src","wmode","allowfullscreen","quality","data"];b=g.create("img",{src:this.url+"/img/trans.gif",width:g.getAttrib(h,"width")||100,height:g.getAttrib(h,"height")||100,style:g.getAttrib(h,"style"),"class":c});a(d,function(i){var j=g.getAttrib(h,i);if(j){f[i]=j}});a(g.select("span",h),function(i){if(g.hasClass(i,"mceItemParam")){f[g.getAttrib(i,"name")]=g.getAttrib(i,"_mce_value")}});if(f.movie){f.src=f.movie;delete f.movie}if(!f.src){f.src=f.data;delete f.data}h=g.select(".mceItemEmbed",h)[0];if(h){a(d,function(i){var j=g.getAttrib(h,i);if(j&&!f[i]){f[i]=j}})}delete f.width;delete f.height;b.title=this._serialize(f);return b},_parse:function(b){return tinymce.util.JSON.parse("{"+b+"}")},_serialize:function(b){return tinymce.util.JSON.serialize(b).replace(/[{}]/g,"")}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/media/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/media/editor_plugin_src.js new file mode 100644 index 000000000..fc84e5b6c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/editor_plugin_src.js @@ -0,0 +1,414 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var each = tinymce.each;
+
+ tinymce.create('tinymce.plugins.MediaPlugin', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+ t.url = url;
+
+ function isMediaElm(n) {
+ return /^(mceItemFlash|mceItemShockWave|mceItemWindowsMedia|mceItemQuickTime|mceItemRealMedia)$/.test(n.className);
+ };
+
+ ed.onPreInit.add(function() {
+ // Force in _value parameter this extra parameter is required for older Opera versions
+ ed.serializer.addRules('param[name|value|_mce_value]');
+ });
+
+ // Register commands
+ ed.addCommand('mceMedia', function() {
+ ed.windowManager.open({
+ file : url + '/media.htm',
+ width : 430 + parseInt(ed.getLang('media.delta_width', 0)),
+ height : 470 + parseInt(ed.getLang('media.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ // Register buttons
+ ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});
+
+ ed.onNodeChange.add(function(ed, cm, n) {
+ cm.setActive('media', n.nodeName == 'IMG' && isMediaElm(n));
+ });
+
+ ed.onInit.add(function() {
+ var lo = {
+ mceItemFlash : 'flash',
+ mceItemShockWave : 'shockwave',
+ mceItemWindowsMedia : 'windowsmedia',
+ mceItemQuickTime : 'quicktime',
+ mceItemRealMedia : 'realmedia'
+ };
+
+ ed.selection.onSetContent.add(function() {
+ t._spansToImgs(ed.getBody());
+ });
+
+ ed.selection.onBeforeSetContent.add(t._objectsToSpans, t);
+
+ if (ed.settings.content_css !== false)
+ ed.dom.loadCSS(url + "/css/content.css");
+
+ if (ed.theme && ed.theme.onResolveName) {
+ ed.theme.onResolveName.add(function(th, o) {
+ if (o.name == 'img') {
+ each(lo, function(v, k) {
+ if (ed.dom.hasClass(o.node, k)) {
+ o.name = v;
+ o.title = ed.dom.getAttrib(o.node, 'title');
+ return false;
+ }
+ });
+ }
+ });
+ }
+
+ if (ed && ed.plugins.contextmenu) {
+ ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
+ if (e.nodeName == 'IMG' && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(e.className)) {
+ m.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});
+ }
+ });
+ }
+ });
+
+ ed.onBeforeSetContent.add(t._objectsToSpans, t);
+
+ ed.onSetContent.add(function() {
+ t._spansToImgs(ed.getBody());
+ });
+
+ ed.onPreProcess.add(function(ed, o) {
+ var dom = ed.dom;
+
+ if (o.set) {
+ t._spansToImgs(o.node);
+
+ each(dom.select('IMG', o.node), function(n) {
+ var p;
+
+ if (isMediaElm(n)) {
+ p = t._parse(n.title);
+ dom.setAttrib(n, 'width', dom.getAttrib(n, 'width', p.width || 100));
+ dom.setAttrib(n, 'height', dom.getAttrib(n, 'height', p.height || 100));
+ }
+ });
+ }
+
+ if (o.get) {
+ each(dom.select('IMG', o.node), function(n) {
+ var ci, cb, mt;
+
+ if (ed.getParam('media_use_script')) {
+ if (isMediaElm(n))
+ n.className = n.className.replace(/mceItem/g, 'mceTemp');
+
+ return;
+ }
+
+ switch (n.className) {
+ case 'mceItemFlash':
+ ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000';
+ cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+ mt = 'application/x-shockwave-flash';
+ break;
+
+ case 'mceItemShockWave':
+ ci = '166b1bca-3f9c-11cf-8075-444553540000';
+ cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
+ mt = 'application/x-director';
+ break;
+
+ case 'mceItemWindowsMedia':
+ ci = ed.getParam('media_wmp6_compatible') ? '05589fa1-c356-11ce-bf01-00aa0055595a' : '6bf52a52-394a-11d3-b153-00c04f79faa6';
+ cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+ mt = 'application/x-mplayer2';
+ break;
+
+ case 'mceItemQuickTime':
+ ci = '02bf25d5-8c17-4b23-bc80-d3488abddc6b';
+ cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
+ mt = 'video/quicktime';
+ break;
+
+ case 'mceItemRealMedia':
+ ci = 'cfcdaa03-8be4-11cf-b84b-0020afbbccfa';
+ cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+ mt = 'audio/x-pn-realaudio-plugin';
+ break;
+ }
+
+ if (ci) {
+ dom.replace(t._buildObj({
+ classid : ci,
+ codebase : cb,
+ type : mt
+ }, n), n);
+ }
+ });
+ }
+ });
+
+ ed.onPostProcess.add(function(ed, o) {
+ o.content = o.content.replace(/_mce_value=/g, 'value=');
+ });
+
+ function getAttr(s, n) {
+ n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
+
+ return n ? ed.dom.decode(n[1]) : '';
+ };
+
+ ed.onPostProcess.add(function(ed, o) {
+ if (ed.getParam('media_use_script')) {
+ o.content = o.content.replace(/<img[^>]+>/g, function(im) {
+ var cl = getAttr(im, 'class');
+
+ if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {
+ at = t._parse(getAttr(im, 'title'));
+ at.width = getAttr(im, 'width');
+ at.height = getAttr(im, 'height');
+ im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';
+ }
+
+ return im;
+ });
+ }
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Media',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+ _objectsToSpans : function(ed, o) {
+ var t = this, h = o.content;
+
+ h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) {
+ var o = t._parse(c);
+
+ return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + t.url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />'
+ });
+
+ h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>');
+ h = h.replace(/<embed([^>]*)\/?>/gi, '<span class="mceItemEmbed" $1></span>');
+ h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>');
+ h = h.replace(/<\/(object)([^>]*)>/gi, '</span>');
+ h = h.replace(/<\/embed>/gi, '');
+ h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_mce_value=') + ' class="mceItemParam"></span>'});
+ h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>');
+
+ o.content = h;
+ },
+
+ _buildObj : function(o, n) {
+ var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc;
+
+ stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash';
+
+ p.width = o.width = dom.getAttrib(n, 'width') || 100;
+ p.height = o.height = dom.getAttrib(n, 'height') || 100;
+
+ if (p.src)
+ p.src = ed.convertURL(p.src, 'src', n);
+
+ if (stc) {
+ ob = dom.create('span', {
+ id : p.id,
+ _mce_name : 'object',
+ type : 'application/x-shockwave-flash',
+ data : p.src,
+ style : dom.getAttrib(n, 'style'),
+ width : o.width,
+ height : o.height
+ });
+ } else {
+ ob = dom.create('span', {
+ id : p.id,
+ _mce_name : 'object',
+ classid : "clsid:" + o.classid,
+ style : dom.getAttrib(n, 'style'),
+ codebase : o.codebase,
+ width : o.width,
+ height : o.height
+ });
+ }
+
+ each (p, function(v, k) {
+ if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) {
+ // Use url instead of src in IE for Windows media
+ if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url)
+ k = 'url';
+
+ if (v)
+ dom.add(ob, 'span', {_mce_name : 'param', name : k, '_mce_value' : v});
+ }
+ });
+
+ if (!stc)
+ dom.add(ob, 'span', tinymce.extend({_mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p));
+
+ return ob;
+ },
+
+ _spansToImgs : function(p) {
+ var t = this, dom = t.editor.dom, im, ci;
+
+ each(dom.select('span', p), function(n) {
+ // Convert object into image
+ if (dom.getAttrib(n, 'class') == 'mceItemObject') {
+ ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, '');
+
+ switch (ci) {
+ case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
+ dom.replace(t._createImg('mceItemFlash', n), n);
+ break;
+
+ case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
+ dom.replace(t._createImg('mceItemShockWave', n), n);
+ break;
+
+ case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
+ case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
+ case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
+ dom.replace(t._createImg('mceItemWindowsMedia', n), n);
+ break;
+
+ case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
+ dom.replace(t._createImg('mceItemQuickTime', n), n);
+ break;
+
+ case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
+ dom.replace(t._createImg('mceItemRealMedia', n), n);
+ break;
+
+ default:
+ dom.replace(t._createImg('mceItemFlash', n), n);
+ }
+
+ return;
+ }
+
+ // Convert embed into image
+ if (dom.getAttrib(n, 'class') == 'mceItemEmbed') {
+ switch (dom.getAttrib(n, 'type')) {
+ case 'application/x-shockwave-flash':
+ dom.replace(t._createImg('mceItemFlash', n), n);
+ break;
+
+ case 'application/x-director':
+ dom.replace(t._createImg('mceItemShockWave', n), n);
+ break;
+
+ case 'application/x-mplayer2':
+ dom.replace(t._createImg('mceItemWindowsMedia', n), n);
+ break;
+
+ case 'video/quicktime':
+ dom.replace(t._createImg('mceItemQuickTime', n), n);
+ break;
+
+ case 'audio/x-pn-realaudio-plugin':
+ dom.replace(t._createImg('mceItemRealMedia', n), n);
+ break;
+
+ default:
+ dom.replace(t._createImg('mceItemFlash', n), n);
+ }
+ }
+ });
+ },
+
+ _createImg : function(cl, n) {
+ var im, dom = this.editor.dom, pa = {}, ti = '', args;
+
+ args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality', 'data'];
+
+ // Create image
+ im = dom.create('img', {
+ src : this.url + '/img/trans.gif',
+ width : dom.getAttrib(n, 'width') || 100,
+ height : dom.getAttrib(n, 'height') || 100,
+ style : dom.getAttrib(n, 'style'),
+ 'class' : cl
+ });
+
+ // Setup base parameters
+ each(args, function(na) {
+ var v = dom.getAttrib(n, na);
+
+ if (v)
+ pa[na] = v;
+ });
+
+ // Add optional parameters
+ each(dom.select('span', n), function(n) {
+ if (dom.hasClass(n, 'mceItemParam'))
+ pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value');
+ });
+
+ // Use src not movie
+ if (pa.movie) {
+ pa.src = pa.movie;
+ delete pa.movie;
+ }
+
+ // No src try data
+ if (!pa.src) {
+ pa.src = pa.data;
+ delete pa.data;
+ }
+
+ // Merge with embed args
+ n = dom.select('.mceItemEmbed', n)[0];
+ if (n) {
+ each(args, function(na) {
+ var v = dom.getAttrib(n, na);
+
+ if (v && !pa[na])
+ pa[na] = v;
+ });
+ }
+
+ delete pa.width;
+ delete pa.height;
+
+ im.title = this._serialize(pa);
+
+ return im;
+ },
+
+ _parse : function(s) {
+ return tinymce.util.JSON.parse('{' + s + '}');
+ },
+
+ _serialize : function(o) {
+ return tinymce.util.JSON.serialize(o).replace(/[{}]/g, '');
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/media/img/flash.gif b/plugins/TinyMCE/js/plugins/media/img/flash.gif Binary files differnew file mode 100644 index 000000000..cb192e6ce --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/flash.gif diff --git a/plugins/TinyMCE/js/plugins/media/img/flv_player.swf b/plugins/TinyMCE/js/plugins/media/img/flv_player.swf Binary files differnew file mode 100644 index 000000000..042c2ab96 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/flv_player.swf diff --git a/plugins/TinyMCE/js/plugins/media/img/quicktime.gif b/plugins/TinyMCE/js/plugins/media/img/quicktime.gif Binary files differnew file mode 100644 index 000000000..3b0499145 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/quicktime.gif diff --git a/plugins/TinyMCE/js/plugins/media/img/realmedia.gif b/plugins/TinyMCE/js/plugins/media/img/realmedia.gif Binary files differnew file mode 100644 index 000000000..fdfe0b9ac --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/realmedia.gif diff --git a/plugins/TinyMCE/js/plugins/media/img/shockwave.gif b/plugins/TinyMCE/js/plugins/media/img/shockwave.gif Binary files differnew file mode 100644 index 000000000..5f235dfc7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/shockwave.gif diff --git a/plugins/TinyMCE/js/plugins/media/img/trans.gif b/plugins/TinyMCE/js/plugins/media/img/trans.gif Binary files differnew file mode 100644 index 000000000..388486517 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/trans.gif diff --git a/plugins/TinyMCE/js/plugins/media/img/windowsmedia.gif b/plugins/TinyMCE/js/plugins/media/img/windowsmedia.gif Binary files differnew file mode 100644 index 000000000..ab50f2d88 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/img/windowsmedia.gif diff --git a/plugins/TinyMCE/js/plugins/media/js/embed.js b/plugins/TinyMCE/js/plugins/media/js/embed.js new file mode 100644 index 000000000..f8dc81052 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/js/embed.js @@ -0,0 +1,73 @@ +/**
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
+ */
+
+function writeFlash(p) {
+ writeEmbed(
+ 'D27CDB6E-AE6D-11cf-96B8-444553540000',
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+ 'application/x-shockwave-flash',
+ p
+ );
+}
+
+function writeShockWave(p) {
+ writeEmbed(
+ '166B1BCA-3F9C-11CF-8075-444553540000',
+ 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+ 'application/x-director',
+ p
+ );
+}
+
+function writeQuickTime(p) {
+ writeEmbed(
+ '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+ 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+ 'video/quicktime',
+ p
+ );
+}
+
+function writeRealMedia(p) {
+ writeEmbed(
+ 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+ 'audio/x-pn-realaudio-plugin',
+ p
+ );
+}
+
+function writeWindowsMedia(p) {
+ p.url = p.src;
+ writeEmbed(
+ '6BF52A52-394A-11D3-B153-00C04F79FAA6',
+ 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+ 'application/x-mplayer2',
+ p
+ );
+}
+
+function writeEmbed(cls, cb, mt, p) {
+ var h = '', n;
+
+ h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+ h += '>';
+
+ for (n in p)
+ h += '<param name="' + n + '" value="' + p[n] + '">';
+
+ h += '<embed type="' + mt + '"';
+
+ for (n in p)
+ h += n + '="' + p[n] + '" ';
+
+ h += '></embed></object>';
+
+ document.write(h);
+}
diff --git a/plugins/TinyMCE/js/plugins/media/js/media.js b/plugins/TinyMCE/js/plugins/media/js/media.js new file mode 100644 index 000000000..86cfa9856 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/js/media.js @@ -0,0 +1,630 @@ +tinyMCEPopup.requireLangPack();
+
+var oldWidth, oldHeight, ed, url;
+
+if (url = tinyMCEPopup.getParam("media_external_list_url"))
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+
+function init() {
+ var pl = "", f, val;
+ var type = "flash", fe, i;
+
+ ed = tinyMCEPopup.editor;
+
+ tinyMCEPopup.resizeToInnerSize();
+ f = document.forms[0]
+
+ fe = ed.selection.getNode();
+ if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
+ pl = fe.title;
+
+ switch (ed.dom.getAttrib(fe, 'class')) {
+ case 'mceItemFlash':
+ type = 'flash';
+ break;
+
+ case 'mceItemFlashVideo':
+ type = 'flv';
+ break;
+
+ case 'mceItemShockWave':
+ type = 'shockwave';
+ break;
+
+ case 'mceItemWindowsMedia':
+ type = 'wmp';
+ break;
+
+ case 'mceItemQuickTime':
+ type = 'qt';
+ break;
+
+ case 'mceItemRealMedia':
+ type = 'rmp';
+ break;
+ }
+
+ document.forms[0].insert.value = ed.getLang('update', 'Insert', true);
+ }
+
+ document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
+ document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+ var html = getMediaListHTML('medialist','src','media','media');
+ if (html == "")
+ document.getElementById("linklistrow").style.display = 'none';
+ else
+ document.getElementById("linklistcontainer").innerHTML = html;
+
+ // Resize some elements
+ if (isVisible('filebrowser'))
+ document.getElementById('src').style.width = '230px';
+
+ // Setup form
+ if (pl != "") {
+ pl = tinyMCEPopup.editor.plugins.media._parse(pl);
+
+ switch (type) {
+ case "flash":
+ setBool(pl, 'flash', 'play');
+ setBool(pl, 'flash', 'loop');
+ setBool(pl, 'flash', 'menu');
+ setBool(pl, 'flash', 'swliveconnect');
+ setStr(pl, 'flash', 'quality');
+ setStr(pl, 'flash', 'scale');
+ setStr(pl, 'flash', 'salign');
+ setStr(pl, 'flash', 'wmode');
+ setStr(pl, 'flash', 'base');
+ setStr(pl, 'flash', 'flashvars');
+ break;
+
+ case "qt":
+ setBool(pl, 'qt', 'loop');
+ setBool(pl, 'qt', 'autoplay');
+ setBool(pl, 'qt', 'cache');
+ setBool(pl, 'qt', 'controller');
+ setBool(pl, 'qt', 'correction');
+ setBool(pl, 'qt', 'enablejavascript');
+ setBool(pl, 'qt', 'kioskmode');
+ setBool(pl, 'qt', 'autohref');
+ setBool(pl, 'qt', 'playeveryframe');
+ setBool(pl, 'qt', 'tarsetcache');
+ setStr(pl, 'qt', 'scale');
+ setStr(pl, 'qt', 'starttime');
+ setStr(pl, 'qt', 'endtime');
+ setStr(pl, 'qt', 'tarset');
+ setStr(pl, 'qt', 'qtsrcchokespeed');
+ setStr(pl, 'qt', 'volume');
+ setStr(pl, 'qt', 'qtsrc');
+ break;
+
+ case "shockwave":
+ setBool(pl, 'shockwave', 'sound');
+ setBool(pl, 'shockwave', 'progress');
+ setBool(pl, 'shockwave', 'autostart');
+ setBool(pl, 'shockwave', 'swliveconnect');
+ setStr(pl, 'shockwave', 'swvolume');
+ setStr(pl, 'shockwave', 'swstretchstyle');
+ setStr(pl, 'shockwave', 'swstretchhalign');
+ setStr(pl, 'shockwave', 'swstretchvalign');
+ break;
+
+ case "wmp":
+ setBool(pl, 'wmp', 'autostart');
+ setBool(pl, 'wmp', 'enabled');
+ setBool(pl, 'wmp', 'enablecontextmenu');
+ setBool(pl, 'wmp', 'fullscreen');
+ setBool(pl, 'wmp', 'invokeurls');
+ setBool(pl, 'wmp', 'mute');
+ setBool(pl, 'wmp', 'stretchtofit');
+ setBool(pl, 'wmp', 'windowlessvideo');
+ setStr(pl, 'wmp', 'balance');
+ setStr(pl, 'wmp', 'baseurl');
+ setStr(pl, 'wmp', 'captioningid');
+ setStr(pl, 'wmp', 'currentmarker');
+ setStr(pl, 'wmp', 'currentposition');
+ setStr(pl, 'wmp', 'defaultframe');
+ setStr(pl, 'wmp', 'playcount');
+ setStr(pl, 'wmp', 'rate');
+ setStr(pl, 'wmp', 'uimode');
+ setStr(pl, 'wmp', 'volume');
+ break;
+
+ case "rmp":
+ setBool(pl, 'rmp', 'autostart');
+ setBool(pl, 'rmp', 'loop');
+ setBool(pl, 'rmp', 'autogotourl');
+ setBool(pl, 'rmp', 'center');
+ setBool(pl, 'rmp', 'imagestatus');
+ setBool(pl, 'rmp', 'maintainaspect');
+ setBool(pl, 'rmp', 'nojava');
+ setBool(pl, 'rmp', 'prefetch');
+ setBool(pl, 'rmp', 'shuffle');
+ setStr(pl, 'rmp', 'console');
+ setStr(pl, 'rmp', 'controls');
+ setStr(pl, 'rmp', 'numloop');
+ setStr(pl, 'rmp', 'scriptcallbacks');
+ break;
+ }
+
+ setStr(pl, null, 'src');
+ setStr(pl, null, 'id');
+ setStr(pl, null, 'name');
+ setStr(pl, null, 'vspace');
+ setStr(pl, null, 'hspace');
+ setStr(pl, null, 'bgcolor');
+ setStr(pl, null, 'align');
+ setStr(pl, null, 'width');
+ setStr(pl, null, 'height');
+
+ if ((val = ed.dom.getAttrib(fe, "width")) != "")
+ pl.width = f.width.value = val;
+
+ if ((val = ed.dom.getAttrib(fe, "height")) != "")
+ pl.height = f.height.value = val;
+
+ oldWidth = pl.width ? parseInt(pl.width) : 0;
+ oldHeight = pl.height ? parseInt(pl.height) : 0;
+ } else
+ oldWidth = oldHeight = 0;
+
+ selectByValue(f, 'media_type', type);
+ changedType(type);
+ updateColor('bgcolor_pick', 'bgcolor');
+
+ TinyMCE_EditableSelects.init();
+ generatePreview();
+}
+
+function insertMedia() {
+ var fe, f = document.forms[0], h;
+
+ tinyMCEPopup.restoreSelection();
+
+ if (!AutoValidator.validate(f)) {
+ tinyMCEPopup.alert(ed.getLang('invalid_data'));
+ return false;
+ }
+
+ f.width.value = f.width.value == "" ? 100 : f.width.value;
+ f.height.value = f.height.value == "" ? 100 : f.height.value;
+
+ fe = ed.selection.getNode();
+ if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) {
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {
+ case "flash":
+ fe.className = "mceItemFlash";
+ break;
+
+ case "flv":
+ fe.className = "mceItemFlashVideo";
+ break;
+
+ case "shockwave":
+ fe.className = "mceItemShockWave";
+ break;
+
+ case "qt":
+ fe.className = "mceItemQuickTime";
+ break;
+
+ case "wmp":
+ fe.className = "mceItemWindowsMedia";
+ break;
+
+ case "rmp":
+ fe.className = "mceItemRealMedia";
+ break;
+ }
+
+ if (fe.width != f.width.value || fe.height != f.height.value)
+ ed.execCommand('mceRepaint');
+
+ fe.title = serializeParameters();
+ fe.width = f.width.value;
+ fe.height = f.height.value;
+ fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : '');
+ fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : '');
+ fe.align = f.align.options[f.align.selectedIndex].value;
+ } else {
+ h = '<img src="' + tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;
+
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {
+ case "flash":
+ h += ' class="mceItemFlash"';
+ break;
+
+ case "flv":
+ h += ' class="mceItemFlashVideo"';
+ break;
+
+ case "shockwave":
+ h += ' class="mceItemShockWave"';
+ break;
+
+ case "qt":
+ h += ' class="mceItemQuickTime"';
+ break;
+
+ case "wmp":
+ h += ' class="mceItemWindowsMedia"';
+ break;
+
+ case "rmp":
+ h += ' class="mceItemRealMedia"';
+ break;
+ }
+
+ h += ' title="' + serializeParameters() + '"';
+ h += ' width="' + f.width.value + '"';
+ h += ' height="' + f.height.value + '"';
+ h += ' align="' + f.align.options[f.align.selectedIndex].value + '"';
+
+ h += ' />';
+
+ ed.execCommand('mceInsertContent', false, h);
+ }
+
+ tinyMCEPopup.close();
+}
+
+function updatePreview() {
+ var f = document.forms[0], type;
+
+ f.width.value = f.width.value || '320';
+ f.height.value = f.height.value || '240';
+
+ type = getType(f.src.value);
+ selectByValue(f, 'media_type', type);
+ changedType(type);
+ generatePreview();
+}
+
+function getMediaListHTML() {
+ if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
+ var html = "";
+
+ html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">';
+ html += '<option value="">---</option>';
+
+ for (var i=0; i<tinyMCEMediaList.length; i++)
+ html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
+
+ html += '</select>';
+
+ return html;
+ }
+
+ return "";
+}
+
+function getType(v) {
+ var fo, i, c, el, x, f = document.forms[0];
+
+ fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';');
+
+ // YouTube
+ if (v.match(/watch\?v=(.+)(.*)/)) {
+ f.width.value = '425';
+ f.height.value = '350';
+ f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1];
+ return 'flash';
+ }
+
+ // Google video
+ if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {
+ f.width.value = '425';
+ f.height.value = '326';
+ f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
+ return 'flash';
+ }
+
+ for (i=0; i<fo.length; i++) {
+ c = fo[i].split('=');
+
+ el = c[1].split(',');
+ for (x=0; x<el.length; x++)
+ if (v.indexOf('.' + el[x]) != -1)
+ return c[0];
+ }
+
+ return null;
+}
+
+function switchType(v) {
+ var t = getType(v), d = document, f = d.forms[0];
+
+ if (!t)
+ return;
+
+ selectByValue(d.forms[0], 'media_type', t);
+ changedType(t);
+
+ // Update qtsrc also
+ if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
+ alert(ed.getLang("media_qt_stream_warn"));
+
+ if (f.qt_qtsrc.value == '')
+ f.qt_qtsrc.value = f.src.value;
+ }
+}
+
+function changedType(t) {
+ var d = document;
+
+ d.getElementById('flash_options').style.display = 'none';
+ d.getElementById('flv_options').style.display = 'none';
+ d.getElementById('qt_options').style.display = 'none';
+ d.getElementById('shockwave_options').style.display = 'none';
+ d.getElementById('wmp_options').style.display = 'none';
+ d.getElementById('rmp_options').style.display = 'none';
+
+ if (t)
+ d.getElementById(t + '_options').style.display = 'block';
+}
+
+function serializeParameters() {
+ var d = document, f = d.forms[0], s = '';
+
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {
+ case "flash":
+ s += getBool('flash', 'play', true);
+ s += getBool('flash', 'loop', true);
+ s += getBool('flash', 'menu', true);
+ s += getBool('flash', 'swliveconnect', false);
+ s += getStr('flash', 'quality');
+ s += getStr('flash', 'scale');
+ s += getStr('flash', 'salign');
+ s += getStr('flash', 'wmode');
+ s += getStr('flash', 'base');
+ s += getStr('flash', 'flashvars');
+ break;
+
+ case "qt":
+ s += getBool('qt', 'loop', false);
+ s += getBool('qt', 'autoplay', true);
+ s += getBool('qt', 'cache', false);
+ s += getBool('qt', 'controller', true);
+ s += getBool('qt', 'correction', false, 'none', 'full');
+ s += getBool('qt', 'enablejavascript', false);
+ s += getBool('qt', 'kioskmode', false);
+ s += getBool('qt', 'autohref', false);
+ s += getBool('qt', 'playeveryframe', false);
+ s += getBool('qt', 'targetcache', false);
+ s += getStr('qt', 'scale');
+ s += getStr('qt', 'starttime');
+ s += getStr('qt', 'endtime');
+ s += getStr('qt', 'target');
+ s += getStr('qt', 'qtsrcchokespeed');
+ s += getStr('qt', 'volume');
+ s += getStr('qt', 'qtsrc');
+ break;
+
+ case "shockwave":
+ s += getBool('shockwave', 'sound');
+ s += getBool('shockwave', 'progress');
+ s += getBool('shockwave', 'autostart');
+ s += getBool('shockwave', 'swliveconnect');
+ s += getStr('shockwave', 'swvolume');
+ s += getStr('shockwave', 'swstretchstyle');
+ s += getStr('shockwave', 'swstretchhalign');
+ s += getStr('shockwave', 'swstretchvalign');
+ break;
+
+ case "wmp":
+ s += getBool('wmp', 'autostart', true);
+ s += getBool('wmp', 'enabled', false);
+ s += getBool('wmp', 'enablecontextmenu', true);
+ s += getBool('wmp', 'fullscreen', false);
+ s += getBool('wmp', 'invokeurls', true);
+ s += getBool('wmp', 'mute', false);
+ s += getBool('wmp', 'stretchtofit', false);
+ s += getBool('wmp', 'windowlessvideo', false);
+ s += getStr('wmp', 'balance');
+ s += getStr('wmp', 'baseurl');
+ s += getStr('wmp', 'captioningid');
+ s += getStr('wmp', 'currentmarker');
+ s += getStr('wmp', 'currentposition');
+ s += getStr('wmp', 'defaultframe');
+ s += getStr('wmp', 'playcount');
+ s += getStr('wmp', 'rate');
+ s += getStr('wmp', 'uimode');
+ s += getStr('wmp', 'volume');
+ break;
+
+ case "rmp":
+ s += getBool('rmp', 'autostart', false);
+ s += getBool('rmp', 'loop', false);
+ s += getBool('rmp', 'autogotourl', true);
+ s += getBool('rmp', 'center', false);
+ s += getBool('rmp', 'imagestatus', true);
+ s += getBool('rmp', 'maintainaspect', false);
+ s += getBool('rmp', 'nojava', false);
+ s += getBool('rmp', 'prefetch', false);
+ s += getBool('rmp', 'shuffle', false);
+ s += getStr('rmp', 'console');
+ s += getStr('rmp', 'controls');
+ s += getStr('rmp', 'numloop');
+ s += getStr('rmp', 'scriptcallbacks');
+ break;
+ }
+
+ s += getStr(null, 'id');
+ s += getStr(null, 'name');
+ s += getStr(null, 'src');
+ s += getStr(null, 'align');
+ s += getStr(null, 'bgcolor');
+ s += getInt(null, 'vspace');
+ s += getInt(null, 'hspace');
+ s += getStr(null, 'width');
+ s += getStr(null, 'height');
+
+ s = s.length > 0 ? s.substring(0, s.length - 1) : s;
+
+ return s;
+}
+
+function setBool(pl, p, n) {
+ if (typeof(pl[n]) == "undefined")
+ return;
+
+ document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false';
+}
+
+function setStr(pl, p, n) {
+ var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n];
+
+ if (typeof(pl[n]) == "undefined")
+ return;
+
+ if (e.type == "text")
+ e.value = pl[n];
+ else
+ selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]);
+}
+
+function getBool(p, n, d, tv, fv) {
+ var v = document.forms[0].elements[p + "_" + n].checked;
+
+ tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'";
+ fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'";
+
+ return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',");
+}
+
+function getStr(p, n, d) {
+ var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
+ var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
+
+ if (n == 'src')
+ v = tinyMCEPopup.editor.convertURL(v, 'src', null);
+
+ return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',");
+}
+
+function getInt(p, n, d) {
+ var e = document.forms[0].elements[(p != null ? p + "_" : "") + n];
+ var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value;
+
+ return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ",");
+}
+
+function jsEncode(s) {
+ s = s.replace(new RegExp('\\\\', 'g'), '\\\\');
+ s = s.replace(new RegExp('"', 'g'), '\\"');
+ s = s.replace(new RegExp("'", 'g'), "\\'");
+
+ return s;
+}
+
+function generatePreview(c) {
+ var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh;
+
+ p.innerHTML = '<!-- x --->';
+
+ nw = parseInt(f.width.value);
+ nh = parseInt(f.height.value);
+
+ if (f.width.value != "" && f.height.value != "") {
+ if (f.constrain.checked) {
+ if (c == 'width' && oldWidth != 0) {
+ wp = nw / oldWidth;
+ nh = Math.round(wp * nh);
+ f.height.value = nh;
+ } else if (c == 'height' && oldHeight != 0) {
+ hp = nh / oldHeight;
+ nw = Math.round(hp * nw);
+ f.width.value = nw;
+ }
+ }
+ }
+
+ if (f.width.value != "")
+ oldWidth = nw;
+
+ if (f.height.value != "")
+ oldHeight = nh;
+
+ // After constrain
+ pl = serializeParameters();
+
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {
+ case "flash":
+ cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
+ codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
+ type = 'application/x-shockwave-flash';
+ break;
+
+ case "shockwave":
+ cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
+ codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
+ type = 'application/x-director';
+ break;
+
+ case "qt":
+ cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
+ codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
+ type = 'video/quicktime';
+ break;
+
+ case "wmp":
+ cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
+ codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+ type = 'application/x-mplayer2';
+ break;
+
+ case "rmp":
+ cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
+ codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
+ type = 'audio/x-pn-realaudio-plugin';
+ break;
+ }
+
+ if (pl == '') {
+ p.innerHTML = '';
+ return;
+ }
+
+ pl = tinyMCEPopup.editor.plugins.media._parse(pl);
+
+ if (!pl.src) {
+ p.innerHTML = '';
+ return;
+ }
+
+ pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);
+ pl.width = !pl.width ? 100 : pl.width;
+ pl.height = !pl.height ? 100 : pl.height;
+ pl.id = !pl.id ? 'obj' : pl.id;
+ pl.name = !pl.name ? 'eobj' : pl.name;
+ pl.align = !pl.align ? '' : pl.align;
+
+ // Avoid annoying warning about insecure items
+ if (!tinymce.isIE || document.location.protocol != 'https:') {
+ h += '<object classid="' + cls + '" codebase="' + codebase + '" width="' + pl.width + '" height="' + pl.height + '" id="' + pl.id + '" name="' + pl.name + '" align="' + pl.align + '">';
+
+ for (n in pl) {
+ h += '<param name="' + n + '" value="' + pl[n] + '">';
+
+ // Add extra url parameter if it's an absolute URL
+ if (n == 'src' && pl[n].indexOf('://') != -1)
+ h += '<param name="url" value="' + pl[n] + '" />';
+ }
+ }
+
+ h += '<embed type="' + type + '" ';
+
+ for (n in pl)
+ h += n + '="' + pl[n] + '" ';
+
+ h += '></embed>';
+
+ // Avoid annoying warning about insecure items
+ if (!tinymce.isIE || document.location.protocol != 'https:')
+ h += '</object>';
+
+ p.innerHTML = "<!-- x --->" + h;
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/media/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/media/langs/en_dlg.js new file mode 100644 index 000000000..6d0a996f7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/langs/en_dlg.js @@ -0,0 +1,103 @@ +tinyMCE.addI18n('en.media_dlg',{
+title:"Insert / edit embedded media",
+general:"General",
+advanced:"Advanced",
+file:"File/URL",
+list:"List",
+size:"Dimensions",
+preview:"Preview",
+constrain_proportions:"Constrain proportions",
+type:"Type",
+id:"Id",
+name:"Name",
+class_name:"Class",
+vspace:"V-Space",
+hspace:"H-Space",
+play:"Auto play",
+loop:"Loop",
+menu:"Show menu",
+quality:"Quality",
+scale:"Scale",
+align:"Align",
+salign:"SAlign",
+wmode:"WMode",
+bgcolor:"Background",
+base:"Base",
+flashvars:"Flashvars",
+liveconnect:"SWLiveConnect",
+autohref:"AutoHREF",
+cache:"Cache",
+hidden:"Hidden",
+controller:"Controller",
+kioskmode:"Kiosk mode",
+playeveryframe:"Play every frame",
+targetcache:"Target cache",
+correction:"No correction",
+enablejavascript:"Enable JavaScript",
+starttime:"Start time",
+endtime:"End time",
+href:"Href",
+qtsrcchokespeed:"Choke speed",
+target:"Target",
+volume:"Volume",
+autostart:"Auto start",
+enabled:"Enabled",
+fullscreen:"Fullscreen",
+invokeurls:"Invoke URLs",
+mute:"Mute",
+stretchtofit:"Stretch to fit",
+windowlessvideo:"Windowless video",
+balance:"Balance",
+baseurl:"Base URL",
+captioningid:"Captioning id",
+currentmarker:"Current marker",
+currentposition:"Current position",
+defaultframe:"Default frame",
+playcount:"Play count",
+rate:"Rate",
+uimode:"UI Mode",
+flash_options:"Flash options",
+qt_options:"Quicktime options",
+wmp_options:"Windows media player options",
+rmp_options:"Real media player options",
+shockwave_options:"Shockwave options",
+autogotourl:"Auto goto URL",
+center:"Center",
+imagestatus:"Image status",
+maintainaspect:"Maintain aspect",
+nojava:"No java",
+prefetch:"Prefetch",
+shuffle:"Shuffle",
+console:"Console",
+numloop:"Num loops",
+controls:"Controls",
+scriptcallbacks:"Script callbacks",
+swstretchstyle:"Stretch style",
+swstretchhalign:"Stretch H-Align",
+swstretchvalign:"Stretch V-Align",
+sound:"Sound",
+progress:"Progress",
+qtsrc:"QT Src",
+qt_stream_warn:"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",
+align_top:"Top",
+align_right:"Right",
+align_bottom:"Bottom",
+align_left:"Left",
+align_center:"Center",
+align_top_left:"Top left",
+align_top_right:"Top right",
+align_bottom_left:"Bottom left",
+align_bottom_right:"Bottom right",
+flv_options:"Flash video options",
+flv_scalemode:"Scale mode",
+flv_buffer:"Buffer",
+flv_startimage:"Start image",
+flv_starttime:"Start time",
+flv_defaultvolume:"Default volumne",
+flv_hiddengui:"Hidden GUI",
+flv_autostart:"Auto start",
+flv_loop:"Loop",
+flv_showscalemodes:"Show scale modes",
+flv_smoothvideo:"Smooth video",
+flv_jscallback:"JS Callback"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/media/media.htm b/plugins/TinyMCE/js/plugins/media/media.htm new file mode 100644 index 000000000..73a903f7c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/media/media.htm @@ -0,0 +1,817 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#media_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/media.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/validate.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <link href="css/media.css" rel="stylesheet" type="text/css" />
+</head>
+<body style="display: none">
+ <form onsubmit="insertMedia();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#media_dlg.general}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="media_type">{#media_dlg.type}</label></td>
+ <td>
+ <select id="media_type" name="media_type" onchange="changedType(this.value);generatePreview();">
+ <option value="flash">Flash</option>
+ <!-- <option value="flv">Flash video (FLV)</option> -->
+ <option value="qt">Quicktime</option>
+ <option value="shockwave">Shockwave</option>
+ <option value="wmp">Windows Media</option>
+ <option value="rmp">Real Media</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label for="src">{#media_dlg.file}</label></td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="switchType(this.value);generatePreview();" /></td>
+ <td id="filebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr id="linklistrow">
+ <td><label for="linklist">{#media_dlg.list}</label></td>
+ <td id="linklistcontainer"><select id="linklist"><option value=""></option></select></td>
+ </tr>
+ <tr>
+ <td><label for="width">{#media_dlg.size}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="text" id="width" name="width" value="" class="size" onchange="generatePreview('width');" /> x <input type="text" id="height" name="height" value="" class="size" onchange="generatePreview('height');" /></td>
+ <td> <input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
+ <td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{#media_dlg.preview}</legend>
+ <div id="prev"></div>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{#media_dlg.advanced}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0" width="100%">
+ <tr>
+ <td><label for="id">{#media_dlg.id}</label></td>
+ <td><input type="text" id="id" name="id" onchange="generatePreview();" /></td>
+ <td><label for="name">{#media_dlg.name}</label></td>
+ <td><input type="text" id="name" name="name" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="align">{#media_dlg.align}</label></td>
+ <td>
+ <select id="align" name="align" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="top">{#media_dlg.align_top}</option>
+ <option value="right">{#media_dlg.align_right}</option>
+ <option value="bottom">{#media_dlg.align_bottom}</option>
+ <option value="left">{#media_dlg.align_left}</option>
+ </select>
+ </td>
+
+ <td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();" /></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="vspace">{#media_dlg.vspace}</label></td>
+ <td><input type="text" id="vspace" name="vspace" class="number" onchange="generatePreview();" /></td>
+ <td><label for="hspace">{#media_dlg.hspace}</label></td>
+ <td><input type="text" id="hspace" name="hspace" class="number" onchange="generatePreview();" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="flash_options">
+ <legend>{#media_dlg.flash_options}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="flash_quality">{#media_dlg.quality}</label></td>
+ <td>
+ <select id="flash_quality" name="flash_quality" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="high">high</option>
+ <option value="low">low</option>
+ <option value="autolow">autolow</option>
+ <option value="autohigh">autohigh</option>
+ <option value="best">best</option>
+ </select>
+ </td>
+
+ <td><label for="flash_scale">{#media_dlg.scale}</label></td>
+ <td>
+ <select id="flash_scale" name="flash_scale" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="showall">showall</option>
+ <option value="noborder">noborder</option>
+ <option value="exactfit">exactfit</option>
+ <option value="noscale">noscale</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="flash_wmode">{#media_dlg.wmode}</label></td>
+ <td>
+ <select id="flash_wmode" name="flash_wmode" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="window">window</option>
+ <option value="opaque">opaque</option>
+ <option value="transparent">transparent</option>
+ </select>
+ </td>
+
+ <td><label for="flash_salign">{#media_dlg.salign}</label></td>
+ <td>
+ <select id="flash_salign" name="flash_salign" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="l">{#media_dlg.align_left}</option>
+ <option value="t">{#media_dlg.align_top}</option>
+ <option value="r">{#media_dlg.align_right}</option>
+ <option value="b">{#media_dlg.align_bottom}</option>
+ <option value="tl">{#media_dlg.align_top_left}</option>
+ <option value="tr">{#media_dlg.align_top_right}</option>
+ <option value="bl">{#media_dlg.align_bottom_left}</option>
+ <option value="br">{#media_dlg.align_bottom_right}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flash_play">{#media_dlg.play}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flash_loop">{#media_dlg.loop}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flash_menu">{#media_dlg.menu}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="generatePreview();" /></td>
+ <td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <table>
+ <tr>
+ <td><label for="flash_base">{#media_dlg.base}</label></td>
+ <td><input type="text" id="flash_base" name="flash_base" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>
+ <td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="generatePreview();" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="flv_options">
+ <legend>{#media_dlg.flv_options}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="flv_scalemode">{#media_dlg.flv_scalemode}</label></td>
+ <td>
+ <select id="flv_scalemode" name="flv_scalemode" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="none">none</option>
+ <option value="double">double</option>
+ <option value="full">full</option>
+ </select>
+ </td>
+
+ <td><label for="flv_buffer">{#media_dlg.flv_buffer}</label></td>
+ <td><input type="text" id="flv_buffer" name="flv_buffer" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="flv_startimage">{#media_dlg.flv_startimage}</label></td>
+ <td><input type="text" id="flv_startimage" name="flv_startimage" onchange="generatePreview();" /></td>
+
+ <td><label for="flv_starttime">{#media_dlg.flv_starttime}</label></td>
+ <td><input type="text" id="flv_starttime" name="flv_starttime" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="flv_defaultvolume">{#media_dlg.flv_defaultvolume}</label></td>
+ <td><input type="text" id="flv_defaultvolume" name="flv_defaultvolume" onchange="generatePreview();" /></td>
+
+
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flv_hiddengui" name="flv_hiddengui" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flv_hiddengui">{#media_dlg.flv_hiddengui}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flv_autostart" name="flv_autostart" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flv_autostart">{#media_dlg.flv_autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flv_loop" name="flv_loop" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flv_loop">{#media_dlg.flv_loop}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flv_showscalemodes" name="flv_showscalemodes" onchange="generatePreview();" /></td>
+ <td><label for="flv_showscalemodes">{#media_dlg.flv_showscalemodes}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flv_smoothvideo" name="flash_flv_flv_smoothvideosmoothvideo" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="flv_smoothvideo">{#media_dlg.flv_smoothvideo}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="flv_jscallback" name="flv_jscallback" onchange="generatePreview();" /></td>
+ <td><label for="flv_jscallback">{#media_dlg.flv_jscallback}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="qt_options">
+ <legend>{#media_dlg.qt_options}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_loop" name="qt_loop" onchange="generatePreview();" /></td>
+ <td><label for="qt_loop">{#media_dlg.loop}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_autoplay" name="qt_autoplay" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="qt_autoplay">{#media_dlg.play}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_cache" name="qt_cache" onchange="generatePreview();" /></td>
+ <td><label for="qt_cache">{#media_dlg.cache}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_controller" name="qt_controller" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="qt_controller">{#media_dlg.controller}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_correction" name="qt_correction" onchange="generatePreview();" /></td>
+ <td><label for="qt_correction">{#media_dlg.correction}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_enablejavascript" name="qt_enablejavascript" onchange="generatePreview();" /></td>
+ <td><label for="qt_enablejavascript">{#media_dlg.enablejavascript}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_kioskmode" name="qt_kioskmode" onchange="generatePreview();" /></td>
+ <td><label for="qt_kioskmode">{#media_dlg.kioskmode}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_autohref" name="qt_autohref" onchange="generatePreview();" /></td>
+ <td><label for="qt_autohref">{#media_dlg.autohref}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_playeveryframe" name="qt_playeveryframe" onchange="generatePreview();" /></td>
+ <td><label for="qt_playeveryframe">{#media_dlg.playeveryframe}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="qt_targetcache" name="qt_targetcache" onchange="generatePreview();" /></td>
+ <td><label for="qt_targetcache">{#media_dlg.targetcache}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="qt_scale">{#media_dlg.scale}</label></td>
+ <td><select id="qt_scale" name="qt_scale" class="mceEditableSelect" onchange="generatePreview();">
+ <option value="">{#not_set}</option>
+ <option value="tofit">tofit</option>
+ <option value="aspect">aspect</option>
+ </select>
+ </td>
+
+ <td colspan="2"> </td>
+ </tr>
+
+ <tr>
+ <td><label for="qt_starttime">{#media_dlg.starttime}</label></td>
+ <td><input type="text" id="qt_starttime" name="qt_starttime" onchange="generatePreview();" /></td>
+
+ <td><label for="qt_endtime">{#media_dlg.endtime}</label></td>
+ <td><input type="text" id="qt_endtime" name="qt_endtime" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="qt_target">{#media_dlg.target}</label></td>
+ <td><input type="text" id="qt_target" name="qt_target" onchange="generatePreview();" /></td>
+
+ <td><label for="qt_href">{#media_dlg.href}</label></td>
+ <td><input type="text" id="qt_href" name="qt_href" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="qt_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>
+ <td><input type="text" id="qt_qtsrcchokespeed" name="qt_qtsrcchokespeed" onchange="generatePreview();" /></td>
+
+ <td><label for="qt_volume">{#media_dlg.volume}</label></td>
+ <td><input type="text" id="qt_volume" name="qt_volume" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="qt_qtsrc">{#media_dlg.qtsrc}</label></td>
+ <td colspan="4">
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input type="text" id="qt_qtsrc" name="qt_qtsrc" onchange="generatePreview();" /></td>
+ <td id="qtsrcfilebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="wmp_options">
+ <legend>{#media_dlg.wmp_options}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_autostart" name="wmp_autostart" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="wmp_autostart">{#media_dlg.autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_enabled" name="wmp_enabled" onchange="generatePreview();" /></td>
+ <td><label for="wmp_enabled">{#media_dlg.enabled}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_enablecontextmenu" name="wmp_enablecontextmenu" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="wmp_enablecontextmenu">{#media_dlg.menu}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_fullscreen" name="wmp_fullscreen" onchange="generatePreview();" /></td>
+ <td><label for="wmp_fullscreen">{#media_dlg.fullscreen}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_invokeurls" name="wmp_invokeurls" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="wmp_invokeurls">{#media_dlg.invokeurls}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_mute" name="wmp_mute" onchange="generatePreview();" /></td>
+ <td><label for="wmp_mute">{#media_dlg.mute}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_stretchtofit" name="wmp_stretchtofit" onchange="generatePreview();" /></td>
+ <td><label for="wmp_stretchtofit">{#media_dlg.stretchtofit}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="wmp_windowlessvideo" name="wmp_windowlessvideo" onchange="generatePreview();" /></td>
+ <td><label for="wmp_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="wmp_balance">{#media_dlg.balance}</label></td>
+ <td><input type="text" id="wmp_balance" name="wmp_balance" onchange="generatePreview();" /></td>
+
+ <td><label for="wmp_baseurl">{#media_dlg.baseurl}</label></td>
+ <td><input type="text" id="wmp_baseurl" name="wmp_baseurl" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="wmp_captioningid">{#media_dlg.captioningid}</label></td>
+ <td><input type="text" id="wmp_captioningid" name="wmp_captioningid" onchange="generatePreview();" /></td>
+
+ <td><label for="wmp_currentmarker">{#media_dlg.currentmarker}</label></td>
+ <td><input type="text" id="wmp_currentmarker" name="wmp_currentmarker" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="wmp_currentposition">{#media_dlg.currentposition}</label></td>
+ <td><input type="text" id="wmp_currentposition" name="wmp_currentposition" onchange="generatePreview();" /></td>
+
+ <td><label for="wmp_defaultframe">{#media_dlg.defaultframe}</label></td>
+ <td><input type="text" id="wmp_defaultframe" name="wmp_defaultframe" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="wmp_playcount">{#media_dlg.playcount}</label></td>
+ <td><input type="text" id="wmp_playcount" name="wmp_playcount" onchange="generatePreview();" /></td>
+
+ <td><label for="wmp_rate">{#media_dlg.rate}</label></td>
+ <td><input type="text" id="wmp_rate" name="wmp_rate" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="wmp_uimode">{#media_dlg.uimode}</label></td>
+ <td><input type="text" id="wmp_uimode" name="wmp_uimode" onchange="generatePreview();" /></td>
+
+ <td><label for="wmp_volume">{#media_dlg.volume}</label></td>
+ <td><input type="text" id="wmp_volume" name="wmp_volume" onchange="generatePreview();" /></td>
+ </tr>
+
+ </table>
+ </fieldset>
+
+ <fieldset id="rmp_options">
+ <legend>{#media_dlg.rmp_options}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_autostart" name="rmp_autostart" onchange="generatePreview();" /></td>
+ <td><label for="rmp_autostart">{#media_dlg.autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_loop" name="rmp_loop" onchange="generatePreview();" /></td>
+ <td><label for="rmp_loop">{#media_dlg.loop}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_autogotourl" name="rmp_autogotourl" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="rmp_autogotourl">{#media_dlg.autogotourl}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_center" name="rmp_center" onchange="generatePreview();" /></td>
+ <td><label for="rmp_center">{#media_dlg.center}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_imagestatus" name="rmp_imagestatus" checked="checked" onchange="generatePreview();" /></td>
+ <td><label for="rmp_imagestatus">{#media_dlg.imagestatus}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_maintainaspect" name="rmp_maintainaspect" onchange="generatePreview();" /></td>
+ <td><label for="rmp_maintainaspect">{#media_dlg.maintainaspect}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_nojava" name="rmp_nojava" onchange="generatePreview();" /></td>
+ <td><label for="rmp_nojava">{#media_dlg.nojava}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_prefetch" name="rmp_prefetch" onchange="generatePreview();" /></td>
+ <td><label for="rmp_prefetch">{#media_dlg.prefetch}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="rmp_shuffle" name="rmp_shuffle" onchange="generatePreview();" /></td>
+ <td><label for="rmp_shuffle">{#media_dlg.shuffle}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="rmp_console">{#media_dlg.console}</label></td>
+ <td><input type="text" id="rmp_console" name="rmp_console" onchange="generatePreview();" /></td>
+
+ <td><label for="rmp_controls">{#media_dlg.controls}</label></td>
+ <td><input type="text" id="rmp_controls" name="rmp_controls" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="rmp_numloop">{#media_dlg.numloop}</label></td>
+ <td><input type="text" id="rmp_numloop" name="rmp_numloop" onchange="generatePreview();" /></td>
+
+ <td><label for="rmp_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>
+ <td><input type="text" id="rmp_scriptcallbacks" name="rmp_scriptcallbacks" onchange="generatePreview();" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="shockwave_options">
+ <legend>{#media_dlg.shockwave_options}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>
+ <td>
+ <select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="generatePreview();">
+ <option value="none">{#not_set}</option>
+ <option value="meet">Meet</option>
+ <option value="fill">Fill</option>
+ <option value="stage">Stage</option>
+ </select>
+ </td>
+
+ <td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>
+ <td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>
+ <td>
+ <select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="generatePreview();">
+ <option value="none">{#not_set}</option>
+ <option value="left">{#media_dlg.align_left}</option>
+ <option value="center">{#media_dlg.align_center}</option>
+ <option value="right">{#media_dlg.align_right}</option>
+ </select>
+ </td>
+
+ <td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>
+ <td>
+ <select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="generatePreview();">
+ <option value="none">{#not_set}</option>
+ <option value="meet">Meet</option>
+ <option value="fill">Fill</option>
+ <option value="stage">Stage</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="generatePreview();" checked="checked" /></td>
+ <td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="generatePreview();" checked="checked" /></td>
+ <td><label for="shockwave_sound">{#media_dlg.sound}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="generatePreview();" /></td>
+ <td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="generatePreview();" checked="checked" /></td>
+ <td><label for="shockwave_progress">{#media_dlg.progress}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/nonbreaking/editor_plugin.js b/plugins/TinyMCE/js/plugins/nonbreaking/editor_plugin.js new file mode 100644 index 000000000..eb40a6a39 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/nonbreaking/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'<span _mce_bogus="1" class="mceItemHidden mceItemNbsp"> </span>':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/nonbreaking/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/nonbreaking/editor_plugin_src.js new file mode 100644 index 000000000..ca83ee26e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/nonbreaking/editor_plugin_src.js @@ -0,0 +1,53 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Nonbreaking', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceNonBreaking', function() {
+ ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span _mce_bogus="1" class="mceItemHidden mceItemNbsp"> </span>' : ' ');
+ });
+
+ // Register buttons
+ ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});
+
+ if (ed.getParam('nonbreaking_force_tab')) {
+ ed.onKeyDown.add(function(ed, e) {
+ if (tinymce.isIE && e.keyCode == 9) {
+ ed.execCommand('mceNonBreaking');
+ ed.execCommand('mceNonBreaking');
+ ed.execCommand('mceNonBreaking');
+ tinymce.dom.Event.cancel(e);
+ }
+ });
+ }
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Nonbreaking space',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+
+ // Private methods
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/noneditable/editor_plugin.js b/plugins/TinyMCE/js/plugins/noneditable/editor_plugin.js new file mode 100644 index 000000000..9945cd858 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/noneditable/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._setDisabled(0)}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/noneditable/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/noneditable/editor_plugin_src.js new file mode 100644 index 000000000..656c971b8 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/noneditable/editor_plugin_src.js @@ -0,0 +1,90 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var Event = tinymce.dom.Event;
+
+ tinymce.create('tinymce.plugins.NonEditablePlugin', {
+ init : function(ed, url) {
+ var t = this, editClass, nonEditClass;
+
+ t.editor = ed;
+ editClass = ed.getParam("noneditable_editable_class", "mceEditable");
+ nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable");
+
+ ed.onNodeChange.addToTop(function(ed, cm, n) {
+ var sc, ec;
+
+ // Block if start or end is inside a non editable element
+ sc = ed.dom.getParent(ed.selection.getStart(), function(n) {
+ return ed.dom.hasClass(n, nonEditClass);
+ });
+
+ ec = ed.dom.getParent(ed.selection.getEnd(), function(n) {
+ return ed.dom.hasClass(n, nonEditClass);
+ });
+
+ // Block or unblock
+ if (sc || ec) {
+ t._setDisabled(1);
+ return false;
+ } else
+ t._setDisabled(0);
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Non editable elements',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ _block : function(ed, e) {
+ var k = e.keyCode;
+
+ // Don't block arrow keys, pg up/down, and F1-F12
+ if ((k > 32 && k < 41) || (k > 111 && k < 124))
+ return;
+
+ return Event.cancel(e);
+ },
+
+ _setDisabled : function(s) {
+ var t = this, ed = t.editor;
+
+ tinymce.each(ed.controlManager.controls, function(c) {
+ c.setDisabled(s);
+ });
+
+ if (s !== t.disabled) {
+ if (s) {
+ ed.onKeyDown.addToTop(t._block);
+ ed.onKeyPress.addToTop(t._block);
+ ed.onKeyUp.addToTop(t._block);
+ ed.onPaste.addToTop(t._block);
+ } else {
+ ed.onKeyDown.remove(t._block);
+ ed.onKeyPress.remove(t._block);
+ ed.onKeyUp.remove(t._block);
+ ed.onPaste.remove(t._block);
+ }
+
+ t.disabled = s;
+ }
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/pagebreak/css/content.css b/plugins/TinyMCE/js/plugins/pagebreak/css/content.css new file mode 100644 index 000000000..c949d58cc --- /dev/null +++ b/plugins/TinyMCE/js/plugins/pagebreak/css/content.css @@ -0,0 +1 @@ +.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;} diff --git a/plugins/TinyMCE/js/plugins/pagebreak/editor_plugin.js b/plugins/TinyMCE/js/plugins/pagebreak/editor_plugin.js new file mode 100644 index 000000000..a212f6963 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/pagebreak/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='<img src="'+d+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',a="mcePageBreak",c=b.getParam("pagebreak_separator","<!-- pagebreak -->"),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/pagebreak/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/pagebreak/editor_plugin_src.js new file mode 100644 index 000000000..4e1eb0a7a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/pagebreak/editor_plugin_src.js @@ -0,0 +1,77 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.PageBreakPlugin', {
+ init : function(ed, url) {
+ var pb = '<img src="' + url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;
+
+ pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');
+
+ // Register commands
+ ed.addCommand('mcePageBreak', function() {
+ ed.execCommand('mceInsertContent', 0, pb);
+ });
+
+ // Register buttons
+ ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});
+
+ ed.onInit.add(function() {
+ if (ed.settings.content_css !== false)
+ ed.dom.loadCSS(url + "/css/content.css");
+
+ if (ed.theme.onResolveName) {
+ ed.theme.onResolveName.add(function(th, o) {
+ if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))
+ o.name = 'pagebreak';
+ });
+ }
+ });
+
+ ed.onClick.add(function(ed, e) {
+ e = e.target;
+
+ if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))
+ ed.selection.select(e);
+ });
+
+ ed.onNodeChange.add(function(ed, cm, n) {
+ cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));
+ });
+
+ ed.onBeforeSetContent.add(function(ed, o) {
+ o.content = o.content.replace(pbRE, pb);
+ });
+
+ ed.onPostProcess.add(function(ed, o) {
+ if (o.get)
+ o.content = o.content.replace(/<img[^>]+>/g, function(im) {
+ if (im.indexOf('class="mcePageBreak') !== -1)
+ im = sep;
+
+ return im;
+ });
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'PageBreak',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/pagebreak/img/pagebreak.gif b/plugins/TinyMCE/js/plugins/pagebreak/img/pagebreak.gif Binary files differnew file mode 100644 index 000000000..acdf4085f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/pagebreak/img/pagebreak.gif diff --git a/plugins/TinyMCE/js/plugins/pagebreak/img/trans.gif b/plugins/TinyMCE/js/plugins/pagebreak/img/trans.gif Binary files differnew file mode 100644 index 000000000..388486517 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/pagebreak/img/trans.gif diff --git a/plugins/TinyMCE/js/plugins/paste/editor_plugin.js b/plugins/TinyMCE/js/plugins/paste/editor_plugin.js new file mode 100644 index 000000000..3785ab2d0 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/editor_plugin.js @@ -0,0 +1 @@ +(function(){var c=tinymce.each,d=null,a={paste_auto_cleanup_on_paste:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_notifyalways:false,paste_text_linebreaktype:"p",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(e,f){return e.getParam(f,a[f])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(e,f){var g=this;g.editor=e;g.url=f;g.onPreProcess=new tinymce.util.Dispatcher(g);g.onPostProcess=new tinymce.util.Dispatcher(g);g.onPreProcess.add(g._preProcess);g.onPostProcess.add(g._postProcess);g.onPreProcess.add(function(j,k){e.execCallback("paste_preprocess",j,k)});g.onPostProcess.add(function(j,k){e.execCallback("paste_postprocess",j,k)});e.pasteAsPlainText=false;function i(l,j){var k=e.dom;g.onPreProcess.dispatch(g,l);l.node=k.create("div",0,l.content);g.onPostProcess.dispatch(g,l);l.content=e.serializer.serialize(l.node,{getInner:1});if((!j)&&(e.pasteAsPlainText)){g._insertPlainText(e,k,l.content);if(!b(e,"paste_text_sticky")){e.pasteAsPlainText=false;e.controlManager.setActive("pastetext",false)}}else{if(/<(p|h[1-6]|ul|ol)/.test(l.content)){g._insertBlockContent(e,k,l.content)}else{g._insert(l.content)}}}e.addCommand("mceInsertClipboardContent",function(j,k){i(k,true)});if(!b(e,"paste_text_use_dialog")){e.addCommand("mcePasteText",function(k,j){var l=tinymce.util.Cookie;e.pasteAsPlainText=!e.pasteAsPlainText;e.controlManager.setActive("pastetext",e.pasteAsPlainText);if((e.pasteAsPlainText)&&(!l.get("tinymcePasteText"))){if(b(e,"paste_text_sticky")){e.windowManager.alert(e.translate("paste.plaintext_mode_sticky"))}else{e.windowManager.alert(e.translate("paste.plaintext_mode_sticky"))}if(!b(e,"paste_text_notifyalways")){l.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}e.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});e.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function h(s){var m,q,k,l=e.selection,p=e.dom,r=e.getBody(),j;if(e.pasteAsPlainText&&(s.clipboardData||p.doc.dataTransfer)){s.preventDefault();i({content:(s.clipboardData||p.doc.dataTransfer).getData("Text")},true);return}if(p.get("_mcePaste")){return}m=p.add(r,"div",{id:"_mcePaste","class":"mcePaste"},'\uFEFF<br _mce_bogus="1">');if(r!=e.getDoc().body){j=p.getPos(e.selection.getStart(),r).y}else{j=r.scrollTop}p.setStyles(m,{position:"absolute",left:-10000,top:j,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){k=p.doc.body.createTextRange();k.moveToElementText(m);k.execCommand("Paste");p.remove(m);if(m.innerHTML==="\uFEFF"){e.execCommand("mcePasteWord");s.preventDefault();return}i({content:m.innerHTML});return tinymce.dom.Event.cancel(s)}else{function o(n){n.preventDefault()}p.bind(e.getDoc(),"mousedown",o);p.bind(e.getDoc(),"keydown",o);q=e.selection.getRng();m=m.firstChild;k=e.getDoc().createRange();k.setStart(m,0);k.setEnd(m,1);l.setRng(k);window.setTimeout(function(){var t="",n=p.select("div.mcePaste");c(n,function(v){var u=v.firstChild;if(u&&u.nodeName=="DIV"&&u.style.marginTop&&u.style.backgroundColor){p.remove(u,1)}c(p.select("div.mcePaste",v),function(w){p.remove(w,1)});c(p.select("span.Apple-style-span",v),function(w){p.remove(w,1)});c(p.select("br[_mce_bogus]",v),function(w){p.remove(w)});t+=v.innerHTML});c(n,function(u){p.remove(u)});if(q){l.setRng(q)}i({content:t});p.unbind(e.getDoc(),"mousedown",o);p.unbind(e.getDoc(),"keydown",o)},0)}}if(b(e,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){e.onKeyDown.add(function(j,k){if(((tinymce.isMac?k.metaKey:k.ctrlKey)&&k.keyCode==86)||(k.shiftKey&&k.keyCode==45)){h(k)}})}else{e.onPaste.addToTop(function(j,k){return h(k)})}}if(b(e,"paste_block_drop")){e.onInit.add(function(){e.dom.bind(e.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(j){j.preventDefault();j.stopPropagation();return false})})}g._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(i,f){var l=this.editor,k=f.content,q=tinymce.grep,p=tinymce.explode,g=tinymce.trim,m,j;function e(h){c(h,function(o){if(o.constructor==RegExp){k=k.replace(o,"")}else{k=k.replace(o[0],o[1])}})}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(k)||f.wordContent){f.wordContent=true;e([/^\s*( )+/gi,/( |<br[^>]*>)+\s*$/gi]);if(b(l,"paste_convert_headers_to_strong")){k=k.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(l,"paste_convert_middot_lists")){e([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"]])}e([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\u00a0"]]);do{m=k.length;k=k.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(m!=k.length);if(b(l,"paste_retain_style_properties").replace(/^none$/i,"").length==0){k=k.replace(/<\/?span[^>]*>/gi,"")}else{e([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(u,h,t){var v=[],o=0,r=p(g(t).replace(/"/gi,"'"),";");c(r,function(s){var w,y,z=p(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":v[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":v[o++]="text-align:"+y;return;case"vert-align":v[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":v[o++]="color:"+y;return;case"mso-background":case"mso-highlight":v[o++]="background:"+y;return;case"mso-default-height":v[o++]="min-height:"+x(y);return;case"mso-default-width":v[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":v[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){v[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){v[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}v[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+v.join(";")+'"'}else{return h}}]])}}if(b(l,"paste_convert_headers_to_strong")){e([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}j=b(l,"paste_strip_class_attributes");if(j!=="none"){function n(r,o){if(j==="all"){return""}var h=q(p(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(s){return(/^(?!mso)/i.test(s))});return h.length?' class="'+h.join(" ")+'"':""}k=k.replace(/ class="([^"]+)"/gi,n);k=k.replace(/ class=(\w+)/gi,n)}if(b(l,"paste_remove_spans")){k=k.replace(/<\/?span[^>]*>/gi,"")}f.content=k},_postProcess:function(h,j){var g=this,f=g.editor,i=f.dom,e;if(j.wordContent){c(i.select("a",j.node),function(k){if(!k.href||k.href.indexOf("#_Toc")!=-1){i.remove(k,1)}});if(b(f,"paste_convert_middot_lists")){g._convertLists(h,j)}e=b(f,"paste_retain_style_properties");if((tinymce.is(e,"string"))&&(e!=="all")&&(e!=="*")){e=tinymce.explode(e.replace(/^none$/i,""));c(i.select("*",j.node),function(n){var o={},l=0,m,p,k;if(e){for(m=0;m<e.length;m++){p=e[m];k=i.getStyle(n,p);if(k){o[p]=k;l++}}}i.setAttrib(n,"style","");if(e&&l>0){i.setStyles(n,o)}else{if(n.nodeName=="SPAN"&&!n.className){i.remove(n,true)}}})}}if(b(f,"paste_remove_styles")||(b(f,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(i.select("*[style]",j.node),function(k){k.removeAttribute("style");k.removeAttribute("_mce_style")})}else{if(tinymce.isWebKit){c(i.select("*",j.node),function(k){k.removeAttribute("_mce_style")})}}},_convertLists:function(h,f){var j=h.editor.dom,i,m,e=-1,g,n=[],l,k;c(j.select("p",f.node),function(u){var r,v="",t,s,o,q;for(r=u.firstChild;r&&r.nodeType==3;r=r.nextSibling){v+=r.nodeValue}v=u.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(v)){t="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(v)){t="ol"}if(t){g=parseFloat(u.style.marginLeft||0);if(g>e){n.push(g)}if(!i||t!=l){i=j.create(t);j.insertAfter(i,u)}else{if(g>e){i=m.appendChild(j.create(t))}else{if(g<e){o=tinymce.inArray(n,g);q=j.getParents(i.parentNode,t);i=q[q.length-1-o]||i}}}c(j.select("span",u),function(w){var p=w.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(t=="ul"&&/^[\u2022\u00b7\u00a7\u00d8o]/.test(p)){j.remove(w)}else{if(/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){j.remove(w)}}});s=u.innerHTML;if(t=="ul"){s=u.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/,"")}else{s=u.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.( |\u00a0)+\s*/,"")}m=i.appendChild(j.create("li",0,s));j.remove(u);e=g;l=t}else{i=e=0}});k=f.node.innerHTML;if(k.indexOf("__MCE_ITEM__")!=-1){f.node.innerHTML=k.replace(/__MCE_ITEM__/g,"")}},_insertBlockContent:function(l,h,m){var f,j,g=l.selection,q,n,e,o,i,k="mce_marker";function p(t){var s;if(tinymce.isIE){s=l.getDoc().body.createTextRange();s.moveToElementText(t);s.collapse(false);s.select()}else{g.select(t,1);g.collapse(false)}}this._insert('<span id="'+k+'"></span>',1);j=h.get(k);f=h.getParent(j,"p,h1,h2,h3,h4,h5,h6,ul,ol,th,td");if(f&&!/TD|TH/.test(f.nodeName)){j=h.split(f,j);c(h.create("div",0,m).childNodes,function(r){q=j.parentNode.insertBefore(r.cloneNode(true),j)});p(q)}else{h.setOuterHTML(j,m);g.select(l.getBody(),1);g.collapse(0)}while(n=h.get(k)){h.remove(n)}n=g.getStart();e=h.getViewPort(l.getWin());o=l.dom.getPos(n).y;i=n.clientHeight;if(o<e.y||o+i>e.y+e.h){l.getDoc().body.scrollTop=o<e.y?o:o-e.h+25}},_insert:function(g,e){var f=this.editor,i=f.selection.getRng();if(!f.selection.isCollapsed()&&i.startContainer!=i.endContainer){f.getDoc().execCommand("Delete",false,null)}f.execCommand(tinymce.isGecko?"insertHTML":"mceInsertContent",false,g,{skip_undo:e})},_insertPlainText:function(j,x,v){var t,u,l,k,r,e,p,f,n=j.getWin(),z=j.getDoc(),s=j.selection,m=tinymce.is,y=tinymce.inArray,g=b(j,"paste_text_linebreaktype"),o=b(j,"paste_text_replacements");function q(h){c(h,function(i){if(i.constructor==RegExp){v=v.replace(i,"")}else{v=v.replace(i[0],i[1])}})}if((typeof(v)==="string")&&(v.length>0)){if(!d){d=("34,quot,38,amp,39,apos,60,lt,62,gt,"+j.serializer.settings.entities).split(",")}if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(v)){q([/[\n\r]+/g])}else{q([/\r+/g])}q([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/ /gi," "],[/&(#\d+|[a-z0-9]{1,10});/gi,function(i,h){if(h.charAt(0)==="#"){return String.fromCharCode(h.slice(1))}else{return((i=y(d,h))>0)?String.fromCharCode(d[i-1]):" "}}],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"],/^\s+|\s+$/g]);v=x.encode(v);if(!s.isCollapsed()){z.execCommand("Delete",false,null)}if(m(o,"array")||(m(o,"array"))){q(o)}else{if(m(o,"string")){q(new RegExp(o,"gi"))}}if(g=="none"){q([[/\n+/g," "]])}else{if(g=="br"){q([[/\n/g,"<br />"]])}else{q([/^\s+|\s+$/g,[/\n\n/g,"</p><p>"],[/\n/g,"<br />"]])}}if((l=v.indexOf("</p><p>"))!=-1){k=v.lastIndexOf("</p><p>");r=s.getNode();e=[];do{if(r.nodeType==1){if(r.nodeName=="TD"||r.nodeName=="BODY"){break}e[e.length]=r}}while(r=r.parentNode);if(e.length>0){p=v.substring(0,l);f="";for(t=0,u=e.length;t<u;t++){p+="</"+e[t].nodeName.toLowerCase()+">";f+="<"+e[e.length-t-1].nodeName.toLowerCase()+">"}if(l==k){v=p+f+v.substring(l+7)}else{v=p+v.substring(l+4,k+4)+f+v.substring(k+7)}}}j.execCommand("mceInsertRawHTML",false,v+'<span id="_plain_text_marker"> </span>');window.setTimeout(function(){var h=x.get("_plain_text_marker"),B,i,A,w;s.select(h,false);z.execCommand("Delete",false,null);h=null;B=s.getStart();i=x.getViewPort(n);A=x.getPos(B).y;w=B.clientHeight;if((A<i.y)||(A+w>i.y+i.h)){z.body.scrollTop=A<i.y?A:A-i.h+25}},0)}},_legacySupport:function(){var f=this,e=f.editor;e.addCommand("mcePasteWord",function(){e.windowManager.open({file:f.url+"/pasteword.htm",width:parseInt(b(e,"paste_dialog_width")),height:parseInt(b(e,"paste_dialog_height")),inline:1})});if(b(e,"paste_text_use_dialog")){e.addCommand("mcePasteText",function(){e.windowManager.open({file:f.url+"/pastetext.htm",width:parseInt(b(e,"paste_dialog_width")),height:parseInt(b(e,"paste_dialog_height")),inline:1})})}e.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/paste/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/paste/editor_plugin_src.js new file mode 100644 index 000000000..ad9740f3f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/editor_plugin_src.js @@ -0,0 +1,952 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var each = tinymce.each,
+ entities = null,
+ defs = {
+ paste_auto_cleanup_on_paste : true,
+ paste_block_drop : false,
+ paste_retain_style_properties : "none",
+ paste_strip_class_attributes : "mso",
+ paste_remove_spans : false,
+ paste_remove_styles : false,
+ paste_remove_styles_if_webkit : true,
+ paste_convert_middot_lists : true,
+ paste_convert_headers_to_strong : false,
+ paste_dialog_width : "450",
+ paste_dialog_height : "400",
+ paste_text_use_dialog : false,
+ paste_text_sticky : false,
+ paste_text_notifyalways : false,
+ paste_text_linebreaktype : "p",
+ paste_text_replacements : [
+ [/\u2026/g, "..."],
+ [/[\x93\x94\u201c\u201d]/g, '"'],
+ [/[\x60\x91\x92\u2018\u2019]/g, "'"]
+ ]
+ };
+
+ function getParam(ed, name) {
+ return ed.getParam(name, defs[name]);
+ }
+
+ tinymce.create('tinymce.plugins.PastePlugin', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+ t.url = url;
+
+ // Setup plugin events
+ t.onPreProcess = new tinymce.util.Dispatcher(t);
+ t.onPostProcess = new tinymce.util.Dispatcher(t);
+
+ // Register default handlers
+ t.onPreProcess.add(t._preProcess);
+ t.onPostProcess.add(t._postProcess);
+
+ // Register optional preprocess handler
+ t.onPreProcess.add(function(pl, o) {
+ ed.execCallback('paste_preprocess', pl, o);
+ });
+
+ // Register optional postprocess
+ t.onPostProcess.add(function(pl, o) {
+ ed.execCallback('paste_postprocess', pl, o);
+ });
+
+ // Initialize plain text flag
+ ed.pasteAsPlainText = false;
+
+ // This function executes the process handlers and inserts the contents
+ // force_rich overrides plain text mode set by user, important for pasting with execCommand
+ function process(o, force_rich) {
+ var dom = ed.dom;
+
+ // Execute pre process handlers
+ t.onPreProcess.dispatch(t, o);
+
+ // Create DOM structure
+ o.node = dom.create('div', 0, o.content);
+
+ // Execute post process handlers
+ t.onPostProcess.dispatch(t, o);
+
+ // Serialize content
+ o.content = ed.serializer.serialize(o.node, {getInner : 1});
+
+ // Plain text option active?
+ if ((!force_rich) && (ed.pasteAsPlainText)) {
+ t._insertPlainText(ed, dom, o.content);
+
+ if (!getParam(ed, "paste_text_sticky")) {
+ ed.pasteAsPlainText = false;
+ ed.controlManager.setActive("pastetext", false);
+ }
+ } else if (/<(p|h[1-6]|ul|ol)/.test(o.content)) {
+ // Handle insertion of contents containing block elements separately
+ t._insertBlockContent(ed, dom, o.content);
+ } else {
+ t._insert(o.content);
+ }
+ }
+
+ // Add command for external usage
+ ed.addCommand('mceInsertClipboardContent', function(u, o) {
+ process(o, true);
+ });
+
+ if (!getParam(ed, "paste_text_use_dialog")) {
+ ed.addCommand('mcePasteText', function(u, v) {
+ var cookie = tinymce.util.Cookie;
+
+ ed.pasteAsPlainText = !ed.pasteAsPlainText;
+ ed.controlManager.setActive('pastetext', ed.pasteAsPlainText);
+
+ if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) {
+ if (getParam(ed, "paste_text_sticky")) {
+ ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
+ } else {
+ ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
+ }
+
+ if (!getParam(ed, "paste_text_notifyalways")) {
+ cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31))
+ }
+ }
+ });
+ }
+
+ ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'});
+ ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'});
+
+ // This function grabs the contents from the clipboard by adding a
+ // hidden div and placing the caret inside it and after the browser paste
+ // is done it grabs that contents and processes that
+ function grabContent(e) {
+ var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY;
+
+ // Check if browser supports direct plaintext access
+ if (ed.pasteAsPlainText && (e.clipboardData || dom.doc.dataTransfer)) {
+ e.preventDefault();
+ process({content : (e.clipboardData || dom.doc.dataTransfer).getData('Text')}, true);
+ return;
+ }
+
+ if (dom.get('_mcePaste'))
+ return;
+
+ // Create container to paste into
+ n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste'}, '\uFEFF<br _mce_bogus="1">');
+
+ // If contentEditable mode we need to find out the position of the closest element
+ if (body != ed.getDoc().body)
+ posY = dom.getPos(ed.selection.getStart(), body).y;
+ else
+ posY = body.scrollTop;
+
+ // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles
+ dom.setStyles(n, {
+ position : 'absolute',
+ left : -10000,
+ top : posY,
+ width : 1,
+ height : 1,
+ overflow : 'hidden'
+ });
+
+ if (tinymce.isIE) {
+ // Select the container
+ rng = dom.doc.body.createTextRange();
+ rng.moveToElementText(n);
+ rng.execCommand('Paste');
+
+ // Remove container
+ dom.remove(n);
+
+ // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due
+ // to IE security settings so we pass the junk though better than nothing right
+ if (n.innerHTML === '\uFEFF') {
+ ed.execCommand('mcePasteWord');
+ e.preventDefault();
+ return;
+ }
+
+ // Process contents
+ process({content : n.innerHTML});
+
+ // Block the real paste event
+ return tinymce.dom.Event.cancel(e);
+ } else {
+ function block(e) {
+ e.preventDefault();
+ };
+
+ // Block mousedown and click to prevent selection change
+ dom.bind(ed.getDoc(), 'mousedown', block);
+ dom.bind(ed.getDoc(), 'keydown', block);
+
+ or = ed.selection.getRng();
+
+ // Move caret into hidden div
+ n = n.firstChild;
+ rng = ed.getDoc().createRange();
+ rng.setStart(n, 0);
+ rng.setEnd(n, 1);
+ sel.setRng(rng);
+
+ // Wait a while and grab the pasted contents
+ window.setTimeout(function() {
+ var h = '', nl = dom.select('div.mcePaste');
+
+ // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string
+ each(nl, function(n) {
+ var child = n.firstChild;
+
+ // WebKit inserts a DIV container with lots of odd styles
+ if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) {
+ dom.remove(child, 1);
+ }
+
+ // WebKit duplicates the divs so we need to remove them
+ each(dom.select('div.mcePaste', n), function(n) {
+ dom.remove(n, 1);
+ });
+
+ // Remove apply style spans
+ each(dom.select('span.Apple-style-span', n), function(n) {
+ dom.remove(n, 1);
+ });
+
+ // Remove bogus br elements
+ each(dom.select('br[_mce_bogus]', n), function(n) {
+ dom.remove(n);
+ });
+
+ h += n.innerHTML;
+ });
+
+ // Remove the nodes
+ each(nl, function(n) {
+ dom.remove(n);
+ });
+
+ // Restore the old selection
+ if (or)
+ sel.setRng(or);
+
+ process({content : h});
+
+ // Unblock events ones we got the contents
+ dom.unbind(ed.getDoc(), 'mousedown', block);
+ dom.unbind(ed.getDoc(), 'keydown', block);
+ }, 0);
+ }
+ }
+
+ // Check if we should use the new auto process method
+ if (getParam(ed, "paste_auto_cleanup_on_paste")) {
+ // Is it's Opera or older FF use key handler
+ if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
+ ed.onKeyDown.add(function(ed, e) {
+ if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
+ grabContent(e);
+ });
+ } else {
+ // Grab contents on paste event on Gecko and WebKit
+ ed.onPaste.addToTop(function(ed, e) {
+ return grabContent(e);
+ });
+ }
+ }
+
+ // Block all drag/drop events
+ if (getParam(ed, "paste_block_drop")) {
+ ed.onInit.add(function() {
+ ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+
+ return false;
+ });
+ });
+ }
+
+ // Add legacy support
+ t._legacySupport();
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Paste text/word',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ _preProcess : function(pl, o) {
+ //console.log('Before preprocess:' + o.content);
+
+ var ed = this.editor,
+ h = o.content,
+ grep = tinymce.grep,
+ explode = tinymce.explode,
+ trim = tinymce.trim,
+ len, stripClass;
+
+ function process(items) {
+ each(items, function(v) {
+ // Remove or replace
+ if (v.constructor == RegExp)
+ h = h.replace(v, '');
+ else
+ h = h.replace(v[0], v[1]);
+ });
+ }
+
+ // Detect Word content and process it more aggressive
+ if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) {
+ o.wordContent = true; // Mark the pasted contents as word specific content
+ //console.log('Word contents detected.');
+
+ // Process away some basic content
+ process([
+ /^\s*( )+/gi, // entities at the start of contents
+ /( |<br[^>]*>)+\s*$/gi // entities at the end of contents
+ ]);
+
+ if (getParam(ed, "paste_convert_headers_to_strong")) {
+ h = h.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>");
+ }
+
+ if (getParam(ed, "paste_convert_middot_lists")) {
+ process([
+ [/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker
+ [/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol spans to item markers
+ ]);
+ }
+
+ process([
+ // Word comments like conditional comments etc
+ /<!--[\s\S]+?-->/gi,
+
+ // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags
+ /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
+
+ // Convert <s> into <strike> for line-though
+ [/<(\/?)s>/gi, "<$1strike>"],
+
+ // Replace nsbp entites to char since it's easier to handle
+ [/ /gi, "\u00a0"]
+ ]);
+
+ // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag.
+ // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot.
+ do {
+ len = h.length;
+ h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
+ } while (len != h.length);
+
+ // Remove all spans if no styles is to be retained
+ if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) {
+ h = h.replace(/<\/?span[^>]*>/gi, "");
+ } else {
+ // We're keeping styles, so at least clean them up.
+ // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx
+
+ process([
+ // Convert <span style="mso-spacerun:yes">___</span> to string of alternating breaking/non-breaking spaces of same length
+ [/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
+ function(str, spaces) {
+ return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : "";
+ }
+ ],
+
+ // Examine all styles: delete junk, transform some, and keep the rest
+ [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,
+ function(str, tag, style) {
+ var n = [],
+ i = 0,
+ s = explode(trim(style).replace(/"/gi, "'"), ";");
+
+ // Examine each style definition within the tag's style attribute
+ each(s, function(v) {
+ var name, value,
+ parts = explode(v, ":");
+
+ function ensureUnits(v) {
+ return v + ((v !== "0") && (/\d$/.test(v)))? "px" : "";
+ }
+
+ if (parts.length == 2) {
+ name = parts[0].toLowerCase();
+ value = parts[1].toLowerCase();
+
+ // Translate certain MS Office styles into their CSS equivalents
+ switch (name) {
+ case "mso-padding-alt":
+ case "mso-padding-top-alt":
+ case "mso-padding-right-alt":
+ case "mso-padding-bottom-alt":
+ case "mso-padding-left-alt":
+ case "mso-margin-alt":
+ case "mso-margin-top-alt":
+ case "mso-margin-right-alt":
+ case "mso-margin-bottom-alt":
+ case "mso-margin-left-alt":
+ case "mso-table-layout-alt":
+ case "mso-height":
+ case "mso-width":
+ case "mso-vertical-align-alt":
+ n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value);
+ return;
+
+ case "horiz-align":
+ n[i++] = "text-align:" + value;
+ return;
+
+ case "vert-align":
+ n[i++] = "vertical-align:" + value;
+ return;
+
+ case "font-color":
+ case "mso-foreground":
+ n[i++] = "color:" + value;
+ return;
+
+ case "mso-background":
+ case "mso-highlight":
+ n[i++] = "background:" + value;
+ return;
+
+ case "mso-default-height":
+ n[i++] = "min-height:" + ensureUnits(value);
+ return;
+
+ case "mso-default-width":
+ n[i++] = "min-width:" + ensureUnits(value);
+ return;
+
+ case "mso-padding-between-alt":
+ n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value);
+ return;
+
+ case "text-line-through":
+ if ((value == "single") || (value == "double")) {
+ n[i++] = "text-decoration:line-through";
+ }
+ return;
+
+ case "mso-zero-height":
+ if (value == "yes") {
+ n[i++] = "display:none";
+ }
+ return;
+ }
+
+ // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name
+ if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) {
+ return;
+ }
+
+ // If it reached this point, it must be a valid CSS style
+ n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case
+ }
+ });
+
+ // If style attribute contained any valid styles the re-write it; otherwise delete style attribute.
+ if (i > 0) {
+ return tag + ' style="' + n.join(';') + '"';
+ } else {
+ return tag;
+ }
+ }
+ ]
+ ]);
+ }
+ }
+
+ // Replace headers with <strong>
+ if (getParam(ed, "paste_convert_headers_to_strong")) {
+ process([
+ [/<h[1-6][^>]*>/gi, "<p><strong>"],
+ [/<\/h[1-6][^>]*>/gi, "</strong></p>"]
+ ]);
+ }
+
+ // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso").
+ // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation.
+ stripClass = getParam(ed, "paste_strip_class_attributes");
+
+ if (stripClass !== "none") {
+ function removeClasses(match, g1) {
+ if (stripClass === "all")
+ return '';
+
+ var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "),
+ function(v) {
+ return (/^(?!mso)/i.test(v));
+ }
+ );
+
+ return cls.length ? ' class="' + cls.join(" ") + '"' : '';
+ };
+
+ h = h.replace(/ class="([^"]+)"/gi, removeClasses);
+ h = h.replace(/ class=(\w+)/gi, removeClasses);
+ }
+
+ // Remove spans option
+ if (getParam(ed, "paste_remove_spans")) {
+ h = h.replace(/<\/?span[^>]*>/gi, "");
+ }
+
+ //console.log('After preprocess:' + h);
+
+ o.content = h;
+ },
+
+ /**
+ * Various post process items.
+ */
+ _postProcess : function(pl, o) {
+ var t = this, ed = t.editor, dom = ed.dom, styleProps;
+
+ if (o.wordContent) {
+ // Remove named anchors or TOC links
+ each(dom.select('a', o.node), function(a) {
+ if (!a.href || a.href.indexOf('#_Toc') != -1)
+ dom.remove(a, 1);
+ });
+
+ if (getParam(ed, "paste_convert_middot_lists")) {
+ t._convertLists(pl, o);
+ }
+
+ // Process styles
+ styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties
+
+ // Process only if a string was specified and not equal to "all" or "*"
+ if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) {
+ styleProps = tinymce.explode(styleProps.replace(/^none$/i, ""));
+
+ // Retains some style properties
+ each(dom.select('*', o.node), function(el) {
+ var newStyle = {}, npc = 0, i, sp, sv;
+
+ // Store a subset of the existing styles
+ if (styleProps) {
+ for (i = 0; i < styleProps.length; i++) {
+ sp = styleProps[i];
+ sv = dom.getStyle(el, sp);
+
+ if (sv) {
+ newStyle[sp] = sv;
+ npc++;
+ }
+ }
+ }
+
+ // Remove all of the existing styles
+ dom.setAttrib(el, 'style', '');
+
+ if (styleProps && npc > 0)
+ dom.setStyles(el, newStyle); // Add back the stored subset of styles
+ else // Remove empty span tags that do not have class attributes
+ if (el.nodeName == 'SPAN' && !el.className)
+ dom.remove(el, true);
+ });
+ }
+ }
+
+ // Remove all style information or only specifically on WebKit to avoid the style bug on that browser
+ if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) {
+ each(dom.select('*[style]', o.node), function(el) {
+ el.removeAttribute('style');
+ el.removeAttribute('_mce_style');
+ });
+ } else {
+ if (tinymce.isWebKit) {
+ // We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />
+ // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles
+ each(dom.select('*', o.node), function(el) {
+ el.removeAttribute('_mce_style');
+ });
+ }
+ }
+ },
+
+ /**
+ * Converts the most common bullet and number formats in Office into a real semantic UL/LI list.
+ */
+ _convertLists : function(pl, o) {
+ var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html;
+
+ // Convert middot lists into real semantic lists
+ each(dom.select('p', o.node), function(p) {
+ var sib, val = '', type, html, idx, parents;
+
+ // Get text node value at beginning of paragraph
+ for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling)
+ val += sib.nodeValue;
+
+ val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/ /g, '\u00a0');
+
+ // Detect unordered lists look for bullets
+ if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(val))
+ type = 'ul';
+
+ // Detect ordered lists 1., a. or ixv.
+ if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(val))
+ type = 'ol';
+
+ // Check if node value matches the list pattern: o
+ if (type) {
+ margin = parseFloat(p.style.marginLeft || 0);
+
+ if (margin > lastMargin)
+ levels.push(margin);
+
+ if (!listElm || type != lastType) {
+ listElm = dom.create(type);
+ dom.insertAfter(listElm, p);
+ } else {
+ // Nested list element
+ if (margin > lastMargin) {
+ listElm = li.appendChild(dom.create(type));
+ } else if (margin < lastMargin) {
+ // Find parent level based on margin value
+ idx = tinymce.inArray(levels, margin);
+ parents = dom.getParents(listElm.parentNode, type);
+ listElm = parents[parents.length - 1 - idx] || listElm;
+ }
+ }
+
+ // Remove middot or number spans if they exists
+ each(dom.select('span', p), function(span) {
+ var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, '');
+
+ // Remove span with the middot or the number
+ if (type == 'ul' && /^[\u2022\u00b7\u00a7\u00d8o]/.test(html))
+ dom.remove(span);
+ else if (/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(html))
+ dom.remove(span);
+ });
+
+ html = p.innerHTML;
+
+ // Remove middot/list items
+ if (type == 'ul')
+ html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/, '');
+ else
+ html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, '');
+
+ // Create li and add paragraph data into the new li
+ li = listElm.appendChild(dom.create('li', 0, html));
+ dom.remove(p);
+
+ lastMargin = margin;
+ lastType = type;
+ } else
+ listElm = lastMargin = 0; // End list element
+ });
+
+ // Remove any left over makers
+ html = o.node.innerHTML;
+ if (html.indexOf('__MCE_ITEM__') != -1)
+ o.node.innerHTML = html.replace(/__MCE_ITEM__/g, '');
+ },
+
+ /**
+ * This method will split the current block parent and insert the contents inside the split position.
+ * This logic can be improved so text nodes at the start/end remain in the start/end block elements
+ */
+ _insertBlockContent : function(ed, dom, content) {
+ var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight, markerId = 'mce_marker';
+
+ function select(n) {
+ var r;
+
+ if (tinymce.isIE) {
+ r = ed.getDoc().body.createTextRange();
+ r.moveToElementText(n);
+ r.collapse(false);
+ r.select();
+ } else {
+ sel.select(n, 1);
+ sel.collapse(false);
+ }
+ }
+
+ // Insert a marker for the caret position
+ this._insert('<span id="' + markerId + '"></span>', 1);
+ marker = dom.get(markerId);
+ parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol,th,td');
+
+ // If it's a parent block but not a table cell
+ if (parentBlock && !/TD|TH/.test(parentBlock.nodeName)) {
+ // Split parent block
+ marker = dom.split(parentBlock, marker);
+
+ // Insert nodes before the marker
+ each(dom.create('div', 0, content).childNodes, function(n) {
+ last = marker.parentNode.insertBefore(n.cloneNode(true), marker);
+ });
+
+ // Move caret after marker
+ select(last);
+ } else {
+ dom.setOuterHTML(marker, content);
+ sel.select(ed.getBody(), 1);
+ sel.collapse(0);
+ }
+
+ // Remove marker if it's left
+ while (elm = dom.get(markerId))
+ dom.remove(elm);
+
+ // Get element, position and height
+ elm = sel.getStart();
+ vp = dom.getViewPort(ed.getWin());
+ y = ed.dom.getPos(elm).y;
+ elmHeight = elm.clientHeight;
+
+ // Is element within viewport if not then scroll it into view
+ if (y < vp.y || y + elmHeight > vp.y + vp.h)
+ ed.getDoc().body.scrollTop = y < vp.y ? y : y - vp.h + 25;
+ },
+
+ /**
+ * Inserts the specified contents at the caret position.
+ */
+ _insert : function(h, skip_undo) {
+ var ed = this.editor, r = ed.selection.getRng();
+
+ // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells.
+ if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer)
+ ed.getDoc().execCommand('Delete', false, null);
+
+ // It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents
+ ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo});
+ },
+
+ /**
+ * Instead of the old plain text method which tried to re-create a paste operation, the
+ * new approach adds a plain text mode toggle switch that changes the behavior of paste.
+ * This function is passed the same input that the regular paste plugin produces.
+ * It performs additional scrubbing and produces (and inserts) the plain text.
+ * This approach leverages all of the great existing functionality in the paste
+ * plugin, and requires minimal changes to add the new functionality.
+ * Speednet - June 2009
+ */
+ _insertPlainText : function(ed, dom, h) {
+ var i, len, pos, rpos, node, breakElms, before, after,
+ w = ed.getWin(),
+ d = ed.getDoc(),
+ sel = ed.selection,
+ is = tinymce.is,
+ inArray = tinymce.inArray,
+ linebr = getParam(ed, "paste_text_linebreaktype"),
+ rl = getParam(ed, "paste_text_replacements");
+
+ function process(items) {
+ each(items, function(v) {
+ if (v.constructor == RegExp)
+ h = h.replace(v, "");
+ else
+ h = h.replace(v[0], v[1]);
+ });
+ };
+
+ if ((typeof(h) === "string") && (h.length > 0)) {
+ if (!entities)
+ entities = ("34,quot,38,amp,39,apos,60,lt,62,gt," + ed.serializer.settings.entities).split(",");
+
+ // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line
+ if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) {
+ process([
+ /[\n\r]+/g
+ ]);
+ } else {
+ // Otherwise just get rid of carriage returns (only need linefeeds)
+ process([
+ /\r+/g
+ ]);
+ }
+
+ process([
+ [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them
+ [/<br[^>]*>|<\/tr>/gi, "\n"], // Single linebreak for <br /> tags and table rows
+ [/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"], // Table cells get tabs betweem them
+ /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags
+ [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*)
+ [
+ // HTML entity
+ /&(#\d+|[a-z0-9]{1,10});/gi,
+
+ // Replace with actual character
+ function(e, s) {
+ if (s.charAt(0) === "#") {
+ return String.fromCharCode(s.slice(1));
+ }
+ else {
+ return ((e = inArray(entities, s)) > 0)? String.fromCharCode(entities[e-1]) : " ";
+ }
+ }
+ ],
+ [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"], // Cool little RegExp deletes whitespace around linebreak chars.
+ [/\n{3,}/g, "\n\n"], // Max. 2 consecutive linebreaks
+ /^\s+|\s+$/g // Trim the front & back
+ ]);
+
+ h = dom.encode(h);
+
+ // Delete any highlighted text before pasting
+ if (!sel.isCollapsed()) {
+ d.execCommand("Delete", false, null);
+ }
+
+ // Perform default or custom replacements
+ if (is(rl, "array") || (is(rl, "array"))) {
+ process(rl);
+ }
+ else if (is(rl, "string")) {
+ process(new RegExp(rl, "gi"));
+ }
+
+ // Treat paragraphs as specified in the config
+ if (linebr == "none") {
+ process([
+ [/\n+/g, " "]
+ ]);
+ }
+ else if (linebr == "br") {
+ process([
+ [/\n/g, "<br />"]
+ ]);
+ }
+ else {
+ process([
+ /^\s+|\s+$/g,
+ [/\n\n/g, "</p><p>"],
+ [/\n/g, "<br />"]
+ ]);
+ }
+
+ // This next piece of code handles the situation where we're pasting more than one paragraph of plain
+ // text, and we are pasting the content into the middle of a block node in the editor. The block
+ // node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining).
+ // The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the
+ // pasted text is prepended to "Para B". Any other paragraphs of pasted text are placed between
+ // "Para A" and "Para B". This code solves a host of problems with the original plain text plugin and
+ // now handles styles correctly. (Pasting plain text into a styled paragraph is supposed to make the
+ // plain text take the same style as the existing paragraph.)
+ if ((pos = h.indexOf("</p><p>")) != -1) {
+ rpos = h.lastIndexOf("</p><p>");
+ node = sel.getNode();
+ breakElms = []; // Get list of elements to break
+
+ do {
+ if (node.nodeType == 1) {
+ // Don't break tables and break at body
+ if (node.nodeName == "TD" || node.nodeName == "BODY") {
+ break;
+ }
+
+ breakElms[breakElms.length] = node;
+ }
+ } while (node = node.parentNode);
+
+ // Are we in the middle of a block node?
+ if (breakElms.length > 0) {
+ before = h.substring(0, pos);
+ after = "";
+
+ for (i=0, len=breakElms.length; i<len; i++) {
+ before += "</" + breakElms[i].nodeName.toLowerCase() + ">";
+ after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">";
+ }
+
+ if (pos == rpos) {
+ h = before + after + h.substring(pos+7);
+ }
+ else {
+ h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7);
+ }
+ }
+ }
+
+ // Insert content at the caret, plus add a marker for repositioning the caret
+ ed.execCommand("mceInsertRawHTML", false, h + '<span id="_plain_text_marker"> </span>');
+
+ // Reposition the caret to the marker, which was placed immediately after the inserted content.
+ // Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers.
+ // The second part of the code scrolls the content up if the caret is positioned off-screen.
+ // This is only necessary for WebKit browsers, but it doesn't hurt to use for all.
+ window.setTimeout(function() {
+ var marker = dom.get('_plain_text_marker'),
+ elm, vp, y, elmHeight;
+
+ sel.select(marker, false);
+ d.execCommand("Delete", false, null);
+ marker = null;
+
+ // Get element, position and height
+ elm = sel.getStart();
+ vp = dom.getViewPort(w);
+ y = dom.getPos(elm).y;
+ elmHeight = elm.clientHeight;
+
+ // Is element within viewport if not then scroll it into view
+ if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) {
+ d.body.scrollTop = y < vp.y ? y : y - vp.h + 25;
+ }
+ }, 0);
+ }
+ },
+
+ /**
+ * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.
+ */
+ _legacySupport : function() {
+ var t = this, ed = t.editor;
+
+ // Register command(s) for backwards compatibility
+ ed.addCommand("mcePasteWord", function() {
+ ed.windowManager.open({
+ file: t.url + "/pasteword.htm",
+ width: parseInt(getParam(ed, "paste_dialog_width")),
+ height: parseInt(getParam(ed, "paste_dialog_height")),
+ inline: 1
+ });
+ });
+
+ if (getParam(ed, "paste_text_use_dialog")) {
+ ed.addCommand("mcePasteText", function() {
+ ed.windowManager.open({
+ file : t.url + "/pastetext.htm",
+ width: parseInt(getParam(ed, "paste_dialog_width")),
+ height: parseInt(getParam(ed, "paste_dialog_height")),
+ inline : 1
+ });
+ });
+ }
+
+ // Register button for backwards compatibility
+ ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"});
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin);
+})();
diff --git a/plugins/TinyMCE/js/plugins/paste/js/pastetext.js b/plugins/TinyMCE/js/plugins/paste/js/pastetext.js new file mode 100644 index 000000000..c524f9eb0 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/js/pastetext.js @@ -0,0 +1,36 @@ +tinyMCEPopup.requireLangPack();
+
+var PasteTextDialog = {
+ init : function() {
+ this.resize();
+ },
+
+ insert : function() {
+ var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines;
+
+ // Convert linebreaks into paragraphs
+ if (document.getElementById('linebreaks').checked) {
+ lines = h.split(/\r?\n/);
+ if (lines.length > 1) {
+ h = '';
+ tinymce.each(lines, function(row) {
+ h += '<p>' + row + '</p>';
+ });
+ }
+ }
+
+ tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h});
+ tinyMCEPopup.close();
+ },
+
+ resize : function() {
+ var vp = tinyMCEPopup.dom.getViewPort(window), el;
+
+ el = document.getElementById('content');
+
+ el.style.width = (vp.w - 20) + 'px';
+ el.style.height = (vp.h - 90) + 'px';
+ }
+};
+
+tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog);
diff --git a/plugins/TinyMCE/js/plugins/paste/js/pasteword.js b/plugins/TinyMCE/js/plugins/paste/js/pasteword.js new file mode 100644 index 000000000..a52731c36 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/js/pasteword.js @@ -0,0 +1,51 @@ +tinyMCEPopup.requireLangPack();
+
+var PasteWordDialog = {
+ init : function() {
+ var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = '';
+
+ // Create iframe
+ el.innerHTML = '<iframe id="iframe" src="javascript:\'\';" frameBorder="0" style="border: 1px solid gray"></iframe>';
+ ifr = document.getElementById('iframe');
+ doc = ifr.contentWindow.document;
+
+ // Force absolute CSS urls
+ css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")];
+ css = css.concat(tinymce.explode(ed.settings.content_css) || []);
+ tinymce.each(css, function(u) {
+ cssHTML += '<link href="' + ed.documentBaseURI.toAbsolute('' + u) + '" rel="stylesheet" type="text/css" />';
+ });
+
+ // Write content into iframe
+ doc.open();
+ doc.write('<html><head>' + cssHTML + '</head><body class="mceContentBody" spellcheck="false"></body></html>');
+ doc.close();
+
+ doc.designMode = 'on';
+ this.resize();
+
+ window.setTimeout(function() {
+ ifr.contentWindow.focus();
+ }, 10);
+ },
+
+ insert : function() {
+ var h = document.getElementById('iframe').contentWindow.document.body.innerHTML;
+
+ tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true});
+ tinyMCEPopup.close();
+ },
+
+ resize : function() {
+ var vp = tinyMCEPopup.dom.getViewPort(window), el;
+
+ el = document.getElementById('iframe');
+
+ if (el) {
+ el.style.width = (vp.w - 20) + 'px';
+ el.style.height = (vp.h - 90) + 'px';
+ }
+ }
+};
+
+tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog);
diff --git a/plugins/TinyMCE/js/plugins/paste/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/paste/langs/en_dlg.js new file mode 100644 index 000000000..eeac77896 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/langs/en_dlg.js @@ -0,0 +1,5 @@ +tinyMCE.addI18n('en.paste_dlg',{
+text_title:"Use CTRL+V on your keyboard to paste the text into the window.",
+text_linebreaks:"Keep linebreaks",
+word_title:"Use CTRL+V on your keyboard to paste the text into the window."
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/paste/pastetext.htm b/plugins/TinyMCE/js/plugins/paste/pastetext.htm new file mode 100644 index 000000000..b65594547 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/pastetext.htm @@ -0,0 +1,27 @@ +<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#paste.paste_text_desc}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/pastetext.js"></script>
+</head>
+<body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
+ <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
+ <div style="float: left" class="title">{#paste.paste_text_desc}</div>
+
+ <div style="float: right">
+ <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>
+ </div>
+
+ <br style="clear: both" />
+
+ <div>{#paste_dlg.text_title}</div>
+
+ <textarea id="content" name="content" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
+
+ <div class="mceActionPanel">
+ <input type="submit" name="insert" value="{#insert}" id="insert" />
+ <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+ </div>
+ </form>
+</body>
+</html>
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/paste/pasteword.htm b/plugins/TinyMCE/js/plugins/paste/pasteword.htm new file mode 100644 index 000000000..0f6bb4121 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/pasteword.htm @@ -0,0 +1,21 @@ +<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#paste.paste_word_desc}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/pasteword.js"></script>
+</head>
+<body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
+ <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
+ <div class="title">{#paste.paste_word_desc}</div>
+
+ <div>{#paste_dlg.word_title}</div>
+
+ <div id="iframecontainer"></div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/preview/editor_plugin.js b/plugins/TinyMCE/js/plugins/preview/editor_plugin.js new file mode 100644 index 000000000..507909c5f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/preview/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/preview/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/preview/editor_plugin_src.js new file mode 100644 index 000000000..80f00f0d9 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/preview/editor_plugin_src.js @@ -0,0 +1,53 @@ +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.Preview', { + init : function(ed, url) { + var t = this, css = tinymce.explode(ed.settings.content_css); + + t.editor = ed; + + // Force absolute CSS urls + tinymce.each(css, function(u, k) { + css[k] = ed.documentBaseURI.toAbsolute(u); + }); + + ed.addCommand('mcePreview', function() { + ed.windowManager.open({ + file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"), + width : parseInt(ed.getParam("plugin_preview_width", "550")), + height : parseInt(ed.getParam("plugin_preview_height", "600")), + resizable : "yes", + scrollbars : "yes", + popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"), + inline : ed.getParam("plugin_preview_inline", 1) + }, { + base : ed.documentBaseURI.getURI() + }); + }); + + ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'}); + }, + + getInfo : function() { + return { + longname : 'Preview', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('preview', tinymce.plugins.Preview); +})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/preview/example.html b/plugins/TinyMCE/js/plugins/preview/example.html new file mode 100644 index 000000000..b2c3d90ce --- /dev/null +++ b/plugins/TinyMCE/js/plugins/preview/example.html @@ -0,0 +1,28 @@ +<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script language="javascript" src="../../tiny_mce_popup.js"></script>
+<script type="text/javascript" src="jscripts/embed.js"></script>
+<script type="text/javascript">
+tinyMCEPopup.onInit.add(function(ed) {
+ var dom = tinyMCEPopup.dom;
+
+ // Load editor content_css
+ tinymce.each(ed.settings.content_css.split(','), function(u) {
+ dom.loadCSS(ed.documentBaseURI.toAbsolute(u));
+ });
+
+ // Place contents inside div container
+ dom.setHTML('content', ed.getContent());
+});
+</script>
+<title>Example of a custom preview page</title>
+</head>
+<body>
+
+Editor contents: <br />
+<div id="content">
+<!-- Gets filled with editor contents -->
+</div>
+
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/preview/jscripts/embed.js b/plugins/TinyMCE/js/plugins/preview/jscripts/embed.js new file mode 100644 index 000000000..f8dc81052 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/preview/jscripts/embed.js @@ -0,0 +1,73 @@ +/**
+ * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
+ */
+
+function writeFlash(p) {
+ writeEmbed(
+ 'D27CDB6E-AE6D-11cf-96B8-444553540000',
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+ 'application/x-shockwave-flash',
+ p
+ );
+}
+
+function writeShockWave(p) {
+ writeEmbed(
+ '166B1BCA-3F9C-11CF-8075-444553540000',
+ 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+ 'application/x-director',
+ p
+ );
+}
+
+function writeQuickTime(p) {
+ writeEmbed(
+ '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+ 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+ 'video/quicktime',
+ p
+ );
+}
+
+function writeRealMedia(p) {
+ writeEmbed(
+ 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+ 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+ 'audio/x-pn-realaudio-plugin',
+ p
+ );
+}
+
+function writeWindowsMedia(p) {
+ p.url = p.src;
+ writeEmbed(
+ '6BF52A52-394A-11D3-B153-00C04F79FAA6',
+ 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+ 'application/x-mplayer2',
+ p
+ );
+}
+
+function writeEmbed(cls, cb, mt, p) {
+ var h = '', n;
+
+ h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+ h += '>';
+
+ for (n in p)
+ h += '<param name="' + n + '" value="' + p[n] + '">';
+
+ h += '<embed type="' + mt + '"';
+
+ for (n in p)
+ h += n + '="' + p[n] + '" ';
+
+ h += '></embed></object>';
+
+ document.write(h);
+}
diff --git a/plugins/TinyMCE/js/plugins/preview/preview.html b/plugins/TinyMCE/js/plugins/preview/preview.html new file mode 100644 index 000000000..67e7b142f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/preview/preview.html @@ -0,0 +1,17 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+<script type="text/javascript" src="jscripts/embed.js"></script>
+<script type="text/javascript"><!--
+document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');
+// -->
+</script>
+<title>{#preview.preview_desc}</title>
+</head>
+<body id="content">
+<script type="text/javascript">
+ document.write(tinyMCEPopup.editor.getContent());
+</script>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/print/editor_plugin.js b/plugins/TinyMCE/js/plugins/print/editor_plugin.js new file mode 100644 index 000000000..b5b3a55ed --- /dev/null +++ b/plugins/TinyMCE/js/plugins/print/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/print/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/print/editor_plugin_src.js new file mode 100644 index 000000000..3933fe656 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/print/editor_plugin_src.js @@ -0,0 +1,34 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Print', {
+ init : function(ed, url) {
+ ed.addCommand('mcePrint', function() {
+ ed.getWin().print();
+ });
+
+ ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Print',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('print', tinymce.plugins.Print);
+})();
diff --git a/plugins/TinyMCE/js/plugins/save/editor_plugin.js b/plugins/TinyMCE/js/plugins/save/editor_plugin.js new file mode 100644 index 000000000..8e9399667 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/save/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/save/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/save/editor_plugin_src.js new file mode 100644 index 000000000..f5a3de8f5 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/save/editor_plugin_src.js @@ -0,0 +1,101 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.Save', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceSave', t._save, t);
+ ed.addCommand('mceCancel', t._cancel, t);
+
+ // Register buttons
+ ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
+ ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
+
+ ed.onNodeChange.add(t._nodeChange, t);
+ ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Save',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ _nodeChange : function(ed, cm, n) {
+ var ed = this.editor;
+
+ if (ed.getParam('save_enablewhendirty')) {
+ cm.setDisabled('save', !ed.isDirty());
+ cm.setDisabled('cancel', !ed.isDirty());
+ }
+ },
+
+ // Private methods
+
+ _save : function() {
+ var ed = this.editor, formObj, os, i, elementId;
+
+ formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
+
+ if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
+ return;
+
+ tinyMCE.triggerSave();
+
+ // Use callback instead
+ if (os = ed.getParam("save_onsavecallback")) {
+ if (ed.execCallback('save_onsavecallback', ed)) {
+ ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
+ ed.nodeChanged();
+ }
+
+ return;
+ }
+
+ if (formObj) {
+ ed.isNotDirty = true;
+
+ if (formObj.onsubmit == null || formObj.onsubmit() != false)
+ formObj.submit();
+
+ ed.nodeChanged();
+ } else
+ ed.windowManager.alert("Error: No form element found.");
+ },
+
+ _cancel : function() {
+ var ed = this.editor, os, h = tinymce.trim(ed.startContent);
+
+ // Use callback instead
+ if (os = ed.getParam("save_oncancelcallback")) {
+ ed.execCallback('save_oncancelcallback', ed);
+ return;
+ }
+
+ ed.setContent(h);
+ ed.undoManager.clear();
+ ed.nodeChanged();
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('save', tinymce.plugins.Save);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/searchreplace/css/searchreplace.css b/plugins/TinyMCE/js/plugins/searchreplace/css/searchreplace.css new file mode 100644 index 000000000..ecdf58c7b --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/css/searchreplace.css @@ -0,0 +1,6 @@ +.panel_wrapper {height:85px;}
+.panel_wrapper div.current {height:85px;}
+
+/* IE */
+* html .panel_wrapper {height:100px;}
+* html .panel_wrapper div.current {height:100px;}
diff --git a/plugins/TinyMCE/js/plugins/searchreplace/editor_plugin.js b/plugins/TinyMCE/js/plugins/searchreplace/editor_plugin.js new file mode 100644 index 000000000..cd9c985b7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/searchreplace/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/searchreplace/editor_plugin_src.js new file mode 100644 index 000000000..1433a06a4 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/editor_plugin_src.js @@ -0,0 +1,57 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.SearchReplacePlugin', {
+ init : function(ed, url) {
+ function open(m) {
+ ed.windowManager.open({
+ file : url + '/searchreplace.htm',
+ width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),
+ height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
+ inline : 1,
+ auto_focus : 0
+ }, {
+ mode : m,
+ search_string : ed.selection.getContent({format : 'text'}),
+ plugin_url : url
+ });
+ };
+
+ // Register commands
+ ed.addCommand('mceSearch', function() {
+ open('search');
+ });
+
+ ed.addCommand('mceReplace', function() {
+ open('replace');
+ });
+
+ // Register buttons
+ ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});
+ ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});
+
+ ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Search/Replace',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/searchreplace/js/searchreplace.js b/plugins/TinyMCE/js/plugins/searchreplace/js/searchreplace.js new file mode 100644 index 000000000..c0a624329 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/js/searchreplace.js @@ -0,0 +1,130 @@ +tinyMCEPopup.requireLangPack();
+
+var SearchReplaceDialog = {
+ init : function(ed) {
+ var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
+
+ this.switchMode(m);
+
+ f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
+
+ // Focus input field
+ f[m + '_panel_searchstring'].focus();
+ },
+
+ switchMode : function(m) {
+ var f, lm = this.lastMode;
+
+ if (lm != m) {
+ f = document.forms[0];
+
+ if (lm) {
+ f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
+ f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
+ f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
+ f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
+ }
+
+ mcTabs.displayTab(m + '_tab', m + '_panel');
+ document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
+ document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
+ this.lastMode = m;
+ }
+ },
+
+ searchNext : function(a) {
+ var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
+
+ // Get input
+ f = document.forms[0];
+ s = f[m + '_panel_searchstring'].value;
+ b = f[m + '_panel_backwardsu'].checked;
+ ca = f[m + '_panel_casesensitivebox'].checked;
+ rs = f['replace_panel_replacestring'].value;
+
+ if (s == '')
+ return;
+
+ function fix() {
+ // Correct Firefox graphics glitches
+ r = se.getRng().cloneRange();
+ ed.getDoc().execCommand('SelectAll', false, null);
+ se.setRng(r);
+ };
+
+ function replace() {
+ if (tinymce.isIE)
+ ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE
+ else
+ ed.getDoc().execCommand('InsertHTML', false, rs);
+ };
+
+ // IE flags
+ if (ca)
+ fl = fl | 4;
+
+ switch (a) {
+ case 'all':
+ // Move caret to beginning of text
+ ed.execCommand('SelectAll');
+ ed.selection.collapse(true);
+
+ if (tinymce.isIE) {
+ while (r.findText(s, b ? -1 : 1, fl)) {
+ r.scrollIntoView();
+ r.select();
+ replace();
+ fo = 1;
+
+ if (b) {
+ r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
+ }
+ }
+
+ tinyMCEPopup.storeSelection();
+ } else {
+ while (w.find(s, ca, b, false, false, false, false)) {
+ replace();
+ fo = 1;
+ }
+ }
+
+ if (fo)
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
+ else
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
+
+ return;
+
+ case 'current':
+ if (!ed.selection.isCollapsed())
+ replace();
+
+ break;
+ }
+
+ se.collapse(b);
+ r = se.getRng();
+
+ // Whats the point
+ if (!s)
+ return;
+
+ if (tinymce.isIE) {
+ if (r.findText(s, b ? -1 : 1, fl)) {
+ r.scrollIntoView();
+ r.select();
+ } else
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
+
+ tinyMCEPopup.storeSelection();
+ } else {
+ if (!w.find(s, ca, b, false, false, false, false))
+ tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
+ else
+ fix();
+ }
+ }
+};
+
+tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
diff --git a/plugins/TinyMCE/js/plugins/searchreplace/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/searchreplace/langs/en_dlg.js new file mode 100644 index 000000000..370959afa --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/langs/en_dlg.js @@ -0,0 +1,16 @@ +tinyMCE.addI18n('en.searchreplace_dlg',{
+searchnext_desc:"Find again",
+notfound:"The search has been completed. The search string could not be found.",
+search_title:"Find",
+replace_title:"Find/Replace",
+allreplaced:"All occurrences of the search string were replaced.",
+findwhat:"Find what",
+replacewith:"Replace with",
+direction:"Direction",
+up:"Up",
+down:"Down",
+mcase:"Match case",
+findnext:"Find next",
+replace:"Replace",
+replaceall:"Replace all"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/searchreplace/searchreplace.htm b/plugins/TinyMCE/js/plugins/searchreplace/searchreplace.htm new file mode 100644 index 000000000..d0424cfc9 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/searchreplace.htm @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#searchreplace_dlg.replace_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="js/searchreplace.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
+</head>
+<body style="display:none;">
+<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="search_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>
+ <li id="replace_tab"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="search_panel" class="panel">
+ <table border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
+ <td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" /></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0" class="direction">
+ <tr>
+ <td><label>{#searchreplace_dlg.direction}</label></td>
+ <td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
+ <td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
+ <td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>
+ <td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
+ <td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="replace_panel" class="panel">
+ <table border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
+ <td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" /></td>
+ </tr>
+ <tr>
+ <td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>
+ <td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" /></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0" class="direction">
+ <tr>
+ <td><label>{#searchreplace_dlg.direction}</label></td>
+ <td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
+ <td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
+ <td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>
+ <td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
+ <td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
+ <input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
+ <input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/spellchecker/css/content.css b/plugins/TinyMCE/js/plugins/spellchecker/css/content.css new file mode 100644 index 000000000..24efa0217 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/spellchecker/css/content.css @@ -0,0 +1 @@ +.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
diff --git a/plugins/TinyMCE/js/plugins/spellchecker/editor_plugin.js b/plugins/TinyMCE/js/plugins/spellchecker/editor_plugin.js new file mode 100644 index 000000000..a9ec3b9cf --- /dev/null +++ b/plugins/TinyMCE/js/plugins/spellchecker/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});e.onInit.add(function(){if(e.settings.content_css!==false){e.dom.loadCSS(f+"/css/content.css")}});e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(e){var f=this.editor,h=f.dom,g=f.selection,d=g.getBookmark();c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!e||h.decode(i.innerHTML)==e){h.remove(i,1)}}});g.moveToBookmark(d)},_markWords:function(o){var i,h,g,f,e,n="",k=this.editor,p=this._getSeparators(),j=k.dom,d=[];var l=k.selection,m=l.getBookmark();c(o,function(q){n+=(n?"|":"")+q});i=new RegExp("(["+p+"])("+n+")(["+p+"])","g");h=new RegExp("^("+n+")","g");g=new RegExp("("+n+")(["+p+"]?)$","g");f=new RegExp("^("+n+")(["+p+"]?)$","g");e=new RegExp("("+n+")(["+p+"])","g");this._walk(this.editor.getBody(),function(q){if(q.nodeType==3){d.push(q)}});c(d,function(r){var q;if(r.nodeType==3){q=r.nodeValue;if(i.test(q)||h.test(q)||g.test(q)||f.test(q)){q=j.encode(q);q=q.replace(e,'<span class="mceItemHiddenSpellWord">$1</span>$2');q=q.replace(g,'<span class="mceItemHiddenSpellWord">$1</span>$2');j.replace(j.create("span",{"class":"mceItemHidden"},q),r)}}});l.moveToBookmark(m)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){l=b.getPos(h.getContentAreaContainer());d=h.controlManager.createDropMenu("spellcheckermenu",{offset_x:l.x,offset_y:l.y,"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/spellchecker/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/spellchecker/editor_plugin_src.js new file mode 100644 index 000000000..d8680baf2 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/spellchecker/editor_plugin_src.js @@ -0,0 +1,417 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
+
+ tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
+ getInfo : function() {
+ return {
+ longname : 'Spellchecker',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ init : function(ed, url) {
+ var t = this, cm;
+
+ t.url = url;
+ t.editor = ed;
+ t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}");
+
+ if (t.rpcUrl == '{backend}') {
+ // Sniff if the browser supports native spellchecking (Don't know of a better way)
+ if (tinymce.isIE)
+ return;
+
+ t.hasSupport = true;
+
+ // Disable the context menu when spellchecking is active
+ ed.onContextMenu.addToTop(function(ed, e) {
+ if (t.active)
+ return false;
+ });
+ }
+
+ // Register commands
+ ed.addCommand('mceSpellCheck', function() {
+ if (t.rpcUrl == '{backend}') {
+ // Enable/disable native spellchecker
+ t.editor.getBody().spellcheck = t.active = !t.active;
+ return;
+ }
+
+ if (!t.active) {
+ ed.setProgressState(1);
+ t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
+ if (r.length > 0) {
+ t.active = 1;
+ t._markWords(r);
+ ed.setProgressState(0);
+ ed.nodeChanged();
+ } else {
+ ed.setProgressState(0);
+
+ if (ed.getParam('spellchecker_report_no_misspellings', true))
+ ed.windowManager.alert('spellchecker.no_mpell');
+ }
+ });
+ } else
+ t._done();
+ });
+
+ ed.onInit.add(function() {
+ if (ed.settings.content_css !== false)
+ ed.dom.loadCSS(url + '/css/content.css');
+ });
+
+ ed.onClick.add(t._showMenu, t);
+ ed.onContextMenu.add(t._showMenu, t);
+ ed.onBeforeGetContent.add(function() {
+ if (t.active)
+ t._removeWords();
+ });
+
+ ed.onNodeChange.add(function(ed, cm) {
+ cm.setActive('spellchecker', t.active);
+ });
+
+ ed.onSetContent.add(function() {
+ t._done();
+ });
+
+ ed.onBeforeGetContent.add(function() {
+ t._done();
+ });
+
+ ed.onBeforeExecCommand.add(function(ed, cmd) {
+ if (cmd == 'mceFullScreen')
+ t._done();
+ });
+
+ // Find selected language
+ t.languages = {};
+ each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
+ if (k.indexOf('+') === 0) {
+ k = k.substring(1);
+ t.selectedLang = v;
+ }
+
+ t.languages[k] = v;
+ });
+ },
+
+ createControl : function(n, cm) {
+ var t = this, c, ed = t.editor;
+
+ if (n == 'spellchecker') {
+ // Use basic button if we use the native spellchecker
+ if (t.rpcUrl == '{backend}') {
+ // Create simple toggle button if we have native support
+ if (t.hasSupport)
+ c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
+
+ return c;
+ }
+
+ c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
+
+ c.onRenderMenu.add(function(c, m) {
+ m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+ each(t.languages, function(v, k) {
+ var o = {icon : 1}, mi;
+
+ o.onclick = function() {
+ mi.setSelected(1);
+ t.selectedItem.setSelected(0);
+ t.selectedItem = mi;
+ t.selectedLang = v;
+ };
+
+ o.title = k;
+ mi = m.add(o);
+ mi.setSelected(v == t.selectedLang);
+
+ if (v == t.selectedLang)
+ t.selectedItem = mi;
+ })
+ });
+
+ return c;
+ }
+ },
+
+ // Internal functions
+
+ _walk : function(n, f) {
+ var d = this.editor.getDoc(), w;
+
+ if (d.createTreeWalker) {
+ w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+ while ((n = w.nextNode()) != null)
+ f.call(this, n);
+ } else
+ tinymce.walk(n, f, 'childNodes');
+ },
+
+ _getSeparators : function() {
+ var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');
+
+ // Build word separator regexp
+ for (i=0; i<str.length; i++)
+ re += '\\' + str.charAt(i);
+
+ return re;
+ },
+
+ _getWords : function() {
+ var ed = this.editor, wl = [], tx = '', lo = {}, rawWords = [];
+
+ // Get area text
+ this._walk(ed.getBody(), function(n) {
+ if (n.nodeType == 3)
+ tx += n.nodeValue + ' ';
+ });
+
+ // split the text up into individual words
+ if (ed.getParam('spellchecker_word_pattern')) {
+ // look for words that match the pattern
+ rawWords = tx.match('(' + ed.getParam('spellchecker_word_pattern') + ')', 'gi');
+ } else {
+ // Split words by separator
+ tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
+ tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
+ rawWords = tx.split(' ');
+ }
+
+ // Build word array and remove duplicates
+ each(rawWords, function(v) {
+ if (!lo[v]) {
+ wl.push(v);
+ lo[v] = 1;
+ }
+ });
+
+ return wl;
+ },
+
+ _removeWords : function(w) {
+ var ed = this.editor, dom = ed.dom, se = ed.selection, b = se.getBookmark();
+
+ each(dom.select('span').reverse(), function(n) {
+ if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
+ if (!w || dom.decode(n.innerHTML) == w)
+ dom.remove(n, 1);
+ }
+ });
+
+ se.moveToBookmark(b);
+ },
+
+ _markWords : function(wl) {
+ var r1, r2, r3, r4, r5, w = '', ed = this.editor, re = this._getSeparators(), dom = ed.dom, nl = [];
+ var se = ed.selection, b = se.getBookmark();
+
+ each(wl, function(v) {
+ w += (w ? '|' : '') + v;
+ });
+
+ r1 = new RegExp('([' + re + '])(' + w + ')([' + re + '])', 'g');
+ r2 = new RegExp('^(' + w + ')', 'g');
+ r3 = new RegExp('(' + w + ')([' + re + ']?)$', 'g');
+ r4 = new RegExp('^(' + w + ')([' + re + ']?)$', 'g');
+ r5 = new RegExp('(' + w + ')([' + re + '])', 'g');
+
+ // Collect all text nodes
+ this._walk(this.editor.getBody(), function(n) {
+ if (n.nodeType == 3) {
+ nl.push(n);
+ }
+ });
+
+ // Wrap incorrect words in spans
+ each(nl, function(n) {
+ var v;
+
+ if (n.nodeType == 3) {
+ v = n.nodeValue;
+
+ if (r1.test(v) || r2.test(v) || r3.test(v) || r4.test(v)) {
+ v = dom.encode(v);
+ v = v.replace(r5, '<span class="mceItemHiddenSpellWord">$1</span>$2');
+ v = v.replace(r3, '<span class="mceItemHiddenSpellWord">$1</span>$2');
+
+ dom.replace(dom.create('span', {'class' : 'mceItemHidden'}, v), n);
+ }
+ }
+ });
+
+ se.moveToBookmark(b);
+ },
+
+ _showMenu : function(ed, e) {
+ var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()), wordSpan = e.target;
+
+ e = 0; // Fixes IE memory leak
+
+ if (!m) {
+ p1 = DOM.getPos(ed.getContentAreaContainer());
+ //p2 = DOM.getPos(ed.getContainer());
+
+ m = ed.controlManager.createDropMenu('spellcheckermenu', {
+ offset_x : p1.x,
+ offset_y : p1.y,
+ 'class' : 'mceNoIcons'
+ });
+
+ t._menu = m;
+ }
+
+ if (dom.hasClass(wordSpan, 'mceItemHiddenSpellWord')) {
+ m.removeAll();
+ m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+ t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(wordSpan.innerHTML)], function(r) {
+ var ignoreRpc;
+
+ m.removeAll();
+
+ if (r.length > 0) {
+ m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+ each(r, function(v) {
+ m.add({title : v, onclick : function() {
+ dom.replace(ed.getDoc().createTextNode(v), wordSpan);
+ t._checkDone();
+ }});
+ });
+
+ m.addSeparator();
+ } else
+ m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+
+ ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", '');
+ m.add({
+ title : 'spellchecker.ignore_word',
+ onclick : function() {
+ var word = wordSpan.innerHTML;
+
+ dom.remove(wordSpan, 1);
+ t._checkDone();
+
+ // tell the server if we need to
+ if (ignoreRpc) {
+ ed.setProgressState(1);
+ t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) {
+ ed.setProgressState(0);
+ });
+ }
+ }
+ });
+
+ m.add({
+ title : 'spellchecker.ignore_words',
+ onclick : function() {
+ var word = wordSpan.innerHTML;
+
+ t._removeWords(dom.decode(word));
+ t._checkDone();
+
+ // tell the server if we need to
+ if (ignoreRpc) {
+ ed.setProgressState(1);
+ t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) {
+ ed.setProgressState(0);
+ });
+ }
+ }
+ });
+
+
+ if (t.editor.getParam("spellchecker_enable_learn_rpc")) {
+ m.add({
+ title : 'spellchecker.learn_word',
+ onclick : function() {
+ var word = wordSpan.innerHTML;
+
+ dom.remove(wordSpan, 1);
+ t._checkDone();
+
+ ed.setProgressState(1);
+ t._sendRPC('learnWord', [t.selectedLang, word], function(r) {
+ ed.setProgressState(0);
+ });
+ }
+ });
+ }
+
+ m.update();
+ });
+
+ ed.selection.select(wordSpan);
+ p1 = dom.getPos(wordSpan);
+ m.showMenu(p1.x, p1.y + wordSpan.offsetHeight - vp.y);
+
+ return tinymce.dom.Event.cancel(e);
+ } else
+ m.hideMenu();
+ },
+
+ _checkDone : function() {
+ var t = this, ed = t.editor, dom = ed.dom, o;
+
+ each(dom.select('span'), function(n) {
+ if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
+ o = true;
+ return false;
+ }
+ });
+
+ if (!o)
+ t._done();
+ },
+
+ _done : function() {
+ var t = this, la = t.active;
+
+ if (t.active) {
+ t.active = 0;
+ t._removeWords();
+
+ if (t._menu)
+ t._menu.hideMenu();
+
+ if (la)
+ t.editor.nodeChanged();
+ }
+ },
+
+ _sendRPC : function(m, p, cb) {
+ var t = this;
+
+ JSONRequest.sendRPC({
+ url : t.rpcUrl,
+ method : m,
+ params : p,
+ success : cb,
+ error : function(e, x) {
+ t.editor.setProgressState(0);
+ t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
+ }
+ });
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
+})();
diff --git a/plugins/TinyMCE/js/plugins/spellchecker/img/wline.gif b/plugins/TinyMCE/js/plugins/spellchecker/img/wline.gif Binary files differnew file mode 100644 index 000000000..7d0a4dbca --- /dev/null +++ b/plugins/TinyMCE/js/plugins/spellchecker/img/wline.gif diff --git a/plugins/TinyMCE/js/plugins/style/css/props.css b/plugins/TinyMCE/js/plugins/style/css/props.css new file mode 100644 index 000000000..eb1f26496 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/css/props.css @@ -0,0 +1,13 @@ +#text_font {width:250px;}
+#text_size {width:70px;}
+.mceAddSelectValue {background:#DDD;}
+select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}
+#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}
+#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}
+#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}
+.panel_wrapper div.current {padding-top:10px;height:230px;}
+.delim {border-left:1px solid gray;}
+.tdelim {border-bottom:1px solid gray;}
+#block_display {width:145px;}
+#list_type {width:115px;}
+.disabled {background:#EEE;}
diff --git a/plugins/TinyMCE/js/plugins/style/editor_plugin.js b/plugins/TinyMCE/js/plugins/style/editor_plugin.js new file mode 100644 index 000000000..cab2153c4 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/style/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/style/editor_plugin_src.js new file mode 100644 index 000000000..5f7755f18 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/editor_plugin_src.js @@ -0,0 +1,55 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.StylePlugin', {
+ init : function(ed, url) {
+ // Register commands
+ ed.addCommand('mceStyleProps', function() {
+ ed.windowManager.open({
+ file : url + '/props.htm',
+ width : 480 + parseInt(ed.getLang('style.delta_width', 0)),
+ height : 320 + parseInt(ed.getLang('style.delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url,
+ style_text : ed.selection.getNode().style.cssText
+ });
+ });
+
+ ed.addCommand('mceSetElementStyle', function(ui, v) {
+ if (e = ed.selection.getNode()) {
+ ed.dom.setAttrib(e, 'style', v);
+ ed.execCommand('mceRepaint');
+ }
+ });
+
+ ed.onNodeChange.add(function(ed, cm, n) {
+ cm.setDisabled('styleprops', n.nodeName === 'BODY');
+ });
+
+ // Register buttons
+ ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Style',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/style/js/props.js b/plugins/TinyMCE/js/plugins/style/js/props.js new file mode 100644 index 000000000..a8dd93dec --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/js/props.js @@ -0,0 +1,641 @@ +tinyMCEPopup.requireLangPack();
+
+var defaultFonts = "" +
+ "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" +
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
+ "Courier New, Courier, mono=Courier New, Courier, mono;" +
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
+ "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" +
+ "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" +
+ "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
+
+var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
+var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
+var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%";
+var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
+var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
+var defaultTextStyle = "normal;italic;oblique";
+var defaultVariant = "normal;small-caps";
+var defaultLineHeight = "normal";
+var defaultAttachment = "fixed;scroll";
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
+var defaultPosH = "left;center;right";
+var defaultPosV = "top;center;bottom";
+var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
+var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
+var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
+var defaultBorderWidth = "thin;medium;thick";
+var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
+
+function init() {
+ var ce = document.getElementById('container'), h;
+
+ ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
+
+ h = getBrowserHTML('background_image_browser','background_image','image','advimage');
+ document.getElementById("background_image_browser").innerHTML = h;
+
+ document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
+ document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
+ document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
+ document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
+ document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
+ document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
+
+ fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
+ fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
+ fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
+ fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
+ fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
+ fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
+ fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
+ fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
+ fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
+
+ fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
+ fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
+
+ fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
+ fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
+ fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
+ fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
+ fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
+ fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
+ fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
+ fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
+ fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
+
+ fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
+ fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
+ fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
+
+ fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
+
+ fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
+ fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
+
+ fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
+ fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
+
+ fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
+
+ fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
+
+ TinyMCE_EditableSelects.init();
+ setupFormData();
+ showDisabledControls();
+}
+
+function setupFormData() {
+ var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
+
+ // Setup text fields
+
+ selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
+ selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
+ selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
+ selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
+ selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
+ selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
+ selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
+ selectByValue(f, 'text_case', ce.style.textTransform, true, true);
+ selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
+ f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);
+ updateColor('text_color_pick', 'text_color');
+ f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
+ f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
+ f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
+ f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
+
+ // Setup background fields
+
+ f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);
+ updateColor('background_color_pick', 'background_color');
+ f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+ selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
+ selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
+ selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
+ selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
+ selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
+ selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
+
+ // Setup block fields
+
+ selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
+ selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
+ selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
+ selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
+ selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
+ selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
+ f.block_text_indent.value = getNum(ce.style.textIndent);
+ selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
+ selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
+ selectByValue(f, 'block_display', ce.style.display, true, true);
+
+ // Setup box fields
+
+ f.box_width.value = getNum(ce.style.width);
+ selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
+
+ f.box_height.value = getNum(ce.style.height);
+ selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
+
+ if (tinymce.isGecko)
+ selectByValue(f, 'box_float', ce.style.cssFloat, true, true);
+ else
+ selectByValue(f, 'box_float', ce.style.styleFloat, true, true);
+
+ selectByValue(f, 'box_clear', ce.style.clear, true, true);
+
+ setupBox(f, ce, 'box_padding', 'padding', '');
+ setupBox(f, ce, 'box_margin', 'margin', '');
+
+ // Setup border fields
+
+ setupBox(f, ce, 'border_style', 'border', 'Style');
+ setupBox(f, ce, 'border_width', 'border', 'Width');
+ setupBox(f, ce, 'border_color', 'border', 'Color');
+
+ updateColor('border_color_top_pick', 'border_color_top');
+ updateColor('border_color_right_pick', 'border_color_right');
+ updateColor('border_color_bottom_pick', 'border_color_bottom');
+ updateColor('border_color_left_pick', 'border_color_left');
+
+ f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);
+ f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);
+ f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);
+ f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);
+
+ // Setup list fields
+
+ selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
+ selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
+ f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+ // Setup box fields
+
+ selectByValue(f, 'positioning_type', ce.style.position, true, true);
+ selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
+ selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
+ f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
+
+ f.positioning_width.value = getNum(ce.style.width);
+ selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
+
+ f.positioning_height.value = getNum(ce.style.height);
+ selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
+
+ setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);
+
+ s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
+ s = s.replace(/,/g, ' ');
+
+ if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {
+ f.positioning_clip_top.value = getNum(getVal(s, 0));
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+ f.positioning_clip_right.value = getNum(getVal(s, 1));
+ selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
+ f.positioning_clip_bottom.value = getNum(getVal(s, 2));
+ selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
+ f.positioning_clip_left.value = getNum(getVal(s, 3));
+ selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
+ } else {
+ f.positioning_clip_top.value = getNum(getVal(s, 0));
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
+ f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
+ }
+
+// setupBox(f, ce, '', 'border', 'Color');
+}
+
+function getMeasurement(s) {
+ return s.replace(/^([0-9.]+)(.*)$/, "$2");
+}
+
+function getNum(s) {
+ if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s))
+ return s.replace(/[^0-9.]/g, '');
+
+ return s;
+}
+
+function inStr(s, n) {
+ return new RegExp(n, 'gi').test(s);
+}
+
+function getVal(s, i) {
+ var a = s.split(' ');
+
+ if (a.length > 1)
+ return a[i];
+
+ return "";
+}
+
+function setValue(f, n, v) {
+ if (f.elements[n].type == "text")
+ f.elements[n].value = v;
+ else
+ selectByValue(f, n, v, true, true);
+}
+
+function setupBox(f, ce, fp, pr, sf, b) {
+ if (typeof(b) == "undefined")
+ b = ['Top', 'Right', 'Bottom', 'Left'];
+
+ if (isSame(ce, pr, sf, b)) {
+ f.elements[fp + "_same"].checked = true;
+
+ setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+ f.elements[fp + "_top"].disabled = false;
+
+ f.elements[fp + "_right"].value = "";
+ f.elements[fp + "_right"].disabled = true;
+ f.elements[fp + "_bottom"].value = "";
+ f.elements[fp + "_bottom"].disabled = true;
+ f.elements[fp + "_left"].value = "";
+ f.elements[fp + "_left"].disabled = true;
+
+ if (f.elements[fp + "_top_measurement"]) {
+ selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+ f.elements[fp + "_left_measurement"].disabled = true;
+ f.elements[fp + "_bottom_measurement"].disabled = true;
+ f.elements[fp + "_right_measurement"].disabled = true;
+ }
+ } else {
+ f.elements[fp + "_same"].checked = false;
+
+ setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
+ f.elements[fp + "_top"].disabled = false;
+
+ setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
+ f.elements[fp + "_right"].disabled = false;
+
+ setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
+ f.elements[fp + "_bottom"].disabled = false;
+
+ setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
+ f.elements[fp + "_left"].disabled = false;
+
+ if (f.elements[fp + "_top_measurement"]) {
+ selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
+ selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
+ selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
+ selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
+ f.elements[fp + "_left_measurement"].disabled = false;
+ f.elements[fp + "_bottom_measurement"].disabled = false;
+ f.elements[fp + "_right_measurement"].disabled = false;
+ }
+ }
+}
+
+function isSame(e, pr, sf, b) {
+ var a = [], i, x;
+
+ if (typeof(b) == "undefined")
+ b = ['Top', 'Right', 'Bottom', 'Left'];
+
+ if (typeof(sf) == "undefined" || sf == null)
+ sf = "";
+
+ a[0] = e.style[pr + b[0] + sf];
+ a[1] = e.style[pr + b[1] + sf];
+ a[2] = e.style[pr + b[2] + sf];
+ a[3] = e.style[pr + b[3] + sf];
+
+ for (i=0; i<a.length; i++) {
+ if (a[i] == null)
+ return false;
+
+ for (x=0; x<a.length; x++) {
+ if (a[x] != a[i])
+ return false;
+ }
+ }
+
+ return true;
+};
+
+function hasEqualValues(a) {
+ var i, x;
+
+ for (i=0; i<a.length; i++) {
+ if (a[i] == null)
+ return false;
+
+ for (x=0; x<a.length; x++) {
+ if (a[x] != a[i])
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function applyAction() {
+ var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
+
+ generateCSS();
+
+ tinyMCEPopup.restoreSelection();
+ ed.dom.setAttrib(ed.selection.getNode(), 'style', tinyMCEPopup.editor.dom.serializeStyle(tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText)));
+}
+
+function updateAction() {
+ applyAction();
+ tinyMCEPopup.close();
+}
+
+function generateCSS() {
+ var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
+
+ ce.style.cssText = "";
+
+ // Build text styles
+ ce.style.fontFamily = f.text_font.value;
+ ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");
+ ce.style.fontStyle = f.text_style.value;
+ ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
+ ce.style.textTransform = f.text_case.value;
+ ce.style.fontWeight = f.text_weight.value;
+ ce.style.fontVariant = f.text_variant.value;
+ ce.style.color = f.text_color.value;
+
+ s = "";
+ s += f.text_underline.checked ? " underline" : "";
+ s += f.text_overline.checked ? " overline" : "";
+ s += f.text_linethrough.checked ? " line-through" : "";
+ s += f.text_blink.checked ? " blink" : "";
+ s = s.length > 0 ? s.substring(1) : s;
+
+ if (f.text_none.checked)
+ s = "none";
+
+ ce.style.textDecoration = s;
+
+ // Build background styles
+
+ ce.style.backgroundColor = f.background_color.value;
+ ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
+ ce.style.backgroundRepeat = f.background_repeat.value;
+ ce.style.backgroundAttachment = f.background_attachment.value;
+
+ if (f.background_hpos.value != "") {
+ s = "";
+ s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
+ s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
+ ce.style.backgroundPosition = s;
+ }
+
+ // Build block styles
+
+ ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
+ ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
+ ce.style.verticalAlign = f.block_vertical_alignment.value;
+ ce.style.textAlign = f.block_text_align.value;
+ ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
+ ce.style.whiteSpace = f.block_whitespace.value;
+ ce.style.display = f.block_display.value;
+
+ // Build box styles
+
+ ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
+ ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
+ ce.style.styleFloat = f.box_float.value;
+
+ if (tinymce.isGecko)
+ ce.style.cssFloat = f.box_float.value;
+
+ ce.style.clear = f.box_clear.value;
+
+ if (!f.box_padding_same.checked) {
+ ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
+ ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
+ ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
+ ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
+ } else
+ ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
+
+ if (!f.box_margin_same.checked) {
+ ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
+ ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
+ ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
+ ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
+ } else
+ ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
+
+ // Build border styles
+
+ if (!f.border_style_same.checked) {
+ ce.style.borderTopStyle = f.border_style_top.value;
+ ce.style.borderRightStyle = f.border_style_right.value;
+ ce.style.borderBottomStyle = f.border_style_bottom.value;
+ ce.style.borderLeftStyle = f.border_style_left.value;
+ } else
+ ce.style.borderStyle = f.border_style_top.value;
+
+ if (!f.border_width_same.checked) {
+ ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
+ ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
+ ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
+ ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
+ } else
+ ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
+
+ if (!f.border_color_same.checked) {
+ ce.style.borderTopColor = f.border_color_top.value;
+ ce.style.borderRightColor = f.border_color_right.value;
+ ce.style.borderBottomColor = f.border_color_bottom.value;
+ ce.style.borderLeftColor = f.border_color_left.value;
+ } else
+ ce.style.borderColor = f.border_color_top.value;
+
+ // Build list styles
+
+ ce.style.listStyleType = f.list_type.value;
+ ce.style.listStylePosition = f.list_position.value;
+ ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
+
+ // Build positioning styles
+
+ ce.style.position = f.positioning_type.value;
+ ce.style.visibility = f.positioning_visibility.value;
+
+ if (ce.style.width == "")
+ ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
+
+ if (ce.style.height == "")
+ ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
+
+ ce.style.zIndex = f.positioning_zindex.value;
+ ce.style.overflow = f.positioning_overflow.value;
+
+ if (!f.positioning_placement_same.checked) {
+ ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+ ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
+ ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
+ ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
+ } else {
+ s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
+ ce.style.top = s;
+ ce.style.right = s;
+ ce.style.bottom = s;
+ ce.style.left = s;
+ }
+
+ if (!f.positioning_clip_same.checked) {
+ s = "rect(";
+ s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
+ s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
+ s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
+ s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
+ s += ")";
+
+ if (s != "rect(auto auto auto auto)")
+ ce.style.clip = s;
+ } else {
+ s = "rect(";
+ t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
+ s += t + " ";
+ s += t + " ";
+ s += t + " ";
+ s += t + ")";
+
+ if (s != "rect(auto auto auto auto)")
+ ce.style.clip = s;
+ }
+
+ ce.style.cssText = ce.style.cssText;
+}
+
+function isNum(s) {
+ return new RegExp('[0-9]+', 'g').test(s);
+}
+
+function showDisabledControls() {
+ var f = document.forms, i, a;
+
+ for (i=0; i<f.length; i++) {
+ for (a=0; a<f[i].elements.length; a++) {
+ if (f[i].elements[a].disabled)
+ tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");
+ else
+ tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");
+ }
+ }
+}
+
+function fillSelect(f, s, param, dval, sep, em) {
+ var i, ar, p, se;
+
+ f = document.forms[f];
+ sep = typeof(sep) == "undefined" ? ";" : sep;
+
+ if (em)
+ addSelectValue(f, s, "", "");
+
+ ar = tinyMCEPopup.getParam(param, dval).split(sep);
+ for (i=0; i<ar.length; i++) {
+ se = false;
+
+ if (ar[i].charAt(0) == '+') {
+ ar[i] = ar[i].substring(1);
+ se = true;
+ }
+
+ p = ar[i].split('=');
+
+ if (p.length > 1) {
+ addSelectValue(f, s, p[0], p[1]);
+
+ if (se)
+ selectByValue(f, s, p[1]);
+ } else {
+ addSelectValue(f, s, p[0], p[0]);
+
+ if (se)
+ selectByValue(f, s, p[0]);
+ }
+ }
+}
+
+function toggleSame(ce, pre) {
+ var el = document.forms[0].elements, i;
+
+ if (ce.checked) {
+ el[pre + "_top"].disabled = false;
+ el[pre + "_right"].disabled = true;
+ el[pre + "_bottom"].disabled = true;
+ el[pre + "_left"].disabled = true;
+
+ if (el[pre + "_top_measurement"]) {
+ el[pre + "_top_measurement"].disabled = false;
+ el[pre + "_right_measurement"].disabled = true;
+ el[pre + "_bottom_measurement"].disabled = true;
+ el[pre + "_left_measurement"].disabled = true;
+ }
+ } else {
+ el[pre + "_top"].disabled = false;
+ el[pre + "_right"].disabled = false;
+ el[pre + "_bottom"].disabled = false;
+ el[pre + "_left"].disabled = false;
+
+ if (el[pre + "_top_measurement"]) {
+ el[pre + "_top_measurement"].disabled = false;
+ el[pre + "_right_measurement"].disabled = false;
+ el[pre + "_bottom_measurement"].disabled = false;
+ el[pre + "_left_measurement"].disabled = false;
+ }
+ }
+
+ showDisabledControls();
+}
+
+function synch(fr, to) {
+ var f = document.forms[0];
+
+ f.elements[to].value = f.elements[fr].value;
+
+ if (f.elements[fr + "_measurement"])
+ selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/style/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/style/langs/en_dlg.js new file mode 100644 index 000000000..5026313e2 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/langs/en_dlg.js @@ -0,0 +1,63 @@ +tinyMCE.addI18n('en.style_dlg',{
+title:"Edit CSS Style",
+apply:"Apply",
+text_tab:"Text",
+background_tab:"Background",
+block_tab:"Block",
+box_tab:"Box",
+border_tab:"Border",
+list_tab:"List",
+positioning_tab:"Positioning",
+text_props:"Text",
+text_font:"Font",
+text_size:"Size",
+text_weight:"Weight",
+text_style:"Style",
+text_variant:"Variant",
+text_lineheight:"Line height",
+text_case:"Case",
+text_color:"Color",
+text_decoration:"Decoration",
+text_overline:"overline",
+text_underline:"underline",
+text_striketrough:"strikethrough",
+text_blink:"blink",
+text_none:"none",
+background_color:"Background color",
+background_image:"Background image",
+background_repeat:"Repeat",
+background_attachment:"Attachment",
+background_hpos:"Horizontal position",
+background_vpos:"Vertical position",
+block_wordspacing:"Word spacing",
+block_letterspacing:"Letter spacing",
+block_vertical_alignment:"Vertical alignment",
+block_text_align:"Text align",
+block_text_indent:"Text indent",
+block_whitespace:"Whitespace",
+block_display:"Display",
+box_width:"Width",
+box_height:"Height",
+box_float:"Float",
+box_clear:"Clear",
+padding:"Padding",
+same:"Same for all",
+top:"Top",
+right:"Right",
+bottom:"Bottom",
+left:"Left",
+margin:"Margin",
+style:"Style",
+width:"Width",
+height:"Height",
+color:"Color",
+list_type:"Type",
+bullet_image:"Bullet image",
+position:"Position",
+positioning_type:"Type",
+visibility:"Visibility",
+zindex:"Z-index",
+overflow:"Overflow",
+placement:"Placement",
+clip:"Clip"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/style/props.htm b/plugins/TinyMCE/js/plugins/style/props.htm new file mode 100644 index 000000000..549ed0408 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/props.htm @@ -0,0 +1,723 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <title>{#style_dlg.title}</title> + <script type="text/javascript" src="../../tiny_mce_popup.js"></script> + <script type="text/javascript" src="../../utils/mctabs.js"></script> + <script type="text/javascript" src="../../utils/editable_selects.js"></script> + <script type="text/javascript" src="../../utils/form_utils.js"></script> + <script type="text/javascript" src="js/props.js"></script> + <link href="css/props.css" rel="stylesheet" type="text/css" /> +</head> + +<body id="styleprops" style="display: none"> +<form onsubmit="updateAction();return false;" action="#"> +<div class="tabs"> + <ul> + <li id="text_tab" class="current"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li> + <li id="background_tab"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li> + <li id="block_tab"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li> + <li id="box_tab"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li> + <li id="border_tab"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li> + <li id="list_tab"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li> + <li id="positioning_tab"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li> + </ul> +</div> + +<div class="panel_wrapper"> +<div id="text_panel" class="panel current"> + <table border="0" width="100%"> + <tr> + <td><label for="text_font">{#style_dlg.text_font}</label></td> + <td colspan="3"> + <select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select> + </td> + </tr> + <tr> + <td><label for="text_size">{#style_dlg.text_size}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td> + <td> </td> + <td><select id="text_size_measurement" name="text_size_measurement"></select></td> + </tr> + </table> + </td> + <td><label for="text_weight">{#style_dlg.text_weight}</label></td> + <td> + <select id="text_weight" name="text_weight"></select> + </td> + </tr> + <tr> + <td><label for="text_style">{#style_dlg.text_style}</label></td> + <td> + <select id="text_style" name="text_style" class="mceEditableSelect"></select> + </td> + <td><label for="text_variant">{#style_dlg.text_variant}</label></td> + <td> + <select id="text_variant" name="text_variant"></select> + </td> + </tr> + <tr> + <td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td> + <select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select> + </td> + <td> </td> + <td><select id="text_lineheight_measurement" name="text_lineheight_measurement"></select></td> + </tr> + </table> + </td> + <td><label for="text_case">{#style_dlg.text_case}</label></td> + <td> + <select id="text_case" name="text_case"></select> + </td> + </tr> + <tr> + <td><label for="text_color">{#style_dlg.text_color}</label></td> + <td colspan="2"> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><input id="text_color" name="text_color" type="text" value="" size="9" onChange="updateColor('text_color_pick','text_color');" /></td> + <td id="text_color_pickcontainer"> </td> + </tr> + </table> + </td> + </tr> + <tr> + <td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td> + <td colspan="2"> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td> + <td><label for="text_underline">{#style_dlg.text_underline}</label></td> + </tr> + <tr> + <td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td> + <td><label for="text_overline">{#style_dlg.text_overline}</label></td> + </tr> + <tr> + <td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td> + <td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td> + </tr> + <tr> + <td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td> + <td><label for="text_blink">{#style_dlg.text_blink}</label></td> + </tr> + <tr> + <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" /></td> + <td><label for="text_none">{#style_dlg.text_none}</label></td> + </tr> + </table> + </td> + </tr> + </table> +</div> + +<div id="background_panel" class="panel"> + <table border="0"> + <tr> + <td><label for="background_color">{#style_dlg.background_color}</label></td> + <td> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><input id="background_color" name="background_color" type="text" value="" size="9" onChange="updateColor('background_color_pick','background_color');" /></td> + <td id="background_color_pickcontainer"> </td> + </tr> + </table> + </td> + </tr> + + <tr> + <td><label for="background_image">{#style_dlg.background_image}</label></td> + <td><table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input id="background_image" name="background_image" type="text" /></td> + <td id="background_image_browser"> </td> + </tr> + </table> + </td> + </tr> + + <tr> + <td><label for="background_repeat">{#style_dlg.background_repeat}</label></td> + <td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="background_attachment">{#style_dlg.background_attachment}</label></td> + <td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="background_hpos">{#style_dlg.background_hpos}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td> + <td> </td> + <td><select id="background_hpos_measurement" name="background_hpos_measurement"></select></td> + </tr> + </table> + </td> + </tr> + + <tr> + <td><label for="background_vpos">{#style_dlg.background_vpos}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td> + <td> </td> + <td><select id="background_vpos_measurement" name="background_vpos_measurement"></select></td> + </tr> + </table> + </td> + </tr> + </table> +</div> + +<div id="block_panel" class="panel"> + <table border="0"> + <tr> + <td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td> + <td> </td> + <td><select id="block_wordspacing_measurement" name="block_wordspacing_measurement"></select></td> + </tr> + </table> + </td> + </tr> + + <tr> + <td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td> + <td> </td> + <td><select id="block_letterspacing_measurement" name="block_letterspacing_measurement"></select></td> + </tr> + </table> + </td> + </tr> + + <tr> + <td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td> + <td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="block_text_align">{#style_dlg.block_text_align}</label></td> + <td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="block_text_indent" name="block_text_indent" /></td> + <td> </td> + <td><select id="block_text_indent_measurement" name="block_text_indent_measurement"></select></td> + </tr> + </table> + </td> + </tr> + + <tr> + <td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td> + <td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="block_display">{#style_dlg.block_display}</label></td> + <td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td> + </tr> + </table> +</div> + +<div id="box_panel" class="panel"> +<table border="0"> + <tr> + <td><label for="box_width">{#style_dlg.box_width}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td> + <td> </td> + <td><select id="box_width_measurement" name="box_width_measurement"></select></td> + </tr> + </table> + </td> + <td> <label for="box_float">{#style_dlg.box_float}</label></td> + <td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="box_height">{#style_dlg.box_height}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td> + <td> </td> + <td><select id="box_height_measurement" name="box_height_measurement"></select></td> + </tr> + </table> + </td> + <td> <label for="box_clear">{#style_dlg.box_clear}</label></td> + <td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td> + </tr> +</table> +<div style="float: left; width: 49%"> + <fieldset> + <legend>{#style_dlg.padding}</legend> + + <table border="0"> + <tr> + <td> </td> + <td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td> + </tr> + <tr> + <td><label for="box_padding_top">{#style_dlg.top}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td> + <td> </td> + <td><select id="box_padding_top_measurement" name="box_padding_top_measurement"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><label for="box_padding_right">{#style_dlg.right}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td> + <td> </td> + <td><select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td> + <td> </td> + <td><select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><label for="box_padding_left">{#style_dlg.left}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td> + <td> </td> + <td><select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + </table> + </fieldset> +</div> + +<div style="float: right; width: 49%"> + <fieldset> + <legend>{#style_dlg.margin}</legend> + + <table border="0"> + <tr> + <td> </td> + <td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td> + </tr> + <tr> + <td><label for="box_margin_top">{#style_dlg.top}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td> + <td> </td> + <td><select id="box_margin_top_measurement" name="box_margin_top_measurement"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><label for="box_margin_right">{#style_dlg.right}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td> + <td> </td> + <td><select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td> + <td> </td> + <td><select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td><label for="box_margin_left">{#style_dlg.left}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td> + <td> </td> + <td><select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + </table> + </fieldset> +</div> +<br style="clear: both" /> +</div> + +<div id="border_panel" class="panel"> +<table border="0" cellspacing="0" cellpadding="0" width="100%"> +<tr> + <td class="tdelim"> </td> + <td class="tdelim delim"> </td> + <td class="tdelim">{#style_dlg.style}</td> + <td class="tdelim delim"> </td> + <td class="tdelim">{#style_dlg.width}</td> + <td class="tdelim delim"> </td> + <td class="tdelim">{#style_dlg.color}</td> +</tr> + +<tr> + <td> </td> + <td class="delim"> </td> + <td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td> + <td class="delim"> </td> + <td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td> + <td class="delim"> </td> + <td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td> +</tr> + +<tr> + <td>{#style_dlg.top}</td> + <td class="delim"> </td> + <td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td> + <td class="delim"> </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td> + <td> </td> + <td><select id="border_width_top_measurement" name="border_width_top_measurement"></select></td> + </tr> + </table> + </td> + <td class="delim"> </td> + <td> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onChange="updateColor('border_color_top_pick','border_color_top');" /></td> + <td id="border_color_top_pickcontainer"> </td> + </tr> + </table> + </td> +</tr> + +<tr> + <td>{#style_dlg.right}</td> + <td class="delim"> </td> + <td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td> + <td class="delim"> </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td> + <td> </td> + <td><select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + <td class="delim"> </td> + <td> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onChange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td> + <td id="border_color_right_pickcontainer"> </td> + </tr> + </table> + </td> +</tr> + +<tr> + <td>{#style_dlg.bottom}</td> + <td class="delim"> </td> + <td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td> + <td class="delim"> </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td> + <td> </td> + <td><select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + <td class="delim"> </td> + <td> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onChange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td> + <td id="border_color_bottom_pickcontainer"> </td> + </tr> + </table> + </td> +</tr> + +<tr> + <td>{#style_dlg.left}</td> + <td class="delim"> </td> + <td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td> + <td class="delim"> </td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td> + <td> </td> + <td><select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + <td class="delim"> </td> + <td> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onChange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td> + <td id="border_color_left_pickcontainer"> </td> + </tr> + </table> + </td> +</tr> +</table> +</div> + +<div id="list_panel" class="panel"> + <table border="0"> + <tr> + <td><label for="list_type">{#style_dlg.list_type}</label></td> + <td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td> + <td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td> + </tr> + + <tr> + <td><label for="list_position">{#style_dlg.position}</label></td> + <td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td> + </tr> + </table> +</div> + +<div id="positioning_panel" class="panel"> +<table border="0"> + <tr> + <td><label for="positioning_type">{#style_dlg.positioning_type}</label></td> + <td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td> + <td> <label for="positioning_visibility">{#style_dlg.visibility}</label></td> + <td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td> + </tr> + + <tr> + <td><label for="positioning_width">{#style_dlg.width}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td> + <td> </td> + <td><select id="positioning_width_measurement" name="positioning_width_measurement"></select></td> + </tr> + </table> + </td> + <td> <label for="positioning_zindex">{#style_dlg.zindex}</label></td> + <td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td> + </tr> + + <tr> + <td><label for="positioning_height">{#style_dlg.height}</label></td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td> + <td> </td> + <td><select id="positioning_height_measurement" name="positioning_height_measurement"></select></td> + </tr> + </table> + </td> + <td> <label for="positioning_overflow">{#style_dlg.overflow}</label></td> + <td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td> + </tr> +</table> + +<div style="float: left; width: 49%"> + <fieldset> + <legend>{#style_dlg.placement}</legend> + + <table border="0"> + <tr> + <td> </td> + <td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td> + </tr> + <tr> + <td>{#style_dlg.top}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td> + <td> </td> + <td><select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td>{#style_dlg.right}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td> + <td> </td> + <td><select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td>{#style_dlg.bottom}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td> + <td> </td> + <td><select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td>{#style_dlg.left}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td> + <td> </td> + <td><select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + </table> + </fieldset> +</div> + +<div style="float: right; width: 49%"> + <fieldset> + <legend>{#style_dlg.clip}</legend> + + <table border="0"> + <tr> + <td> </td> + <td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td> + </tr> + <tr> + <td>{#style_dlg.top}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td> + <td> </td> + <td><select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td>{#style_dlg.right}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td> + <td> </td> + <td><select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td>{#style_dlg.bottom}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td> + <td> </td> + <td><select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + <tr> + <td>{#style_dlg.left}</td> + <td> + <table border="0" cellspacing="0" cellpadding="0"> + <tr> + <td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td> + <td> </td> + <td><select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled"></select></td> + </tr> + </table> + </td> + </tr> + </table> + </fieldset> +</div> +<br style="clear: both" /> +</div> +</div> + +<div class="mceActionPanel"> + <input type="submit" id="insert" name="insert" value="{#update}" /> + <input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" /> + <input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" /> +</div> +</form> + +<div style="display: none"> + <div id="container"></div> +</div> + +</body> +</html> diff --git a/plugins/TinyMCE/js/plugins/tabfocus/editor_plugin.js b/plugins/TinyMCE/js/plugins/tabfocus/editor_plugin.js new file mode 100644 index 000000000..27d244022 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/tabfocus/editor_plugin.js @@ -0,0 +1 @@ +(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m<n.length;m++){if(n[m].type!="hidden"){return n[m]}}}else{for(m=j-1;m>=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/tabfocus/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/tabfocus/editor_plugin_src.js new file mode 100644 index 000000000..c2be2f40a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/tabfocus/editor_plugin_src.js @@ -0,0 +1,112 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;
+
+ tinymce.create('tinymce.plugins.TabFocusPlugin', {
+ init : function(ed, url) {
+ function tabCancel(ed, e) {
+ if (e.keyCode === 9)
+ return Event.cancel(e);
+ };
+
+ function tabHandler(ed, e) {
+ var x, i, f, el, v;
+
+ function find(d) {
+ f = DOM.getParent(ed.id, 'form');
+ el = f.elements;
+
+ if (f) {
+ each(el, function(e, i) {
+ if (e.id == ed.id) {
+ x = i;
+ return false;
+ }
+ });
+
+ if (d > 0) {
+ for (i = x + 1; i < el.length; i++) {
+ if (el[i].type != 'hidden')
+ return el[i];
+ }
+ } else {
+ for (i = x - 1; i >= 0; i--) {
+ if (el[i].type != 'hidden')
+ return el[i];
+ }
+ }
+ }
+
+ return null;
+ };
+
+ if (e.keyCode === 9) {
+ v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));
+
+ if (v.length == 1) {
+ v[1] = v[0];
+ v[0] = ':prev';
+ }
+
+ // Find element to focus
+ if (e.shiftKey) {
+ if (v[0] == ':prev')
+ el = find(-1);
+ else
+ el = DOM.get(v[0]);
+ } else {
+ if (v[1] == ':next')
+ el = find(1);
+ else
+ el = DOM.get(v[1]);
+ }
+
+ if (el) {
+ if (ed = tinymce.get(el.id || el.name))
+ ed.focus();
+ else
+ window.setTimeout(function() {window.focus();el.focus();}, 10);
+
+ return Event.cancel(e);
+ }
+ }
+ };
+
+ ed.onKeyUp.add(tabCancel);
+
+ if (tinymce.isGecko) {
+ ed.onKeyPress.add(tabHandler);
+ ed.onKeyDown.add(tabCancel);
+ } else
+ ed.onKeyDown.add(tabHandler);
+
+ ed.onInit.add(function() {
+ each(DOM.select('a:first,a:last', ed.getContainer()), function(n) {
+ Event.add(n, 'focus', function() {ed.focus();});
+ });
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Tabfocus',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/table/cell.htm b/plugins/TinyMCE/js/plugins/table/cell.htm new file mode 100644 index 000000000..d243e1d83 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/cell.htm @@ -0,0 +1,178 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#table_dlg.cell_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/cell.js"></script>
+ <link href="css/cell.css" rel="stylesheet" type="text/css" />
+</head>
+<body id="tablecell" style="display: none">
+ <form onsubmit="updateAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#table_dlg.general_props}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="align">{#table_dlg.align}</label></td>
+ <td>
+ <select id="align" name="align" class="mceFocus">
+ <option value="">{#not_set}</option>
+ <option value="center">{#table_dlg.align_middle}</option>
+ <option value="left">{#table_dlg.align_left}</option>
+ <option value="right">{#table_dlg.align_right}</option>
+ </select>
+ </td>
+
+ <td><label for="celltype">{#table_dlg.cell_type}</label></td>
+ <td>
+ <select id="celltype" name="celltype">
+ <option value="td">{#table_dlg.td}</option>
+ <option value="th">{#table_dlg.th}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="valign">{#table_dlg.valign}</label></td>
+ <td>
+ <select id="valign" name="valign">
+ <option value="">{#not_set}</option>
+ <option value="top">{#table_dlg.align_top}</option>
+ <option value="middle">{#table_dlg.align_middle}</option>
+ <option value="bottom">{#table_dlg.align_bottom}</option>
+ </select>
+ </td>
+
+ <td><label for="scope">{#table_dlg.scope}</label></td>
+ <td>
+ <select id="scope" name="scope">
+ <option value="">{#not_set}</option>
+ <option value="col">{#table.col}</option>
+ <option value="row">{#table.row}</option>
+ <option value="rowgroup">{#table_dlg.rowgroup}</option>
+ <option value="colgroup">{#table_dlg.colgroup}</option>
+ </select>
+ </td>
+
+ </tr>
+
+ <tr>
+ <td><label for="width">{#table_dlg.width}</label></td>
+ <td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+
+ <td><label for="height">{#table_dlg.height}</label></td>
+ <td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+ </tr>
+
+ <tr id="styleSelectRow">
+ <td><label for="class">{#class_name}</label></td>
+ <td colspan="3">
+ <select id="class" name="class" class="mceEditableSelect">
+ <option value="" selected="selected">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{#table_dlg.advanced_props}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td>
+ <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="style">{#table_dlg.style}</label></td>
+ <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" style="width: 200px">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#table_dlg.ltr}</option>
+ <option value="rtl">{#table_dlg.rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" style="width: 200px" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
+ <td id="backgroundimagebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
+ <td id="bordercolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div>
+ <select id="action" name="action">
+ <option value="cell">{#table_dlg.cell_cell}</option>
+ <option value="row">{#table_dlg.cell_row}</option>
+ <option value="all">{#table_dlg.cell_all}</option>
+ </select>
+ </div>
+
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/table/css/cell.css b/plugins/TinyMCE/js/plugins/table/css/cell.css new file mode 100644 index 000000000..a067ecdfe --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/css/cell.css @@ -0,0 +1,17 @@ +/* CSS file for cell dialog in the table plugin */
+
+.panel_wrapper div.current {
+ height: 200px;
+}
+
+.advfield {
+ width: 200px;
+}
+
+#action {
+ margin-bottom: 3px;
+}
+
+#class {
+ width: 150px;
+}
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/table/css/row.css b/plugins/TinyMCE/js/plugins/table/css/row.css new file mode 100644 index 000000000..1f7755daf --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/css/row.css @@ -0,0 +1,25 @@ +/* CSS file for row dialog in the table plugin */
+
+.panel_wrapper div.current {
+ height: 200px;
+}
+
+.advfield {
+ width: 200px;
+}
+
+#action {
+ margin-bottom: 3px;
+}
+
+#rowtype,#align,#valign,#class,#height {
+ width: 150px;
+}
+
+#height {
+ width: 50px;
+}
+
+.col2 {
+ padding-left: 20px;
+}
diff --git a/plugins/TinyMCE/js/plugins/table/css/table.css b/plugins/TinyMCE/js/plugins/table/css/table.css new file mode 100644 index 000000000..d11c3f69c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/css/table.css @@ -0,0 +1,13 @@ +/* CSS file for table dialog in the table plugin */
+
+.panel_wrapper div.current {
+ height: 245px;
+}
+
+.advfield {
+ width: 200px;
+}
+
+#class {
+ width: 150px;
+}
diff --git a/plugins/TinyMCE/js/plugins/table/editor_plugin.js b/plugins/TinyMCE/js/plugins/table/editor_plugin.js new file mode 100644 index 000000000..266d7d537 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/editor_plugin.js @@ -0,0 +1 @@ +(function(b){var c=b.each;function a(F,E,I){var e,J,B,n;r();n=E.getParent(I.getStart(),"th,td");if(n){J=D(n);B=G();n=v(J.x,J.y)}function w(L,K){L=L.cloneNode(K);L.removeAttribute("id");return L}function r(){var K=0;e=[];c(["thead","tbody","tfoot"],function(L){var M=E.select(L+" tr",F);c(M,function(N,O){O+=K;c(E.select("td,th",N),function(U,P){var Q,R,S,T;if(e[O]){while(e[O][P]){P++}}S=g(U,"rowspan");T=g(U,"colspan");for(R=O;R<O+S;R++){if(!e[R]){e[R]=[]}for(Q=P;Q<P+T;Q++){e[R][Q]={part:L,real:R==O&&Q==P,elm:U,rowspan:S,colspan:T}}}})});K+=M.length})}function v(K,M){var L;L=e[M];if(L){return L[K]}}function g(L,K){return parseInt(L.getAttribute(K)||1)}function h(K){return E.hasClass(K.elm,"mceSelected")||K==n}function j(){var K=[];c(F.rows,function(L){c(L.cells,function(M){if(E.hasClass(M,"mceSelected")||M==n.elm){K.push(L);return false}})});return K}function q(){var K=E.createRng();K.setStartAfter(F);K.setEndAfter(F);I.setRng(K);E.remove(F)}function d(K){var L;b.walk(K,function(N){var M;if(N.nodeType==3){c(E.getParents(N.parentNode,null,K).reverse(),function(O){O=w(O,false);if(!L){L=M=O}else{if(M){M.appendChild(O)}}M=O});if(M){M.innerHTML=b.isIE?" ":'<br _mce_bogus="1" />'}return false}},"childNodes");K=w(K,false);K.rowSpan=K.colSpan=1;if(L){K.appendChild(L)}else{if(!b.isIE){K.innerHTML='<br _mce_bogus="1" />'}}return K}function p(){var K=E.createRng();c(E.select("tr",F),function(L){if(L.cells.length==0){E.remove(L)}});if(E.select("tr",F).length==0){K.setStartAfter(F);K.setEndAfter(F);I.setRng(K);E.remove(F);return}c(E.select("thead,tbody,tfoot",F),function(L){if(L.rows.length==0){E.remove(L)}});r();row=e[Math.min(e.length-1,J.y)];if(row){I.select(row[Math.min(row.length-1,J.x)].elm,true);I.collapse(true)}}function s(Q,O,S,P){var N,L,K,M,R;N=e[O][Q].elm.parentNode;for(K=1;K<=S;K++){N=E.getNext(N,"tr");if(N){for(L=Q;L>=0;L--){R=e[O+K][L].elm;if(R.parentNode==N){for(M=1;M<=P;M++){E.insertAfter(d(R),R)}break}}if(L==-1){for(M=1;M<=P;M++){N.insertBefore(d(N.cells[0]),N.cells[0])}}}}}function A(){c(e,function(K,L){c(K,function(N,M){var Q,P,R,O;if(h(N)){N=N.elm;Q=g(N,"colspan");P=g(N,"rowspan");if(Q>1||P>1){N.colSpan=N.rowSpan=1;for(O=0;O<Q-1;O++){E.insertAfter(d(N),N)}s(M,L,P-1,Q)}}})})}function o(S,P,V){var N,M,U,T,R,O,Q,K,S,L;if(S){pos=D(S);N=pos.x;M=pos.y;U=N+(P-1);T=M+(V-1)}else{N=J.x;M=J.y;U=B.x;T=B.y}Q=v(N,M);K=v(U,T);if(Q&&K&&Q.part==K.part){A();r();Q=v(N,M).elm;Q.colSpan=(U-N)+1;Q.rowSpan=(T-M)+1;for(O=M;O<=T;O++){for(R=N;R<=U;R++){S=e[O][R].elm;if(S!=Q){L=b.grep(S.childNodes);c(L,function(X,W){if(X.nodeName!="BR"||W!=L.length-1){Q.appendChild(X)}});E.remove(S)}}}p()}}function k(N){var K,P,M,O,Q,R,L,S;c(e,function(T,U){c(T,function(W,V){if(h(W)){W=W.elm;Q=W.parentNode;R=w(Q,false);K=U;if(N){return false}}});if(N){return !K}});for(O=0;O<e[0].length;O++){P=e[K][O].elm;if(P!=M){if(!N){rowSpan=g(P,"rowspan");if(rowSpan>1){P.rowSpan=rowSpan+1;continue}}else{if(K>0&&e[K-1][O]){S=e[K-1][O].elm;rowSpan=g(S,"rowspan");if(rowSpan>1){S.rowSpan=rowSpan+1;continue}}}L=d(P);L.colSpan=P.colSpan;R.appendChild(L);M=P}}if(R.hasChildNodes()){if(!N){E.insertAfter(R,Q)}else{Q.parentNode.insertBefore(R,Q)}}}function f(L){var M,K;c(e,function(N,O){c(N,function(Q,P){if(h(Q)){M=P;if(L){return false}}});if(L){return !M}});c(e,function(Q,R){var N=Q[M].elm,O,P;if(N!=K){P=g(N,"colspan");O=g(N,"rowspan");if(P==1){if(!L){E.insertAfter(d(N),N);s(M,R,O-1,P)}else{N.parentNode.insertBefore(d(N),N);s(M,R,O-1,P)}}else{N.colSpan++}K=N}})}function m(){var K=[];c(e,function(L,M){c(L,function(O,N){if(h(O)&&b.inArray(K,N)===-1){c(e,function(R){var P=R[N].elm,Q;Q=g(P,"colspan");if(Q>1){P.colSpan=Q-1}else{E.remove(P)}});K.push(N)}})});p()}function l(){var L;function K(O){var N,P,M;N=E.getNext(O,"tr");c(O.cells,function(Q){var R=g(Q,"rowspan");if(R>1){Q.rowSpan=R-1;P=D(Q);s(P.x,P.y,1,1)}});P=D(O.cells[0]);c(e[P.y],function(Q){var R;Q=Q.elm;if(Q!=M){R=g(Q,"rowspan");if(R<=1){E.remove(Q)}else{Q.rowSpan=R-1}M=Q}})}L=j();c(L.reverse(),function(M){K(M)});p()}function C(){var K=j();E.remove(K);p();return K}function H(){var K=j();c(K,function(M,L){K[L]=w(M,true)});return K}function z(M,L){var N=j(),K=N[L?0:N.length-1],O=K.cells.length;c(e,function(Q){var P;O=0;c(Q,function(S,R){if(S.real){O+=S.colspan}if(S.elm.parentNode==K){P=1}});if(P){return false}});if(!L){M.reverse()}c(M,function(R){var Q=R.cells.length,P;for(i=0;i<Q;i++){P=R.cells[i];P.colSpan=P.rowSpan=1}for(i=Q;i<O;i++){R.appendChild(d(R.cells[Q-1]))}for(i=O;i<Q;i++){E.remove(R.cells[i])}if(L){K.parentNode.insertBefore(R,K)}else{E.insertAfter(R,K)}})}function D(K){var L;c(e,function(M,N){c(M,function(P,O){if(P.elm==K){L={x:O,y:N};return false}});return !L});return L}function u(K){J=D(K)}function G(){var M,L,K;L=K=0;c(e,function(N,O){c(N,function(Q,P){var S,R;if(h(Q)){Q=e[O][P];if(P>L){L=P}if(O>K){K=O}if(Q.real){S=Q.colspan-1;R=Q.rowspan-1;if(S){if(P+S>L){L=P+S}}if(R){if(O+R>K){K=O+R}}}}})});return{x:L,y:K}}function t(Q){var N,M,S,R,L,K,O,P;B=D(Q);if(J&&B){N=Math.min(J.x,B.x);M=Math.min(J.y,B.y);S=Math.max(J.x,B.x);R=Math.max(J.y,B.y);L=S;K=R;for(y=M;y<=K;y++){Q=e[y][N];if(!Q.real){if(N-(Q.colspan-1)<N){N-=Q.colspan-1}}}for(x=N;x<=L;x++){Q=e[M][x];if(!Q.real){if(M-(Q.rowspan-1)<M){M-=Q.rowspan-1}}}for(y=M;y<=R;y++){for(x=N;x<=S;x++){Q=e[y][x];if(Q.real){O=Q.colspan-1;P=Q.rowspan-1;if(O){if(x+O>L){L=x+O}}if(P){if(y+P>K){K=y+P}}}}}E.removeClass(E.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=M;y<=K;y++){for(x=N;x<=L;x++){E.addClass(e[y][x].elm,"mceSelected")}}}}b.extend(this,{deleteTable:q,split:A,merge:o,insertRow:k,insertCol:f,deleteCols:m,deleteRows:l,cutRows:C,copyRows:H,pasteRows:z,getPos:D,setStartCell:u,setEndCell:t})}b.create("tinymce.plugins.TablePlugin",{init:function(e,f){var d,j;function h(m){var l=e.selection,k=e.dom.getParent(m||l.getNode(),"table");if(k){return new a(k,e.dom,l)}}function g(){e.getBody().style.webkitUserSelect="";e.dom.removeClass(e.dom.select("td.mceSelected,th.mceSelected"),"mceSelected")}c([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(k){e.addButton(k[0],{title:k[1],cmd:k[2],ui:k[3]})});if(!b.isIE){e.onClick.add(function(k,l){l=l.target;if(l.nodeName==="TABLE"){k.selection.select(l)}})}e.onNodeChange.add(function(l,k,o){var m;o=l.selection.getStart();m=l.dom.getParent(o,"td,th,caption");k.setActive("table",o.nodeName==="TABLE"||!!m);if(m&&m.nodeName==="CAPTION"){m=0}k.setDisabled("delete_table",!m);k.setDisabled("delete_col",!m);k.setDisabled("delete_table",!m);k.setDisabled("delete_row",!m);k.setDisabled("col_after",!m);k.setDisabled("col_before",!m);k.setDisabled("row_after",!m);k.setDisabled("row_before",!m);k.setDisabled("row_props",!m);k.setDisabled("cell_props",!m);k.setDisabled("split_cells",!m);k.setDisabled("merge_cells",!m)});e.onInit.add(function(l){var k,o,p=l.dom,m;d=l.windowManager;l.onMouseDown.add(function(q,r){if(r.button!=2){g();o=p.getParent(r.target,"td,th");k=p.getParent(o,"table")}});p.bind(l.getDoc(),"mouseover",function(t){var r,q,s=t.target;if(o&&(m||s!=o)&&(s.nodeName=="TD"||s.nodeName=="TH")){q=p.getParent(s,"table");if(q==k){if(!m){m=h(q);m.setStartCell(o);l.getBody().style.webkitUserSelect="none"}m.setEndCell(s)}r=l.selection.getSel();if(r.removeAllRanges){r.removeAllRanges()}else{r.empty()}t.preventDefault()}});l.onMouseUp.add(function(z,A){var r,t=z.selection,B,C=t.getSel(),q,u,s,w;if(o){if(m){z.getBody().style.webkitUserSelect=""}function v(D,F){var E=new b.dom.TreeWalker(D,D);do{if(D.nodeType==3&&b.trim(D.nodeValue).length!=0){if(F){r.setStart(D,0)}else{r.setEnd(D,D.nodeValue.length)}return}if(D.nodeName=="BR"){if(F){r.setStartBefore(D)}else{r.setEndBefore(D)}return}}while(D=(F?E.next():E.prev()))}B=p.select("td.mceSelected,th.mceSelected");if(B.length>0){r=p.createRng();u=B[0];w=B[B.length-1];v(u,1);q=new b.dom.TreeWalker(u,p.getParent(B[0],"table"));do{if(u.nodeName=="TD"||u.nodeName=="TH"){if(!p.hasClass(u,"mceSelected")){break}s=u}}while(u=q.next());v(s);t.setRng(r)}z.nodeChanged();o=m=k=null}});l.onKeyUp.add(function(q,r){g()});if(l&&l.plugins.contextmenu){l.plugins.contextmenu.onContextMenu.add(function(s,q,u){var v,t=l.selection,r=t.getNode()||l.getBody();if(l.dom.getParent(u,"td")||l.dom.getParent(u,"th")||l.dom.select("td.mceSelected,th.mceSelected").length){q.removeAll();if(r.nodeName=="A"&&!l.dom.getAttrib(r,"name")){q.add({title:"advanced.link_desc",icon:"link",cmd:l.plugins.advlink?"mceAdvLink":"mceLink",ui:true});q.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});q.addSeparator()}if(r.nodeName=="IMG"&&r.className.indexOf("mceItem")==-1){q.add({title:"advanced.image_desc",icon:"image",cmd:l.plugins.advimage?"mceAdvImage":"mceImage",ui:true});q.addSeparator()}q.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});q.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});q.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});q.addSeparator();v=q.addMenu({title:"table.cell"});v.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});v.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});v.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});v=q.addMenu({title:"table.row"});v.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});v.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});v.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});v.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});v.addSeparator();v.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});v.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});v.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!j);v.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!j);v=q.addMenu({title:"table.col"});v.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});v.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});v.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{q.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(!b.isIE){function n(){var q;for(q=l.getBody().lastChild;q&&q.nodeType==3&&!q.nodeValue.length;q=q.previousSibling){}if(q&&q.nodeName=="TABLE"){l.dom.add(l.getBody(),"p",null,'<br mce_bogus="1" />')}}if(b.isGecko){l.onKeyDown.add(function(r,t){var q,s,u=r.dom;if(t.keyCode==37||t.keyCode==38){q=r.selection.getRng();s=u.getParent(q.startContainer,"table");if(s&&r.getBody().firstChild==s){if(isAtStart(q,s)){q=u.createRng();q.setStartBefore(s);q.setEndBefore(s);r.selection.setRng(q);t.preventDefault()}}}})}l.onKeyUp.add(n);l.onSetContent.add(n);l.onVisualAid.add(n);l.onPreProcess.add(function(q,s){var r=s.node.lastChild;if(r&&r.childNodes.length==1&&r.firstChild.nodeName=="BR"){q.dom.remove(r)}});n()}});c({mceTableSplitCells:function(k){k.split()},mceTableMergeCells:function(l){var m,n,k;k=e.dom.getParent(e.selection.getNode(),"th,td");if(k){m=k.rowSpan;n=k.colSpan}if(!e.dom.select("td.mceSelected,th.mceSelected").length){d.open({url:f+"/merge_cells.htm",width:240+parseInt(e.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(e.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:m,cols:n,onaction:function(o){l.merge(k,o.cols,o.rows)},plugin_url:f})}else{l.merge()}},mceTableInsertRowBefore:function(k){k.insertRow(true)},mceTableInsertRowAfter:function(k){k.insertRow()},mceTableInsertColBefore:function(k){k.insertCol(true)},mceTableInsertColAfter:function(k){k.insertCol()},mceTableDeleteCol:function(k){k.deleteCols()},mceTableDeleteRow:function(k){k.deleteRows()},mceTableCutRow:function(k){j=k.cutRows()},mceTableCopyRow:function(k){j=k.copyRows()},mceTablePasteRowBefore:function(k){k.pasteRows(j,true)},mceTablePasteRowAfter:function(k){k.pasteRows(j)},mceTableDelete:function(k){k.deleteTable()}},function(l,k){e.addCommand(k,function(){var m=h();if(m){l(m);e.execCommand("mceRepaint");g()}})});c({mceInsertTable:function(k){d.open({url:f+"/table.htm",width:400+parseInt(e.getLang("table.table_delta_width",0)),height:320+parseInt(e.getLang("table.table_delta_height",0)),inline:1},{plugin_url:f,action:k?k.action:0})},mceTableRowProps:function(){d.open({url:f+"/row.htm",width:400+parseInt(e.getLang("table.rowprops_delta_width",0)),height:295+parseInt(e.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:f})},mceTableCellProps:function(){d.open({url:f+"/cell.htm",width:400+parseInt(e.getLang("table.cellprops_delta_width",0)),height:295+parseInt(e.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:f})}},function(l,k){e.addCommand(k,function(m,n){l(n)})})}});b.PluginManager.add("table",b.plugins.TablePlugin)})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/table/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/table/editor_plugin_src.js new file mode 100644 index 000000000..c2f307f04 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/editor_plugin_src.js @@ -0,0 +1,1125 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function(tinymce) {
+ var each = tinymce.each;
+
+ /**
+ * Table Grid class.
+ */
+ function TableGrid(table, dom, selection) {
+ var grid, startPos, endPos, selectedCell;
+
+ buildGrid();
+ selectedCell = dom.getParent(selection.getStart(), 'th,td');
+ if (selectedCell) {
+ startPos = getPos(selectedCell);
+ endPos = findEndPos();
+ selectedCell = getCell(startPos.x, startPos.y);
+ }
+
+ function cloneNode(node, children) {
+ node = node.cloneNode(children);
+ node.removeAttribute('id');
+
+ return node;
+ }
+
+ function buildGrid() {
+ var startY = 0;
+
+ grid = [];
+
+ each(['thead', 'tbody', 'tfoot'], function(part) {
+ var rows = dom.select(part + ' tr', table);
+
+ each(rows, function(tr, y) {
+ y += startY;
+
+ each(dom.select('td,th', tr), function(td, x) {
+ var x2, y2, rowspan, colspan;
+
+ // Skip over existing cells produced by rowspan
+ if (grid[y]) {
+ while (grid[y][x])
+ x++;
+ }
+
+ // Get col/rowspan from cell
+ rowspan = getSpanVal(td, 'rowspan');
+ colspan = getSpanVal(td, 'colspan');
+
+ // Fill out rowspan/colspan right and down
+ for (y2 = y; y2 < y + rowspan; y2++) {
+ if (!grid[y2])
+ grid[y2] = [];
+
+ for (x2 = x; x2 < x + colspan; x2++) {
+ grid[y2][x2] = {
+ part : part,
+ real : y2 == y && x2 == x,
+ elm : td,
+ rowspan : rowspan,
+ colspan : colspan
+ };
+ }
+ }
+ });
+ });
+
+ startY += rows.length;
+ });
+ };
+
+ function getCell(x, y) {
+ var row;
+
+ row = grid[y];
+ if (row)
+ return row[x];
+ };
+
+ function getSpanVal(td, name) {
+ return parseInt(td.getAttribute(name) || 1);
+ };
+
+ function isCellSelected(cell) {
+ return dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell;
+ };
+
+ function getSelectedRows() {
+ var rows = [];
+
+ each(table.rows, function(row) {
+ each(row.cells, function(cell) {
+ if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) {
+ rows.push(row);
+ return false;
+ }
+ });
+ });
+
+ return rows;
+ };
+
+ function deleteTable() {
+ var rng = dom.createRng();
+
+ rng.setStartAfter(table);
+ rng.setEndAfter(table);
+
+ selection.setRng(rng);
+
+ dom.remove(table);
+ };
+
+ function cloneCell(cell) {
+ var formatNode;
+
+ // Clone formats
+ tinymce.walk(cell, function(node) {
+ var curNode;
+
+ if (node.nodeType == 3) {
+ each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) {
+ node = cloneNode(node, false);
+
+ if (!formatNode)
+ formatNode = curNode = node;
+ else if (curNode)
+ curNode.appendChild(node);
+
+ curNode = node;
+ });
+
+ // Add something to the inner node
+ if (curNode)
+ curNode.innerHTML = tinymce.isIE ? ' ' : '<br _mce_bogus="1" />';
+
+ return false;
+ }
+ }, 'childNodes');
+
+ cell = cloneNode(cell, false);
+ cell.rowSpan = cell.colSpan = 1;
+
+ if (formatNode) {
+ cell.appendChild(formatNode);
+ } else {
+ if (!tinymce.isIE)
+ cell.innerHTML = '<br _mce_bogus="1" />';
+ }
+
+ return cell;
+ };
+
+ function cleanup() {
+ var rng = dom.createRng();
+
+ // Empty rows
+ each(dom.select('tr', table), function(tr) {
+ if (tr.cells.length == 0)
+ dom.remove(tr);
+ });
+
+ // Empty table
+ if (dom.select('tr', table).length == 0) {
+ rng.setStartAfter(table);
+ rng.setEndAfter(table);
+ selection.setRng(rng);
+ dom.remove(table);
+ return;
+ }
+
+ // Empty header/body/footer
+ each(dom.select('thead,tbody,tfoot', table), function(part) {
+ if (part.rows.length == 0)
+ dom.remove(part);
+ });
+
+ // Restore selection to start position if it still exists
+ buildGrid();
+
+ // Restore the selection to the closest table position
+ row = grid[Math.min(grid.length - 1, startPos.y)];
+ if (row) {
+ selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true);
+ selection.collapse(true);
+ }
+ };
+
+ function fillLeftDown(x, y, rows, cols) {
+ var tr, x2, r, c, cell;
+
+ tr = grid[y][x].elm.parentNode;
+ for (r = 1; r <= rows; r++) {
+ tr = dom.getNext(tr, 'tr');
+
+ if (tr) {
+ // Loop left to find real cell
+ for (x2 = x; x2 >= 0; x2--) {
+ cell = grid[y + r][x2].elm;
+
+ if (cell.parentNode == tr) {
+ // Append clones after
+ for (c = 1; c <= cols; c++)
+ dom.insertAfter(cloneCell(cell), cell);
+
+ break;
+ }
+ }
+
+ if (x2 == -1) {
+ // Insert nodes before first cell
+ for (c = 1; c <= cols; c++)
+ tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]);
+ }
+ }
+ }
+ };
+
+ function split() {
+ each(grid, function(row, y) {
+ each(row, function(cell, x) {
+ var colSpan, rowSpan, newCell, i;
+
+ if (isCellSelected(cell)) {
+ cell = cell.elm;
+ colSpan = getSpanVal(cell, 'colspan');
+ rowSpan = getSpanVal(cell, 'rowspan');
+
+ if (colSpan > 1 || rowSpan > 1) {
+ cell.colSpan = cell.rowSpan = 1;
+
+ // Insert cells right
+ for (i = 0; i < colSpan - 1; i++)
+ dom.insertAfter(cloneCell(cell), cell);
+
+ fillLeftDown(x, y, rowSpan - 1, colSpan);
+ }
+ }
+ });
+ });
+ };
+
+ function merge(cell, cols, rows) {
+ var startX, startY, endX, endY, x, y, startCell, endCell, cell, children;
+
+ // Use specified cell and cols/rows
+ if (cell) {
+ pos = getPos(cell);
+ startX = pos.x;
+ startY = pos.y;
+ endX = startX + (cols - 1);
+ endY = startY + (rows - 1);
+ } else {
+ // Use selection
+ startX = startPos.x;
+ startY = startPos.y;
+ endX = endPos.x;
+ endY = endPos.y;
+ }
+
+ // Find start/end cells
+ startCell = getCell(startX, startY);
+ endCell = getCell(endX, endY);
+
+ // Check if the cells exists and if they are of the same part for example tbody = tbody
+ if (startCell && endCell && startCell.part == endCell.part) {
+ // Split and rebuild grid
+ split();
+ buildGrid();
+
+ // Set row/col span to start cell
+ startCell = getCell(startX, startY).elm;
+ startCell.colSpan = (endX - startX) + 1;
+ startCell.rowSpan = (endY - startY) + 1;
+
+ // Remove other cells and add it's contents to the start cell
+ for (y = startY; y <= endY; y++) {
+ for (x = startX; x <= endX; x++) {
+ cell = grid[y][x].elm;
+
+ if (cell != startCell) {
+ // Move children to startCell
+ children = tinymce.grep(cell.childNodes);
+ each(children, function(node, i) {
+ // Jump over last BR element
+ if (node.nodeName != 'BR' || i != children.length - 1)
+ startCell.appendChild(node);
+ });
+
+ // Remove cell
+ dom.remove(cell);
+ }
+ }
+ }
+
+ // Remove empty rows etc and restore caret location
+ cleanup();
+ }
+ };
+
+ function insertRow(before) {
+ var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell;
+
+ // Find first/last row
+ each(grid, function(row, y) {
+ each(row, function(cell, x) {
+ if (isCellSelected(cell)) {
+ cell = cell.elm;
+ rowElm = cell.parentNode;
+ newRow = cloneNode(rowElm, false);
+ posY = y;
+
+ if (before)
+ return false;
+ }
+ });
+
+ if (before)
+ return !posY;
+ });
+
+ for (x = 0; x < grid[0].length; x++) {
+ cell = grid[posY][x].elm;
+
+ if (cell != lastCell) {
+ if (!before) {
+ rowSpan = getSpanVal(cell, 'rowspan');
+ if (rowSpan > 1) {
+ cell.rowSpan = rowSpan + 1;
+ continue;
+ }
+ } else {
+ // Check if cell above can be expanded
+ if (posY > 0 && grid[posY - 1][x]) {
+ otherCell = grid[posY - 1][x].elm;
+ rowSpan = getSpanVal(otherCell, 'rowspan');
+ if (rowSpan > 1) {
+ otherCell.rowSpan = rowSpan + 1;
+ continue;
+ }
+ }
+ }
+
+ // Insert new cell into new row
+ newCell = cloneCell(cell)
+ newCell.colSpan = cell.colSpan;
+ newRow.appendChild(newCell);
+
+ lastCell = cell;
+ }
+ }
+
+ if (newRow.hasChildNodes()) {
+ if (!before)
+ dom.insertAfter(newRow, rowElm);
+ else
+ rowElm.parentNode.insertBefore(newRow, rowElm);
+ }
+ };
+
+ function insertCol(before) {
+ var posX, lastCell;
+
+ // Find first/last column
+ each(grid, function(row, y) {
+ each(row, function(cell, x) {
+ if (isCellSelected(cell)) {
+ posX = x;
+
+ if (before)
+ return false;
+ }
+ });
+
+ if (before)
+ return !posX;
+ });
+
+ each(grid, function(row, y) {
+ var cell = row[posX].elm, rowSpan, colSpan;
+
+ if (cell != lastCell) {
+ colSpan = getSpanVal(cell, 'colspan');
+ rowSpan = getSpanVal(cell, 'rowspan');
+
+ if (colSpan == 1) {
+ if (!before) {
+ dom.insertAfter(cloneCell(cell), cell);
+ fillLeftDown(posX, y, rowSpan - 1, colSpan);
+ } else {
+ cell.parentNode.insertBefore(cloneCell(cell), cell);
+ fillLeftDown(posX, y, rowSpan - 1, colSpan);
+ }
+ } else
+ cell.colSpan++;
+
+ lastCell = cell;
+ }
+ });
+ };
+
+ function deleteCols() {
+ var cols = [];
+
+ // Get selected column indexes
+ each(grid, function(row, y) {
+ each(row, function(cell, x) {
+ if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) {
+ each(grid, function(row) {
+ var cell = row[x].elm, colSpan;
+
+ colSpan = getSpanVal(cell, 'colspan');
+
+ if (colSpan > 1)
+ cell.colSpan = colSpan - 1;
+ else
+ dom.remove(cell);
+ });
+
+ cols.push(x);
+ }
+ });
+ });
+
+ cleanup();
+ };
+
+ function deleteRows() {
+ var rows;
+
+ function deleteRow(tr) {
+ var nextTr, pos, lastCell;
+
+ nextTr = dom.getNext(tr, 'tr');
+
+ // Move down row spanned cells
+ each(tr.cells, function(cell) {
+ var rowSpan = getSpanVal(cell, 'rowspan');
+
+ if (rowSpan > 1) {
+ cell.rowSpan = rowSpan - 1;
+ pos = getPos(cell);
+ fillLeftDown(pos.x, pos.y, 1, 1);
+ }
+ });
+
+ // Delete cells
+ pos = getPos(tr.cells[0]);
+ each(grid[pos.y], function(cell) {
+ var rowSpan;
+
+ cell = cell.elm;
+
+ if (cell != lastCell) {
+ rowSpan = getSpanVal(cell, 'rowspan');
+
+ if (rowSpan <= 1)
+ dom.remove(cell);
+ else
+ cell.rowSpan = rowSpan - 1;
+
+ lastCell = cell;
+ }
+ });
+ };
+
+ // Get selected rows and move selection out of scope
+ rows = getSelectedRows();
+
+ // Delete all selected rows
+ each(rows.reverse(), function(tr) {
+ deleteRow(tr);
+ });
+
+ cleanup();
+ };
+
+ function cutRows() {
+ var rows = getSelectedRows();
+
+ dom.remove(rows);
+ cleanup();
+
+ return rows;
+ };
+
+ function copyRows() {
+ var rows = getSelectedRows();
+
+ each(rows, function(row, i) {
+ rows[i] = cloneNode(row, true);
+ });
+
+ return rows;
+ };
+
+ function pasteRows(rows, before) {
+ var selectedRows = getSelectedRows(),
+ targetRow = selectedRows[before ? 0 : selectedRows.length - 1],
+ targetCellCount = targetRow.cells.length;
+
+ // Calc target cell count
+ each(grid, function(row) {
+ var match;
+
+ targetCellCount = 0;
+ each(row, function(cell, x) {
+ if (cell.real)
+ targetCellCount += cell.colspan;
+
+ if (cell.elm.parentNode == targetRow)
+ match = 1;
+ });
+
+ if (match)
+ return false;
+ });
+
+ if (!before)
+ rows.reverse();
+
+ each(rows, function(row) {
+ var cellCount = row.cells.length, cell;
+
+ // Remove col/rowspans
+ for (i = 0; i < cellCount; i++) {
+ cell = row.cells[i];
+ cell.colSpan = cell.rowSpan = 1;
+ }
+
+ // Needs more cells
+ for (i = cellCount; i < targetCellCount; i++)
+ row.appendChild(cloneCell(row.cells[cellCount - 1]));
+
+ // Needs less cells
+ for (i = targetCellCount; i < cellCount; i++)
+ dom.remove(row.cells[i]);
+
+ // Add before/after
+ if (before)
+ targetRow.parentNode.insertBefore(row, targetRow);
+ else
+ dom.insertAfter(row, targetRow);
+ });
+ };
+
+ function getPos(target) {
+ var pos;
+
+ each(grid, function(row, y) {
+ each(row, function(cell, x) {
+ if (cell.elm == target) {
+ pos = {x : x, y : y};
+ return false;
+ }
+ });
+
+ return !pos;
+ });
+
+ return pos;
+ };
+
+ function setStartCell(cell) {
+ startPos = getPos(cell);
+ };
+
+ function findEndPos() {
+ var pos, maxX, maxY;
+
+ maxX = maxY = 0;
+
+ each(grid, function(row, y) {
+ each(row, function(cell, x) {
+ var colSpan, rowSpan;
+
+ if (isCellSelected(cell)) {
+ cell = grid[y][x];
+
+ if (x > maxX)
+ maxX = x;
+
+ if (y > maxY)
+ maxY = y;
+
+ if (cell.real) {
+ colSpan = cell.colspan - 1;
+ rowSpan = cell.rowspan - 1;
+
+ if (colSpan) {
+ if (x + colSpan > maxX)
+ maxX = x + colSpan;
+ }
+
+ if (rowSpan) {
+ if (y + rowSpan > maxY)
+ maxY = y + rowSpan;
+ }
+ }
+ }
+ });
+ });
+
+ return {x : maxX, y : maxY};
+ };
+
+ function setEndCell(cell) {
+ var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan;
+
+ endPos = getPos(cell);
+
+ if (startPos && endPos) {
+ // Get start/end positions
+ startX = Math.min(startPos.x, endPos.x);
+ startY = Math.min(startPos.y, endPos.y);
+ endX = Math.max(startPos.x, endPos.x);
+ endY = Math.max(startPos.y, endPos.y);
+
+ // Expand end positon to include spans
+ maxX = endX;
+ maxY = endY;
+
+ // Expand startX
+ for (y = startY; y <= maxY; y++) {
+ cell = grid[y][startX];
+
+ if (!cell.real) {
+ if (startX - (cell.colspan - 1) < startX)
+ startX -= cell.colspan - 1;
+ }
+ }
+
+ // Expand startY
+ for (x = startX; x <= maxX; x++) {
+ cell = grid[startY][x];
+
+ if (!cell.real) {
+ if (startY - (cell.rowspan - 1) < startY)
+ startY -= cell.rowspan - 1;
+ }
+ }
+
+ // Find max X, Y
+ for (y = startY; y <= endY; y++) {
+ for (x = startX; x <= endX; x++) {
+ cell = grid[y][x];
+
+ if (cell.real) {
+ colSpan = cell.colspan - 1;
+ rowSpan = cell.rowspan - 1;
+
+ if (colSpan) {
+ if (x + colSpan > maxX)
+ maxX = x + colSpan;
+ }
+
+ if (rowSpan) {
+ if (y + rowSpan > maxY)
+ maxY = y + rowSpan;
+ }
+ }
+ }
+ }
+
+ // Remove current selection
+ dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
+
+ // Add new selection
+ for (y = startY; y <= maxY; y++) {
+ for (x = startX; x <= maxX; x++)
+ dom.addClass(grid[y][x].elm, 'mceSelected');
+ }
+ }
+ };
+
+ // Expose to public
+ tinymce.extend(this, {
+ deleteTable : deleteTable,
+ split : split,
+ merge : merge,
+ insertRow : insertRow,
+ insertCol : insertCol,
+ deleteCols : deleteCols,
+ deleteRows : deleteRows,
+ cutRows : cutRows,
+ copyRows : copyRows,
+ pasteRows : pasteRows,
+ getPos : getPos,
+ setStartCell : setStartCell,
+ setEndCell : setEndCell
+ });
+ };
+
+ tinymce.create('tinymce.plugins.TablePlugin', {
+ init : function(ed, url) {
+ var winMan, clipboardRows;
+
+ function createTableGrid(node) {
+ var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table');
+
+ if (tblElm)
+ return new TableGrid(tblElm, ed.dom, selection);
+ };
+
+ function cleanup() {
+ // Restore selection possibilities
+ ed.getBody().style.webkitUserSelect = '';
+ ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
+ };
+
+ // Register buttons
+ each([
+ ['table', 'table.desc', 'mceInsertTable', true],
+ ['delete_table', 'table.del', 'mceTableDelete'],
+ ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],
+ ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],
+ ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],
+ ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],
+ ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],
+ ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],
+ ['row_props', 'table.row_desc', 'mceTableRowProps', true],
+ ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],
+ ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],
+ ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]
+ ], function(c) {
+ ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});
+ });
+
+ // Select whole table is a table border is clicked
+ if (!tinymce.isIE) {
+ ed.onClick.add(function(ed, e) {
+ e = e.target;
+
+ if (e.nodeName === 'TABLE')
+ ed.selection.select(e);
+ });
+ }
+
+ // Handle node change updates
+ ed.onNodeChange.add(function(ed, cm, n) {
+ var p;
+
+ n = ed.selection.getStart();
+ p = ed.dom.getParent(n, 'td,th,caption');
+ cm.setActive('table', n.nodeName === 'TABLE' || !!p);
+
+ // Disable table tools if we are in caption
+ if (p && p.nodeName === 'CAPTION')
+ p = 0;
+
+ cm.setDisabled('delete_table', !p);
+ cm.setDisabled('delete_col', !p);
+ cm.setDisabled('delete_table', !p);
+ cm.setDisabled('delete_row', !p);
+ cm.setDisabled('col_after', !p);
+ cm.setDisabled('col_before', !p);
+ cm.setDisabled('row_after', !p);
+ cm.setDisabled('row_before', !p);
+ cm.setDisabled('row_props', !p);
+ cm.setDisabled('cell_props', !p);
+ cm.setDisabled('split_cells', !p);
+ cm.setDisabled('merge_cells', !p);
+ });
+
+ ed.onInit.add(function(ed) {
+ var startTable, startCell, dom = ed.dom, tableGrid;
+
+ winMan = ed.windowManager;
+
+ // Add cell selection logic
+ ed.onMouseDown.add(function(ed, e) {
+ if (e.button != 2) {
+ cleanup();
+
+ startCell = dom.getParent(e.target, 'td,th');
+ startTable = dom.getParent(startCell, 'table');
+ }
+ });
+
+ dom.bind(ed.getDoc(), 'mouseover', function(e) {
+ var sel, table, target = e.target;
+
+ if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) {
+ table = dom.getParent(target, 'table');
+ if (table == startTable) {
+ if (!tableGrid) {
+ tableGrid = createTableGrid(table);
+ tableGrid.setStartCell(startCell);
+
+ ed.getBody().style.webkitUserSelect = 'none';
+ }
+
+ tableGrid.setEndCell(target);
+ }
+
+ // Remove current selection
+ sel = ed.selection.getSel();
+
+ if (sel.removeAllRanges)
+ sel.removeAllRanges();
+ else
+ sel.empty();
+
+ e.preventDefault();
+ }
+ });
+
+ ed.onMouseUp.add(function(ed, e) {
+ var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode;
+
+ // Move selection to startCell
+ if (startCell) {
+ if (tableGrid)
+ ed.getBody().style.webkitUserSelect = '';
+
+ function setPoint(node, start) {
+ var walker = new tinymce.dom.TreeWalker(node, node);
+
+ do {
+ // Text node
+ if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {
+ if (start)
+ rng.setStart(node, 0);
+ else
+ rng.setEnd(node, node.nodeValue.length);
+
+ return;
+ }
+
+ // BR element
+ if (node.nodeName == 'BR') {
+ if (start)
+ rng.setStartBefore(node);
+ else
+ rng.setEndBefore(node);
+
+ return;
+ }
+ } while (node = (start ? walker.next() : walker.prev()));
+ };
+
+ // Try to expand text selection as much as we can only Gecko supports cell selection
+ selectedCells = dom.select('td.mceSelected,th.mceSelected');
+ if (selectedCells.length > 0) {
+ rng = dom.createRng();
+ node = selectedCells[0];
+ endNode = selectedCells[selectedCells.length - 1];
+
+ setPoint(node, 1);
+ walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table'));
+
+ do {
+ if (node.nodeName == 'TD' || node.nodeName == 'TH') {
+ if (!dom.hasClass(node, 'mceSelected'))
+ break;
+
+ lastNode = node;
+ }
+ } while (node = walker.next());
+
+ setPoint(lastNode);
+
+ sel.setRng(rng);
+ }
+
+ ed.nodeChanged();
+ startCell = tableGrid = startTable = null;
+ }
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ cleanup();
+ });
+
+ // Add context menu
+ if (ed && ed.plugins.contextmenu) {
+ ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
+ var sm, se = ed.selection, el = se.getNode() || ed.getBody();
+
+ if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) {
+ m.removeAll();
+
+ if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {
+ m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
+ m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
+ m.addSeparator();
+ }
+
+ if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {
+ m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
+ m.addSeparator();
+ }
+
+ m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}});
+ m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'});
+ m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'});
+ m.addSeparator();
+
+ // Cell menu
+ sm = m.addMenu({title : 'table.cell'});
+ sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'});
+ sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'});
+ sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'});
+
+ // Row menu
+ sm = m.addMenu({title : 'table.row'});
+ sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'});
+ sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});
+ sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});
+ sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});
+ sm.addSeparator();
+ sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});
+ sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});
+ sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows);
+ sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows);
+
+ // Column menu
+ sm = m.addMenu({title : 'table.col'});
+ sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});
+ sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});
+ sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});
+ } else
+ m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'});
+ });
+ }
+
+ // Fixes an issue on Gecko where it's impossible to place the caret behind a table
+ // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled
+ if (!tinymce.isIE) {
+ function fixTableCaretPos() {
+ var last;
+
+ // Skip empty text nodes form the end
+ for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ;
+
+ if (last && last.nodeName == 'TABLE')
+ ed.dom.add(ed.getBody(), 'p', null, '<br mce_bogus="1" />');
+ };
+
+ // Fixes an bug where it's impossible to place the caret before a table in Gecko
+ // this fix solves it by detecting when the caret is at the beginning of such a table
+ // and then manually moves the caret infront of the table
+ if (tinymce.isGecko) {
+ ed.onKeyDown.add(function(ed, e) {
+ var rng, table, dom = ed.dom;
+
+ // On gecko it's not possible to place the caret before a table
+ if (e.keyCode == 37 || e.keyCode == 38) {
+ rng = ed.selection.getRng();
+ table = dom.getParent(rng.startContainer, 'table');
+
+ if (table && ed.getBody().firstChild == table) {
+ if (isAtStart(rng, table)) {
+ rng = dom.createRng();
+
+ rng.setStartBefore(table);
+ rng.setEndBefore(table);
+
+ ed.selection.setRng(rng);
+
+ e.preventDefault();
+ }
+ }
+ }
+ });
+ }
+
+ ed.onKeyUp.add(fixTableCaretPos);
+ ed.onSetContent.add(fixTableCaretPos);
+ ed.onVisualAid.add(fixTableCaretPos);
+
+ ed.onPreProcess.add(function(ed, o) {
+ var last = o.node.lastChild;
+
+ if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR')
+ ed.dom.remove(last);
+ });
+
+ fixTableCaretPos();
+ }
+ });
+
+ // Register action commands
+ each({
+ mceTableSplitCells : function(grid) {
+ grid.split();
+ },
+
+ mceTableMergeCells : function(grid) {
+ var rowSpan, colSpan, cell;
+
+ cell = ed.dom.getParent(ed.selection.getNode(), 'th,td');
+ if (cell) {
+ rowSpan = cell.rowSpan;
+ colSpan = cell.colSpan;
+ }
+
+ if (!ed.dom.select('td.mceSelected,th.mceSelected').length) {
+ winMan.open({
+ url : url + '/merge_cells.htm',
+ width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)),
+ height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)),
+ inline : 1
+ }, {
+ rows : rowSpan,
+ cols : colSpan,
+ onaction : function(data) {
+ grid.merge(cell, data.cols, data.rows);
+ },
+ plugin_url : url
+ });
+ } else
+ grid.merge();
+ },
+
+ mceTableInsertRowBefore : function(grid) {
+ grid.insertRow(true);
+ },
+
+ mceTableInsertRowAfter : function(grid) {
+ grid.insertRow();
+ },
+
+ mceTableInsertColBefore : function(grid) {
+ grid.insertCol(true);
+ },
+
+ mceTableInsertColAfter : function(grid) {
+ grid.insertCol();
+ },
+
+ mceTableDeleteCol : function(grid) {
+ grid.deleteCols();
+ },
+
+ mceTableDeleteRow : function(grid) {
+ grid.deleteRows();
+ },
+
+ mceTableCutRow : function(grid) {
+ clipboardRows = grid.cutRows();
+ },
+
+ mceTableCopyRow : function(grid) {
+ clipboardRows = grid.copyRows();
+ },
+
+ mceTablePasteRowBefore : function(grid) {
+ grid.pasteRows(clipboardRows, true);
+ },
+
+ mceTablePasteRowAfter : function(grid) {
+ grid.pasteRows(clipboardRows);
+ },
+
+ mceTableDelete : function(grid) {
+ grid.deleteTable();
+ }
+ }, function(func, name) {
+ ed.addCommand(name, function() {
+ var grid = createTableGrid();
+
+ if (grid) {
+ func(grid);
+ ed.execCommand('mceRepaint');
+ cleanup();
+ }
+ });
+ });
+
+ // Register dialog commands
+ each({
+ mceInsertTable : function(val) {
+ winMan.open({
+ url : url + '/table.htm',
+ width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)),
+ height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url,
+ action : val ? val.action : 0
+ });
+ },
+
+ mceTableRowProps : function() {
+ winMan.open({
+ url : url + '/row.htm',
+ width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)),
+ height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ },
+
+ mceTableCellProps : function() {
+ winMan.open({
+ url : url + '/cell.htm',
+ width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)),
+ height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ }
+ }, function(func, name) {
+ ed.addCommand(name, function(ui, val) {
+ func(val);
+ });
+ });
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);
+})(tinymce);
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/table/js/cell.js b/plugins/TinyMCE/js/plugins/table/js/cell.js new file mode 100644 index 000000000..b5fc1fda3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/js/cell.js @@ -0,0 +1,286 @@ +tinyMCEPopup.requireLangPack();
+
+var ed;
+
+function init() {
+ ed = tinyMCEPopup.editor;
+ tinyMCEPopup.resizeToInnerSize();
+
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+ document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
+
+ var inst = ed;
+ var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th");
+ var formObj = document.forms[0];
+ var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
+
+ // Get table cell data
+ var celltype = tdElm.nodeName.toLowerCase();
+ var align = ed.dom.getAttrib(tdElm, 'align');
+ var valign = ed.dom.getAttrib(tdElm, 'valign');
+ var width = trimSize(getStyle(tdElm, 'width', 'width'));
+ var height = trimSize(getStyle(tdElm, 'height', 'height'));
+ var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
+ var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
+ var className = ed.dom.getAttrib(tdElm, 'class');
+ var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
+ var id = ed.dom.getAttrib(tdElm, 'id');
+ var lang = ed.dom.getAttrib(tdElm, 'lang');
+ var dir = ed.dom.getAttrib(tdElm, 'dir');
+ var scope = ed.dom.getAttrib(tdElm, 'scope');
+
+ // Setup form
+ addClassesToList('class', 'table_cell_styles');
+ TinyMCE_EditableSelects.init();
+
+ if (!ed.dom.hasClass(tdElm, 'mceSelected')) {
+ formObj.bordercolor.value = bordercolor;
+ formObj.bgcolor.value = bgcolor;
+ formObj.backgroundimage.value = backgroundimage;
+ formObj.width.value = width;
+ formObj.height.value = height;
+ formObj.id.value = id;
+ formObj.lang.value = lang;
+ formObj.style.value = ed.dom.serializeStyle(st);
+ selectByValue(formObj, 'align', align);
+ selectByValue(formObj, 'valign', valign);
+ selectByValue(formObj, 'class', className, true, true);
+ selectByValue(formObj, 'celltype', celltype);
+ selectByValue(formObj, 'dir', dir);
+ selectByValue(formObj, 'scope', scope);
+
+ // Resize some elements
+ if (isVisible('backgroundimagebrowser'))
+ document.getElementById('backgroundimage').style.width = '180px';
+
+ updateColor('bordercolor_pick', 'bordercolor');
+ updateColor('bgcolor_pick', 'bgcolor');
+ } else
+ tinyMCEPopup.dom.hide('action');
+}
+
+function updateAction() {
+ var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
+
+ tinyMCEPopup.restoreSelection();
+ el = ed.selection.getStart();
+ tdElm = ed.dom.getParent(el, "td,th");
+ trElm = ed.dom.getParent(el, "tr");
+ tableElm = ed.dom.getParent(el, "table");
+
+ // Cell is selected
+ if (ed.dom.hasClass(tdElm, 'mceSelected')) {
+ // Update all selected sells
+ tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
+ updateCell(td);
+ });
+
+ ed.addVisual();
+ ed.nodeChanged();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+ return;
+ }
+
+ ed.execCommand('mceBeginUndoLevel');
+
+ switch (getSelectValue(formObj, 'action')) {
+ case "cell":
+ var celltype = getSelectValue(formObj, 'celltype');
+ var scope = getSelectValue(formObj, 'scope');
+
+ function doUpdate(s) {
+ if (s) {
+ updateCell(tdElm);
+
+ ed.addVisual();
+ ed.nodeChanged();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+ }
+ };
+
+ if (ed.getParam("accessibility_warnings", 1)) {
+ if (celltype == "th" && scope == "")
+ tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
+ else
+ doUpdate(1);
+
+ return;
+ }
+
+ updateCell(tdElm);
+ break;
+
+ case "row":
+ var cell = trElm.firstChild;
+
+ if (cell.nodeName != "TD" && cell.nodeName != "TH")
+ cell = nextCell(cell);
+
+ do {
+ cell = updateCell(cell, true);
+ } while ((cell = nextCell(cell)) != null);
+
+ break;
+
+ case "all":
+ var rows = tableElm.getElementsByTagName("tr");
+
+ for (var i=0; i<rows.length; i++) {
+ var cell = rows[i].firstChild;
+
+ if (cell.nodeName != "TD" && cell.nodeName != "TH")
+ cell = nextCell(cell);
+
+ do {
+ cell = updateCell(cell, true);
+ } while ((cell = nextCell(cell)) != null);
+ }
+
+ break;
+ }
+
+ ed.addVisual();
+ ed.nodeChanged();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function nextCell(elm) {
+ while ((elm = elm.nextSibling) != null) {
+ if (elm.nodeName == "TD" || elm.nodeName == "TH")
+ return elm;
+ }
+
+ return null;
+}
+
+function updateCell(td, skip_id) {
+ var inst = ed;
+ var formObj = document.forms[0];
+ var curCellType = td.nodeName.toLowerCase();
+ var celltype = getSelectValue(formObj, 'celltype');
+ var doc = inst.getDoc();
+ var dom = ed.dom;
+
+ if (!skip_id)
+ td.setAttribute('id', formObj.id.value);
+
+ td.setAttribute('align', formObj.align.value);
+ td.setAttribute('vAlign', formObj.valign.value);
+ td.setAttribute('lang', formObj.lang.value);
+ td.setAttribute('dir', getSelectValue(formObj, 'dir'));
+ td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
+ td.setAttribute('scope', formObj.scope.value);
+ ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
+
+ // Clear deprecated attributes
+ ed.dom.setAttrib(td, 'width', '');
+ ed.dom.setAttrib(td, 'height', '');
+ ed.dom.setAttrib(td, 'bgColor', '');
+ ed.dom.setAttrib(td, 'borderColor', '');
+ ed.dom.setAttrib(td, 'background', '');
+
+ // Set styles
+ td.style.width = getCSSSize(formObj.width.value);
+ td.style.height = getCSSSize(formObj.height.value);
+ if (formObj.bordercolor.value != "") {
+ td.style.borderColor = formObj.bordercolor.value;
+ td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
+ td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
+ } else
+ td.style.borderColor = '';
+
+ td.style.backgroundColor = formObj.bgcolor.value;
+
+ if (formObj.backgroundimage.value != "")
+ td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+ else
+ td.style.backgroundImage = '';
+
+ if (curCellType != celltype) {
+ // changing to a different node type
+ var newCell = doc.createElement(celltype);
+
+ for (var c=0; c<td.childNodes.length; c++)
+ newCell.appendChild(td.childNodes[c].cloneNode(1));
+
+ for (var a=0; a<td.attributes.length; a++)
+ ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
+
+ td.parentNode.replaceChild(newCell, td);
+ td = newCell;
+ }
+
+ dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
+
+ return td;
+}
+
+function changedBackgroundImage() {
+ var formObj = document.forms[0];
+ var st = ed.dom.parseStyle(formObj.style.value);
+
+ st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+ formObj.style.value = ed.dom.serializeStyle(st);
+}
+
+function changedSize() {
+ var formObj = document.forms[0];
+ var st = ed.dom.parseStyle(formObj.style.value);
+
+ var width = formObj.width.value;
+ if (width != "")
+ st['width'] = getCSSSize(width);
+ else
+ st['width'] = "";
+
+ var height = formObj.height.value;
+ if (height != "")
+ st['height'] = getCSSSize(height);
+ else
+ st['height'] = "";
+
+ formObj.style.value = ed.dom.serializeStyle(st);
+}
+
+function changedColor() {
+ var formObj = document.forms[0];
+ var st = ed.dom.parseStyle(formObj.style.value);
+
+ st['background-color'] = formObj.bgcolor.value;
+ st['border-color'] = formObj.bordercolor.value;
+
+ formObj.style.value = ed.dom.serializeStyle(st);
+}
+
+function changedStyle() {
+ var formObj = document.forms[0];
+ var st = ed.dom.parseStyle(formObj.style.value);
+
+ if (st['background-image'])
+ formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+ else
+ formObj.backgroundimage.value = '';
+
+ if (st['width'])
+ formObj.width.value = trimSize(st['width']);
+
+ if (st['height'])
+ formObj.height.value = trimSize(st['height']);
+
+ if (st['background-color']) {
+ formObj.bgcolor.value = st['background-color'];
+ updateColor('bgcolor_pick','bgcolor');
+ }
+
+ if (st['border-color']) {
+ formObj.bordercolor.value = st['border-color'];
+ updateColor('bordercolor_pick','bordercolor');
+ }
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/table/js/merge_cells.js b/plugins/TinyMCE/js/plugins/table/js/merge_cells.js new file mode 100644 index 000000000..7ee4bf040 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/js/merge_cells.js @@ -0,0 +1,27 @@ +tinyMCEPopup.requireLangPack();
+
+var MergeCellsDialog = {
+ init : function() {
+ var f = document.forms[0];
+
+ f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1);
+ f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1);
+ },
+
+ merge : function() {
+ var func, f = document.forms[0];
+
+ tinyMCEPopup.restoreSelection();
+
+ func = tinyMCEPopup.getWindowArg('onaction');
+
+ func({
+ cols : f.numcols.value,
+ rows : f.numrows.value
+ });
+
+ tinyMCEPopup.close();
+ }
+};
+
+tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog);
diff --git a/plugins/TinyMCE/js/plugins/table/js/row.js b/plugins/TinyMCE/js/plugins/table/js/row.js new file mode 100644 index 000000000..70d95b672 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/js/row.js @@ -0,0 +1,237 @@ +tinyMCEPopup.requireLangPack();
+
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+ var inst = tinyMCEPopup.editor;
+ var dom = inst.dom;
+ var trElm = dom.getParent(inst.selection.getStart(), "tr");
+ var formObj = document.forms[0];
+ var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
+
+ // Get table row data
+ var rowtype = trElm.parentNode.nodeName.toLowerCase();
+ var align = dom.getAttrib(trElm, 'align');
+ var valign = dom.getAttrib(trElm, 'valign');
+ var height = trimSize(getStyle(trElm, 'height', 'height'));
+ var className = dom.getAttrib(trElm, 'class');
+ var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
+ var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
+ var id = dom.getAttrib(trElm, 'id');
+ var lang = dom.getAttrib(trElm, 'lang');
+ var dir = dom.getAttrib(trElm, 'dir');
+
+ selectByValue(formObj, 'rowtype', rowtype);
+
+ // Any cells selected
+ if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
+ // Setup form
+ addClassesToList('class', 'table_row_styles');
+ TinyMCE_EditableSelects.init();
+
+ formObj.bgcolor.value = bgcolor;
+ formObj.backgroundimage.value = backgroundimage;
+ formObj.height.value = height;
+ formObj.id.value = id;
+ formObj.lang.value = lang;
+ formObj.style.value = dom.serializeStyle(st);
+ selectByValue(formObj, 'align', align);
+ selectByValue(formObj, 'valign', valign);
+ selectByValue(formObj, 'class', className, true, true);
+ selectByValue(formObj, 'dir', dir);
+
+ // Resize some elements
+ if (isVisible('backgroundimagebrowser'))
+ document.getElementById('backgroundimage').style.width = '180px';
+
+ updateColor('bgcolor_pick', 'bgcolor');
+ } else
+ tinyMCEPopup.dom.hide('action');
+}
+
+function updateAction() {
+ var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
+ var action = getSelectValue(formObj, 'action');
+
+ tinyMCEPopup.restoreSelection();
+ trElm = dom.getParent(inst.selection.getStart(), "tr");
+ tableElm = dom.getParent(inst.selection.getStart(), "table");
+
+ // Update all selected rows
+ if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {
+ tinymce.each(tableElm.rows, function(tr) {
+ var i;
+
+ for (i = 0; i < tr.cells.length; i++) {
+ if (dom.hasClass(tr.cells[i], 'mceSelected')) {
+ updateRow(tr, true);
+ return;
+ }
+ }
+ });
+
+ inst.addVisual();
+ inst.nodeChanged();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+ return;
+ }
+
+ inst.execCommand('mceBeginUndoLevel');
+
+ switch (action) {
+ case "row":
+ updateRow(trElm);
+ break;
+
+ case "all":
+ var rows = tableElm.getElementsByTagName("tr");
+
+ for (var i=0; i<rows.length; i++)
+ updateRow(rows[i], true);
+
+ break;
+
+ case "odd":
+ case "even":
+ var rows = tableElm.getElementsByTagName("tr");
+
+ for (var i=0; i<rows.length; i++) {
+ if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
+ updateRow(rows[i], true, true);
+ }
+
+ break;
+ }
+
+ inst.addVisual();
+ inst.nodeChanged();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function updateRow(tr_elm, skip_id, skip_parent) {
+ var inst = tinyMCEPopup.editor;
+ var formObj = document.forms[0];
+ var dom = inst.dom;
+ var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
+ var rowtype = getSelectValue(formObj, 'rowtype');
+ var doc = inst.getDoc();
+
+ // Update row element
+ if (!skip_id)
+ tr_elm.setAttribute('id', formObj.id.value);
+
+ tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
+ tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
+ tr_elm.setAttribute('lang', formObj.lang.value);
+ tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
+ tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
+ dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
+
+ // Clear deprecated attributes
+ tr_elm.setAttribute('background', '');
+ tr_elm.setAttribute('bgColor', '');
+ tr_elm.setAttribute('height', '');
+
+ // Set styles
+ tr_elm.style.height = getCSSSize(formObj.height.value);
+ tr_elm.style.backgroundColor = formObj.bgcolor.value;
+
+ if (formObj.backgroundimage.value != "")
+ tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
+ else
+ tr_elm.style.backgroundImage = '';
+
+ // Setup new rowtype
+ if (curRowType != rowtype && !skip_parent) {
+ // first, clone the node we are working on
+ var newRow = tr_elm.cloneNode(1);
+
+ // next, find the parent of its new destination (creating it if necessary)
+ var theTable = dom.getParent(tr_elm, "table");
+ var dest = rowtype;
+ var newParent = null;
+ for (var i = 0; i < theTable.childNodes.length; i++) {
+ if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
+ newParent = theTable.childNodes[i];
+ }
+
+ if (newParent == null) {
+ newParent = doc.createElement(dest);
+
+ if (dest == "thead") {
+ if (theTable.firstChild.nodeName == 'CAPTION')
+ inst.dom.insertAfter(newParent, theTable.firstChild);
+ else
+ theTable.insertBefore(newParent, theTable.firstChild);
+ } else
+ theTable.appendChild(newParent);
+ }
+
+ // append the row to the new parent
+ newParent.appendChild(newRow);
+
+ // remove the original
+ tr_elm.parentNode.removeChild(tr_elm);
+
+ // set tr_elm to the new node
+ tr_elm = newRow;
+ }
+
+ dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
+}
+
+function changedBackgroundImage() {
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+ var st = dom.parseStyle(formObj.style.value);
+
+ st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedStyle() {
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+ var st = dom.parseStyle(formObj.style.value);
+
+ if (st['background-image'])
+ formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+ else
+ formObj.backgroundimage.value = '';
+
+ if (st['height'])
+ formObj.height.value = trimSize(st['height']);
+
+ if (st['background-color']) {
+ formObj.bgcolor.value = st['background-color'];
+ updateColor('bgcolor_pick','bgcolor');
+ }
+}
+
+function changedSize() {
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+ var st = dom.parseStyle(formObj.style.value);
+
+ var height = formObj.height.value;
+ if (height != "")
+ st['height'] = getCSSSize(height);
+ else
+ st['height'] = "";
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedColor() {
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+ var st = dom.parseStyle(formObj.style.value);
+
+ st['background-color'] = formObj.bgcolor.value;
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/table/js/table.js b/plugins/TinyMCE/js/plugins/table/js/table.js new file mode 100644 index 000000000..d1b42c2af --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/js/table.js @@ -0,0 +1,449 @@ +tinyMCEPopup.requireLangPack();
+
+var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
+
+function insertTable() {
+ var formObj = document.forms[0];
+ var inst = tinyMCEPopup.editor, dom = inst.dom;
+ var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
+ var html = '', capEl, elm;
+ var cellLimit, rowLimit, colLimit;
+
+ tinyMCEPopup.restoreSelection();
+
+ if (!AutoValidator.validate(formObj)) {
+ tinyMCEPopup.alert(inst.getLang('invalid_data'));
+ return false;
+ }
+
+ elm = dom.getParent(inst.selection.getNode(), 'table');
+
+ // Get form data
+ cols = formObj.elements['cols'].value;
+ rows = formObj.elements['rows'].value;
+ border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
+ cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
+ cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
+ align = getSelectValue(formObj, "align");
+ frame = getSelectValue(formObj, "tframe");
+ rules = getSelectValue(formObj, "rules");
+ width = formObj.elements['width'].value;
+ height = formObj.elements['height'].value;
+ bordercolor = formObj.elements['bordercolor'].value;
+ bgcolor = formObj.elements['bgcolor'].value;
+ className = getSelectValue(formObj, "class");
+ id = formObj.elements['id'].value;
+ summary = formObj.elements['summary'].value;
+ style = formObj.elements['style'].value;
+ dir = formObj.elements['dir'].value;
+ lang = formObj.elements['lang'].value;
+ background = formObj.elements['backgroundimage'].value;
+ caption = formObj.elements['caption'].checked;
+
+ cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
+ rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
+ colLimit = tinyMCEPopup.getParam('table_col_limit', false);
+
+ // Validate table size
+ if (colLimit && cols > colLimit) {
+ tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
+ return false;
+ } else if (rowLimit && rows > rowLimit) {
+ tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
+ return false;
+ } else if (cellLimit && cols * rows > cellLimit) {
+ tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
+ return false;
+ }
+
+ // Update table
+ if (action == "update") {
+ inst.execCommand('mceBeginUndoLevel');
+
+ dom.setAttrib(elm, 'cellPadding', cellpadding, true);
+ dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
+ dom.setAttrib(elm, 'border', border);
+ dom.setAttrib(elm, 'align', align);
+ dom.setAttrib(elm, 'frame', frame);
+ dom.setAttrib(elm, 'rules', rules);
+ dom.setAttrib(elm, 'class', className);
+ dom.setAttrib(elm, 'style', style);
+ dom.setAttrib(elm, 'id', id);
+ dom.setAttrib(elm, 'summary', summary);
+ dom.setAttrib(elm, 'dir', dir);
+ dom.setAttrib(elm, 'lang', lang);
+
+ capEl = inst.dom.select('caption', elm)[0];
+
+ if (capEl && !caption)
+ capEl.parentNode.removeChild(capEl);
+
+ if (!capEl && caption) {
+ capEl = elm.ownerDocument.createElement('caption');
+
+ if (!tinymce.isIE)
+ capEl.innerHTML = '<br _mce_bogus="1"/>';
+
+ elm.insertBefore(capEl, elm.firstChild);
+ }
+
+ if (width && inst.settings.inline_styles) {
+ dom.setStyle(elm, 'width', width);
+ dom.setAttrib(elm, 'width', '');
+ } else {
+ dom.setAttrib(elm, 'width', width, true);
+ dom.setStyle(elm, 'width', '');
+ }
+
+ // Remove these since they are not valid XHTML
+ dom.setAttrib(elm, 'borderColor', '');
+ dom.setAttrib(elm, 'bgColor', '');
+ dom.setAttrib(elm, 'background', '');
+
+ if (height && inst.settings.inline_styles) {
+ dom.setStyle(elm, 'height', height);
+ dom.setAttrib(elm, 'height', '');
+ } else {
+ dom.setAttrib(elm, 'height', height, true);
+ dom.setStyle(elm, 'height', '');
+ }
+
+ if (background != '')
+ elm.style.backgroundImage = "url('" + background + "')";
+ else
+ elm.style.backgroundImage = '';
+
+/* if (tinyMCEPopup.getParam("inline_styles")) {
+ if (width != '')
+ elm.style.width = getCSSSize(width);
+ }*/
+
+ if (bordercolor != "") {
+ elm.style.borderColor = bordercolor;
+ elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
+ elm.style.borderWidth = border == "" ? "1px" : border;
+ } else
+ elm.style.borderColor = '';
+
+ elm.style.backgroundColor = bgcolor;
+ elm.style.height = getCSSSize(height);
+
+ inst.addVisual();
+
+ // Fix for stange MSIE align bug
+ //elm.outerHTML = elm.outerHTML;
+
+ inst.nodeChanged();
+ inst.execCommand('mceEndUndoLevel');
+
+ // Repaint if dimensions changed
+ if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
+ inst.execCommand('mceRepaint');
+
+ tinyMCEPopup.close();
+ return true;
+ }
+
+ // Create new table
+ html += '<table';
+
+ html += makeAttrib('id', id);
+ html += makeAttrib('border', border);
+ html += makeAttrib('cellpadding', cellpadding);
+ html += makeAttrib('cellspacing', cellspacing);
+ html += makeAttrib('_mce_new', '1');
+
+ if (width && inst.settings.inline_styles) {
+ if (style)
+ style += '; ';
+
+ // Force px
+ if (/^[0-9\.]+$/.test(width))
+ width += 'px';
+
+ style += 'width: ' + width;
+ } else
+ html += makeAttrib('width', width);
+
+/* if (height) {
+ if (style)
+ style += '; ';
+
+ style += 'height: ' + height;
+ }*/
+
+ //html += makeAttrib('height', height);
+ //html += makeAttrib('bordercolor', bordercolor);
+ //html += makeAttrib('bgcolor', bgcolor);
+ html += makeAttrib('align', align);
+ html += makeAttrib('frame', frame);
+ html += makeAttrib('rules', rules);
+ html += makeAttrib('class', className);
+ html += makeAttrib('style', style);
+ html += makeAttrib('summary', summary);
+ html += makeAttrib('dir', dir);
+ html += makeAttrib('lang', lang);
+ html += '>';
+
+ if (caption) {
+ if (!tinymce.isIE)
+ html += '<caption><br _mce_bogus="1"/></caption>';
+ else
+ html += '<caption></caption>';
+ }
+
+ for (var y=0; y<rows; y++) {
+ html += "<tr>";
+
+ for (var x=0; x<cols; x++) {
+ if (!tinymce.isIE)
+ html += '<td><br _mce_bogus="1"/></td>';
+ else
+ html += '<td></td>';
+ }
+
+ html += "</tr>";
+ }
+
+ html += "</table>";
+
+ inst.execCommand('mceBeginUndoLevel');
+
+ // Move table
+ if (inst.settings.fix_table_elements) {
+ var patt = '';
+
+ inst.focus();
+ inst.selection.setContent('<br class="_mce_marker" />');
+
+ tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {
+ if (patt)
+ patt += ',';
+
+ patt += n + ' ._mce_marker';
+ });
+
+ tinymce.each(inst.dom.select(patt), function(n) {
+ inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);
+ });
+
+ dom.setOuterHTML(dom.select('br._mce_marker')[0], html);
+ } else
+ inst.execCommand('mceInsertContent', false, html);
+
+ tinymce.each(dom.select('table[_mce_new]'), function(node) {
+ var td = dom.select('td', node);
+
+ inst.selection.select(td[0], true);
+ inst.selection.collapse();
+
+ dom.setAttrib(node, '_mce_new', '');
+ });
+
+ inst.addVisual();
+ inst.execCommand('mceEndUndoLevel');
+
+ tinyMCEPopup.close();
+}
+
+function makeAttrib(attrib, value) {
+ var formObj = document.forms[0];
+ var valueElm = formObj.elements[attrib];
+
+ if (typeof(value) == "undefined" || value == null) {
+ value = "";
+
+ if (valueElm)
+ value = valueElm.value;
+ }
+
+ if (value == "")
+ return "";
+
+ // XML encode it
+ value = value.replace(/&/g, '&');
+ value = value.replace(/\"/g, '"');
+ value = value.replace(/</g, '<');
+ value = value.replace(/>/g, '>');
+
+ return ' ' + attrib + '="' + value + '"';
+}
+
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+ document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
+ document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
+
+ var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
+ var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
+ var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules, frame;
+ var inst = tinyMCEPopup.editor, dom = inst.dom;
+ var formObj = document.forms[0];
+ var elm = dom.getParent(inst.selection.getNode(), "table");
+
+ action = tinyMCEPopup.getWindowArg('action');
+
+ if (!action)
+ action = elm ? "update" : "insert";
+
+ if (elm && action != "insert") {
+ var rowsAr = elm.rows;
+ var cols = 0;
+ for (var i=0; i<rowsAr.length; i++)
+ if (rowsAr[i].cells.length > cols)
+ cols = rowsAr[i].cells.length;
+
+ cols = cols;
+ rows = rowsAr.length;
+
+ st = dom.parseStyle(dom.getAttrib(elm, "style"));
+ border = trimSize(getStyle(elm, 'border', 'borderWidth'));
+ cellpadding = dom.getAttrib(elm, 'cellpadding', "");
+ cellspacing = dom.getAttrib(elm, 'cellspacing', "");
+ width = trimSize(getStyle(elm, 'width', 'width'));
+ height = trimSize(getStyle(elm, 'height', 'height'));
+ bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
+ bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
+ align = dom.getAttrib(elm, 'align', align);
+ frame = dom.getAttrib(elm, 'frame');
+ rules = dom.getAttrib(elm, 'rules');
+ className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
+ id = dom.getAttrib(elm, 'id');
+ summary = dom.getAttrib(elm, 'summary');
+ style = dom.serializeStyle(st);
+ dir = dom.getAttrib(elm, 'dir');
+ lang = dom.getAttrib(elm, 'lang');
+ background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
+ formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
+
+ orgTableWidth = width;
+ orgTableHeight = height;
+
+ action = "update";
+ formObj.insert.value = inst.getLang('update');
+ }
+
+ addClassesToList('class', "table_styles");
+ TinyMCE_EditableSelects.init();
+
+ // Update form
+ selectByValue(formObj, 'align', align);
+ selectByValue(formObj, 'tframe', frame);
+ selectByValue(formObj, 'rules', rules);
+ selectByValue(formObj, 'class', className, true, true);
+ formObj.cols.value = cols;
+ formObj.rows.value = rows;
+ formObj.border.value = border;
+ formObj.cellpadding.value = cellpadding;
+ formObj.cellspacing.value = cellspacing;
+ formObj.width.value = width;
+ formObj.height.value = height;
+ formObj.bordercolor.value = bordercolor;
+ formObj.bgcolor.value = bgcolor;
+ formObj.id.value = id;
+ formObj.summary.value = summary;
+ formObj.style.value = style;
+ formObj.dir.value = dir;
+ formObj.lang.value = lang;
+ formObj.backgroundimage.value = background;
+
+ updateColor('bordercolor_pick', 'bordercolor');
+ updateColor('bgcolor_pick', 'bgcolor');
+
+ // Resize some elements
+ if (isVisible('backgroundimagebrowser'))
+ document.getElementById('backgroundimage').style.width = '180px';
+
+ // Disable some fields in update mode
+ if (action == "update") {
+ formObj.cols.disabled = true;
+ formObj.rows.disabled = true;
+ }
+}
+
+function changedSize() {
+ var formObj = document.forms[0];
+ var st = dom.parseStyle(formObj.style.value);
+
+/* var width = formObj.width.value;
+ if (width != "")
+ st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
+ else
+ st['width'] = "";*/
+
+ var height = formObj.height.value;
+ if (height != "")
+ st['height'] = getCSSSize(height);
+ else
+ st['height'] = "";
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedBackgroundImage() {
+ var formObj = document.forms[0];
+ var st = dom.parseStyle(formObj.style.value);
+
+ st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedBorder() {
+ var formObj = document.forms[0];
+ var st = dom.parseStyle(formObj.style.value);
+
+ // Update border width if the element has a color
+ if (formObj.border.value != "" && formObj.bordercolor.value != "")
+ st['border-width'] = formObj.border.value + "px";
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedColor() {
+ var formObj = document.forms[0];
+ var st = dom.parseStyle(formObj.style.value);
+
+ st['background-color'] = formObj.bgcolor.value;
+
+ if (formObj.bordercolor.value != "") {
+ st['border-color'] = formObj.bordercolor.value;
+
+ // Add border-width if it's missing
+ if (!st['border-width'])
+ st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
+ }
+
+ formObj.style.value = dom.serializeStyle(st);
+}
+
+function changedStyle() {
+ var formObj = document.forms[0];
+ var st = dom.parseStyle(formObj.style.value);
+
+ if (st['background-image'])
+ formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
+ else
+ formObj.backgroundimage.value = '';
+
+ if (st['width'])
+ formObj.width.value = trimSize(st['width']);
+
+ if (st['height'])
+ formObj.height.value = trimSize(st['height']);
+
+ if (st['background-color']) {
+ formObj.bgcolor.value = st['background-color'];
+ updateColor('bgcolor_pick','bgcolor');
+ }
+
+ if (st['border-color']) {
+ formObj.bordercolor.value = st['border-color'];
+ updateColor('bordercolor_pick','bordercolor');
+ }
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/table/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/table/langs/en_dlg.js new file mode 100644 index 000000000..000332a35 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/langs/en_dlg.js @@ -0,0 +1,74 @@ +tinyMCE.addI18n('en.table_dlg',{
+general_tab:"General",
+advanced_tab:"Advanced",
+general_props:"General properties",
+advanced_props:"Advanced properties",
+rowtype:"Row in table part",
+title:"Insert/Modify table",
+width:"Width",
+height:"Height",
+cols:"Cols",
+rows:"Rows",
+cellspacing:"Cellspacing",
+cellpadding:"Cellpadding",
+border:"Border",
+align:"Alignment",
+align_default:"Default",
+align_left:"Left",
+align_right:"Right",
+align_middle:"Center",
+row_title:"Table row properties",
+cell_title:"Table cell properties",
+cell_type:"Cell type",
+valign:"Vertical alignment",
+align_top:"Top",
+align_bottom:"Bottom",
+bordercolor:"Border color",
+bgcolor:"Background color",
+merge_cells_title:"Merge table cells",
+id:"Id",
+style:"Style",
+langdir:"Language direction",
+langcode:"Language code",
+mime:"Target MIME type",
+ltr:"Left to right",
+rtl:"Right to left",
+bgimage:"Background image",
+summary:"Summary",
+td:"Data",
+th:"Header",
+cell_cell:"Update current cell",
+cell_row:"Update all cells in row",
+cell_all:"Update all cells in table",
+row_row:"Update current row",
+row_odd:"Update odd rows in table",
+row_even:"Update even rows in table",
+row_all:"Update all rows in table",
+thead:"Table Head",
+tbody:"Table Body",
+tfoot:"Table Foot",
+scope:"Scope",
+rowgroup:"Row Group",
+colgroup:"Col Group",
+col_limit:"You've exceeded the maximum number of columns of {$cols}.",
+row_limit:"You've exceeded the maximum number of rows of {$rows}.",
+cell_limit:"You've exceeded the maximum number of cells of {$cells}.",
+missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",
+caption:"Table caption",
+frame:"Frame",
+frame_none:"none",
+frame_groups:"groups",
+frame_rows:"rows",
+frame_cols:"cols",
+frame_all:"all",
+rules:"Rules",
+rules_void:"void",
+rules_above:"above",
+rules_below:"below",
+rules_hsides:"hsides",
+rules_lhs:"lhs",
+rules_rhs:"rhs",
+rules_vsides:"vsides",
+rules_box:"box",
+rules_border:"border"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/table/merge_cells.htm b/plugins/TinyMCE/js/plugins/table/merge_cells.htm new file mode 100644 index 000000000..9736ed8c0 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/merge_cells.htm @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#table_dlg.merge_cells_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/validate.js"></script>
+ <script type="text/javascript" src="js/merge_cells.js"></script>
+</head>
+<body style="margin: 8px">
+<form onsubmit="MergeCellsDialog.merge();return false;" action="#">
+ <fieldset>
+ <legend>{#table_dlg.merge_cells_title}</legend>
+ <table border="0" cellpadding="0" cellspacing="3" width="100%">
+ <tr>
+ <td>{#table_dlg.cols}:</td>
+ <td align="right"><input type="text" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" /></td>
+ </tr>
+ <tr>
+ <td>{#table_dlg.rows}:</td>
+ <td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/table/row.htm b/plugins/TinyMCE/js/plugins/table/row.htm new file mode 100644 index 000000000..092e6c827 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/row.htm @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#table_dlg.row_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/row.js"></script>
+ <link href="css/row.css" rel="stylesheet" type="text/css" />
+</head>
+<body id="tablerow" style="display: none">
+ <form onsubmit="updateAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#table_dlg.general_props}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td><label for="rowtype">{#table_dlg.rowtype}</label></td>
+ <td class="col2">
+ <select id="rowtype" name="rowtype" class="mceFocus">
+ <option value="thead">{#table_dlg.thead}</option>
+ <option value="tbody">{#table_dlg.tbody}</option>
+ <option value="tfoot">{#table_dlg.tfoot}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="align">{#table_dlg.align}</label></td>
+ <td class="col2">
+ <select id="align" name="align">
+ <option value="">{#not_set}</option>
+ <option value="center">{#table_dlg.align_middle}</option>
+ <option value="left">{#table_dlg.align_left}</option>
+ <option value="right">{#table_dlg.align_right}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="valign">{#table_dlg.valign}</label></td>
+ <td class="col2">
+ <select id="valign" name="valign">
+ <option value="">{#not_set}</option>
+ <option value="top">{#table_dlg.align_top}</option>
+ <option value="middle">{#table_dlg.align_middle}</option>
+ <option value="bottom">{#table_dlg.align_bottom}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr id="styleSelectRow">
+ <td><label for="class">{#class_name}</label></td>
+ <td class="col2">
+ <select id="class" name="class" class="mceEditableSelect">
+ <option value="" selected="selected">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label for="height">{#table_dlg.height}</label></td>
+ <td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{#table_dlg.advanced_props}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td>
+ <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="style">{#table_dlg.style}</label></td>
+ <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" style="width: 200px">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#table_dlg.ltr}</option>
+ <option value="rtl">{#table_dlg.rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" style="width: 200px" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
+ <td id="backgroundimagebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div>
+ <select id="action" name="action">
+ <option value="row">{#table_dlg.row_row}</option>
+ <option value="odd">{#table_dlg.row_odd}</option>
+ <option value="even">{#table_dlg.row_even}</option>
+ <option value="all">{#table_dlg.row_all}</option>
+ </select>
+ </div>
+
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/table/table.htm b/plugins/TinyMCE/js/plugins/table/table.htm new file mode 100644 index 000000000..f26903922 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/table.htm @@ -0,0 +1,187 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#table_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/validate.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/table.js"></script>
+ <link href="css/table.css" rel="stylesheet" type="text/css" />
+</head>
+<body id="table" style="display: none">
+ <form onsubmit="insertTable();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
+ <li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#table_dlg.general_props}</legend>
+ <table border="0" cellpadding="4" cellspacing="0" width="100%">
+ <tr>
+ <td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>
+ <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" /></td>
+ <td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>
+ <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
+ </tr>
+ <tr>
+ <td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>
+ <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
+ <td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>
+ <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
+ </tr>
+ <tr>
+ <td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>
+ <td><select id="align" name="align">
+ <option value="">{#not_set}</option>
+ <option value="center">{#table_dlg.align_middle}</option>
+ <option value="left">{#table_dlg.align_left}</option>
+ <option value="right">{#table_dlg.align_right}</option>
+ </select></td>
+ <td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>
+ <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
+ </tr>
+ <tr id="width_row">
+ <td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>
+ <td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
+ <td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>
+ <td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
+ </tr>
+ <tr id="styleSelectRow">
+ <td><label id="classlabel" for="class">{#class_name}</label></td>
+ <td colspan="3">
+ <select id="class" name="class" class="mceEditableSelect">
+ <option value="" selected="selected">{#not_set}</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label for="caption">{#table_dlg.caption}</label></td>
+ <td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{#table_dlg.advanced_props}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td>
+ <td><input id="id" name="id" type="text" value="" class="advfield" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="summary">{#table_dlg.summary}</label></td>
+ <td><input id="summary" name="summary" type="text" value="" class="advfield" /></td>
+ </tr>
+
+ <tr>
+ <td><label for="style">{#table_dlg.style}</label></td>
+ <td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" class="advfield" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
+ <td id="backgroundimagebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="tframe">{#table_dlg.frame}</label></td>
+ <td>
+ <select id="tframe" name="tframe" class="advfield">
+ <option value="">{#not_set}</option>
+ <option value="void">{#table_dlg.rules_void}</option>
+ <option value="above">{#table_dlg.rules_above}</option>
+ <option value="below">{#table_dlg.rules_below}</option>
+ <option value="hsides">{#table_dlg.rules_hsides}</option>
+ <option value="lhs">{#table_dlg.rules_lhs}</option>
+ <option value="rhs">{#table_dlg.rules_rhs}</option>
+ <option value="vsides">{#table_dlg.rules_vsides}</option>
+ <option value="box">{#table_dlg.rules_box}</option>
+ <option value="border">{#table_dlg.rules_border}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="rules">{#table_dlg.rules}</label></td>
+ <td>
+ <select id="rules" name="rules" class="advfield">
+ <option value="">{#not_set}</option>
+ <option value="none">{#table_dlg.frame_none}</option>
+ <option value="groups">{#table_dlg.frame_groups}</option>
+ <option value="rows">{#table_dlg.frame_rows}</option>
+ <option value="cols">{#table_dlg.frame_cols}</option>
+ <option value="all">{#table_dlg.frame_all}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" class="advfield">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#table_dlg.ltr}</option>
+ <option value="rtl">{#table_dlg.rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
+ <td id="bordercolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/template/blank.htm b/plugins/TinyMCE/js/plugins/template/blank.htm new file mode 100644 index 000000000..ecde53fae --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/blank.htm @@ -0,0 +1,12 @@ +<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>blank_page</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <script type="text/javascript">
+ parent.TemplateDialog.loadCSSFiles(document);
+ </script>
+</head>
+<body id="mceTemplatePreview" class="mceContentBody">
+
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/template/css/template.css b/plugins/TinyMCE/js/plugins/template/css/template.css new file mode 100644 index 000000000..2d23a4938 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/css/template.css @@ -0,0 +1,23 @@ +#frmbody {
+ padding: 10px;
+ background-color: #FFF;
+ border: 1px solid #CCC;
+}
+
+.frmRow {
+ margin-bottom: 10px;
+}
+
+#templatesrc {
+ border: none;
+ width: 320px;
+ height: 240px;
+}
+
+.title {
+ padding-bottom: 5px;
+}
+
+.mceActionPanel {
+ padding-top: 5px;
+}
diff --git a/plugins/TinyMCE/js/plugins/template/editor_plugin.js b/plugins/TinyMCE/js/plugins/template/editor_plugin.js new file mode 100644 index 000000000..ebe3c27d7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/editor_plugin.js @@ -0,0 +1 @@ +(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length<d){for(f=0;f<(d-g.length);f++){g="0"+g}}return g}b=b.replace("%D","%m/%d/%y");b=b.replace("%r","%I:%M:%S %p");b=b.replace("%Y",""+e.getFullYear());b=b.replace("%y",""+e.getYear());b=b.replace("%m",c(e.getMonth()+1,2));b=b.replace("%d",c(e.getDate(),2));b=b.replace("%H",""+c(e.getHours(),2));b=b.replace("%M",""+c(e.getMinutes(),2));b=b.replace("%S",""+c(e.getSeconds(),2));b=b.replace("%I",""+((e.getHours()+11)%12+1));b=b.replace("%p",""+(e.getHours()<12?"AM":"PM"));b=b.replace("%B",""+this.editor.getLang("template_months_long").split(",")[e.getMonth()]);b=b.replace("%b",""+this.editor.getLang("template_months_short").split(",")[e.getMonth()]);b=b.replace("%A",""+this.editor.getLang("template_day_long").split(",")[e.getDay()]);b=b.replace("%a",""+this.editor.getLang("template_day_short").split(",")[e.getDay()]);b=b.replace("%%","%");return b}});tinymce.PluginManager.add("template",tinymce.plugins.TemplatePlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/template/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/template/editor_plugin_src.js new file mode 100644 index 000000000..9cac26991 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/editor_plugin_src.js @@ -0,0 +1,159 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var each = tinymce.each;
+
+ tinymce.create('tinymce.plugins.TemplatePlugin', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceTemplate', function(ui) {
+ ed.windowManager.open({
+ file : url + '/template.htm',
+ width : ed.getParam('template_popup_width', 750),
+ height : ed.getParam('template_popup_height', 600),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ ed.addCommand('mceInsertTemplate', t._insertTemplate, t);
+
+ // Register buttons
+ ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});
+
+ ed.onPreProcess.add(function(ed, o) {
+ var dom = ed.dom;
+
+ each(dom.select('div', o.node), function(e) {
+ if (dom.hasClass(e, 'mceTmpl')) {
+ each(dom.select('*', e), function(e) {
+ if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
+ e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
+ });
+
+ t._replaceVals(e);
+ }
+ });
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Template plugin',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://www.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ _insertTemplate : function(ui, v) {
+ var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();
+
+ h = v.content;
+
+ each(t.editor.getParam('template_replace_values'), function(v, k) {
+ if (typeof(v) != 'function')
+ h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
+ });
+
+ el = dom.create('div', null, h);
+
+ // Find template element within div
+ n = dom.select('.mceTmpl', el);
+ if (n && n.length > 0) {
+ el = dom.create('div', null);
+ el.appendChild(n[0].cloneNode(true));
+ }
+
+ function hasClass(n, c) {
+ return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
+ };
+
+ each(dom.select('*', el), function(n) {
+ // Replace cdate
+ if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))
+ n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));
+
+ // Replace mdate
+ if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
+ n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
+
+ // Replace selection
+ if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))
+ n.innerHTML = sel;
+ });
+
+ t._replaceVals(el);
+
+ ed.execCommand('mceInsertContent', false, el.innerHTML);
+ ed.addVisual();
+ },
+
+ _replaceVals : function(e) {
+ var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');
+
+ each(dom.select('*', e), function(e) {
+ each(vl, function(v, k) {
+ if (dom.hasClass(e, k)) {
+ if (typeof(vl[k]) == 'function')
+ vl[k](e);
+ }
+ });
+ });
+ },
+
+ _getDateTime : function(d, fmt) {
+ if (!fmt)
+ return "";
+
+ function addZeros(value, len) {
+ var i;
+
+ value = "" + value;
+
+ if (value.length < len) {
+ for (i=0; i<(len-value.length); i++)
+ value = "0" + value;
+ }
+
+ return value;
+ }
+
+ fmt = fmt.replace("%D", "%m/%d/%y");
+ fmt = fmt.replace("%r", "%I:%M:%S %p");
+ fmt = fmt.replace("%Y", "" + d.getFullYear());
+ fmt = fmt.replace("%y", "" + d.getYear());
+ fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+ fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+ fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+ fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+ fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+ fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+ fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]);
+ fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]);
+ fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]);
+ fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]);
+ fmt = fmt.replace("%%", "%");
+
+ return fmt;
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/template/js/template.js b/plugins/TinyMCE/js/plugins/template/js/template.js new file mode 100644 index 000000000..24045d731 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/js/template.js @@ -0,0 +1,106 @@ +tinyMCEPopup.requireLangPack();
+
+var TemplateDialog = {
+ preInit : function() {
+ var url = tinyMCEPopup.getParam("template_external_list_url");
+
+ if (url != null)
+ document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');
+ },
+
+ init : function() {
+ var ed = tinyMCEPopup.editor, tsrc, sel, x, u;
+
+ tsrc = ed.getParam("template_templates", false);
+ sel = document.getElementById('tpath');
+
+ // Setup external template list
+ if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
+ for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
+ tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
+ }
+
+ for (x=0; x<tsrc.length; x++)
+ sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));
+
+ this.resize();
+ this.tsrc = tsrc;
+ },
+
+ resize : function() {
+ var w, h, e;
+
+ if (!self.innerWidth) {
+ w = document.body.clientWidth - 50;
+ h = document.body.clientHeight - 160;
+ } else {
+ w = self.innerWidth - 50;
+ h = self.innerHeight - 170;
+ }
+
+ e = document.getElementById('templatesrc');
+
+ if (e) {
+ e.style.height = Math.abs(h) + 'px';
+ e.style.width = Math.abs(w - 5) + 'px';
+ }
+ },
+
+ loadCSSFiles : function(d) {
+ var ed = tinyMCEPopup.editor;
+
+ tinymce.each(ed.getParam("content_css", '').split(','), function(u) {
+ d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');
+ });
+ },
+
+ selectTemplate : function(u, ti) {
+ var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;
+
+ if (!u)
+ return;
+
+ d.body.innerHTML = this.templateHTML = this.getFileContents(u);
+
+ for (x=0; x<tsrc.length; x++) {
+ if (tsrc[x].title == ti)
+ document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';
+ }
+ },
+
+ insert : function() {
+ tinyMCEPopup.execCommand('mceInsertTemplate', false, {
+ content : this.templateHTML,
+ selection : tinyMCEPopup.editor.selection.getContent()
+ });
+
+ tinyMCEPopup.close();
+ },
+
+ getFileContents : function(u) {
+ var x, d, t = 'text/plain';
+
+ function g(s) {
+ x = 0;
+
+ try {
+ x = new ActiveXObject(s);
+ } catch (s) {
+ }
+
+ return x;
+ };
+
+ x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
+
+ // Synchronous AJAX load file
+ x.overrideMimeType && x.overrideMimeType(t);
+ x.open("GET", u, false);
+ x.send(null);
+
+ return x.responseText;
+ }
+};
+
+TemplateDialog.preInit();
+tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);
diff --git a/plugins/TinyMCE/js/plugins/template/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/template/langs/en_dlg.js new file mode 100644 index 000000000..2471c3fa0 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/langs/en_dlg.js @@ -0,0 +1,15 @@ +tinyMCE.addI18n('en.template_dlg',{
+title:"Templates",
+label:"Template",
+desc_label:"Description",
+desc:"Insert predefined template content",
+select:"Select a template",
+preview:"Preview",
+warning:"Warning: Updating a template with a different one may cause data loss.",
+mdate_format:"%Y-%m-%d %H:%M:%S",
+cdate_format:"%Y-%m-%d %H:%M:%S",
+months_long:"January,February,March,April,May,June,July,August,September,October,November,December",
+months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
+day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
+day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/template/template.htm b/plugins/TinyMCE/js/plugins/template/template.htm new file mode 100644 index 000000000..b2182e632 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/template.htm @@ -0,0 +1,31 @@ +<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#template_dlg.title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/template.js"></script>
+ <link href="css/template.css" rel="stylesheet" type="text/css" />
+</head>
+<body onresize="TemplateDialog.resize();">
+ <form onsubmit="TemplateDialog.insert();return false;">
+ <div id="frmbody">
+ <div class="title">{#template_dlg.desc}</div>
+ <div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>
+ <select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">
+ <option value="">{#template_dlg.select}...</option>
+ </select>
+ <span id="warning"></span></div>
+ <div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>
+ <span id="tmpldesc"></span></div>
+ <fieldset>
+ <legend>{#template_dlg.preview}</legend>
+ <iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
+ </fieldset>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/visualchars/editor_plugin.js b/plugins/TinyMCE/js/plugins/visualchars/editor_plugin.js new file mode 100644 index 000000000..94719f93a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/visualchars/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g<a.length;g++){l=a[g].nodeValue;l=l.replace(/(\u00a0)/g,'<span _mce_bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/visualchars/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/visualchars/editor_plugin_src.js new file mode 100644 index 000000000..35856e26a --- /dev/null +++ b/plugins/TinyMCE/js/plugins/visualchars/editor_plugin_src.js @@ -0,0 +1,83 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.VisualChars', {
+ init : function(ed, url) {
+ var t = this;
+
+ t.editor = ed;
+
+ // Register commands
+ ed.addCommand('mceVisualChars', t._toggleVisualChars, t);
+
+ // Register buttons
+ ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});
+
+ ed.onBeforeGetContent.add(function(ed, o) {
+ if (t.state && o.format != 'raw' && !o.draft) {
+ t.state = true;
+ t._toggleVisualChars(false);
+ }
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Visual characters',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
+
+ // Private methods
+
+ _toggleVisualChars : function(bookmark) {
+ var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm;
+
+ t.state = !t.state;
+ ed.controlManager.setActive('visualchars', t.state);
+
+ if (bookmark)
+ bm = s.getBookmark();
+
+ if (t.state) {
+ nl = [];
+ tinymce.walk(b, function(n) {
+ if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)
+ nl.push(n);
+ }, 'childNodes');
+
+ for (i = 0; i < nl.length; i++) {
+ nv = nl[i].nodeValue;
+ nv = nv.replace(/(\u00a0)/g, '<span _mce_bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');
+
+ div = ed.dom.create('div', null, nv);
+ while (node = div.lastChild)
+ ed.dom.insertAfter(node, nl[i]);
+
+ ed.dom.remove(nl[i]);
+ }
+ } else {
+ nl = ed.dom.select('span.mceItemNbsp', b);
+
+ for (i = nl.length - 1; i >= 0; i--)
+ ed.dom.remove(nl[i], 1);
+ }
+
+ s.moveToBookmark(bm);
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/wordcount/editor_plugin.js b/plugins/TinyMCE/js/plugins/wordcount/editor_plugin.js new file mode 100644 index 000000000..a099e6a8c --- /dev/null +++ b/plugins/TinyMCE/js/plugins/wordcount/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(a,b){var c=this,d=0;c.countre=a.getParam("wordcount_countregex",/\S\s+/g);c.cleanre=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$¿'"_+=\\\/-]*/g);c.id=a.id+"-word-count";a.onPostRender.add(function(f,e){var g,h;h=f.getParam("wordcount_target_id");if(!h){g=tinymce.DOM.get(f.id+"_path_row");if(g){tinymce.DOM.add(g.parentNode,"div",{style:"float: right"},f.getLang("wordcount.words","Words: ")+'<span id="'+c.id+'">0</span>')}}else{tinymce.DOM.add(h,"span",{},'<span id="'+c.id+'">0</span>')}});a.onInit.add(function(e){e.selection.onSetContent.add(function(){c._count(e)});c._count(e)});a.onSetContent.add(function(e){c._count(e)});a.onKeyUp.add(function(f,g){if(g.keyCode==d){return}if(13==g.keyCode||8==d||46==d){c._count(f)}d=g.keyCode})},_count:function(b){var c=this,a=0;if(c.block){return}c.block=1;setTimeout(function(){var d=b.getContent({format:"raw"});if(d){d=d.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");d=d.replace(c.cleanre,"");d.replace(c.countre,function(){a++})}tinymce.DOM.setHTML(c.id,a.toString());setTimeout(function(){c.block=0},2000)},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/wordcount/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/wordcount/editor_plugin_src.js new file mode 100644 index 000000000..5cb92fa0f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/wordcount/editor_plugin_src.js @@ -0,0 +1,98 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.WordCount', {
+ block : 0,
+ id : null,
+ countre : null,
+ cleanre : null,
+
+ init : function(ed, url) {
+ var t = this, last = 0;
+
+ t.countre = ed.getParam('wordcount_countregex', /\S\s+/g);
+ t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$¿'"_+=\\\/-]*/g);
+ t.id = ed.id + '-word-count';
+
+ ed.onPostRender.add(function(ed, cm) {
+ var row, id;
+
+ // Add it to the specified id or the theme advanced path
+ id = ed.getParam('wordcount_target_id');
+ if (!id) {
+ row = tinymce.DOM.get(ed.id + '_path_row');
+
+ if (row)
+ tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '<span id="' + t.id + '">0</span>');
+ } else
+ tinymce.DOM.add(id, 'span', {}, '<span id="' + t.id + '">0</span>');
+ });
+
+ ed.onInit.add(function(ed) {
+ ed.selection.onSetContent.add(function() {
+ t._count(ed);
+ });
+
+ t._count(ed);
+ });
+
+ ed.onSetContent.add(function(ed) {
+ t._count(ed);
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ if (e.keyCode == last)
+ return;
+
+ if (13 == e.keyCode || 8 == last || 46 == last)
+ t._count(ed);
+
+ last = e.keyCode;
+ });
+ },
+
+ _count : function(ed) {
+ var t = this, tc = 0;
+
+ // Keep multiple calls from happening at the same time
+ if (t.block)
+ return;
+
+ t.block = 1;
+
+ setTimeout(function() {
+ var tx = ed.getContent({format : 'raw'});
+
+ if (tx) {
+ tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars
+ tx = tx.replace(t.cleanre, ''); // remove numbers and punctuation
+ tx.replace(t.countre, function() {tc++;}); // count the words
+ }
+
+ tinymce.DOM.setHTML(t.id, tc.toString());
+
+ setTimeout(function() {t.block = 0;}, 2000);
+ }, 1);
+ },
+
+ getInfo: function() {
+ return {
+ longname : 'Word Count plugin',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount);
+})();
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/abbr.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/abbr.htm new file mode 100644 index 000000000..3aeac0deb --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/abbr.htm @@ -0,0 +1,141 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#xhtmlxtras_dlg.title_abbr_element}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/element_common.js"></script>
+ <script type="text/javascript" src="js/abbr.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />
+</head>
+<body style="display: none">
+<form onsubmit="insertAbbr();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
+ <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field mceEditableSelect">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
+ <td><input id="style" name="style" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/acronym.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/acronym.htm new file mode 100644 index 000000000..31ee7b70f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/acronym.htm @@ -0,0 +1,141 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#xhtmlxtras_dlg.title_acronym_element}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/element_common.js"></script>
+ <script type="text/javascript" src="js/acronym.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />
+</head>
+<body style="display: none">
+<form onsubmit="insertAcronym();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
+ <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field mceEditableSelect">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
+ <td><input id="style" name="style" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/attributes.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/attributes.htm new file mode 100644 index 000000000..17054da3e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/attributes.htm @@ -0,0 +1,148 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#xhtmlxtras_dlg.attribs_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="js/attributes.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/attributes.css" />
+</head>
+<body style="display: none">
+<form onsubmit="insertAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>
+ <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
+ <td><input id="title" name="title" type="text" value="" class="mceFocus" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td><label id="classlabel" for="classlist">{#class_name}</label></td>
+ <td>
+ <select id="classlist" name="classlist" class="mceEditableSelect">
+ <option value="" selected="selected">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
+ <td><input id="style" name="style" type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option>
+ <option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" />
+ </td>
+ </tr>
+ <tr>
+ <td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>
+ <td><input type="text" id="tabindex" name="tabindex" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>
+ <td><input type="text" id="accesskey" name="accesskey" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/cite.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/cite.htm new file mode 100644 index 000000000..d0a3e3a8e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/cite.htm @@ -0,0 +1,141 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#xhtmlxtras_dlg.title_cite_element}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/element_common.js"></script>
+ <script type="text/javascript" src="js/cite.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />
+</head>
+<body style="display: none">
+<form onsubmit="insertCite();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
+ <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field mceEditableSelect">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
+ <td><input id="style" name="style" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/css/attributes.css b/plugins/TinyMCE/js/plugins/xhtmlxtras/css/attributes.css new file mode 100644 index 000000000..9a6a235c3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/css/attributes.css @@ -0,0 +1,11 @@ +.panel_wrapper div.current {
+ height: 290px;
+}
+
+#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
+ width: 200px;
+}
+
+#events_panel input {
+ width: 200px;
+}
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/css/popup.css b/plugins/TinyMCE/js/plugins/xhtmlxtras/css/popup.css new file mode 100644 index 000000000..e67114dba --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/css/popup.css @@ -0,0 +1,9 @@ +input.field, select.field {width:200px;}
+input.picker {width:179px; margin-left: 5px;}
+input.disabled {border-color:#F2F2F2;}
+img.picker {vertical-align:text-bottom; cursor:pointer;}
+h1 {padding: 0 0 5px 0;}
+.panel_wrapper div.current {height:160px;}
+#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}
+a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}
+#datetime {width:180px;}
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/del.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/del.htm new file mode 100644 index 000000000..8b07fa842 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/del.htm @@ -0,0 +1,161 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#xhtmlxtras_dlg.title_del_element}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/element_common.js"></script>
+ <script type="text/javascript" src="js/del.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />
+</head>
+<body id="xhtmlxtrasins" style="display: none">
+<form onsubmit="insertDel();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td>
+ <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
+ <td><input id="cite" name="cite" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
+ <td><input id="title" name="title" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field mceEditableSelect">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
+ <td><input id="style" name="style" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/editor_plugin.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/editor_plugin.js new file mode 100644 index 000000000..a9393ad6d --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/editor_plugin_src.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/editor_plugin_src.js new file mode 100644 index 000000000..5f9d9bd50 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/editor_plugin_src.js @@ -0,0 +1,132 @@ +/**
+ * editor_plugin_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {
+ init : function(ed, url) {
+ // Register commands
+ ed.addCommand('mceCite', function() {
+ ed.windowManager.open({
+ file : url + '/cite.htm',
+ width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ ed.addCommand('mceAcronym', function() {
+ ed.windowManager.open({
+ file : url + '/acronym.htm',
+ width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ ed.addCommand('mceAbbr', function() {
+ ed.windowManager.open({
+ file : url + '/abbr.htm',
+ width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ ed.addCommand('mceDel', function() {
+ ed.windowManager.open({
+ file : url + '/del.htm',
+ width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
+ height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ ed.addCommand('mceIns', function() {
+ ed.windowManager.open({
+ file : url + '/ins.htm',
+ width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
+ height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ ed.addCommand('mceAttributes', function() {
+ ed.windowManager.open({
+ file : url + '/attributes.htm',
+ width : 380,
+ height : 370,
+ inline : 1
+ }, {
+ plugin_url : url
+ });
+ });
+
+ // Register buttons
+ ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});
+ ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});
+ ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});
+ ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});
+ ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});
+ ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});
+
+ ed.onNodeChange.add(function(ed, cm, n, co) {
+ n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');
+
+ cm.setDisabled('cite', co);
+ cm.setDisabled('acronym', co);
+ cm.setDisabled('abbr', co);
+ cm.setDisabled('del', co);
+ cm.setDisabled('ins', co);
+ cm.setDisabled('attribs', n && n.nodeName == 'BODY');
+ cm.setActive('cite', 0);
+ cm.setActive('acronym', 0);
+ cm.setActive('abbr', 0);
+ cm.setActive('del', 0);
+ cm.setActive('ins', 0);
+
+ // Activate all
+ if (n) {
+ do {
+ cm.setDisabled(n.nodeName.toLowerCase(), 0);
+ cm.setActive(n.nodeName.toLowerCase(), 1);
+ } while (n = n.parentNode);
+ }
+ });
+
+ ed.onPreInit.add(function() {
+ // Fixed IE issue where it can't handle these elements correctly
+ ed.dom.create('abbr');
+ });
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'XHTML Xtras Plugin',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ }
+ });
+
+ // Register plugin
+ tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/ins.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/ins.htm new file mode 100644 index 000000000..6c5470cfc --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/ins.htm @@ -0,0 +1,161 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#xhtmlxtras_dlg.title_ins_element}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/editable_selects.js"></script>
+ <script type="text/javascript" src="js/element_common.js"></script>
+ <script type="text/javascript" src="js/ins.js"></script>
+ <link rel="stylesheet" type="text/css" href="css/popup.css" />
+</head>
+<body id="xhtmlxtrasins" style="display: none">
+<form onsubmit="insertIns();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td>
+ <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
+ <td><input id="cite" name="cite" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
+ <td><input id="title" name="title" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field mceEditableSelect">
+ <option value="">{#not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
+ <td><input id="style" name="style" type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
+ <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text" value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td class="label"><label for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/abbr.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/abbr.js new file mode 100644 index 000000000..4b51a2572 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/abbr.js @@ -0,0 +1,28 @@ +/**
+ * abbr.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function init() {
+ SXE.initElementDialog('abbr');
+ if (SXE.currentAction == "update") {
+ SXE.showRemoveButton();
+ }
+}
+
+function insertAbbr() {
+ SXE.insertElement('abbr');
+ tinyMCEPopup.close();
+}
+
+function removeAbbr() {
+ SXE.removeElement('abbr');
+ tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/acronym.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/acronym.js new file mode 100644 index 000000000..6ec2f8871 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/acronym.js @@ -0,0 +1,28 @@ +/**
+ * acronym.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function init() {
+ SXE.initElementDialog('acronym');
+ if (SXE.currentAction == "update") {
+ SXE.showRemoveButton();
+ }
+}
+
+function insertAcronym() {
+ SXE.insertElement('acronym');
+ tinyMCEPopup.close();
+}
+
+function removeAcronym() {
+ SXE.removeElement('acronym');
+ tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/attributes.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/attributes.js new file mode 100644 index 000000000..d62a219e6 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/attributes.js @@ -0,0 +1,126 @@ +/**
+ * attributes.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+ var inst = tinyMCEPopup.editor;
+ var dom = inst.dom;
+ var elm = inst.selection.getNode();
+ var f = document.forms[0];
+ var onclick = dom.getAttrib(elm, 'onclick');
+
+ setFormValue('title', dom.getAttrib(elm, 'title'));
+ setFormValue('id', dom.getAttrib(elm, 'id'));
+ setFormValue('style', dom.getAttrib(elm, "style"));
+ setFormValue('dir', dom.getAttrib(elm, 'dir'));
+ setFormValue('lang', dom.getAttrib(elm, 'lang'));
+ setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
+ setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
+ setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
+ setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
+ setFormValue('onclick', onclick);
+ setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
+ setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
+ setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
+ setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
+ setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
+ setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
+ setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
+ setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
+ setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
+ className = dom.getAttrib(elm, 'class');
+
+ addClassesToList('classlist', 'advlink_styles');
+ selectByValue(f, 'classlist', className, true);
+
+ TinyMCE_EditableSelects.init();
+}
+
+function setFormValue(name, value) {
+ if(value && document.forms[0].elements[name]){
+ document.forms[0].elements[name].value = value;
+ }
+}
+
+function insertAction() {
+ var inst = tinyMCEPopup.editor;
+ var elm = inst.selection.getNode();
+
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");
+ setAllAttribs(elm);
+ tinyMCEPopup.execCommand("mceEndUndoLevel");
+ tinyMCEPopup.close();
+}
+
+function setAttrib(elm, attrib, value) {
+ var formObj = document.forms[0];
+ var valueElm = formObj.elements[attrib.toLowerCase()];
+ var inst = tinyMCEPopup.editor;
+ var dom = inst.dom;
+
+ if (typeof(value) == "undefined" || value == null) {
+ value = "";
+
+ if (valueElm)
+ value = valueElm.value;
+ }
+
+ if (value != "") {
+ dom.setAttrib(elm, attrib.toLowerCase(), value);
+
+ if (attrib == "style")
+ attrib = "style.cssText";
+
+ if (attrib.substring(0, 2) == 'on')
+ value = 'return true;' + value;
+
+ if (attrib == "class")
+ attrib = "className";
+
+ elm[attrib]=value;
+ } else
+ elm.removeAttribute(attrib);
+}
+
+function setAllAttribs(elm) {
+ var f = document.forms[0];
+
+ setAttrib(elm, 'title');
+ setAttrib(elm, 'id');
+ setAttrib(elm, 'style');
+ setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
+ setAttrib(elm, 'dir');
+ setAttrib(elm, 'lang');
+ setAttrib(elm, 'tabindex');
+ setAttrib(elm, 'accesskey');
+ setAttrib(elm, 'onfocus');
+ setAttrib(elm, 'onblur');
+ setAttrib(elm, 'onclick');
+ setAttrib(elm, 'ondblclick');
+ setAttrib(elm, 'onmousedown');
+ setAttrib(elm, 'onmouseup');
+ setAttrib(elm, 'onmouseover');
+ setAttrib(elm, 'onmousemove');
+ setAttrib(elm, 'onmouseout');
+ setAttrib(elm, 'onkeypress');
+ setAttrib(elm, 'onkeydown');
+ setAttrib(elm, 'onkeyup');
+
+ // Refresh in old MSIE
+// if (tinyMCE.isMSIE5)
+// elm.outerHTML = elm.outerHTML;
+}
+
+function insertAttribute() {
+ tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
+tinyMCEPopup.requireLangPack();
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/cite.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/cite.js new file mode 100644 index 000000000..009b71546 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/cite.js @@ -0,0 +1,28 @@ +/**
+ * cite.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function init() {
+ SXE.initElementDialog('cite');
+ if (SXE.currentAction == "update") {
+ SXE.showRemoveButton();
+ }
+}
+
+function insertCite() {
+ SXE.insertElement('cite');
+ tinyMCEPopup.close();
+}
+
+function removeCite() {
+ SXE.removeElement('cite');
+ tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/del.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/del.js new file mode 100644 index 000000000..9e5d8c571 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/del.js @@ -0,0 +1,63 @@ +/**
+ * del.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function init() {
+ SXE.initElementDialog('del');
+ if (SXE.currentAction == "update") {
+ setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
+ setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
+ SXE.showRemoveButton();
+ }
+}
+
+function setElementAttribs(elm) {
+ setAllCommonAttribs(elm);
+ setAttrib(elm, 'datetime');
+ setAttrib(elm, 'cite');
+}
+
+function insertDel() {
+ var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');
+
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');
+ if (elm == null) {
+ var s = SXE.inst.selection.getContent();
+ if(s.length > 0) {
+ insertInlineElement('del');
+ var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';});
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+ setElementAttribs(elm);
+ }
+ }
+ } else {
+ setElementAttribs(elm);
+ }
+ tinyMCEPopup.editor.nodeChanged();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function insertInlineElement(en) {
+ var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+ ed.getDoc().execCommand('FontName', false, 'mceinline');
+ tinymce.each(dom.select(tinymce.isWebKit ? 'span' : 'font'), function(n) {
+ if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+ dom.replace(dom.create(en), n, 1);
+ });
+}
+
+function removeDel() {
+ SXE.removeElement('del');
+ tinyMCEPopup.close();
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/element_common.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/element_common.js new file mode 100644 index 000000000..5b494a566 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/element_common.js @@ -0,0 +1,231 @@ +/**
+ * element_common.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+tinyMCEPopup.requireLangPack();
+
+function initCommonAttributes(elm) {
+ var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
+
+ // Setup form data for common element attributes
+ setFormValue('title', dom.getAttrib(elm, 'title'));
+ setFormValue('id', dom.getAttrib(elm, 'id'));
+ selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);
+ setFormValue('style', dom.getAttrib(elm, 'style'));
+ selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));
+ setFormValue('lang', dom.getAttrib(elm, 'lang'));
+ setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
+ setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
+ setFormValue('onclick', dom.getAttrib(elm, 'onclick'));
+ setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
+ setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
+ setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
+ setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
+ setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
+ setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
+ setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
+ setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
+ setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
+}
+
+function setFormValue(name, value) {
+ if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
+}
+
+function insertDateTime(id) {
+ document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
+}
+
+function getDateTime(d, fmt) {
+ fmt = fmt.replace("%D", "%m/%d/%y");
+ fmt = fmt.replace("%r", "%I:%M:%S %p");
+ fmt = fmt.replace("%Y", "" + d.getFullYear());
+ fmt = fmt.replace("%y", "" + d.getYear());
+ fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
+ fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
+ fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
+ fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
+ fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
+ fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
+ fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
+ fmt = fmt.replace("%%", "%");
+
+ return fmt;
+}
+
+function addZeros(value, len) {
+ var i;
+
+ value = "" + value;
+
+ if (value.length < len) {
+ for (i=0; i<(len-value.length); i++)
+ value = "0" + value;
+ }
+
+ return value;
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+ if (!form_obj || !form_obj.elements[field_name])
+ return;
+
+ var sel = form_obj.elements[field_name];
+
+ var found = false;
+ for (var i=0; i<sel.options.length; i++) {
+ var option = sel.options[i];
+
+ if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+ option.selected = true;
+ found = true;
+ } else
+ option.selected = false;
+ }
+
+ if (!found && add_custom && value != '') {
+ var option = new Option('Value: ' + value, value);
+ option.selected = true;
+ sel.options[sel.options.length] = option;
+ }
+
+ return found;
+}
+
+function setAttrib(elm, attrib, value) {
+ var formObj = document.forms[0];
+ var valueElm = formObj.elements[attrib.toLowerCase()];
+ tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);
+}
+
+function setAllCommonAttribs(elm) {
+ setAttrib(elm, 'title');
+ setAttrib(elm, 'id');
+ setAttrib(elm, 'class');
+ setAttrib(elm, 'style');
+ setAttrib(elm, 'dir');
+ setAttrib(elm, 'lang');
+ /*setAttrib(elm, 'onfocus');
+ setAttrib(elm, 'onblur');
+ setAttrib(elm, 'onclick');
+ setAttrib(elm, 'ondblclick');
+ setAttrib(elm, 'onmousedown');
+ setAttrib(elm, 'onmouseup');
+ setAttrib(elm, 'onmouseover');
+ setAttrib(elm, 'onmousemove');
+ setAttrib(elm, 'onmouseout');
+ setAttrib(elm, 'onkeypress');
+ setAttrib(elm, 'onkeydown');
+ setAttrib(elm, 'onkeyup');*/
+}
+
+SXE = {
+ currentAction : "insert",
+ inst : tinyMCEPopup.editor,
+ updateElement : null
+}
+
+SXE.focusElement = SXE.inst.selection.getNode();
+
+SXE.initElementDialog = function(element_name) {
+ addClassesToList('class', 'xhtmlxtras_styles');
+ TinyMCE_EditableSelects.init();
+
+ element_name = element_name.toLowerCase();
+ var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
+ if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {
+ SXE.currentAction = "update";
+ }
+
+ if (SXE.currentAction == "update") {
+ initCommonAttributes(elm);
+ SXE.updateElement = elm;
+ }
+
+ document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true);
+}
+
+SXE.insertElement = function(element_name) {
+ var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;
+
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');
+ if (elm == null) {
+ var s = SXE.inst.selection.getContent();
+ if(s.length > 0) {
+ tagName = element_name;
+
+ insertInlineElement(element_name);
+ var elementArray = tinymce.grep(SXE.inst.dom.select(element_name));
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+
+ if (SXE.inst.dom.getAttrib(elm, '_mce_new')) {
+ elm.id = '';
+ elm.setAttribute('id', '');
+ elm.removeAttribute('id');
+ elm.removeAttribute('_mce_new');
+
+ setAllCommonAttribs(elm);
+ }
+ }
+ }
+ } else {
+ setAllCommonAttribs(elm);
+ }
+ SXE.inst.nodeChanged();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+}
+
+SXE.removeElement = function(element_name){
+ element_name = element_name.toLowerCase();
+ elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
+ if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');
+ tinyMCE.execCommand('mceRemoveNode', false, elm);
+ SXE.inst.nodeChanged();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+ }
+}
+
+SXE.showRemoveButton = function() {
+ document.getElementById("remove").style.display = '';
+}
+
+SXE.containsClass = function(elm,cl) {
+ return (elm.className.indexOf(cl) > -1) ? true : false;
+}
+
+SXE.removeClass = function(elm,cl) {
+ if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
+ return true;
+ }
+ var classNames = elm.className.split(" ");
+ var newClassNames = "";
+ for (var x = 0, cnl = classNames.length; x < cnl; x++) {
+ if (classNames[x] != cl) {
+ newClassNames += (classNames[x] + " ");
+ }
+ }
+ elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
+}
+
+SXE.addClass = function(elm,cl) {
+ if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
+ return true;
+}
+
+function insertInlineElement(en) {
+ var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+ ed.getDoc().execCommand('FontName', false, 'mceinline');
+ tinymce.each(dom.select('span,font'), function(n) {
+ if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+ dom.replace(dom.create(en, {_mce_new : 1}), n, 1);
+ });
+}
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/js/ins.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/ins.js new file mode 100644 index 000000000..3774f0a18 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/js/ins.js @@ -0,0 +1,62 @@ +/**
+ * ins.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function init() {
+ SXE.initElementDialog('ins');
+ if (SXE.currentAction == "update") {
+ setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
+ setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
+ SXE.showRemoveButton();
+ }
+}
+
+function setElementAttribs(elm) {
+ setAllCommonAttribs(elm);
+ setAttrib(elm, 'datetime');
+ setAttrib(elm, 'cite');
+}
+
+function insertIns() {
+ var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');
+ if (elm == null) {
+ var s = SXE.inst.selection.getContent();
+ if(s.length > 0) {
+ insertInlineElement('INS');
+ var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';});
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+ setElementAttribs(elm);
+ }
+ }
+ } else {
+ setElementAttribs(elm);
+ }
+ tinyMCEPopup.editor.nodeChanged();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function removeIns() {
+ SXE.removeElement('ins');
+ tinyMCEPopup.close();
+}
+
+function insertInlineElement(en) {
+ var ed = tinyMCEPopup.editor, dom = ed.dom;
+
+ ed.getDoc().execCommand('FontName', false, 'mceinline');
+ tinymce.each(dom.select(tinymce.isWebKit ? 'span' : 'font'), function(n) {
+ if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
+ dom.replace(dom.create(en), n, 1);
+ });
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/langs/en_dlg.js b/plugins/TinyMCE/js/plugins/xhtmlxtras/langs/en_dlg.js new file mode 100644 index 000000000..45b6b267b --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/langs/en_dlg.js @@ -0,0 +1,32 @@ +tinyMCE.addI18n('en.xhtmlxtras_dlg',{
+attribute_label_title:"Title",
+attribute_label_id:"ID",
+attribute_label_class:"Class",
+attribute_label_style:"Style",
+attribute_label_cite:"Cite",
+attribute_label_datetime:"Date/Time",
+attribute_label_langdir:"Text Direction",
+attribute_option_ltr:"Left to right",
+attribute_option_rtl:"Right to left",
+attribute_label_langcode:"Language",
+attribute_label_tabindex:"TabIndex",
+attribute_label_accesskey:"AccessKey",
+attribute_events_tab:"Events",
+attribute_attrib_tab:"Attributes",
+general_tab:"General",
+attrib_tab:"Attributes",
+events_tab:"Events",
+fieldset_general_tab:"General Settings",
+fieldset_attrib_tab:"Element Attributes",
+fieldset_events_tab:"Element Events",
+title_ins_element:"Insertion Element",
+title_del_element:"Deletion Element",
+title_acronym_element:"Acronym Element",
+title_abbr_element:"Abbreviation Element",
+title_cite_element:"Citation Element",
+remove:"Remove",
+insert_date:"Insert current date/time",
+option_ltr:"Left to right",
+option_rtl:"Right to left",
+attribs_title:"Insert/Edit Attributes"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/advanced/about.htm b/plugins/TinyMCE/js/themes/advanced/about.htm new file mode 100644 index 000000000..267f837eb --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/about.htm @@ -0,0 +1,54 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.about_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="js/about.js"></script>
+</head>
+<body id="about" style="display: none">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
+ <li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
+ <li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <h3>{#advanced_dlg.about_title}</h3>
+ <p>Version: <span id="version"></span> (<span id="date"></span>)</p>
+ <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
+ by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
+ <p>Copyright © 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
+ <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
+
+ <div id="buttoncontainer">
+ <a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
+ <a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>
+ <a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>
+ </div>
+ </div>
+
+ <div id="plugins_panel" class="panel">
+ <div id="pluginscontainer">
+ <h3>{#advanced_dlg.about_loaded}</h3>
+
+ <div id="plugintablecontainer">
+ </div>
+
+ <p> </p>
+ </div>
+ </div>
+
+ <div id="help_panel" class="panel noscroll" style="overflow: visible;">
+ <div id="iframecontainer"></div>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
+ </div>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/advanced/anchor.htm b/plugins/TinyMCE/js/themes/advanced/anchor.htm new file mode 100644 index 000000000..2bc63fcfd --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/anchor.htm @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.anchor_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/anchor.js"></script>
+</head>
+<body style="display: none">
+<form onsubmit="AnchorDialog.update();return false;" action="#">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>
+ </tr>
+ <tr>
+ <td class="nowrap">{#advanced_dlg.anchor_name}:</td>
+ <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>
+ </tr>
+ </table>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#update}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/advanced/charmap.htm b/plugins/TinyMCE/js/themes/advanced/charmap.htm new file mode 100644 index 000000000..3991b8141 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/charmap.htm @@ -0,0 +1,52 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.charmap_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/charmap.js"></script>
+</head>
+<body id="charmap" style="display:none">
+<table align="center" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>
+ </tr>
+ <tr>
+ <td id="charmapView" rowspan="2" align="left" valign="top">
+ <!-- Chars will be rendered here -->
+ </td>
+ <td width="100" align="center" valign="top">
+ <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">
+ <tr>
+ <td id="codeV"> </td>
+ </tr>
+ <tr>
+ <td id="codeN"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td valign="bottom" style="padding-bottom: 3px;">
+ <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
+ <tr>
+ <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
+ </tr>
+ <tr>
+ <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center"> </td>
+ </tr>
+ <tr>
+ <td style="font-size: 1px;"> </td>
+ </tr>
+ <tr>
+ <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
+ </tr>
+ <tr>
+ <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/advanced/color_picker.htm b/plugins/TinyMCE/js/themes/advanced/color_picker.htm new file mode 100644 index 000000000..096e7550c --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/color_picker.htm @@ -0,0 +1,73 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.colorpicker_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="js/color_picker.js"></script>
+</head>
+<body id="colorpicker" style="display: none">
+<form onsubmit="insertAction();return false" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
+ <li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
+ <li id="named_tab"><span><a href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="picker_panel" class="panel current">
+ <fieldset>
+ <legend>{#advanced_dlg.colorpicker_picker_title}</legend>
+ <div id="picker">
+ <img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" alt="" />
+
+ <div id="light">
+ <!-- Will be filled with divs -->
+ </div>
+
+ <br style="clear: both" />
+ </div>
+ </fieldset>
+ </div>
+
+ <div id="rgb_panel" class="panel">
+ <fieldset>
+ <legend>{#advanced_dlg.colorpicker_palette_title}</legend>
+ <div id="webcolors">
+ <!-- Gets filled with web safe colors-->
+ </div>
+
+ <br style="clear: both" />
+ </fieldset>
+ </div>
+
+ <div id="named_panel" class="panel">
+ <fieldset>
+ <legend>{#advanced_dlg.colorpicker_named_title}</legend>
+ <div id="namedcolors">
+ <!-- Gets filled with named colors-->
+ </div>
+
+ <br style="clear: both" />
+
+ <div id="colornamecontainer">
+ {#advanced_dlg.colorpicker_name} <span id="colorname"></span>
+ </div>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#apply}" />
+
+ <div id="preview"></div>
+
+ <div id="previewblock">
+ <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />
+ </div>
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/advanced/editor_template.js b/plugins/TinyMCE/js/themes/advanced/editor_template.js new file mode 100644 index 000000000..4c433127f --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/editor_template.js @@ -0,0 +1 @@ +(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l)}if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(!o||p[0]==o){i.formatter.remove(p[0])}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){var m=k.items[k.selectedIndex];if(!l&&m){i.execCommand("FontName",false,m.value);return}i.execCommand("FontName",false,l);k.select(function(n){return l==n});return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){var o=n.items[n.selectedIndex];if(!i&&o){o=o.value;if(o["class"]){k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}return}if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(p){return i==p});return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=this.settings,m=d.get(j.id+"_tbl"),n=d.get(j.id+"_ifr");i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);d.setStyle(m,"height","");d.setStyle(n,"height",l);if(k.theme_advanced_resize_horizontal){d.setStyle(m,"width","");d.setStyle(n,"width",i);if(i<m.clientWidth){d.setStyle(n,"width",m.clientWidth)}}},destroy:function(){var i=this.editor.id;b.clear(i+"_resize");b.clear(i+"_path_row");b.clear(i+"_external_close")},_simpleLayout:function(y,r,k,i){var x=this,u=x.editor,v=y.theme_advanced_toolbar_location,m=y.theme_advanced_statusbar_location,l,j,q,w;if(y.readonly){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});return j}if(v=="top"){x._addToolbars(r,k)}if(v=="external"){l=w=d.create("div",{style:"position:relative"});l=d.add(l,"div",{id:u.id+"_external","class":"mceExternalToolbar"});d.add(l,"a",{id:u.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});l=d.add(l,"table",{id:u.id+"_tblext",cellSpacing:0,cellPadding:0});q=d.add(l,"tbody");if(i.firstChild.className=="mceOldBoxModel"){i.firstChild.appendChild(w)}else{i.insertBefore(w,i.firstChild)}x._addToolbars(q,k);u.onMouseUp.add(function(){var o=d.get(u.id+"_external");d.show(o);d.hide(g);var n=b.add(u.id+"_external_close","click",function(){d.hide(u.id+"_external");b.remove(u.id+"_external_close","click",n)});d.show(o);d.setStyle(o,"top",0-d.getRect(u.id+"_tblext").h-1);d.hide(o);d.show(o);o.style.filter="";g=u.id+"_external";o=null})}if(m=="top"){x._addStatusBar(r,k)}if(!y.theme_advanced_toolbar_container){l=d.add(r,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"})}if(v=="bottom"){x._addToolbars(r,k)}if(m=="bottom"){x._addStatusBar(r,k)}return j},_rowLayout:function(w,m,k){var v=this,p=v.editor,u,x,i=p.controlManager,l,j,r,q;u=w.theme_advanced_containers_default_class||"";x=w.theme_advanced_containers_default_align||"center";f(c(w.theme_advanced_containers||""),function(s,o){var n=w["theme_advanced_container_"+s]||"";switch(n.toLowerCase()){case"mceeditor":l=d.add(m,"tr");l=j=d.add(l,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":v._addStatusBar(m,k);break;default:q=(w["theme_advanced_container_"+s+"_align"]||x).toLowerCase();q="mce"+v._ufirst(q);l=d.add(d.add(m,"tr"),"td",{"class":"mceToolbar "+(w["theme_advanced_container_"+s+"_class"]||u)+" "+q||x});r=i.createToolbar("toolbar"+o);v._addControls(n,r);d.setHTML(l,r.renderHTML());k.deltaHeight-=w.theme_advanced_row_height}});return j},_addControls:function(j,i){var k=this,l=k.settings,m,n=k.editor.controlManager;if(l.theme_advanced_disable&&!k._disabled){m={};f(c(l.theme_advanced_disable),function(o){m[o]=1});k._disabled=m}else{m=k._disabled}f(c(j),function(p){var o;if(m&&m[p]){return}if(p=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(q){q=k.createControl(q,n);if(q){i.add(q)}});return}o=k.createControl(p,n);if(o){i.add(o)}})},_addToolbars:function(w,k){var z=this,p,m,r=z.editor,A=z.settings,y,j=r.controlManager,u,l,q=[],x;x=A.theme_advanced_toolbar_align.toLowerCase();x="mce"+z._ufirst(x);l=d.add(d.add(w,"tr"),"td",{"class":"mceToolbar "+x});if(!r.getParam("accessibility_focus")){q.push(d.createHTML("a",{href:"#",onfocus:"tinyMCE.get('"+r.id+"').focus();"},"<!-- IE -->"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},"<!-- IE -->"));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},"<!-- IE -->"));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":" ");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:n,ch:E})}}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(r,z,l,x,j){var C=this,i,y=0,B,u,D=C.settings,A,k,w,m,q;e.each(C.stateControls,function(n){z.setActive(n,r.queryCommandState(C.controls[n][1]))});function o(p){var s,n=j.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}z.setActive("visualaid",r.hasVisual);z.setDisabled("undo",!r.undoManager.hasUndo()&&!r.typing);z.setDisabled("redo",!r.undoManager.hasRedo());z.setDisabled("outdent",!r.queryCommandState("Outdent"));i=o("A");if(u=z.get("link")){if(!i||!i.name){u.setDisabled(!i&&x);u.setActive(!!i)}}if(u=z.get("unlink")){u.setDisabled(!i&&x);u.setActive(!!i&&!i.name)}if(u=z.get("anchor")){u.setActive(!!i&&i.name)}i=o("IMG");if(u=z.get("image")){u.setActive(!!i&&l.className.indexOf("mceItem")==-1)}if(u=z.get("styleselect")){C._importClasses();m=[];f(u.items,function(n){m.push(n.value)});q=r.formatter.matchAll(m);u.select(q[0])}if(u=z.get("formatselect")){i=o(d.isBlock);if(i){u.select(i.nodeName.toLowerCase())}}o(function(p){if(p.nodeName==="SPAN"){if(!A&&p.className){A=p.className}if(!k&&p.style.fontSize){k=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}}return false});if(u=z.get("fontselect")){u.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(u=z.get("fontsizeselect")){if(D.theme_advanced_runtime_fontsize&&!k&&!A){k=r.dom.getStyle(l,"fontSize",true)}u.select(function(n){if(n.fontSize&&n.fontSize===k){return true}if(n["class"]&&n["class"]===A){return true}})}if(D.theme_advanced_path&&D.theme_advanced_statusbar_location){i=d.get(r.id+"_path")||d.add(r.id+"_path_row","span",{id:r.id+"_path"});d.setHTML(i,"");o(function(E){var p=E.nodeName.toLowerCase(),s,v,t="";if(E.nodeType!=1||E.nodeName==="BR"||(d.hasClass(E,"mceItemHidden")||d.hasClass(E,"mceItemRemoved"))){return}if(B=d.getAttrib(E,"mce_name")){p=B}if(e.isIE&&E.scopeName!=="HTML"){p=E.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(B=d.getAttrib(E,"src")){t+="src: "+B+" "}break;case"a":if(B=d.getAttrib(E,"name")){t+="name: "+B+" ";p+="#"+B}if(B=d.getAttrib(E,"href")){t+="href: "+B+" "}break;case"font":if(B=d.getAttrib(E,"face")){t+="font: "+B+" "}if(B=d.getAttrib(E,"size")){t+="size: "+B+" "}if(B=d.getAttrib(E,"color")){t+="color: "+B+" "}break;case"span":if(B=d.getAttrib(E,"style")){t+="style: "+B+" "}break}if(B=d.getAttrib(E,"id")){t+="id: "+B+" "}if(B=E.className){B=B.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(B){t+="class: "+B+" ";if(d.isBlock(E)||p=="img"||p=="span"){p+="."+B}}}p=p.replace(/(html:)/g,"");p={name:p,node:E,title:t};C.onResolveName.dispatch(C,p);t=p.title;p=p.name;v=d.create("a",{href:"javascript:;",onmousedown:"return false;",title:t,"class":"mcePath_"+(y++)},p);if(i.hasChildNodes()){i.insertBefore(d.doc.createTextNode(" \u00bb "),i.firstChild);i.insertBefore(v,i.firstChild)}else{i.appendChild(v)}},r.getBody())}},_sel:function(i){this.editor.execCommand("mceSelectNodeDepth",false,i)},_mceInsertAnchor:function(k,j){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/anchor.htm",width:320+parseInt(i.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(i.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/charmap.htm",width:550+parseInt(i.getLang("advanced.charmap_delta_width",0)),height:250+parseInt(i.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(k,j){var i=this.editor;j=j||{};i.windowManager.open({url:e.baseURL+"/themes/advanced/color_picker.htm",width:375+parseInt(i.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(i.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:j.color,func:j.func,theme_url:this.url})},_mceCodeEditor:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/source_editor.htm",width:parseInt(i.getParam("theme_advanced_source_editor_width",720)),height:parseInt(i.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(j,k){var i=this.editor;if(i.dom.getAttrib(i.selection.getNode(),"class").indexOf("mceItem")!=-1){return}i.windowManager.open({url:e.baseURL+"/themes/advanced/image.htm",width:355+parseInt(i.getLang("advanced.image_delta_width",0)),height:275+parseInt(i.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(j,k){var i=this.editor;i.windowManager.open({url:e.baseURL+"/themes/advanced/link.htm",width:310+parseInt(i.getLang("advanced.link_delta_width",0)),height:200+parseInt(i.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var i=this.editor;i.windowManager.confirm("advanced.newdocument",function(j){if(j){i.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var i=this;this._mceColorPicker(0,{color:i.fgColor,func:function(j){i.fgColor=j;i.editor.execCommand("ForeColor",false,j)}})},_mceBackColor:function(){var i=this;this._mceColorPicker(0,{color:i.bgColor,func:function(j){i.bgColor=j;i.editor.execCommand("HiliteColor",false,j)}})},_ufirst:function(i){return i.substring(0,1).toUpperCase()+i.substring(1)}});e.ThemeManager.add("advanced",e.themes.AdvancedTheme)}(tinymce));
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/advanced/editor_template_src.js b/plugins/TinyMCE/js/themes/advanced/editor_template_src.js new file mode 100644 index 000000000..e0d4dacc0 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/editor_template_src.js @@ -0,0 +1,1217 @@ +/**
+ * editor_template_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function(tinymce) {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
+
+ // Tell it to load theme specific language pack(s)
+ tinymce.ThemeManager.requireLangPack('advanced');
+
+ tinymce.create('tinymce.themes.AdvancedTheme', {
+ sizes : [8, 10, 12, 14, 18, 24, 36],
+
+ // Control name lookup, format: title, command
+ controls : {
+ bold : ['bold_desc', 'Bold'],
+ italic : ['italic_desc', 'Italic'],
+ underline : ['underline_desc', 'Underline'],
+ strikethrough : ['striketrough_desc', 'Strikethrough'],
+ justifyleft : ['justifyleft_desc', 'JustifyLeft'],
+ justifycenter : ['justifycenter_desc', 'JustifyCenter'],
+ justifyright : ['justifyright_desc', 'JustifyRight'],
+ justifyfull : ['justifyfull_desc', 'JustifyFull'],
+ bullist : ['bullist_desc', 'InsertUnorderedList'],
+ numlist : ['numlist_desc', 'InsertOrderedList'],
+ outdent : ['outdent_desc', 'Outdent'],
+ indent : ['indent_desc', 'Indent'],
+ cut : ['cut_desc', 'Cut'],
+ copy : ['copy_desc', 'Copy'],
+ paste : ['paste_desc', 'Paste'],
+ undo : ['undo_desc', 'Undo'],
+ redo : ['redo_desc', 'Redo'],
+ link : ['link_desc', 'mceLink'],
+ unlink : ['unlink_desc', 'unlink'],
+ image : ['image_desc', 'mceImage'],
+ cleanup : ['cleanup_desc', 'mceCleanup'],
+ help : ['help_desc', 'mceHelp'],
+ code : ['code_desc', 'mceCodeEditor'],
+ hr : ['hr_desc', 'InsertHorizontalRule'],
+ removeformat : ['removeformat_desc', 'RemoveFormat'],
+ sub : ['sub_desc', 'subscript'],
+ sup : ['sup_desc', 'superscript'],
+ forecolor : ['forecolor_desc', 'ForeColor'],
+ forecolorpicker : ['forecolor_desc', 'mceForeColor'],
+ backcolor : ['backcolor_desc', 'HiliteColor'],
+ backcolorpicker : ['backcolor_desc', 'mceBackColor'],
+ charmap : ['charmap_desc', 'mceCharMap'],
+ visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
+ anchor : ['anchor_desc', 'mceInsertAnchor'],
+ newdocument : ['newdocument_desc', 'mceNewDocument'],
+ blockquote : ['blockquote_desc', 'mceBlockQuote']
+ },
+
+ stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
+
+ init : function(ed, url) {
+ var t = this, s, v, o;
+
+ t.editor = ed;
+ t.url = url;
+ t.onResolveName = new tinymce.util.Dispatcher(this);
+
+ // Default settings
+ t.settings = s = extend({
+ theme_advanced_path : true,
+ theme_advanced_toolbar_location : 'bottom',
+ theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
+ theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
+ theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
+ theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
+ theme_advanced_more_colors : 1,
+ theme_advanced_row_height : 23,
+ theme_advanced_resize_horizontal : 1,
+ theme_advanced_resizing_use_cookie : 1,
+ theme_advanced_font_sizes : "1,2,3,4,5,6,7",
+ readonly : ed.settings.readonly
+ }, ed.settings);
+
+ // Setup default font_size_style_values
+ if (!s.font_size_style_values)
+ s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt";
+
+ if (tinymce.is(s.theme_advanced_font_sizes, 'string')) {
+ s.font_size_style_values = tinymce.explode(s.font_size_style_values);
+ s.font_size_classes = tinymce.explode(s.font_size_classes || '');
+
+ // Parse string value
+ o = {};
+ ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes;
+ each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) {
+ var cl;
+
+ if (k == v && v >= 1 && v <= 7) {
+ k = v + ' (' + t.sizes[v - 1] + 'pt)';
+ cl = s.font_size_classes[v - 1];
+ v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
+ }
+
+ if (/^\s*\./.test(v))
+ cl = v.replace(/\./g, '');
+
+ o[k] = cl ? {'class' : cl} : {fontSize : v};
+ });
+
+ s.theme_advanced_font_sizes = o;
+ }
+
+ if ((v = s.theme_advanced_path_location) && v != 'none')
+ s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
+
+ if (s.theme_advanced_statusbar_location == 'none')
+ s.theme_advanced_statusbar_location = 0;
+
+ // Init editor
+ ed.onInit.add(function() {
+ if (!ed.settings.readonly)
+ ed.onNodeChange.add(t._nodeChanged, t);
+
+ if (ed.settings.content_css !== false)
+ ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
+ });
+
+ ed.onSetProgressState.add(function(ed, b, ti) {
+ var co, id = ed.id, tb;
+
+ if (b) {
+ t.progressTimer = setTimeout(function() {
+ co = ed.getContainer();
+ co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
+ tb = DOM.get(ed.id + '_tbl');
+
+ DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
+ DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
+ }, ti || 0);
+ } else {
+ DOM.remove(id + '_blocker');
+ DOM.remove(id + '_progress');
+ clearTimeout(t.progressTimer);
+ }
+ });
+
+ DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css");
+
+ if (s.skin_variant)
+ DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css");
+ },
+
+ createControl : function(n, cf) {
+ var cd, c;
+
+ if (c = cf.createControl(n))
+ return c;
+
+ switch (n) {
+ case "styleselect":
+ return this._createStyleSelect();
+
+ case "formatselect":
+ return this._createBlockFormats();
+
+ case "fontselect":
+ return this._createFontSelect();
+
+ case "fontsizeselect":
+ return this._createFontSizeSelect();
+
+ case "forecolor":
+ return this._createForeColorMenu();
+
+ case "backcolor":
+ return this._createBackColorMenu();
+ }
+
+ if ((cd = this.controls[n]))
+ return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
+ },
+
+ execCommand : function(cmd, ui, val) {
+ var f = this['_' + cmd];
+
+ if (f) {
+ f.call(this, ui, val);
+ return true;
+ }
+
+ return false;
+ },
+
+ _importClasses : function(e) {
+ var ed = this.editor, ctrl = ed.controlManager.get('styleselect');
+
+ if (ctrl.getLength() == 0) {
+ each(ed.dom.getClasses(), function(o, idx) {
+ var name = 'style_' + idx;
+
+ ed.formatter.register(name, {
+ inline : 'span',
+ attributes : {'class' : o['class']},
+ selector : '*'
+ });
+
+ ctrl.add(o['class'], name);
+ });
+ }
+ },
+
+ _createStyleSelect : function(n) {
+ var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl;
+
+ // Setup style select box
+ ctrl = ctrlMan.createListBox('styleselect', {
+ title : 'advanced.style_select',
+ onselect : function(name) {
+ var matches, formatNames = [];
+
+ each(ctrl.items, function(item) {
+ formatNames.push(item.value);
+ });
+
+ ed.focus();
+ ed.undoManager.add();
+
+ // Toggle off the current format
+ matches = ed.formatter.matchAll(formatNames);
+ if (!name || matches[0] == name)
+ ed.formatter.remove(matches[0]);
+ else
+ ed.formatter.apply(name);
+
+ ed.undoManager.add();
+ ed.nodeChanged();
+
+ return false; // No auto select
+ }
+ });
+
+ // Handle specified format
+ ed.onInit.add(function() {
+ var counter = 0, formats = ed.getParam('style_formats');
+
+ if (formats) {
+ each(formats, function(fmt) {
+ var name, keys = 0;
+
+ each(fmt, function() {keys++;});
+
+ if (keys > 1) {
+ name = fmt.name = fmt.name || 'style_' + (counter++);
+ ed.formatter.register(name, fmt);
+ ctrl.add(fmt.title, name);
+ } else
+ ctrl.add(fmt.title);
+ });
+ } else {
+ each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {
+ var name;
+
+ if (val) {
+ name = 'style_' + (counter++);
+
+ ed.formatter.register(name, {
+ inline : 'span',
+ classes : val,
+ selector : '*'
+ });
+
+ ctrl.add(t.editor.translate(key), name);
+ }
+ });
+ }
+ });
+
+ // Auto import classes if the ctrl box is empty
+ if (ctrl.getLength() == 0) {
+ ctrl.onPostRender.add(function(ed, n) {
+ if (!ctrl.NativeListBox) {
+ Event.add(n.id + '_text', 'focus', t._importClasses, t);
+ Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
+ Event.add(n.id + '_open', 'focus', t._importClasses, t);
+ Event.add(n.id + '_open', 'mousedown', t._importClasses, t);
+ } else
+ Event.add(n.id, 'focus', t._importClasses, t);
+ });
+ }
+
+ return ctrl;
+ },
+
+ _createFontSelect : function() {
+ var c, t = this, ed = t.editor;
+
+ c = ed.controlManager.createListBox('fontselect', {
+ title : 'advanced.fontdefault',
+ onselect : function(v) {
+ var cur = c.items[c.selectedIndex];
+
+ if (!v && cur) {
+ ed.execCommand('FontName', false, cur.value);
+ return;
+ }
+
+ ed.execCommand('FontName', false, v);
+
+ // Fake selection, execCommand will fire a nodeChange and update the selection
+ c.select(function(sv) {
+ return v == sv;
+ });
+
+ return false; // No auto select
+ }
+ });
+
+ if (c) {
+ each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
+ c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
+ });
+ }
+
+ return c;
+ },
+
+ _createFontSizeSelect : function() {
+ var t = this, ed = t.editor, c, i = 0, cl = [];
+
+ c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
+ var cur = c.items[c.selectedIndex];
+
+ if (!v && cur) {
+ cur = cur.value;
+
+ if (cur['class']) {
+ ed.formatter.toggle('fontsize_class', {value : cur['class']});
+ ed.undoManager.add();
+ ed.nodeChanged();
+ } else {
+ ed.execCommand('FontSize', false, cur.fontSize);
+ }
+
+ return;
+ }
+
+ if (v['class']) {
+ ed.focus();
+ ed.undoManager.add();
+ ed.formatter.toggle('fontsize_class', {value : v['class']});
+ ed.undoManager.add();
+ ed.nodeChanged();
+ } else
+ ed.execCommand('FontSize', false, v.fontSize);
+
+ // Fake selection, execCommand will fire a nodeChange and update the selection
+ c.select(function(sv) {
+ return v == sv;
+ });
+
+ return false; // No auto select
+ }});
+
+ if (c) {
+ each(t.settings.theme_advanced_font_sizes, function(v, k) {
+ var fz = v.fontSize;
+
+ if (fz >= 1 && fz <= 7)
+ fz = t.sizes[parseInt(fz) - 1] + 'pt';
+
+ c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))});
+ });
+ }
+
+ return c;
+ },
+
+ _createBlockFormats : function() {
+ var c, fmts = {
+ p : 'advanced.paragraph',
+ address : 'advanced.address',
+ pre : 'advanced.pre',
+ h1 : 'advanced.h1',
+ h2 : 'advanced.h2',
+ h3 : 'advanced.h3',
+ h4 : 'advanced.h4',
+ h5 : 'advanced.h5',
+ h6 : 'advanced.h6',
+ div : 'advanced.div',
+ blockquote : 'advanced.blockquote',
+ code : 'advanced.code',
+ dt : 'advanced.dt',
+ dd : 'advanced.dd',
+ samp : 'advanced.samp'
+ }, t = this;
+
+ c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});
+ if (c) {
+ each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
+ c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
+ });
+ }
+
+ return c;
+ },
+
+ _createForeColorMenu : function() {
+ var c, t = this, s = t.settings, o = {}, v;
+
+ if (s.theme_advanced_more_colors) {
+ o.more_colors_func = function() {
+ t._mceColorPicker(0, {
+ color : c.value,
+ func : function(co) {
+ c.setColor(co);
+ }
+ });
+ };
+ }
+
+ if (v = s.theme_advanced_text_colors)
+ o.colors = v;
+
+ if (s.theme_advanced_default_foreground_color)
+ o.default_color = s.theme_advanced_default_foreground_color;
+
+ o.title = 'advanced.forecolor_desc';
+ o.cmd = 'ForeColor';
+ o.scope = this;
+
+ c = t.editor.controlManager.createColorSplitButton('forecolor', o);
+
+ return c;
+ },
+
+ _createBackColorMenu : function() {
+ var c, t = this, s = t.settings, o = {}, v;
+
+ if (s.theme_advanced_more_colors) {
+ o.more_colors_func = function() {
+ t._mceColorPicker(0, {
+ color : c.value,
+ func : function(co) {
+ c.setColor(co);
+ }
+ });
+ };
+ }
+
+ if (v = s.theme_advanced_background_colors)
+ o.colors = v;
+
+ if (s.theme_advanced_default_background_color)
+ o.default_color = s.theme_advanced_default_background_color;
+
+ o.title = 'advanced.backcolor_desc';
+ o.cmd = 'HiliteColor';
+ o.scope = this;
+
+ c = t.editor.controlManager.createColorSplitButton('backcolor', o);
+
+ return c;
+ },
+
+ renderUI : function(o) {
+ var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
+
+ n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
+
+ if (!DOM.boxModel)
+ n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
+
+ n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
+ n = tb = DOM.add(n, 'tbody');
+
+ switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
+ case "rowlayout":
+ ic = t._rowLayout(s, tb, o);
+ break;
+
+ case "customlayout":
+ ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
+ break;
+
+ default:
+ ic = t._simpleLayout(s, tb, o, p);
+ }
+
+ n = o.targetNode;
+
+ // Add classes to first and last TRs
+ nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8
+ DOM.addClass(nl[0], 'mceFirst');
+ DOM.addClass(nl[nl.length - 1], 'mceLast');
+
+ // Add classes to first and last TDs
+ each(DOM.select('tr', tb), function(n) {
+ DOM.addClass(n.firstChild, 'mceFirst');
+ DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
+ });
+
+ if (DOM.get(s.theme_advanced_toolbar_container))
+ DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
+ else
+ DOM.insertAfter(p, n);
+
+ Event.add(ed.id + '_path_row', 'click', function(e) {
+ e = e.target;
+
+ if (e.nodeName == 'A') {
+ t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
+
+ return Event.cancel(e);
+ }
+ });
+/*
+ if (DOM.get(ed.id + '_path_row')) {
+ Event.add(ed.id + '_tbl', 'mouseover', function(e) {
+ var re;
+
+ e = e.target;
+
+ if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
+ re = DOM.get(ed.id + '_path_row');
+ t.lastPath = re.innerHTML;
+ DOM.setHTML(re, e.parentNode.title);
+ }
+ });
+
+ Event.add(ed.id + '_tbl', 'mouseout', function(e) {
+ if (t.lastPath) {
+ DOM.setHTML(ed.id + '_path_row', t.lastPath);
+ t.lastPath = 0;
+ }
+ });
+ }
+*/
+
+ if (!ed.getParam('accessibility_focus'))
+ Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
+
+ if (s.theme_advanced_toolbar_location == 'external')
+ o.deltaHeight = 0;
+
+ t.deltaHeight = o.deltaHeight;
+ o.targetNode = null;
+
+ return {
+ iframeContainer : ic,
+ editorContainer : ed.id + '_parent',
+ sizeContainer : sc,
+ deltaHeight : o.deltaHeight
+ };
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Advanced theme',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ }
+ },
+
+ resizeBy : function(dw, dh) {
+ var e = DOM.get(this.editor.id + '_tbl');
+
+ this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
+ },
+
+ resizeTo : function(w, h) {
+ var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr');
+
+ // Boundery fix box
+ w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
+ h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
+ w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
+ h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
+
+ // Resize iframe and container
+ DOM.setStyle(e, 'height', '');
+ DOM.setStyle(ifr, 'height', h);
+
+ if (s.theme_advanced_resize_horizontal) {
+ DOM.setStyle(e, 'width', '');
+ DOM.setStyle(ifr, 'width', w);
+
+ // Make sure that the size is never smaller than the over all ui
+ if (w < e.clientWidth)
+ DOM.setStyle(ifr, 'width', e.clientWidth);
+ }
+ },
+
+ destroy : function() {
+ var id = this.editor.id;
+
+ Event.clear(id + '_resize');
+ Event.clear(id + '_path_row');
+ Event.clear(id + '_external_close');
+ },
+
+ // Internal functions
+
+ _simpleLayout : function(s, tb, o, p) {
+ var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
+
+ if (s.readonly) {
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+ return ic;
+ }
+
+ // Create toolbar container at top
+ if (lo == 'top')
+ t._addToolbars(tb, o);
+
+ // Create external toolbar
+ if (lo == 'external') {
+ n = c = DOM.create('div', {style : 'position:relative'});
+ n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
+ DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
+ n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
+ etb = DOM.add(n, 'tbody');
+
+ if (p.firstChild.className == 'mceOldBoxModel')
+ p.firstChild.appendChild(c);
+ else
+ p.insertBefore(c, p.firstChild);
+
+ t._addToolbars(etb, o);
+
+ ed.onMouseUp.add(function() {
+ var e = DOM.get(ed.id + '_external');
+ DOM.show(e);
+
+ DOM.hide(lastExtID);
+
+ var f = Event.add(ed.id + '_external_close', 'click', function() {
+ DOM.hide(ed.id + '_external');
+ Event.remove(ed.id + '_external_close', 'click', f);
+ });
+
+ DOM.show(e);
+ DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
+
+ // Fixes IE rendering bug
+ DOM.hide(e);
+ DOM.show(e);
+ e.style.filter = '';
+
+ lastExtID = ed.id + '_external';
+
+ e = null;
+ });
+ }
+
+ if (sl == 'top')
+ t._addStatusBar(tb, o);
+
+ // Create iframe container
+ if (!s.theme_advanced_toolbar_container) {
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+ }
+
+ // Create toolbar container at bottom
+ if (lo == 'bottom')
+ t._addToolbars(tb, o);
+
+ if (sl == 'bottom')
+ t._addStatusBar(tb, o);
+
+ return ic;
+ },
+
+ _rowLayout : function(s, tb, o) {
+ var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
+
+ dc = s.theme_advanced_containers_default_class || '';
+ da = s.theme_advanced_containers_default_align || 'center';
+
+ each(explode(s.theme_advanced_containers || ''), function(c, i) {
+ var v = s['theme_advanced_container_' + c] || '';
+
+ switch (v.toLowerCase()) {
+ case 'mceeditor':
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
+ break;
+
+ case 'mceelementpath':
+ t._addStatusBar(tb, o);
+ break;
+
+ default:
+ a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
+ a = 'mce' + t._ufirst(a);
+
+ n = DOM.add(DOM.add(tb, 'tr'), 'td', {
+ 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
+ });
+
+ to = cf.createToolbar("toolbar" + i);
+ t._addControls(v, to);
+ DOM.setHTML(n, to.renderHTML());
+ o.deltaHeight -= s.theme_advanced_row_height;
+ }
+ });
+
+ return ic;
+ },
+
+ _addControls : function(v, tb) {
+ var t = this, s = t.settings, di, cf = t.editor.controlManager;
+
+ if (s.theme_advanced_disable && !t._disabled) {
+ di = {};
+
+ each(explode(s.theme_advanced_disable), function(v) {
+ di[v] = 1;
+ });
+
+ t._disabled = di;
+ } else
+ di = t._disabled;
+
+ each(explode(v), function(n) {
+ var c;
+
+ if (di && di[n])
+ return;
+
+ // Compatiblity with 2.x
+ if (n == 'tablecontrols') {
+ each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
+ n = t.createControl(n, cf);
+
+ if (n)
+ tb.add(n);
+ });
+
+ return;
+ }
+
+ c = t.createControl(n, cf);
+
+ if (c)
+ tb.add(c);
+ });
+ },
+
+ _addToolbars : function(c, o) {
+ var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;
+
+ a = s.theme_advanced_toolbar_align.toLowerCase();
+ a = 'mce' + t._ufirst(a);
+
+ n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});
+
+ if (!ed.getParam('accessibility_focus'))
+ h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+
+ h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));
+
+ // Create toolbar and add the controls
+ for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
+ tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
+
+ if (s['theme_advanced_buttons' + i + '_add'])
+ v += ',' + s['theme_advanced_buttons' + i + '_add'];
+
+ if (s['theme_advanced_buttons' + i + '_add_before'])
+ v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
+
+ t._addControls(v, tb);
+
+ //n.appendChild(n = tb.render());
+ h.push(tb.renderHTML());
+
+ o.deltaHeight -= s.theme_advanced_row_height;
+ }
+
+ h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
+ DOM.setHTML(n, h.join(''));
+ },
+
+ _addStatusBar : function(tb, o) {
+ var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
+
+ n = DOM.add(tb, 'tr');
+ n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
+ n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' ');
+ DOM.add(n, 'a', {href : '#', accesskey : 'x'});
+
+ if (s.theme_advanced_resizing) {
+ DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});
+
+ if (s.theme_advanced_resizing_use_cookie) {
+ ed.onPostRender.add(function() {
+ var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
+
+ if (!o)
+ return;
+
+ t.resizeTo(o.cw, o.ch);
+ });
+ }
+
+ ed.onPostRender.add(function() {
+ Event.add(ed.id + '_resize', 'mousedown', function(e) {
+ var mouseMoveHandler1, mouseMoveHandler2,
+ mouseUpHandler1, mouseUpHandler2,
+ startX, startY, startWidth, startHeight, width, height, ifrElm;
+
+ function resizeOnMove(e) {
+ width = startWidth + (e.screenX - startX);
+ height = startHeight + (e.screenY - startY);
+
+ t.resizeTo(width, height);
+ };
+
+ function endResize(e) {
+ // Stop listening
+ Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1);
+ Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2);
+ Event.remove(DOM.doc, 'mouseup', mouseUpHandler1);
+ Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2);
+
+ // Store away the size
+ if (s.theme_advanced_resizing_use_cookie) {
+ Cookie.setHash("TinyMCE_" + ed.id + "_size", {
+ cw : width,
+ ch : height
+ });
+ }
+ };
+
+ e.preventDefault();
+
+ // Get the current rect size
+ startX = e.screenX;
+ startY = e.screenY;
+ ifrElm = DOM.get(t.editor.id + '_ifr');
+ startWidth = width = ifrElm.clientWidth;
+ startHeight = height = ifrElm.clientHeight;
+
+ // Register envent handlers
+ mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove);
+ mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove);
+ mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize);
+ mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize);
+ });
+ });
+ }
+
+ o.deltaHeight -= 21;
+ n = tb = null;
+ },
+
+ _nodeChanged : function(ed, cm, n, co, ob) {
+ var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, formatNames, matches;
+
+ tinymce.each(t.stateControls, function(c) {
+ cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
+ });
+
+ function getParent(name) {
+ var i, parents = ob.parents, func = name;
+
+ if (typeof(name) == 'string') {
+ func = function(node) {
+ return node.nodeName == name;
+ };
+ }
+
+ for (i = 0; i < parents.length; i++) {
+ if (func(parents[i]))
+ return parents[i];
+ }
+ };
+
+ cm.setActive('visualaid', ed.hasVisual);
+ cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
+ cm.setDisabled('redo', !ed.undoManager.hasRedo());
+ cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
+
+ p = getParent('A');
+ if (c = cm.get('link')) {
+ if (!p || !p.name) {
+ c.setDisabled(!p && co);
+ c.setActive(!!p);
+ }
+ }
+
+ if (c = cm.get('unlink')) {
+ c.setDisabled(!p && co);
+ c.setActive(!!p && !p.name);
+ }
+
+ if (c = cm.get('anchor')) {
+ c.setActive(!!p && p.name);
+ }
+
+ p = getParent('IMG');
+ if (c = cm.get('image'))
+ c.setActive(!!p && n.className.indexOf('mceItem') == -1);
+
+ if (c = cm.get('styleselect')) {
+ t._importClasses();
+
+ formatNames = [];
+ each(c.items, function(item) {
+ formatNames.push(item.value);
+ });
+
+ matches = ed.formatter.matchAll(formatNames);
+ c.select(matches[0]);
+ }
+
+ if (c = cm.get('formatselect')) {
+ p = getParent(DOM.isBlock);
+
+ if (p)
+ c.select(p.nodeName.toLowerCase());
+ }
+
+ // Find out current fontSize, fontFamily and fontClass
+ getParent(function(n) {
+ if (n.nodeName === 'SPAN') {
+ if (!cl && n.className)
+ cl = n.className;
+
+ if (!fz && n.style.fontSize)
+ fz = n.style.fontSize;
+
+ if (!fn && n.style.fontFamily)
+ fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
+ }
+
+ return false;
+ });
+
+ if (c = cm.get('fontselect')) {
+ c.select(function(v) {
+ return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
+ });
+ }
+
+ // Select font size
+ if (c = cm.get('fontsizeselect')) {
+ // Use computed style
+ if (s.theme_advanced_runtime_fontsize && !fz && !cl)
+ fz = ed.dom.getStyle(n, 'fontSize', true);
+
+ c.select(function(v) {
+ if (v.fontSize && v.fontSize === fz)
+ return true;
+
+ if (v['class'] && v['class'] === cl)
+ return true;
+ });
+ }
+
+ if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
+ p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
+ DOM.setHTML(p, '');
+
+ getParent(function(n) {
+ var na = n.nodeName.toLowerCase(), u, pi, ti = '';
+
+ /*if (n.getAttribute('_mce_bogus'))
+ return;
+*/
+ // Ignore non element and hidden elements
+ if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
+ return;
+
+ // Fake name
+ if (v = DOM.getAttrib(n, 'mce_name'))
+ na = v;
+
+ // Handle prefix
+ if (tinymce.isIE && n.scopeName !== 'HTML')
+ na = n.scopeName + ':' + na;
+
+ // Remove internal prefix
+ na = na.replace(/mce\:/g, '');
+
+ // Handle node name
+ switch (na) {
+ case 'b':
+ na = 'strong';
+ break;
+
+ case 'i':
+ na = 'em';
+ break;
+
+ case 'img':
+ if (v = DOM.getAttrib(n, 'src'))
+ ti += 'src: ' + v + ' ';
+
+ break;
+
+ case 'a':
+ if (v = DOM.getAttrib(n, 'name')) {
+ ti += 'name: ' + v + ' ';
+ na += '#' + v;
+ }
+
+ if (v = DOM.getAttrib(n, 'href'))
+ ti += 'href: ' + v + ' ';
+
+ break;
+
+ case 'font':
+ if (v = DOM.getAttrib(n, 'face'))
+ ti += 'font: ' + v + ' ';
+
+ if (v = DOM.getAttrib(n, 'size'))
+ ti += 'size: ' + v + ' ';
+
+ if (v = DOM.getAttrib(n, 'color'))
+ ti += 'color: ' + v + ' ';
+
+ break;
+
+ case 'span':
+ if (v = DOM.getAttrib(n, 'style'))
+ ti += 'style: ' + v + ' ';
+
+ break;
+ }
+
+ if (v = DOM.getAttrib(n, 'id'))
+ ti += 'id: ' + v + ' ';
+
+ if (v = n.className) {
+ v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '')
+
+ if (v) {
+ ti += 'class: ' + v + ' ';
+
+ if (DOM.isBlock(n) || na == 'img' || na == 'span')
+ na += '.' + v;
+ }
+ }
+
+ na = na.replace(/(html:)/g, '');
+ na = {name : na, node : n, title : ti};
+ t.onResolveName.dispatch(t, na);
+ ti = na.title;
+ na = na.name;
+
+ //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
+ pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
+
+ if (p.hasChildNodes()) {
+ p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);
+ p.insertBefore(pi, p.firstChild);
+ } else
+ p.appendChild(pi);
+ }, ed.getBody());
+ }
+ },
+
+ // Commands gets called by execCommand
+
+ _sel : function(v) {
+ this.editor.execCommand('mceSelectNodeDepth', false, v);
+ },
+
+ _mceInsertAnchor : function(ui, v) {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/anchor.htm',
+ width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
+ height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceCharMap : function() {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/charmap.htm',
+ width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceHelp : function() {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/about.htm',
+ width : 480,
+ height : 380,
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceColorPicker : function(u, v) {
+ var ed = this.editor;
+
+ v = v || {};
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
+ width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
+ height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
+ close_previous : false,
+ inline : true
+ }, {
+ input_color : v.color,
+ func : v.func,
+ theme_url : this.url
+ });
+ },
+
+ _mceCodeEditor : function(ui, val) {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
+ width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
+ height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
+ inline : true,
+ resizable : true,
+ maximizable : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceImage : function(ui, val) {
+ var ed = this.editor;
+
+ // Internal image object like a flash placeholder
+ if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
+ return;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/image.htm',
+ width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
+ height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceLink : function(ui, val) {
+ var ed = this.editor;
+
+ ed.windowManager.open({
+ url : tinymce.baseURL + '/themes/advanced/link.htm',
+ width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
+ height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
+ inline : true
+ }, {
+ theme_url : this.url
+ });
+ },
+
+ _mceNewDocument : function() {
+ var ed = this.editor;
+
+ ed.windowManager.confirm('advanced.newdocument', function(s) {
+ if (s)
+ ed.execCommand('mceSetContent', false, '');
+ });
+ },
+
+ _mceForeColor : function() {
+ var t = this;
+
+ this._mceColorPicker(0, {
+ color: t.fgColor,
+ func : function(co) {
+ t.fgColor = co;
+ t.editor.execCommand('ForeColor', false, co);
+ }
+ });
+ },
+
+ _mceBackColor : function() {
+ var t = this;
+
+ this._mceColorPicker(0, {
+ color: t.bgColor,
+ func : function(co) {
+ t.bgColor = co;
+ t.editor.execCommand('HiliteColor', false, co);
+ }
+ });
+ },
+
+ _ufirst : function(s) {
+ return s.substring(0, 1).toUpperCase() + s.substring(1);
+ }
+ });
+
+ tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
+}(tinymce));
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/advanced/image.htm b/plugins/TinyMCE/js/themes/advanced/image.htm new file mode 100644 index 000000000..f30d67064 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/image.htm @@ -0,0 +1,80 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.image_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="js/image.js"></script>
+</head>
+<body id="image" style="display: none">
+<form onsubmit="ImageDialog.update();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
+ <td><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
+ <td id="srcbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td><label for="image_list">{#advanced_dlg.image_list}</label></td>
+ <td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
+ <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
+ <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
+ <option value="">{#not_set}</option>
+ <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
+ <option value="top">{#advanced_dlg.image_align_top}</option>
+ <option value="middle">{#advanced_dlg.image_align_middle}</option>
+ <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
+ <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
+ <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
+ <option value="left">{#advanced_dlg.image_align_left}</option>
+ <option value="right">{#advanced_dlg.image_align_right}</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
+ <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
+ x
+ <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
+ <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
+ <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
+ <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/advanced/img/colorpicker.jpg b/plugins/TinyMCE/js/themes/advanced/img/colorpicker.jpg Binary files differnew file mode 100644 index 000000000..b4c542d10 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/img/colorpicker.jpg diff --git a/plugins/TinyMCE/js/themes/advanced/img/icons.gif b/plugins/TinyMCE/js/themes/advanced/img/icons.gif Binary files differnew file mode 100644 index 000000000..e46de5333 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/img/icons.gif diff --git a/plugins/TinyMCE/js/themes/advanced/js/about.js b/plugins/TinyMCE/js/themes/advanced/js/about.js new file mode 100644 index 000000000..5cee9ed86 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/about.js @@ -0,0 +1,72 @@ +tinyMCEPopup.requireLangPack();
+
+function init() {
+ var ed, tcont;
+
+ tinyMCEPopup.resizeToInnerSize();
+ ed = tinyMCEPopup.editor;
+
+ // Give FF some time
+ window.setTimeout(insertHelpIFrame, 10);
+
+ tcont = document.getElementById('plugintablecontainer');
+ document.getElementById('plugins_tab').style.display = 'none';
+
+ var html = "";
+ html += '<table id="plugintable">';
+ html += '<thead>';
+ html += '<tr>';
+ html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
+ html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
+ html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
+ html += '</tr>';
+ html += '</thead>';
+ html += '<tbody>';
+
+ tinymce.each(ed.plugins, function(p, n) {
+ var info;
+
+ if (!p.getInfo)
+ return;
+
+ html += '<tr>';
+
+ info = p.getInfo();
+
+ if (info.infourl != null && info.infourl != '')
+ html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
+ else
+ html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
+
+ if (info.authorurl != null && info.authorurl != '')
+ html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
+ else
+ html += '<td width="35%">' + info.author + '</td>';
+
+ html += '<td width="15%">' + info.version + '</td>';
+ html += '</tr>';
+
+ document.getElementById('plugins_tab').style.display = '';
+
+ });
+
+ html += '</tbody>';
+ html += '</table>';
+
+ tcont.innerHTML = html;
+
+ tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
+ tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
+}
+
+function insertHelpIFrame() {
+ var html;
+
+ if (tinyMCEPopup.getParam('docs_url')) {
+ html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
+ document.getElementById('iframecontainer').innerHTML = html;
+ document.getElementById('help_tab').style.display = 'block';
+ }
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/themes/advanced/js/anchor.js b/plugins/TinyMCE/js/themes/advanced/js/anchor.js new file mode 100644 index 000000000..7fe781055 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/anchor.js @@ -0,0 +1,37 @@ +tinyMCEPopup.requireLangPack();
+
+var AnchorDialog = {
+ init : function(ed) {
+ var action, elm, f = document.forms[0];
+
+ this.editor = ed;
+ elm = ed.dom.getParent(ed.selection.getNode(), 'A');
+ v = ed.dom.getAttrib(elm, 'name');
+
+ if (v) {
+ this.action = 'update';
+ f.anchorName.value = v;
+ }
+
+ f.insert.value = ed.getLang(elm ? 'update' : 'insert');
+ },
+
+ update : function() {
+ var ed = this.editor, elm, name = document.forms[0].anchorName.value;
+
+ tinyMCEPopup.restoreSelection();
+
+ if (this.action != 'update')
+ ed.selection.collapse(1);
+
+ elm = ed.dom.getParent(ed.selection.getNode(), 'A');
+ if (elm)
+ elm.name = name;
+ else
+ ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, ''));
+
+ tinyMCEPopup.close();
+ }
+};
+
+tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
diff --git a/plugins/TinyMCE/js/themes/advanced/js/charmap.js b/plugins/TinyMCE/js/themes/advanced/js/charmap.js new file mode 100644 index 000000000..8c5aea172 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/charmap.js @@ -0,0 +1,335 @@ +/**
+ * charmap.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+tinyMCEPopup.requireLangPack();
+
+var charmap = [
+ [' ', ' ', true, 'no-break space'],
+ ['&', '&', true, 'ampersand'],
+ ['"', '"', true, 'quotation mark'],
+// finance
+ ['¢', '¢', true, 'cent sign'],
+ ['€', '€', true, 'euro sign'],
+ ['£', '£', true, 'pound sign'],
+ ['¥', '¥', true, 'yen sign'],
+// signs
+ ['©', '©', true, 'copyright sign'],
+ ['®', '®', true, 'registered sign'],
+ ['™', '™', true, 'trade mark sign'],
+ ['‰', '‰', true, 'per mille sign'],
+ ['µ', 'µ', true, 'micro sign'],
+ ['·', '·', true, 'middle dot'],
+ ['•', '•', true, 'bullet'],
+ ['…', '…', true, 'three dot leader'],
+ ['′', '′', true, 'minutes / feet'],
+ ['″', '″', true, 'seconds / inches'],
+ ['§', '§', true, 'section sign'],
+ ['¶', '¶', true, 'paragraph sign'],
+ ['ß', 'ß', true, 'sharp s / ess-zed'],
+// quotations
+ ['‹', '‹', true, 'single left-pointing angle quotation mark'],
+ ['›', '›', true, 'single right-pointing angle quotation mark'],
+ ['«', '«', true, 'left pointing guillemet'],
+ ['»', '»', true, 'right pointing guillemet'],
+ ['‘', '‘', true, 'left single quotation mark'],
+ ['’', '’', true, 'right single quotation mark'],
+ ['“', '“', true, 'left double quotation mark'],
+ ['”', '”', true, 'right double quotation mark'],
+ ['‚', '‚', true, 'single low-9 quotation mark'],
+ ['„', '„', true, 'double low-9 quotation mark'],
+ ['<', '<', true, 'less-than sign'],
+ ['>', '>', true, 'greater-than sign'],
+ ['≤', '≤', true, 'less-than or equal to'],
+ ['≥', '≥', true, 'greater-than or equal to'],
+ ['–', '–', true, 'en dash'],
+ ['—', '—', true, 'em dash'],
+ ['¯', '¯', true, 'macron'],
+ ['‾', '‾', true, 'overline'],
+ ['¤', '¤', true, 'currency sign'],
+ ['¦', '¦', true, 'broken bar'],
+ ['¨', '¨', true, 'diaeresis'],
+ ['¡', '¡', true, 'inverted exclamation mark'],
+ ['¿', '¿', true, 'turned question mark'],
+ ['ˆ', 'ˆ', true, 'circumflex accent'],
+ ['˜', '˜', true, 'small tilde'],
+ ['°', '°', true, 'degree sign'],
+ ['−', '−', true, 'minus sign'],
+ ['±', '±', true, 'plus-minus sign'],
+ ['÷', '÷', true, 'division sign'],
+ ['⁄', '⁄', true, 'fraction slash'],
+ ['×', '×', true, 'multiplication sign'],
+ ['¹', '¹', true, 'superscript one'],
+ ['²', '²', true, 'superscript two'],
+ ['³', '³', true, 'superscript three'],
+ ['¼', '¼', true, 'fraction one quarter'],
+ ['½', '½', true, 'fraction one half'],
+ ['¾', '¾', true, 'fraction three quarters'],
+// math / logical
+ ['ƒ', 'ƒ', true, 'function / florin'],
+ ['∫', '∫', true, 'integral'],
+ ['∑', '∑', true, 'n-ary sumation'],
+ ['∞', '∞', true, 'infinity'],
+ ['√', '√', true, 'square root'],
+ ['∼', '∼', false,'similar to'],
+ ['≅', '≅', false,'approximately equal to'],
+ ['≈', '≈', true, 'almost equal to'],
+ ['≠', '≠', true, 'not equal to'],
+ ['≡', '≡', true, 'identical to'],
+ ['∈', '∈', false,'element of'],
+ ['∉', '∉', false,'not an element of'],
+ ['∋', '∋', false,'contains as member'],
+ ['∏', '∏', true, 'n-ary product'],
+ ['∧', '∧', false,'logical and'],
+ ['∨', '∨', false,'logical or'],
+ ['¬', '¬', true, 'not sign'],
+ ['∩', '∩', true, 'intersection'],
+ ['∪', '∪', false,'union'],
+ ['∂', '∂', true, 'partial differential'],
+ ['∀', '∀', false,'for all'],
+ ['∃', '∃', false,'there exists'],
+ ['∅', '∅', false,'diameter'],
+ ['∇', '∇', false,'backward difference'],
+ ['∗', '∗', false,'asterisk operator'],
+ ['∝', '∝', false,'proportional to'],
+ ['∠', '∠', false,'angle'],
+// undefined
+ ['´', '´', true, 'acute accent'],
+ ['¸', '¸', true, 'cedilla'],
+ ['ª', 'ª', true, 'feminine ordinal indicator'],
+ ['º', 'º', true, 'masculine ordinal indicator'],
+ ['†', '†', true, 'dagger'],
+ ['‡', '‡', true, 'double dagger'],
+// alphabetical special chars
+ ['À', 'À', true, 'A - grave'],
+ ['Á', 'Á', true, 'A - acute'],
+ ['Â', 'Â', true, 'A - circumflex'],
+ ['Ã', 'Ã', true, 'A - tilde'],
+ ['Ä', 'Ä', true, 'A - diaeresis'],
+ ['Å', 'Å', true, 'A - ring above'],
+ ['Æ', 'Æ', true, 'ligature AE'],
+ ['Ç', 'Ç', true, 'C - cedilla'],
+ ['È', 'È', true, 'E - grave'],
+ ['É', 'É', true, 'E - acute'],
+ ['Ê', 'Ê', true, 'E - circumflex'],
+ ['Ë', 'Ë', true, 'E - diaeresis'],
+ ['Ì', 'Ì', true, 'I - grave'],
+ ['Í', 'Í', true, 'I - acute'],
+ ['Î', 'Î', true, 'I - circumflex'],
+ ['Ï', 'Ï', true, 'I - diaeresis'],
+ ['Ð', 'Ð', true, 'ETH'],
+ ['Ñ', 'Ñ', true, 'N - tilde'],
+ ['Ò', 'Ò', true, 'O - grave'],
+ ['Ó', 'Ó', true, 'O - acute'],
+ ['Ô', 'Ô', true, 'O - circumflex'],
+ ['Õ', 'Õ', true, 'O - tilde'],
+ ['Ö', 'Ö', true, 'O - diaeresis'],
+ ['Ø', 'Ø', true, 'O - slash'],
+ ['Œ', 'Œ', true, 'ligature OE'],
+ ['Š', 'Š', true, 'S - caron'],
+ ['Ù', 'Ù', true, 'U - grave'],
+ ['Ú', 'Ú', true, 'U - acute'],
+ ['Û', 'Û', true, 'U - circumflex'],
+ ['Ü', 'Ü', true, 'U - diaeresis'],
+ ['Ý', 'Ý', true, 'Y - acute'],
+ ['Ÿ', 'Ÿ', true, 'Y - diaeresis'],
+ ['Þ', 'Þ', true, 'THORN'],
+ ['à', 'à', true, 'a - grave'],
+ ['á', 'á', true, 'a - acute'],
+ ['â', 'â', true, 'a - circumflex'],
+ ['ã', 'ã', true, 'a - tilde'],
+ ['ä', 'ä', true, 'a - diaeresis'],
+ ['å', 'å', true, 'a - ring above'],
+ ['æ', 'æ', true, 'ligature ae'],
+ ['ç', 'ç', true, 'c - cedilla'],
+ ['è', 'è', true, 'e - grave'],
+ ['é', 'é', true, 'e - acute'],
+ ['ê', 'ê', true, 'e - circumflex'],
+ ['ë', 'ë', true, 'e - diaeresis'],
+ ['ì', 'ì', true, 'i - grave'],
+ ['í', 'í', true, 'i - acute'],
+ ['î', 'î', true, 'i - circumflex'],
+ ['ï', 'ï', true, 'i - diaeresis'],
+ ['ð', 'ð', true, 'eth'],
+ ['ñ', 'ñ', true, 'n - tilde'],
+ ['ò', 'ò', true, 'o - grave'],
+ ['ó', 'ó', true, 'o - acute'],
+ ['ô', 'ô', true, 'o - circumflex'],
+ ['õ', 'õ', true, 'o - tilde'],
+ ['ö', 'ö', true, 'o - diaeresis'],
+ ['ø', 'ø', true, 'o slash'],
+ ['œ', 'œ', true, 'ligature oe'],
+ ['š', 'š', true, 's - caron'],
+ ['ù', 'ù', true, 'u - grave'],
+ ['ú', 'ú', true, 'u - acute'],
+ ['û', 'û', true, 'u - circumflex'],
+ ['ü', 'ü', true, 'u - diaeresis'],
+ ['ý', 'ý', true, 'y - acute'],
+ ['þ', 'þ', true, 'thorn'],
+ ['ÿ', 'ÿ', true, 'y - diaeresis'],
+ ['Α', 'Α', true, 'Alpha'],
+ ['Β', 'Β', true, 'Beta'],
+ ['Γ', 'Γ', true, 'Gamma'],
+ ['Δ', 'Δ', true, 'Delta'],
+ ['Ε', 'Ε', true, 'Epsilon'],
+ ['Ζ', 'Ζ', true, 'Zeta'],
+ ['Η', 'Η', true, 'Eta'],
+ ['Θ', 'Θ', true, 'Theta'],
+ ['Ι', 'Ι', true, 'Iota'],
+ ['Κ', 'Κ', true, 'Kappa'],
+ ['Λ', 'Λ', true, 'Lambda'],
+ ['Μ', 'Μ', true, 'Mu'],
+ ['Ν', 'Ν', true, 'Nu'],
+ ['Ξ', 'Ξ', true, 'Xi'],
+ ['Ο', 'Ο', true, 'Omicron'],
+ ['Π', 'Π', true, 'Pi'],
+ ['Ρ', 'Ρ', true, 'Rho'],
+ ['Σ', 'Σ', true, 'Sigma'],
+ ['Τ', 'Τ', true, 'Tau'],
+ ['Υ', 'Υ', true, 'Upsilon'],
+ ['Φ', 'Φ', true, 'Phi'],
+ ['Χ', 'Χ', true, 'Chi'],
+ ['Ψ', 'Ψ', true, 'Psi'],
+ ['Ω', 'Ω', true, 'Omega'],
+ ['α', 'α', true, 'alpha'],
+ ['β', 'β', true, 'beta'],
+ ['γ', 'γ', true, 'gamma'],
+ ['δ', 'δ', true, 'delta'],
+ ['ε', 'ε', true, 'epsilon'],
+ ['ζ', 'ζ', true, 'zeta'],
+ ['η', 'η', true, 'eta'],
+ ['θ', 'θ', true, 'theta'],
+ ['ι', 'ι', true, 'iota'],
+ ['κ', 'κ', true, 'kappa'],
+ ['λ', 'λ', true, 'lambda'],
+ ['μ', 'μ', true, 'mu'],
+ ['ν', 'ν', true, 'nu'],
+ ['ξ', 'ξ', true, 'xi'],
+ ['ο', 'ο', true, 'omicron'],
+ ['π', 'π', true, 'pi'],
+ ['ρ', 'ρ', true, 'rho'],
+ ['ς', 'ς', true, 'final sigma'],
+ ['σ', 'σ', true, 'sigma'],
+ ['τ', 'τ', true, 'tau'],
+ ['υ', 'υ', true, 'upsilon'],
+ ['φ', 'φ', true, 'phi'],
+ ['χ', 'χ', true, 'chi'],
+ ['ψ', 'ψ', true, 'psi'],
+ ['ω', 'ω', true, 'omega'],
+// symbols
+ ['ℵ', 'ℵ', false,'alef symbol'],
+ ['ϖ', 'ϖ', false,'pi symbol'],
+ ['ℜ', 'ℜ', false,'real part symbol'],
+ ['ϑ','ϑ', false,'theta symbol'],
+ ['ϒ', 'ϒ', false,'upsilon - hook symbol'],
+ ['℘', '℘', false,'Weierstrass p'],
+ ['ℑ', 'ℑ', false,'imaginary part'],
+// arrows
+ ['←', '←', true, 'leftwards arrow'],
+ ['↑', '↑', true, 'upwards arrow'],
+ ['→', '→', true, 'rightwards arrow'],
+ ['↓', '↓', true, 'downwards arrow'],
+ ['↔', '↔', true, 'left right arrow'],
+ ['↵', '↵', false,'carriage return'],
+ ['⇐', '⇐', false,'leftwards double arrow'],
+ ['⇑', '⇑', false,'upwards double arrow'],
+ ['⇒', '⇒', false,'rightwards double arrow'],
+ ['⇓', '⇓', false,'downwards double arrow'],
+ ['⇔', '⇔', false,'left right double arrow'],
+ ['∴', '∴', false,'therefore'],
+ ['⊂', '⊂', false,'subset of'],
+ ['⊃', '⊃', false,'superset of'],
+ ['⊄', '⊄', false,'not a subset of'],
+ ['⊆', '⊆', false,'subset of or equal to'],
+ ['⊇', '⊇', false,'superset of or equal to'],
+ ['⊕', '⊕', false,'circled plus'],
+ ['⊗', '⊗', false,'circled times'],
+ ['⊥', '⊥', false,'perpendicular'],
+ ['⋅', '⋅', false,'dot operator'],
+ ['⌈', '⌈', false,'left ceiling'],
+ ['⌉', '⌉', false,'right ceiling'],
+ ['⌊', '⌊', false,'left floor'],
+ ['⌋', '⌋', false,'right floor'],
+ ['⟨', '〈', false,'left-pointing angle bracket'],
+ ['⟩', '〉', false,'right-pointing angle bracket'],
+ ['◊', '◊', true,'lozenge'],
+ ['♠', '♠', false,'black spade suit'],
+ ['♣', '♣', true, 'black club suit'],
+ ['♥', '♥', true, 'black heart suit'],
+ ['♦', '♦', true, 'black diamond suit'],
+ [' ', ' ', false,'en space'],
+ [' ', ' ', false,'em space'],
+ [' ', ' ', false,'thin space'],
+ ['‌', '‌', false,'zero width non-joiner'],
+ ['‍', '‍', false,'zero width joiner'],
+ ['‎', '‎', false,'left-to-right mark'],
+ ['‏', '‏', false,'right-to-left mark'],
+ ['­', '­', false,'soft hyphen']
+];
+
+tinyMCEPopup.onInit.add(function() {
+ tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
+});
+
+function renderCharMapHTML() {
+ var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
+ var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
+ var cols=-1;
+
+ for (i=0; i<charmap.length; i++) {
+ if (charmap[i][2]==true) {
+ cols++;
+ html += ''
+ + '<td class="charmap">'
+ + '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
+ + charmap[i][1]
+ + '</a></td>';
+ if ((cols+1) % charsPerRow == 0)
+ html += '</tr><tr height="' + tdHeight + '">';
+ }
+ }
+
+ if (cols % charsPerRow > 0) {
+ var padd = charsPerRow - (cols % charsPerRow);
+ for (var i=0; i<padd-1; i++)
+ html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"> </td>';
+ }
+
+ html += '</tr></table>';
+
+ return html;
+}
+
+function insertChar(chr) {
+ tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
+
+ // Refocus in window
+ if (tinyMCEPopup.isWindow)
+ window.focus();
+
+ tinyMCEPopup.editor.focus();
+ tinyMCEPopup.close();
+}
+
+function previewChar(codeA, codeB, codeN) {
+ var elmA = document.getElementById('codeA');
+ var elmB = document.getElementById('codeB');
+ var elmV = document.getElementById('codeV');
+ var elmN = document.getElementById('codeN');
+
+ if (codeA=='#160;') {
+ elmV.innerHTML = '__';
+ } else {
+ elmV.innerHTML = '&' + codeA;
+ }
+
+ elmB.innerHTML = '&' + codeA;
+ elmA.innerHTML = '&' + codeB;
+ elmN.innerHTML = codeN;
+}
diff --git a/plugins/TinyMCE/js/themes/advanced/js/color_picker.js b/plugins/TinyMCE/js/themes/advanced/js/color_picker.js new file mode 100644 index 000000000..fd9700f22 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/color_picker.js @@ -0,0 +1,253 @@ +tinyMCEPopup.requireLangPack();
+
+var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
+
+var colors = [
+ "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
+ "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
+ "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
+ "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
+ "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
+ "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
+ "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
+ "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
+ "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
+ "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
+ "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
+ "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
+ "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
+ "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
+ "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
+ "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
+ "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
+ "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
+ "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
+ "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
+ "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
+ "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
+ "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
+ "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
+ "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
+ "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
+ "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
+];
+
+var named = {
+ '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
+ '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
+ '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
+ '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
+ '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
+ '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
+ '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
+ '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
+ '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
+ '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
+ '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
+ '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
+ '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
+ '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
+ '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
+ '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
+ '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
+ '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
+ '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
+ '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
+ '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
+ '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
+ '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
+};
+
+function init() {
+ var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));
+
+ tinyMCEPopup.resizeToInnerSize();
+
+ generatePicker();
+
+ if (inputColor) {
+ changeFinalColor(inputColor);
+
+ col = convertHexToRGB(inputColor);
+
+ if (col)
+ updateLight(col.r, col.g, col.b);
+ }
+}
+
+function insertAction() {
+ var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
+
+ tinyMCEPopup.restoreSelection();
+
+ if (f)
+ f(color);
+
+ tinyMCEPopup.close();
+}
+
+function showColor(color, name) {
+ if (name)
+ document.getElementById("colorname").innerHTML = name;
+
+ document.getElementById("preview").style.backgroundColor = color;
+ document.getElementById("color").value = color.toLowerCase();
+}
+
+function convertRGBToHex(col) {
+ var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+ if (!col)
+ return col;
+
+ var rgb = col.replace(re, "$1,$2,$3").split(',');
+ if (rgb.length == 3) {
+ r = parseInt(rgb[0]).toString(16);
+ g = parseInt(rgb[1]).toString(16);
+ b = parseInt(rgb[2]).toString(16);
+
+ r = r.length == 1 ? '0' + r : r;
+ g = g.length == 1 ? '0' + g : g;
+ b = b.length == 1 ? '0' + b : b;
+
+ return "#" + r + g + b;
+ }
+
+ return col;
+}
+
+function convertHexToRGB(col) {
+ if (col.indexOf('#') != -1) {
+ col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+ r = parseInt(col.substring(0, 2), 16);
+ g = parseInt(col.substring(2, 4), 16);
+ b = parseInt(col.substring(4, 6), 16);
+
+ return {r : r, g : g, b : b};
+ }
+
+ return null;
+}
+
+function generatePicker() {
+ var el = document.getElementById('light'), h = '', i;
+
+ for (i = 0; i < detail; i++){
+ h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
+ + ' onclick="changeFinalColor(this.style.backgroundColor)"'
+ + ' onmousedown="isMouseDown = true; return false;"'
+ + ' onmouseup="isMouseDown = false;"'
+ + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
+ + ' onmouseover="isMouseOver = true;"'
+ + ' onmouseout="isMouseOver = false;"'
+ + '></div>';
+ }
+
+ el.innerHTML = h;
+}
+
+function generateWebColors() {
+ var el = document.getElementById('webcolors'), h = '', i;
+
+ if (el.className == 'generated')
+ return;
+
+ h += '<table border="0" cellspacing="1" cellpadding="0">'
+ + '<tr>';
+
+ for (i=0; i<colors.length; i++) {
+ h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
+ + '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'
+ + '</a></td>';
+ if ((i+1) % 18 == 0)
+ h += '</tr><tr>';
+ }
+
+ h += '</table>';
+
+ el.innerHTML = h;
+ el.className = 'generated';
+}
+
+function generateNamedColors() {
+ var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
+
+ if (el.className == 'generated')
+ return;
+
+ for (n in named) {
+ v = named[n];
+ h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
+ }
+
+ el.innerHTML = h;
+ el.className = 'generated';
+}
+
+function dechex(n) {
+ return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
+}
+
+function computeColor(e) {
+ var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
+
+ x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
+ y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
+
+ partWidth = document.getElementById('colors').width / 6;
+ partDetail = detail / 2;
+ imHeight = document.getElementById('colors').height;
+
+ r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
+ g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
+ b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
+
+ coef = (imHeight - y) / imHeight;
+ r = 128 + (r - 128) * coef;
+ g = 128 + (g - 128) * coef;
+ b = 128 + (b - 128) * coef;
+
+ changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
+ updateLight(r, g, b);
+}
+
+function updateLight(r, g, b) {
+ var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
+
+ for (i=0; i<detail; i++) {
+ if ((i>=0) && (i<partDetail)) {
+ finalCoef = i / partDetail;
+ finalR = dechex(255 - (255 - r) * finalCoef);
+ finalG = dechex(255 - (255 - g) * finalCoef);
+ finalB = dechex(255 - (255 - b) * finalCoef);
+ } else {
+ finalCoef = 2 - i / partDetail;
+ finalR = dechex(r * finalCoef);
+ finalG = dechex(g * finalCoef);
+ finalB = dechex(b * finalCoef);
+ }
+
+ color = finalR + finalG + finalB;
+
+ setCol('gs' + i, '#'+color);
+ }
+}
+
+function changeFinalColor(color) {
+ if (color.indexOf('#') == -1)
+ color = convertRGBToHex(color);
+
+ setCol('preview', color);
+ document.getElementById('color').value = color;
+}
+
+function setCol(e, c) {
+ try {
+ document.getElementById(e).style.backgroundColor = c;
+ } catch (ex) {
+ // Ignore IE warning
+ }
+}
+
+tinyMCEPopup.onInit.add(init);
diff --git a/plugins/TinyMCE/js/themes/advanced/js/image.js b/plugins/TinyMCE/js/themes/advanced/js/image.js new file mode 100644 index 000000000..6423d9080 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/image.js @@ -0,0 +1,245 @@ +var ImageDialog = {
+ preInit : function() {
+ var url;
+
+ tinyMCEPopup.requireLangPack();
+
+ if (url = tinyMCEPopup.getParam("external_image_list_url"))
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+ },
+
+ init : function() {
+ var f = document.forms[0], ed = tinyMCEPopup.editor;
+
+ // Setup browse button
+ document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
+ if (isVisible('srcbrowser'))
+ document.getElementById('src').style.width = '180px';
+
+ e = ed.selection.getNode();
+
+ this.fillFileList('image_list', 'tinyMCEImageList');
+
+ if (e.nodeName == 'IMG') {
+ f.src.value = ed.dom.getAttrib(e, 'src');
+ f.alt.value = ed.dom.getAttrib(e, 'alt');
+ f.border.value = this.getAttrib(e, 'border');
+ f.vspace.value = this.getAttrib(e, 'vspace');
+ f.hspace.value = this.getAttrib(e, 'hspace');
+ f.width.value = ed.dom.getAttrib(e, 'width');
+ f.height.value = ed.dom.getAttrib(e, 'height');
+ f.insert.value = ed.getLang('update');
+ this.styleVal = ed.dom.getAttrib(e, 'style');
+ selectByValue(f, 'image_list', f.src.value);
+ selectByValue(f, 'align', this.getAttrib(e, 'align'));
+ this.updateStyle();
+ }
+ },
+
+ fillFileList : function(id, l) {
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+ l = window[l];
+
+ if (l && l.length > 0) {
+ lst.options[lst.options.length] = new Option('', '');
+
+ tinymce.each(l, function(o) {
+ lst.options[lst.options.length] = new Option(o[0], o[1]);
+ });
+ } else
+ dom.remove(dom.getParent(id, 'tr'));
+ },
+
+ update : function() {
+ var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
+
+ tinyMCEPopup.restoreSelection();
+
+ if (f.src.value === '') {
+ if (ed.selection.getNode().nodeName == 'IMG') {
+ ed.dom.remove(ed.selection.getNode());
+ ed.execCommand('mceRepaint');
+ }
+
+ tinyMCEPopup.close();
+ return;
+ }
+
+ if (!ed.settings.inline_styles) {
+ args = tinymce.extend(args, {
+ vspace : nl.vspace.value,
+ hspace : nl.hspace.value,
+ border : nl.border.value,
+ align : getSelectValue(f, 'align')
+ });
+ } else
+ args.style = this.styleVal;
+
+ tinymce.extend(args, {
+ src : f.src.value,
+ alt : f.alt.value,
+ width : f.width.value,
+ height : f.height.value
+ });
+
+ el = ed.selection.getNode();
+
+ if (el && el.nodeName == 'IMG') {
+ ed.dom.setAttribs(el, args);
+ } else {
+ ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
+ ed.dom.setAttribs('__mce_tmp', args);
+ ed.dom.setAttrib('__mce_tmp', 'id', '');
+ ed.undoManager.add();
+ }
+
+ tinyMCEPopup.close();
+ },
+
+ updateStyle : function() {
+ var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
+
+ if (tinyMCEPopup.editor.settings.inline_styles) {
+ st = tinyMCEPopup.dom.parseStyle(this.styleVal);
+
+ // Handle align
+ v = getSelectValue(f, 'align');
+ if (v) {
+ if (v == 'left' || v == 'right') {
+ st['float'] = v;
+ delete st['vertical-align'];
+ } else {
+ st['vertical-align'] = v;
+ delete st['float'];
+ }
+ } else {
+ delete st['float'];
+ delete st['vertical-align'];
+ }
+
+ // Handle border
+ v = f.border.value;
+ if (v || v == '0') {
+ if (v == '0')
+ st['border'] = '0';
+ else
+ st['border'] = v + 'px solid black';
+ } else
+ delete st['border'];
+
+ // Handle hspace
+ v = f.hspace.value;
+ if (v) {
+ delete st['margin'];
+ st['margin-left'] = v + 'px';
+ st['margin-right'] = v + 'px';
+ } else {
+ delete st['margin-left'];
+ delete st['margin-right'];
+ }
+
+ // Handle vspace
+ v = f.vspace.value;
+ if (v) {
+ delete st['margin'];
+ st['margin-top'] = v + 'px';
+ st['margin-bottom'] = v + 'px';
+ } else {
+ delete st['margin-top'];
+ delete st['margin-bottom'];
+ }
+
+ // Merge
+ st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img');
+ this.styleVal = dom.serializeStyle(st, 'img');
+ }
+ },
+
+ getAttrib : function(e, at) {
+ var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
+
+ if (ed.settings.inline_styles) {
+ switch (at) {
+ case 'align':
+ if (v = dom.getStyle(e, 'float'))
+ return v;
+
+ if (v = dom.getStyle(e, 'vertical-align'))
+ return v;
+
+ break;
+
+ case 'hspace':
+ v = dom.getStyle(e, 'margin-left')
+ v2 = dom.getStyle(e, 'margin-right');
+ if (v && v == v2)
+ return parseInt(v.replace(/[^0-9]/g, ''));
+
+ break;
+
+ case 'vspace':
+ v = dom.getStyle(e, 'margin-top')
+ v2 = dom.getStyle(e, 'margin-bottom');
+ if (v && v == v2)
+ return parseInt(v.replace(/[^0-9]/g, ''));
+
+ break;
+
+ case 'border':
+ v = 0;
+
+ tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
+ sv = dom.getStyle(e, 'border-' + sv + '-width');
+
+ // False or not the same as prev
+ if (!sv || (sv != v && v !== 0)) {
+ v = 0;
+ return false;
+ }
+
+ if (sv)
+ v = sv;
+ });
+
+ if (v)
+ return parseInt(v.replace(/[^0-9]/g, ''));
+
+ break;
+ }
+ }
+
+ if (v = dom.getAttrib(e, at))
+ return v;
+
+ return '';
+ },
+
+ resetImageData : function() {
+ var f = document.forms[0];
+
+ f.width.value = f.height.value = "";
+ },
+
+ updateImageData : function() {
+ var f = document.forms[0], t = ImageDialog;
+
+ if (f.width.value == "")
+ f.width.value = t.preloadImg.width;
+
+ if (f.height.value == "")
+ f.height.value = t.preloadImg.height;
+ },
+
+ getImageData : function() {
+ var f = document.forms[0];
+
+ this.preloadImg = new Image();
+ this.preloadImg.onload = this.updateImageData;
+ this.preloadImg.onerror = this.resetImageData;
+ this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
+ }
+};
+
+ImageDialog.preInit();
+tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/plugins/TinyMCE/js/themes/advanced/js/link.js b/plugins/TinyMCE/js/themes/advanced/js/link.js new file mode 100644 index 000000000..f67a5bc82 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/link.js @@ -0,0 +1,156 @@ +tinyMCEPopup.requireLangPack();
+
+var LinkDialog = {
+ preInit : function() {
+ var url;
+
+ if (url = tinyMCEPopup.getParam("external_link_list_url"))
+ document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
+ },
+
+ init : function() {
+ var f = document.forms[0], ed = tinyMCEPopup.editor;
+
+ // Setup browse button
+ document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
+ if (isVisible('hrefbrowser'))
+ document.getElementById('href').style.width = '180px';
+
+ this.fillClassList('class_list');
+ this.fillFileList('link_list', 'tinyMCELinkList');
+ this.fillTargetList('target_list');
+
+ if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
+ f.href.value = ed.dom.getAttrib(e, 'href');
+ f.linktitle.value = ed.dom.getAttrib(e, 'title');
+ f.insert.value = ed.getLang('update');
+ selectByValue(f, 'link_list', f.href.value);
+ selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
+ selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
+ }
+ },
+
+ update : function() {
+ var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;
+
+ tinyMCEPopup.restoreSelection();
+ e = ed.dom.getParent(ed.selection.getNode(), 'A');
+
+ // Remove element if there is no href
+ if (!f.href.value) {
+ if (e) {
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");
+ b = ed.selection.getBookmark();
+ ed.dom.remove(e, 1);
+ ed.selection.moveToBookmark(b);
+ tinyMCEPopup.execCommand("mceEndUndoLevel");
+ tinyMCEPopup.close();
+ return;
+ }
+ }
+
+ tinyMCEPopup.execCommand("mceBeginUndoLevel");
+
+ // Create new anchor elements
+ if (e == null) {
+ ed.getDoc().execCommand("unlink", false, null);
+ tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
+
+ tinymce.each(ed.dom.select("a"), function(n) {
+ if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
+ e = n;
+
+ ed.dom.setAttribs(e, {
+ href : f.href.value,
+ title : f.linktitle.value,
+ target : f.target_list ? getSelectValue(f, "target_list") : null,
+ 'class' : f.class_list ? getSelectValue(f, "class_list") : null
+ });
+ }
+ });
+ } else {
+ ed.dom.setAttribs(e, {
+ href : f.href.value,
+ title : f.linktitle.value,
+ target : f.target_list ? getSelectValue(f, "target_list") : null,
+ 'class' : f.class_list ? getSelectValue(f, "class_list") : null
+ });
+ }
+
+ // Don't move caret if selection was image
+ if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
+ ed.focus();
+ ed.selection.select(e);
+ ed.selection.collapse(0);
+ tinyMCEPopup.storeSelection();
+ }
+
+ tinyMCEPopup.execCommand("mceEndUndoLevel");
+ tinyMCEPopup.close();
+ },
+
+ checkPrefix : function(n) {
+ if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
+ n.value = 'mailto:' + n.value;
+
+ if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
+ n.value = 'http://' + n.value;
+ },
+
+ fillFileList : function(id, l) {
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+ l = window[l];
+
+ if (l && l.length > 0) {
+ lst.options[lst.options.length] = new Option('', '');
+
+ tinymce.each(l, function(o) {
+ lst.options[lst.options.length] = new Option(o[0], o[1]);
+ });
+ } else
+ dom.remove(dom.getParent(id, 'tr'));
+ },
+
+ fillClassList : function(id) {
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
+
+ if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
+ cl = [];
+
+ tinymce.each(v.split(';'), function(v) {
+ var p = v.split('=');
+
+ cl.push({'title' : p[0], 'class' : p[1]});
+ });
+ } else
+ cl = tinyMCEPopup.editor.dom.getClasses();
+
+ if (cl.length > 0) {
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+
+ tinymce.each(cl, function(o) {
+ lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
+ });
+ } else
+ dom.remove(dom.getParent(id, 'tr'));
+ },
+
+ fillTargetList : function(id) {
+ var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
+
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
+ lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
+
+ if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
+ tinymce.each(v.split(','), function(v) {
+ v = v.split('=');
+ lst.options[lst.options.length] = new Option(v[0], v[1]);
+ });
+ }
+ }
+};
+
+LinkDialog.preInit();
+tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
diff --git a/plugins/TinyMCE/js/themes/advanced/js/source_editor.js b/plugins/TinyMCE/js/themes/advanced/js/source_editor.js new file mode 100644 index 000000000..279328614 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/js/source_editor.js @@ -0,0 +1,62 @@ +tinyMCEPopup.requireLangPack();
+tinyMCEPopup.onInit.add(onLoadInit);
+
+function saveContent() {
+ tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true});
+ tinyMCEPopup.close();
+}
+
+function onLoadInit() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ // Remove Gecko spellchecking
+ if (tinymce.isGecko)
+ document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
+
+ document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});
+
+ if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
+ setWrap('soft');
+ document.getElementById('wraped').checked = true;
+ }
+
+ resizeInputs();
+}
+
+function setWrap(val) {
+ var v, n, s = document.getElementById('htmlSource');
+
+ s.wrap = val;
+
+ if (!tinymce.isIE) {
+ v = s.value;
+ n = s.cloneNode(false);
+ n.setAttribute("wrap", val);
+ s.parentNode.replaceChild(n, s);
+ n.value = v;
+ }
+}
+
+function toggleWordWrap(elm) {
+ if (elm.checked)
+ setWrap('soft');
+ else
+ setWrap('off');
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+ var el = document.getElementById('htmlSource');
+
+ if (!tinymce.isIE) {
+ wHeight = self.innerHeight - 65;
+ wWidth = self.innerWidth - 16;
+ } else {
+ wHeight = document.body.clientHeight - 70;
+ wWidth = document.body.clientWidth - 16;
+ }
+
+ el.style.height = Math.abs(wHeight) + 'px';
+ el.style.width = Math.abs(wWidth) + 'px';
+}
diff --git a/plugins/TinyMCE/js/themes/advanced/langs/en.js b/plugins/TinyMCE/js/themes/advanced/langs/en.js new file mode 100644 index 000000000..69694b1f9 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/langs/en.js @@ -0,0 +1,62 @@ +tinyMCE.addI18n('en.advanced',{
+style_select:"Styles",
+font_size:"Font size",
+fontdefault:"Font family",
+block:"Format",
+paragraph:"Paragraph",
+div:"Div",
+address:"Address",
+pre:"Preformatted",
+h1:"Heading 1",
+h2:"Heading 2",
+h3:"Heading 3",
+h4:"Heading 4",
+h5:"Heading 5",
+h6:"Heading 6",
+blockquote:"Blockquote",
+code:"Code",
+samp:"Code sample",
+dt:"Definition term ",
+dd:"Definition description",
+bold_desc:"Bold (Ctrl+B)",
+italic_desc:"Italic (Ctrl+I)",
+underline_desc:"Underline (Ctrl+U)",
+striketrough_desc:"Strikethrough",
+justifyleft_desc:"Align left",
+justifycenter_desc:"Align center",
+justifyright_desc:"Align right",
+justifyfull_desc:"Align full",
+bullist_desc:"Unordered list",
+numlist_desc:"Ordered list",
+outdent_desc:"Outdent",
+indent_desc:"Indent",
+undo_desc:"Undo (Ctrl+Z)",
+redo_desc:"Redo (Ctrl+Y)",
+link_desc:"Insert/edit link",
+unlink_desc:"Unlink",
+image_desc:"Insert/edit image",
+cleanup_desc:"Cleanup messy code",
+code_desc:"Edit HTML Source",
+sub_desc:"Subscript",
+sup_desc:"Superscript",
+hr_desc:"Insert horizontal ruler",
+removeformat_desc:"Remove formatting",
+custom1_desc:"Your custom description here",
+forecolor_desc:"Select text color",
+backcolor_desc:"Select background color",
+charmap_desc:"Insert custom character",
+visualaid_desc:"Toggle guidelines/invisible elements",
+anchor_desc:"Insert/edit anchor",
+cut_desc:"Cut",
+copy_desc:"Copy",
+paste_desc:"Paste",
+image_props_desc:"Image properties",
+newdocument_desc:"New document",
+help_desc:"Help",
+blockquote_desc:"Blockquote",
+clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",
+path:"Path",
+newdocument:"Are you sure you want clear all contents?",
+toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
+more_colors:"More colors"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/advanced/langs/en_dlg.js b/plugins/TinyMCE/js/themes/advanced/langs/en_dlg.js new file mode 100644 index 000000000..9d124d7db --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/langs/en_dlg.js @@ -0,0 +1,51 @@ +tinyMCE.addI18n('en.advanced_dlg',{
+about_title:"About TinyMCE",
+about_general:"About",
+about_help:"Help",
+about_license:"License",
+about_plugins:"Plugins",
+about_plugin:"Plugin",
+about_author:"Author",
+about_version:"Version",
+about_loaded:"Loaded plugins",
+anchor_title:"Insert/edit anchor",
+anchor_name:"Anchor name",
+code_title:"HTML Source Editor",
+code_wordwrap:"Word wrap",
+colorpicker_title:"Select a color",
+colorpicker_picker_tab:"Picker",
+colorpicker_picker_title:"Color picker",
+colorpicker_palette_tab:"Palette",
+colorpicker_palette_title:"Palette colors",
+colorpicker_named_tab:"Named",
+colorpicker_named_title:"Named colors",
+colorpicker_color:"Color:",
+colorpicker_name:"Name:",
+charmap_title:"Select custom character",
+image_title:"Insert/edit image",
+image_src:"Image URL",
+image_alt:"Image description",
+image_list:"Image list",
+image_border:"Border",
+image_dimensions:"Dimensions",
+image_vspace:"Vertical space",
+image_hspace:"Horizontal space",
+image_align:"Alignment",
+image_align_baseline:"Baseline",
+image_align_top:"Top",
+image_align_middle:"Middle",
+image_align_bottom:"Bottom",
+image_align_texttop:"Text top",
+image_align_textbottom:"Text bottom",
+image_align_left:"Left",
+image_align_right:"Right",
+link_title:"Insert/edit link",
+link_url:"Link URL",
+link_target:"Target",
+link_target_same:"Open link in the same window",
+link_target_blank:"Open link in a new window",
+link_titlefield:"Title",
+link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
+link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
+link_list:"Link list"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/advanced/link.htm b/plugins/TinyMCE/js/themes/advanced/link.htm new file mode 100644 index 000000000..7565b9ae8 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/link.htm @@ -0,0 +1,58 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.link_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="../../utils/mctabs.js"></script>
+ <script type="text/javascript" src="../../utils/form_utils.js"></script>
+ <script type="text/javascript" src="../../utils/validate.js"></script>
+ <script type="text/javascript" src="js/link.js"></script>
+</head>
+<body id="link" style="display: none">
+<form onsubmit="LinkDialog.update();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td class="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
+ <td><table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td>
+ <td id="hrefbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td><label for="link_list">{#advanced_dlg.link_list}</label></td>
+ <td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
+ </tr>
+ <tr>
+ <td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
+ <td><select id="target_list" name="target_list"></select></td>
+ </tr>
+ <tr>
+ <td class="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
+ <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
+ </tr>
+ <tr>
+ <td><label for="class_list">{#class_name}</label></td>
+ <td><select id="class_list" name="class_list"></select></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <input type="submit" id="insert" name="insert" value="{#insert}" />
+ <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/content.css b/plugins/TinyMCE/js/themes/advanced/skins/default/content.css new file mode 100644 index 000000000..9fba0431d --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/content.css @@ -0,0 +1,36 @@ +body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;}
+span.mceItemNbsp {background: #DDD}
+td.mceSelected, th.mceSelected {background-color:#3399ff !important}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* IE */
+* html body {
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+}
+
+img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
+font[face=mceinline] {font-family:inherit !important}
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/dialog.css b/plugins/TinyMCE/js/themes/advanced/skins/default/dialog.css new file mode 100644 index 000000000..f01222650 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/dialog.css @@ -0,0 +1,117 @@ +/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+float:left;
+}
+
+#insert {background:url(img/buttons.png) 0 -52px}
+#cancel {background:url(img/buttons.png) 0 0; float:right}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
+#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/buttons.png b/plugins/TinyMCE/js/themes/advanced/skins/default/img/buttons.png Binary files differnew file mode 100644 index 000000000..7dd58418b --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/img/buttons.png diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/items.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/items.gif Binary files differnew file mode 100644 index 000000000..2eafd7954 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/img/items.gif diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_arrow.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_arrow.gif Binary files differnew file mode 100644 index 000000000..85e31dfb2 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_arrow.gif diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_check.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_check.gif Binary files differnew file mode 100644 index 000000000..adfdddccd --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_check.gif diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/progress.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/progress.gif Binary files differnew file mode 100644 index 000000000..5bb90fd6a --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/img/progress.gif diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/tabs.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/tabs.gif Binary files differnew file mode 100644 index 000000000..ce4be6355 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/img/tabs.gif diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/ui.css b/plugins/TinyMCE/js/themes/advanced/skins/default/ui.css new file mode 100644 index 000000000..0049c7b3d --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/default/ui.css @@ -0,0 +1,213 @@ +/* Reset */
+.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
+.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
+.defaultSkin table td {vertical-align:middle}
+
+/* Containers */
+.defaultSkin table {direction:ltr; background:#F0F0EE}
+.defaultSkin iframe {display:block; background:#FFF}
+.defaultSkin .mceToolbar {height:26px}
+.defaultSkin .mceLeft {text-align:left}
+.defaultSkin .mceRight {text-align:right}
+
+/* External */
+.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}
+.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
+.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
+.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
+.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
+.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
+.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
+.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
+.defaultSkin .mceStatusbar div {float:left; margin:2px}
+.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
+.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
+.defaultSkin table.mceToolbar {margin-left:3px}
+.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
+.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+.defaultSkin td.mceCenter {text-align:center;}
+.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
+.defaultSkin td.mceRight table {margin:0 0 0 auto;}
+
+/* Button */
+.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}
+.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
+.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.defaultSkin .mceButtonLabeled {width:auto}
+.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
+.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
+.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
+
+/* Separator */
+.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
+
+/* ListBox */
+.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
+.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
+.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
+.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
+.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
+.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
+.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
+.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
+
+/* SplitButton */
+.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
+.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
+.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
+.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);}
+.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
+.defaultSkin .mceSplitButton span.mceOpen {display:none}
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
+.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
+.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
+
+/* ColorSplitButton */
+.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
+.defaultSkin .mceColorSplitMenu td {padding:2px}
+.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
+.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
+.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
+.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
+.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
+.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
+
+/* Menu */
+.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
+.defaultSkin .mceNoIcons span.mceIcon {width:0;}
+.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
+.defaultSkin .mceMenu table {background:#FFF}
+.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
+.defaultSkin .mceMenu td {height:20px}
+.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
+.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
+.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
+.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
+.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
+.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
+.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
+.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
+.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
+.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
+.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
+.defaultSkin .mceMenu span.mceMenuLine {display:none}
+.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
+.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+
+/* Formats */
+.defaultSkin .mce_formatPreview a {font-size:10px}
+.defaultSkin .mce_p span.mceText {}
+.defaultSkin .mce_address span.mceText {font-style:italic}
+.defaultSkin .mce_pre span.mceText {font-family:monospace}
+.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.defaultSkin span.mce_bold {background-position:0 0}
+.defaultSkin span.mce_italic {background-position:-60px 0}
+.defaultSkin span.mce_underline {background-position:-140px 0}
+.defaultSkin span.mce_strikethrough {background-position:-120px 0}
+.defaultSkin span.mce_undo {background-position:-160px 0}
+.defaultSkin span.mce_redo {background-position:-100px 0}
+.defaultSkin span.mce_cleanup {background-position:-40px 0}
+.defaultSkin span.mce_bullist {background-position:-20px 0}
+.defaultSkin span.mce_numlist {background-position:-80px 0}
+.defaultSkin span.mce_justifyleft {background-position:-460px 0}
+.defaultSkin span.mce_justifyright {background-position:-480px 0}
+.defaultSkin span.mce_justifycenter {background-position:-420px 0}
+.defaultSkin span.mce_justifyfull {background-position:-440px 0}
+.defaultSkin span.mce_anchor {background-position:-200px 0}
+.defaultSkin span.mce_indent {background-position:-400px 0}
+.defaultSkin span.mce_outdent {background-position:-540px 0}
+.defaultSkin span.mce_link {background-position:-500px 0}
+.defaultSkin span.mce_unlink {background-position:-640px 0}
+.defaultSkin span.mce_sub {background-position:-600px 0}
+.defaultSkin span.mce_sup {background-position:-620px 0}
+.defaultSkin span.mce_removeformat {background-position:-580px 0}
+.defaultSkin span.mce_newdocument {background-position:-520px 0}
+.defaultSkin span.mce_image {background-position:-380px 0}
+.defaultSkin span.mce_help {background-position:-340px 0}
+.defaultSkin span.mce_code {background-position:-260px 0}
+.defaultSkin span.mce_hr {background-position:-360px 0}
+.defaultSkin span.mce_visualaid {background-position:-660px 0}
+.defaultSkin span.mce_charmap {background-position:-240px 0}
+.defaultSkin span.mce_paste {background-position:-560px 0}
+.defaultSkin span.mce_copy {background-position:-700px 0}
+.defaultSkin span.mce_cut {background-position:-680px 0}
+.defaultSkin span.mce_blockquote {background-position:-220px 0}
+.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
+.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
+.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
+.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.defaultSkin span.mce_advhr {background-position:-0px -20px}
+.defaultSkin span.mce_ltr {background-position:-20px -20px}
+.defaultSkin span.mce_rtl {background-position:-40px -20px}
+.defaultSkin span.mce_emotions {background-position:-60px -20px}
+.defaultSkin span.mce_fullpage {background-position:-80px -20px}
+.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
+.defaultSkin span.mce_iespell {background-position:-120px -20px}
+.defaultSkin span.mce_insertdate {background-position:-140px -20px}
+.defaultSkin span.mce_inserttime {background-position:-160px -20px}
+.defaultSkin span.mce_absolute {background-position:-180px -20px}
+.defaultSkin span.mce_backward {background-position:-200px -20px}
+.defaultSkin span.mce_forward {background-position:-220px -20px}
+.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
+.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
+.defaultSkin span.mce_movebackward {background-position:-280px -20px}
+.defaultSkin span.mce_moveforward {background-position:-300px -20px}
+.defaultSkin span.mce_media {background-position:-320px -20px}
+.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
+.defaultSkin span.mce_pastetext {background-position:-360px -20px}
+.defaultSkin span.mce_pasteword {background-position:-380px -20px}
+.defaultSkin span.mce_selectall {background-position:-400px -20px}
+.defaultSkin span.mce_preview {background-position:-420px -20px}
+.defaultSkin span.mce_print {background-position:-440px -20px}
+.defaultSkin span.mce_cancel {background-position:-460px -20px}
+.defaultSkin span.mce_save {background-position:-480px -20px}
+.defaultSkin span.mce_replace {background-position:-500px -20px}
+.defaultSkin span.mce_search {background-position:-520px -20px}
+.defaultSkin span.mce_styleprops {background-position:-560px -20px}
+.defaultSkin span.mce_table {background-position:-580px -20px}
+.defaultSkin span.mce_cell_props {background-position:-600px -20px}
+.defaultSkin span.mce_delete_table {background-position:-620px -20px}
+.defaultSkin span.mce_delete_col {background-position:-640px -20px}
+.defaultSkin span.mce_delete_row {background-position:-660px -20px}
+.defaultSkin span.mce_col_after {background-position:-680px -20px}
+.defaultSkin span.mce_col_before {background-position:-700px -20px}
+.defaultSkin span.mce_row_after {background-position:-720px -20px}
+.defaultSkin span.mce_row_before {background-position:-740px -20px}
+.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
+.defaultSkin span.mce_table_props {background-position:-980px -20px}
+.defaultSkin span.mce_row_props {background-position:-780px -20px}
+.defaultSkin span.mce_split_cells {background-position:-800px -20px}
+.defaultSkin span.mce_template {background-position:-820px -20px}
+.defaultSkin span.mce_visualchars {background-position:-840px -20px}
+.defaultSkin span.mce_abbr {background-position:-860px -20px}
+.defaultSkin span.mce_acronym {background-position:-880px -20px}
+.defaultSkin span.mce_attribs {background-position:-900px -20px}
+.defaultSkin span.mce_cite {background-position:-920px -20px}
+.defaultSkin span.mce_del {background-position:-940px -20px}
+.defaultSkin span.mce_ins {background-position:-960px -20px}
+.defaultSkin span.mce_pagebreak {background-position:0 -40px}
+.defaultSkin span.mce_restoredraft {background-position:-20px -40px}
+.defaultSkin span.mce_spellchecker {background-position:-540px -20px}
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/content.css b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/content.css new file mode 100644 index 000000000..3b833d945 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/content.css @@ -0,0 +1,36 @@ +body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
+body {background:#FFF;}
+body.mceForceColors {background:#FFF; color:#000;}
+h1 {font-size: 2em}
+h2 {font-size: 1.5em}
+h3 {font-size: 1.17em}
+h4 {font-size: 1em}
+h5 {font-size: .83em}
+h6 {font-size: .75em}
+.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
+a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;}
+span.mceItemNbsp {background: #DDD}
+td.mceSelected, th.mceSelected {background-color:#3399ff !important}
+img {border:0;}
+table {cursor:default}
+table td, table th {cursor:text}
+ins {border-bottom:1px solid green; text-decoration: none; color:green}
+del {color:red; text-decoration:line-through}
+cite {border-bottom:1px dashed blue}
+acronym {border-bottom:1px dotted #CCC; cursor:help}
+abbr {border-bottom:1px dashed #CCC; cursor:help}
+
+/* IE */
+* html body {
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+}
+
+img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
+font[face=mceinline] {font-family:inherit !important}
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/dialog.css b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/dialog.css new file mode 100644 index 000000000..e3af1396e --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/dialog.css @@ -0,0 +1,116 @@ +/* Generic */
+body {
+font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
+scrollbar-3dlight-color:#F0F0EE;
+scrollbar-arrow-color:#676662;
+scrollbar-base-color:#F0F0EE;
+scrollbar-darkshadow-color:#DDDDDD;
+scrollbar-face-color:#E0E0DD;
+scrollbar-highlight-color:#F0F0EE;
+scrollbar-shadow-color:#F0F0EE;
+scrollbar-track-color:#F5F5F5;
+background:#F0F0EE;
+padding:0;
+margin:8px 8px 0 8px;
+}
+
+html {background:#F0F0EE;}
+td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+textarea {resize:none;outline:none;}
+a:link, a:visited {color:black;}
+a:hover {color:#2B6FB6;}
+.nowrap {white-space: nowrap}
+
+/* Forms */
+fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
+legend {color:#2B6FB6; font-weight:bold;}
+label.msg {display:none;}
+label.invalid {color:#EE0000; display:inline;}
+input.invalid {border:1px solid #EE0000;}
+input {background:#FFF; border:1px solid #CCC;}
+input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+input, select, textarea {border:1px solid #808080;}
+input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
+input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
+.input_noborder {border:0;}
+
+/* Buttons */
+#insert, #cancel, input.button, .updateButton {
+border:0; margin:0; padding:0;
+font-weight:bold;
+width:94px; height:26px;
+background:url(../default/img/buttons.png) 0 -26px;
+cursor:pointer;
+padding-bottom:2px;
+float:left;
+}
+
+#insert {background:url(../default/img/buttons.png) 0 -52px}
+#cancel {background:url(../default/img/buttons.png) 0 0; float:right}
+
+/* Browse */
+a.pickcolor, a.browse {text-decoration:none}
+a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
+.mceOldBoxModel a.browse span {width:22px; height:20px;}
+a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
+a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
+a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
+.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
+a.pickcolor:hover span {background-color:#B2BBD0;}
+a.pickcolor:hover span.disabled {}
+
+/* Charmap */
+table.charmap {border:1px solid #AAA; text-align:center}
+td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
+#charmap a {display:block; color:#000; text-decoration:none; border:0}
+#charmap a:hover {background:#CCC;color:#2B6FB6}
+#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
+#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
+
+/* Source */
+.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
+.mceActionPanel {margin-top:5px;}
+
+/* Tabs classes */
+.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
+.tabs ul {margin:0; padding:0; list-style:none;}
+.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
+.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
+.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
+.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}
+.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
+.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
+
+/* Panels */
+.panel_wrapper div.panel {display:none;}
+.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
+.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
+
+/* Columns */
+.column {float:left;}
+.properties {width:100%;}
+.properties .column1 {}
+.properties .column2 {text-align:left;}
+
+/* Titles */
+h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
+h3 {font-size:14px;}
+.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
+
+/* Dialog specific */
+#link .panel_wrapper, #link div.current {height:125px;}
+#image .panel_wrapper, #image div.current {height:200px;}
+#plugintable thead {font-weight:bold; background:#DDD;}
+#plugintable, #about #plugintable td {border:1px solid #919B9C;}
+#plugintable {width:96%; margin-top:10px;}
+#pluginscontainer {height:290px; overflow:auto;}
+#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
+#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
+#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
+#colorpicker #light div {overflow:hidden;}
+#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
+#colorpicker .panel_wrapper div.current {height:175px;}
+#colorpicker #namedcolors {width:150px;}
+#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
+#colorpicker #colornamecontainer {margin-top:5px;}
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg.png b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg.png Binary files differnew file mode 100644 index 000000000..12cfb419b --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg.png diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_black.png b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_black.png Binary files differnew file mode 100644 index 000000000..8996c7493 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_black.png diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_silver.png b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_silver.png Binary files differnew file mode 100644 index 000000000..bd5d2550c --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_silver.png diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui.css b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui.css new file mode 100644 index 000000000..a6253976a --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui.css @@ -0,0 +1,215 @@ +/* Reset */
+.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
+.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
+.o2k7Skin table td {vertical-align:middle}
+
+/* Containers */
+.o2k7Skin table {background:#E5EFFD}
+.o2k7Skin iframe {display:block; background:#FFF}
+.o2k7Skin .mceToolbar {height:26px}
+
+/* External */
+.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
+.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
+.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
+
+/* Layout */
+.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
+.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
+.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
+.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
+.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
+.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
+.o2k7Skin .mceStatusbar div {float:left; padding:2px}
+.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
+.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
+.o2k7Skin table.mceToolbar {margin-left:3px}
+.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
+.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
+.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
+.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
+.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
+.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+.o2k7Skin td.mceCenter {text-align:center;}
+.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
+.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
+
+/* Button */
+.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
+.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
+.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
+.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
+.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
+.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.o2k7Skin .mceButtonLabeled {width:auto}
+.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
+.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
+.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
+
+/* Separator */
+.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
+
+/* ListBox */
+.o2k7Skin .mceListBox {margin-left:3px}
+.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
+.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
+.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
+.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
+.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
+.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
+.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
+.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
+.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
+
+/* SplitButton */
+.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}
+.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
+.o2k7Skin .mceSplitButton a.mceAction {width:22px}
+.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)}
+.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
+.o2k7Skin .mceSplitButton span.mceOpen {display:none}
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
+.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}
+.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
+
+/* ColorSplitButton */
+.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
+.o2k7Skin .mceColorSplitMenu td {padding:2px}
+.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
+.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
+.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
+.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
+.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
+.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
+
+/* Menu */
+.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
+.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
+.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
+.o2k7Skin .mceMenu table {background:#FFF}
+.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
+.o2k7Skin .mceMenu td {height:20px}
+.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
+.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
+.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
+.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
+.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
+.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
+.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
+.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
+.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
+.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
+.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
+.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
+.o2k7Skin .mceMenu span.mceMenuLine {display:none}
+.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
+
+/* Progress,Resize */
+.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
+.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
+
+/* Formats */
+.o2k7Skin .mce_formatPreview a {font-size:10px}
+.o2k7Skin .mce_p span.mceText {}
+.o2k7Skin .mce_address span.mceText {font-style:italic}
+.o2k7Skin .mce_pre span.mceText {font-family:monospace}
+.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
+.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
+.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
+.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
+.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
+.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
+
+/* Theme */
+.o2k7Skin span.mce_bold {background-position:0 0}
+.o2k7Skin span.mce_italic {background-position:-60px 0}
+.o2k7Skin span.mce_underline {background-position:-140px 0}
+.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
+.o2k7Skin span.mce_undo {background-position:-160px 0}
+.o2k7Skin span.mce_redo {background-position:-100px 0}
+.o2k7Skin span.mce_cleanup {background-position:-40px 0}
+.o2k7Skin span.mce_bullist {background-position:-20px 0}
+.o2k7Skin span.mce_numlist {background-position:-80px 0}
+.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
+.o2k7Skin span.mce_justifyright {background-position:-480px 0}
+.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
+.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
+.o2k7Skin span.mce_anchor {background-position:-200px 0}
+.o2k7Skin span.mce_indent {background-position:-400px 0}
+.o2k7Skin span.mce_outdent {background-position:-540px 0}
+.o2k7Skin span.mce_link {background-position:-500px 0}
+.o2k7Skin span.mce_unlink {background-position:-640px 0}
+.o2k7Skin span.mce_sub {background-position:-600px 0}
+.o2k7Skin span.mce_sup {background-position:-620px 0}
+.o2k7Skin span.mce_removeformat {background-position:-580px 0}
+.o2k7Skin span.mce_newdocument {background-position:-520px 0}
+.o2k7Skin span.mce_image {background-position:-380px 0}
+.o2k7Skin span.mce_help {background-position:-340px 0}
+.o2k7Skin span.mce_code {background-position:-260px 0}
+.o2k7Skin span.mce_hr {background-position:-360px 0}
+.o2k7Skin span.mce_visualaid {background-position:-660px 0}
+.o2k7Skin span.mce_charmap {background-position:-240px 0}
+.o2k7Skin span.mce_paste {background-position:-560px 0}
+.o2k7Skin span.mce_copy {background-position:-700px 0}
+.o2k7Skin span.mce_cut {background-position:-680px 0}
+.o2k7Skin span.mce_blockquote {background-position:-220px 0}
+.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
+.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
+.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
+.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
+
+/* Plugins */
+.o2k7Skin span.mce_advhr {background-position:-0px -20px}
+.o2k7Skin span.mce_ltr {background-position:-20px -20px}
+.o2k7Skin span.mce_rtl {background-position:-40px -20px}
+.o2k7Skin span.mce_emotions {background-position:-60px -20px}
+.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
+.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
+.o2k7Skin span.mce_iespell {background-position:-120px -20px}
+.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
+.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
+.o2k7Skin span.mce_absolute {background-position:-180px -20px}
+.o2k7Skin span.mce_backward {background-position:-200px -20px}
+.o2k7Skin span.mce_forward {background-position:-220px -20px}
+.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
+.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
+.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
+.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
+.o2k7Skin span.mce_media {background-position:-320px -20px}
+.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
+.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
+.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
+.o2k7Skin span.mce_selectall {background-position:-400px -20px}
+.o2k7Skin span.mce_preview {background-position:-420px -20px}
+.o2k7Skin span.mce_print {background-position:-440px -20px}
+.o2k7Skin span.mce_cancel {background-position:-460px -20px}
+.o2k7Skin span.mce_save {background-position:-480px -20px}
+.o2k7Skin span.mce_replace {background-position:-500px -20px}
+.o2k7Skin span.mce_search {background-position:-520px -20px}
+.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
+.o2k7Skin span.mce_table {background-position:-580px -20px}
+.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
+.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
+.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
+.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
+.o2k7Skin span.mce_col_after {background-position:-680px -20px}
+.o2k7Skin span.mce_col_before {background-position:-700px -20px}
+.o2k7Skin span.mce_row_after {background-position:-720px -20px}
+.o2k7Skin span.mce_row_before {background-position:-740px -20px}
+.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
+.o2k7Skin span.mce_table_props {background-position:-980px -20px}
+.o2k7Skin span.mce_row_props {background-position:-780px -20px}
+.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
+.o2k7Skin span.mce_template {background-position:-820px -20px}
+.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
+.o2k7Skin span.mce_abbr {background-position:-860px -20px}
+.o2k7Skin span.mce_acronym {background-position:-880px -20px}
+.o2k7Skin span.mce_attribs {background-position:-900px -20px}
+.o2k7Skin span.mce_cite {background-position:-920px -20px}
+.o2k7Skin span.mce_del {background-position:-940px -20px}
+.o2k7Skin span.mce_ins {background-position:-960px -20px}
+.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
+.o2k7Skin span.mce_restoredraft {background-position:-20px -40px}
+.o2k7Skin span.mce_spellchecker {background-position:-540px -20px}
diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui_black.css b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui_black.css new file mode 100644 index 000000000..153f0c38a --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui_black.css @@ -0,0 +1,8 @@ +/* Black */
+.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}
+.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
+.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
+.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
+.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
+.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
+.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1}
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui_silver.css b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui_silver.css new file mode 100644 index 000000000..7fe3b45e1 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/ui_silver.css @@ -0,0 +1,5 @@ +/* Silver */
+.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}
+.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
+.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
+.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
diff --git a/plugins/TinyMCE/js/themes/advanced/source_editor.htm b/plugins/TinyMCE/js/themes/advanced/source_editor.htm new file mode 100644 index 000000000..5957bbd17 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/source_editor.htm @@ -0,0 +1,25 @@ +<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{#advanced_dlg.code_title}</title>
+ <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
+ <script type="text/javascript" src="js/source_editor.js"></script>
+</head>
+<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
+ <form name="source" onsubmit="saveContent();return false;" action="#">
+ <div style="float: left" class="title">{#advanced_dlg.code_title}</div>
+
+ <div id="wrapline" style="float: right">
+ <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
+ </div>
+
+ <br style="clear: both" />
+
+ <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
+
+ <div class="mceActionPanel">
+ <input type="submit" name="insert" value="{#update}" id="insert" />
+ <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
+ </div>
+ </form>
+</body>
+</html>
diff --git a/plugins/TinyMCE/js/themes/simple/editor_template.js b/plugins/TinyMCE/js/themes/simple/editor_template.js new file mode 100644 index 000000000..ed89abc06 --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/editor_template.js @@ -0,0 +1 @@ +(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/simple/editor_template_src.js b/plugins/TinyMCE/js/themes/simple/editor_template_src.js new file mode 100644 index 000000000..4b862d49d --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/editor_template_src.js @@ -0,0 +1,85 @@ +/**
+ * editor_template_src.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+(function() {
+ var DOM = tinymce.DOM;
+
+ // Tell it to load theme specific language pack(s)
+ tinymce.ThemeManager.requireLangPack('simple');
+
+ tinymce.create('tinymce.themes.SimpleTheme', {
+ init : function(ed, url) {
+ var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;
+
+ t.editor = ed;
+
+ ed.onInit.add(function() {
+ ed.onNodeChange.add(function(ed, cm) {
+ tinymce.each(states, function(c) {
+ cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));
+ });
+ });
+
+ ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css");
+ });
+
+ DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");
+ },
+
+ renderUI : function(o) {
+ var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;
+
+ n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);
+ n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});
+ n = tb = DOM.add(n, 'tbody');
+
+ // Create iframe container
+ n = DOM.add(tb, 'tr');
+ n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});
+
+ // Create toolbar container
+ n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});
+
+ // Create toolbar
+ tb = t.toolbar = cf.createToolbar("tools1");
+ tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));
+ tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));
+ tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));
+ tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));
+ tb.add(cf.createSeparator());
+ tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));
+ tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));
+ tb.add(cf.createSeparator());
+ tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));
+ tb.add(cf.createSeparator());
+ tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));
+ tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));
+ tb.renderTo(n);
+
+ return {
+ iframeContainer : ic,
+ editorContainer : ed.id + '_container',
+ sizeContainer : sc,
+ deltaHeight : -20
+ };
+ },
+
+ getInfo : function() {
+ return {
+ longname : 'Simple theme',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ }
+ }
+ });
+
+ tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);
+})();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/simple/img/icons.gif b/plugins/TinyMCE/js/themes/simple/img/icons.gif Binary files differnew file mode 100644 index 000000000..16af141ff --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/img/icons.gif diff --git a/plugins/TinyMCE/js/themes/simple/langs/en.js b/plugins/TinyMCE/js/themes/simple/langs/en.js new file mode 100644 index 000000000..9f08f102f --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/langs/en.js @@ -0,0 +1,11 @@ +tinyMCE.addI18n('en.simple',{
+bold_desc:"Bold (Ctrl+B)",
+italic_desc:"Italic (Ctrl+I)",
+underline_desc:"Underline (Ctrl+U)",
+striketrough_desc:"Strikethrough",
+bullist_desc:"Unordered list",
+numlist_desc:"Ordered list",
+undo_desc:"Undo (Ctrl+Z)",
+redo_desc:"Redo (Ctrl+Y)",
+cleanup_desc:"Cleanup messy code"
+});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/themes/simple/skins/default/content.css b/plugins/TinyMCE/js/themes/simple/skins/default/content.css new file mode 100644 index 000000000..2506c807c --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/skins/default/content.css @@ -0,0 +1,25 @@ +body, td, pre {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10px;
+}
+
+body {
+ background-color: #FFFFFF;
+}
+
+.mceVisualAid {
+ border: 1px dashed #BBBBBB;
+}
+
+/* MSIE specific */
+
+* html body {
+ scrollbar-3dlight-color: #F0F0EE;
+ scrollbar-arrow-color: #676662;
+ scrollbar-base-color: #F0F0EE;
+ scrollbar-darkshadow-color: #DDDDDD;
+ scrollbar-face-color: #E0E0DD;
+ scrollbar-highlight-color: #F0F0EE;
+ scrollbar-shadow-color: #F0F0EE;
+ scrollbar-track-color: #F5F5F5;
+}
diff --git a/plugins/TinyMCE/js/themes/simple/skins/default/ui.css b/plugins/TinyMCE/js/themes/simple/skins/default/ui.css new file mode 100644 index 000000000..076fe84e3 --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/skins/default/ui.css @@ -0,0 +1,32 @@ +/* Reset */
+.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
+
+/* Containers */
+.defaultSimpleSkin {position:relative}
+.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
+.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
+.defaultSimpleSkin .mceToolbar {height:24px;}
+
+/* Layout */
+.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
+.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+
+/* Button */
+.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
+.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
+.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
+.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+
+/* Separator */
+.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
+
+/* Theme */
+.defaultSimpleSkin span.mce_bold {background-position:0 0}
+.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
+.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
+.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
+.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
+.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
+.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
+.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
+.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/plugins/TinyMCE/js/themes/simple/skins/o2k7/content.css b/plugins/TinyMCE/js/themes/simple/skins/o2k7/content.css new file mode 100644 index 000000000..595809fa6 --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/skins/o2k7/content.css @@ -0,0 +1,17 @@ +body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
+
+body {background: #FFF;}
+.mceVisualAid {border: 1px dashed #BBB;}
+
+/* IE */
+
+* html body {
+scrollbar-3dlight-color: #F0F0EE;
+scrollbar-arrow-color: #676662;
+scrollbar-base-color: #F0F0EE;
+scrollbar-darkshadow-color: #DDDDDD;
+scrollbar-face-color: #E0E0DD;
+scrollbar-highlight-color: #F0F0EE;
+scrollbar-shadow-color: #F0F0EE;
+scrollbar-track-color: #F5F5F5;
+}
diff --git a/plugins/TinyMCE/js/themes/simple/skins/o2k7/img/button_bg.png b/plugins/TinyMCE/js/themes/simple/skins/o2k7/img/button_bg.png Binary files differnew file mode 100644 index 000000000..527e3495a --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/skins/o2k7/img/button_bg.png diff --git a/plugins/TinyMCE/js/themes/simple/skins/o2k7/ui.css b/plugins/TinyMCE/js/themes/simple/skins/o2k7/ui.css new file mode 100644 index 000000000..cf6c35d10 --- /dev/null +++ b/plugins/TinyMCE/js/themes/simple/skins/o2k7/ui.css @@ -0,0 +1,35 @@ +/* Reset */
+.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
+
+/* Containers */
+.o2k7SimpleSkin {position:relative}
+.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}
+.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}
+.o2k7SimpleSkin .mceToolbar {height:26px;}
+
+/* Layout */
+.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }
+.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
+.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}
+.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
+
+/* Button */
+.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
+.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}
+.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
+.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}
+.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
+
+/* Separator */
+.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
+
+/* Theme */
+.o2k7SimpleSkin span.mce_bold {background-position:0 0}
+.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}
+.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}
+.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}
+.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}
+.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}
+.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}
+.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
+.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/plugins/TinyMCE/js/tiny_mce.js b/plugins/TinyMCE/js/tiny_mce.js new file mode 100644 index 000000000..782f7f40b --- /dev/null +++ b/plugins/TinyMCE/js/tiny_mce.js @@ -0,0 +1 @@ +(function(c){var a=/^\s*|\s*$/g,d;var b={majorVersion:"3",minorVersion:"3.8",releaseDate:"2010-06-30",_init:function(){var r=this,o=document,m=navigator,f=m.userAgent,l,e,k,j,h,q;r.isOpera=c.opera&&opera.buildNumber;r.isWebKit=/WebKit/.test(f);r.isIE=!r.isWebKit&&!r.isOpera&&(/MSIE/gi).test(f)&&(/Explorer/gi).test(m.appName);r.isIE6=r.isIE&&/MSIE [56]/.test(f);r.isGecko=!r.isWebKit&&/Gecko/.test(f);r.isMac=f.indexOf("Mac")!=-1;r.isAir=/adobeair/i.test(f);r.isIDevice=/(iPad|iPhone)/.test(f);if(c.tinyMCEPreInit){r.suffix=tinyMCEPreInit.suffix;r.baseURL=tinyMCEPreInit.base;r.query=tinyMCEPreInit.query;return}r.suffix="";e=o.getElementsByTagName("base");for(l=0;l<e.length;l++){if(q=e[l].href){if(/^https?:\/\/[^\/]+$/.test(q)){q+="/"}j=q?q.match(/.*\//)[0]:""}}function g(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){r.suffix="_src"}if((h=i.src.indexOf("?"))!=-1){r.query=i.src.substring(h+1)}r.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(j&&r.baseURL.indexOf("://")==-1&&r.baseURL.indexOf("/")!==0){r.baseURL=j+r.baseURL}return r.baseURL}return null}e=o.getElementsByTagName("script");for(l=0;l<e.length;l++){if(g(e[l])){return}}k=o.getElementsByTagName("head")[0];if(k){e=k.getElementsByTagName("script");for(l=0;l<e.length;l++){if(g(e[l])){return}}}return},is:function(f,e){if(!e){return f!==d}if(e=="array"&&(f.hasOwnProperty&&f instanceof Array)){return true}return typeof(f)==e},each:function(h,e,g){var i,f;if(!h){return 0}g=g||h;if(h.length!==d){for(i=0,f=h.length;i<f;i++){if(e.call(g,h[i],i,h)===false){return 0}}}else{for(i in h){if(h.hasOwnProperty(i)){if(e.call(g,h[i],i,h)===false){return 0}}}}return 1},trim:function(e){return(e?""+e:"").replace(a,"")},create:function(m,e){var l=this,f,h,i,j,g,k=0;m=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(m);i=m[3].match(/(^|\.)(\w+)$/i)[2];h=l.createNS(m[3].replace(/\.\w+$/,""));if(h[i]){return}if(m[2]=="static"){h[i]=e;if(this.onCreate){this.onCreate(m[2],m[3],h[i])}return}if(!e[i]){e[i]=function(){};k=1}h[i]=e[i];l.extend(h[i].prototype,e);if(m[5]){f=l.resolve(m[5]).prototype;j=m[5].match(/\.(\w+)$/i)[1];g=h[i];if(k){h[i]=function(){return f[j].apply(this,arguments)}}else{h[i]=function(){this.parent=f[j];return g.apply(this,arguments)}}h[i].prototype[i]=h[i];l.each(f,function(o,p){h[i].prototype[p]=f[p]});l.each(e,function(o,p){if(f[p]){h[i].prototype[p]=function(){this.parent=f[p];return o.apply(this,arguments)}}else{if(p!=i){h[i].prototype[p]=o}}})}l.each(e["static"],function(o,p){h[i][p]=o});if(this.onCreate){this.onCreate(m[2],m[3],h[i].prototype)}},walk:function(h,g,i,e){e=e||this;if(h){if(i){h=h[i]}b.each(h,function(j,f){if(g.call(e,j,f,i)===false){return false}b.walk(j,g,i,e)})}},createNS:function(h,g){var f,e;g=g||c;h=h.split(".");for(f=0;f<h.length;f++){e=h[f];if(!g[e]){g[e]={}}g=g[e]}return g},resolve:function(h,g){var f,e;g=g||c;h=h.split(".");for(f=0,e=h.length;f<e;f++){g=g[h[f]];if(!g){break}}return g},addUnload:function(i,h){var g=this;i={func:i,scope:h||this};if(!g.unloads){function e(){var f=g.unloads,k,l;if(f){for(l in f){k=f[l];if(k&&k.func){k.func.call(k.scope,1)}}if(c.detachEvent){c.detachEvent("onbeforeunload",j);c.detachEvent("onunload",e)}else{if(c.removeEventListener){c.removeEventListener("unload",e,false)}}g.unloads=k=f=w=e=0;if(c.CollectGarbage){CollectGarbage()}}}function j(){var k=document;if(k.readyState=="interactive"){function f(){k.detachEvent("onstop",f);if(e){e()}k=0}if(k){k.attachEvent("onstop",f)}c.setTimeout(function(){if(k){k.detachEvent("onstop",f)}},0)}}if(c.attachEvent){c.attachEvent("onunload",e);c.attachEvent("onbeforeunload",j)}else{if(c.addEventListener){c.addEventListener("unload",e,false)}}g.unloads=[i]}else{g.unloads.push(i)}return i},removeUnload:function(h){var e=this.unloads,g=null;b.each(e,function(j,f){if(j&&j.func==h){e.splice(f,1);g=h;return false}});return g},explode:function(e,f){return e?b.map(e.split(f||","),b.trim):e},_addVer:function(f){var e;if(!this.query){return f}e=(f.indexOf("?")==-1?"?":"&")+this.query;if(f.indexOf("#")==-1){return f+e}return f.replace("#",e+"#")}};b._init();c.tinymce=c.tinyMCE=b})(window);(function(e,d){var c=d.is,b=/^(href|src|style)$/i,f;if(!e){return alert("Load jQuery first!")}d.$=e;d.adapter={patchEditor:function(j){var i=e.fn;function h(n,o){var m=this;if(o){m.removeAttr("_mce_style")}return i.css.apply(m,arguments)}function g(n,o){var m=this;if(b.test(n)){if(o!==f){m.each(function(p,q){j.dom.setAttrib(q,n,o)});return m}else{return m.attr("_mce_"+n)}}return i.attr.apply(m,arguments)}function k(m){return function(n){if(n){n=j.dom.processHTML(n)}return m.call(this,n)}}function l(m){if(m.css!==h){m.css=h;m.attr=g;m.html=k(i.html);m.append=k(i.append);m.prepend=k(i.prepend);m.after=k(i.after);m.before=k(i.before);m.replaceWith=k(i.replaceWith);m.tinymce=j;m.pushStack=function(){return l(i.pushStack.apply(this,arguments))}}return m}j.$=function(m,n){var o=j.getDoc();return l(e(m||o,o||n))}}};d.extend=e.extend;d.extend(d,{map:e.map,grep:function(g,h){return e.grep(g,h||function(){return 1})},inArray:function(g,h){return e.inArray(h,g||[])}});var a={"tinymce.dom.DOMUtils":{select:function(i,h){var g=this;return e.find(i,g.get(h)||g.get(g.settings.root_element)||g.doc,[])},is:function(h,g){return e(this.get(h)).is(g)}}};d.onCreate=function(g,i,h){d.extend(h,a[i])}})(window.jQuery,tinymce);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(a,b){this.listeners.push({cb:a,scope:b||this.scope});return a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scope});return a},remove:function(a){var b=this.listeners,c=null;tinymce.each(b,function(e,d){if(a==e.cb){c=a;b.splice(d,1);return false}});return c},dispatch:function(){var f,d=arguments,e,b=this.listeners,g;for(e=0;e<b.length;e++){g=b[e];f=g.cb.apply(g.scope,d);if(f===false){break}}return f}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,h,d,c;e=tinymce.trim(e);g=f.settings=g||{};if(/^(mailto|tel|news|javascript|about|data):/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^\w*:?\/\//.test(e)){e=(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g.base_uri.path,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});if(c=g.base_uri){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host=="mce_host"){f.port=c.port}if(!f.host||f.host=="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var c=this,d;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:c});if((b.host!="mce_host"&&c.host!=b.host&&b.host)||c.port!=b.port||c.protocol!=b.protocol){return b.getURI()}d=c.toRelPath(c.path,b.path);if(b.query){d+="?"+b.query}if(b.anchor){d+="#"+b.anchor}return d},toAbsolute:function(b,c){var b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c<e.length;c++){a+=(c>0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(m){var k=m.each,j=m.is,i=m.isWebKit,d=m.isIE,a=/^(H[1-6R]|P|DIV|ADDRESS|PRE|FORM|T(ABLE|BODY|HEAD|FOOT|H|R|D)|LI|OL|UL|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|MENU|ISINDEX|SAMP)$/,e=g("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),f=g("src,href,style,coords,shape"),c={"&":"&",'"':""","<":"<",">":">"},n=/[<>&\"]/g,b=/^([a-z0-9],?)+$/i,h=/<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)(\s*\/?)>/g,l=/(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;function g(q){var p={},o;q=q.split(",");for(o=q.length;o>=0;o--){p[q[o]]=1}return p}m.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(u,q){var p=this,o;p.doc=u;p.win=window;p.files={};p.cssFlicker=false;p.counter=0;p.boxModel=!m.isIE||u.compatMode=="CSS1Compat";p.stdMode=u.documentMode===8;p.settings=q=m.extend({keep_values:false,hex_colors:1,process_html:1},q);if(m.isIE6){try{u.execCommand("BackgroundImageCache",false,true)}catch(r){p.cssFlicker=true}}if(q.valid_styles){p._styles={};k(q.valid_styles,function(t,s){p._styles[s]=m.explode(t)})}m.addUnload(p.destroy,p)},getRoot:function(){var o=this,p=o.settings;return(p&&o.get(p.root_element))||o.doc.body},getViewPort:function(p){var q,o;p=!p?this.win:p;q=p.document;o=this.boxModel?q.documentElement:q.body;return{x:p.pageXOffset||o.scrollLeft,y:p.pageYOffset||o.scrollTop,w:p.innerWidth||o.clientWidth,h:p.innerHeight||o.clientHeight}},getRect:function(s){var r,o=this,q;s=o.get(s);r=o.getPos(s);q=o.getSize(s);return{x:r.x,y:r.y,w:q.w,h:q.h}},getSize:function(r){var p=this,o,q;r=p.get(r);o=p.getStyle(r,"width");q=p.getStyle(r,"height");if(o.indexOf("px")===-1){o=0}if(q.indexOf("px")===-1){q=0}return{w:parseInt(o)||r.offsetWidth||r.clientWidth,h:parseInt(q)||r.offsetHeight||r.clientHeight}},getParent:function(q,p,o){return this.getParents(q,p,o,false)},getParents:function(z,v,s,y){var q=this,p,u=q.settings,x=[];z=q.get(z);y=y===undefined;if(u.strict_root){s=s||q.getRoot()}if(j(v,"string")){p=v;if(v==="*"){v=function(o){return o.nodeType==1}}else{v=function(o){return q.is(o,p)}}}while(z){if(z==s||!z.nodeType||z.nodeType===9){break}if(!v||v(z)){if(y){x.push(z)}else{return z}}z=z.parentNode}return y?x:null},get:function(o){var p;if(o&&this.doc&&typeof(o)=="string"){p=o;o=this.doc.getElementById(o);if(o&&o.id!==p){return this.doc.getElementsByName(p)[1]}}return o},getNext:function(p,o){return this._findSib(p,o,"nextSibling")},getPrev:function(p,o){return this._findSib(p,o,"previousSibling")},add:function(s,v,o,r,u){var q=this;return this.run(s,function(y){var x,t;x=j(v,"string")?q.doc.createElement(v):v;q.setAttribs(x,o);if(r){if(r.nodeType){x.appendChild(r)}else{q.setHTML(x,r)}}return !u?y.appendChild(x):x})},create:function(q,o,p){return this.add(this.doc.createElement(q),q,o,p,1)},createHTML:function(v,p,s){var u="",r=this,q;u+="<"+v;for(q in p){if(p.hasOwnProperty(q)){u+=" "+q+'="'+r.encode(p[q])+'"'}}if(m.is(s)){return u+">"+s+"</"+v+">"}return u+" />"},remove:function(o,p){return this.run(o,function(r){var q,s;q=r.parentNode;if(!q){return null}if(p){while(s=r.firstChild){if(!m.isIE||s.nodeType!==3||s.nodeValue){q.insertBefore(s,r)}else{r.removeChild(s)}}}return q.removeChild(r)})},setStyle:function(r,o,p){var q=this;return q.run(r,function(v){var u,t;u=v.style;o=o.replace(/-(\D)/g,function(x,s){return s.toUpperCase()});if(q.pixelStyles.test(o)&&(m.is(p,"number")||/^[\-0-9\.]+$/.test(p))){p+="px"}switch(o){case"opacity":if(d){u.filter=p===""?"":"alpha(opacity="+(p*100)+")";if(!r.currentStyle||!r.currentStyle.hasLayout){u.display="inline-block"}}u[o]=u["-moz-opacity"]=u["-khtml-opacity"]=p||"";break;case"float":d?u.styleFloat=p:u.cssFloat=p;break;default:u[o]=p||""}if(q.settings.update_styles){q.setAttrib(v,"_mce_style")}})},getStyle:function(r,o,q){r=this.get(r);if(!r){return false}if(this.doc.defaultView&&q){o=o.replace(/[A-Z]/g,function(s){return"-"+s});try{return this.doc.defaultView.getComputedStyle(r,null).getPropertyValue(o)}catch(p){return null}}o=o.replace(/-(\D)/g,function(t,s){return s.toUpperCase()});if(o=="float"){o=d?"styleFloat":"cssFloat"}if(r.currentStyle&&q){return r.currentStyle[o]}return r.style[o]},setStyles:function(u,v){var q=this,r=q.settings,p;p=r.update_styles;r.update_styles=0;k(v,function(o,s){q.setStyle(u,s,o)});r.update_styles=p;if(r.update_styles){q.setAttrib(u,r.cssText)}},setAttrib:function(q,r,o){var p=this;if(!q||!r){return}if(p.settings.strict){r=r.toLowerCase()}return this.run(q,function(u){var t=p.settings;switch(r){case"style":if(!j(o,"string")){k(o,function(s,x){p.setStyle(u,x,s)});return}if(t.keep_values){if(o&&!p._isRes(o)){u.setAttribute("_mce_style",o,2)}else{u.removeAttribute("_mce_style",2)}}u.style.cssText=o;break;case"class":u.className=o||"";break;case"src":case"href":if(t.keep_values){if(t.url_converter){o=t.url_converter.call(t.url_converter_scope||p,o,r,u)}p.setAttrib(u,"_mce_"+r,o,2)}break;case"shape":u.setAttribute("_mce_style",o);break}if(j(o)&&o!==null&&o.length!==0){u.setAttribute(r,""+o,2)}else{u.removeAttribute(r,2)}})},setAttribs:function(q,r){var p=this;return this.run(q,function(o){k(r,function(s,t){p.setAttrib(o,t,s)})})},getAttrib:function(r,s,q){var o,p=this;r=p.get(r);if(!r||r.nodeType!==1){return false}if(!j(q)){q=""}if(/^(src|href|style|coords|shape)$/.test(s)){o=r.getAttribute("_mce_"+s);if(o){return o}}if(d&&p.props[s]){o=r[p.props[s]];o=o&&o.nodeValue?o.nodeValue:o}if(!o){o=r.getAttribute(s,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(s)){if(r[p.props[s]]===true&&o===""){return s}return o?s:""}if(r.nodeName==="FORM"&&r.getAttributeNode(s)){return r.getAttributeNode(s).nodeValue}if(s==="style"){o=o||r.style.cssText;if(o){o=p.serializeStyle(p.parseStyle(o),r.nodeName);if(p.settings.keep_values&&!p._isRes(o)){r.setAttribute("_mce_style",o)}}}if(i&&s==="class"&&o){o=o.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(d){switch(s){case"rowspan":case"colspan":if(o===1){o=""}break;case"size":if(o==="+0"||o===20||o===0){o=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(o===0){o=""}break;case"hspace":if(o===-1){o=""}break;case"maxlength":case"tabindex":if(o===32768||o===2147483647||o==="32768"){o=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(o===65535){return s}return q;case"shape":o=o.toLowerCase();break;default:if(s.indexOf("on")===0&&o){o=(""+o).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(o!==undefined&&o!==null&&o!=="")?""+o:q},getPos:function(A,s){var p=this,o=0,z=0,u,v=p.doc,q;A=p.get(A);s=s||v.body;if(A){if(d&&!p.stdMode){A=A.getBoundingClientRect();u=p.boxModel?v.documentElement:v.body;o=p.getStyle(p.select("html")[0],"borderWidth");o=(o=="medium"||p.boxModel&&!p.isIE6)&&2||o;return{x:A.left+u.scrollLeft-o,y:A.top+u.scrollTop-o}}q=A;while(q&&q!=s&&q.nodeType){o+=q.offsetLeft||0;z+=q.offsetTop||0;q=q.offsetParent}q=A.parentNode;while(q&&q!=s&&q.nodeType){o-=q.scrollLeft||0;z-=q.scrollTop||0;q=q.parentNode}}return{x:o,y:z}},parseStyle:function(r){var u=this,v=u.settings,x={};if(!r){return x}function p(D,A,C){var z,B,o,y;z=x[D+"-top"+A];if(!z){return}B=x[D+"-right"+A];if(z!=B){return}o=x[D+"-bottom"+A];if(B!=o){return}y=x[D+"-left"+A];if(o!=y){return}x[C]=y;delete x[D+"-top"+A];delete x[D+"-right"+A];delete x[D+"-bottom"+A];delete x[D+"-left"+A]}function q(y,s,o,A){var z;z=x[s];if(!z){return}z=x[o];if(!z){return}z=x[A];if(!z){return}x[y]=x[s]+" "+x[o]+" "+x[A];delete x[s];delete x[o];delete x[A]}r=r.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");k(r.split(";"),function(s){var o,t=[];if(s){s=s.replace(/_MCE_SEMI_/g,";");s=s.replace(/url\([^\)]+\)/g,function(y){t.push(y);return"url("+t.length+")"});s=s.split(":");o=m.trim(s[1]);o=o.replace(/url\(([^\)]+)\)/g,function(z,y){return t[parseInt(y)-1]});o=o.replace(/rgb\([^\)]+\)/g,function(y){return u.toHex(y)});if(v.url_converter){o=o.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(y,z){return"url("+v.url_converter.call(v.url_converter_scope||u,u.decode(z),"style",null)+")"})}x[m.trim(s[0]).toLowerCase()]=o}});p("border","","border");p("border","-width","border-width");p("border","-color","border-color");p("border","-style","border-style");p("padding","","padding");p("margin","","margin");q("border","border-width","border-style","border-color");if(d){if(x.border=="medium none"){x.border=""}}return x},serializeStyle:function(v,p){var q=this,r="";function u(s,o){if(o&&s){if(o.indexOf("-")===0){return}switch(o){case"font-weight":if(s==700){s="bold"}break;case"color":case"background-color":s=s.toLowerCase();break}r+=(r?" ":"")+o+": "+s+";"}}if(p&&q._styles){k(q._styles["*"],function(o){u(v[o],o)});k(q._styles[p.toLowerCase()],function(o){u(v[o],o)})}else{k(v,u)}return r},loadCSS:function(o){var q=this,r=q.doc,p;if(!o){o=""}p=q.select("head")[0];k(o.split(","),function(s){var t;if(q.files[s]){return}q.files[s]=true;t=q.create("link",{rel:"stylesheet",href:m._addVer(s)});if(d&&r.documentMode){t.onload=function(){r.recalc();t.onload=null}}p.appendChild(t)})},addClass:function(o,p){return this.run(o,function(q){var r;if(!p){return 0}if(this.hasClass(q,p)){return q.className}r=this.removeClass(q,p);return q.className=(r!=""?(r+" "):"")+p})},removeClass:function(q,r){var o=this,p;return o.run(q,function(t){var s;if(o.hasClass(t,r)){if(!p){p=new RegExp("(^|\\s+)"+r+"(\\s+|$)","g")}s=t.className.replace(p," ");s=m.trim(s!=" "?s:"");t.className=s;if(!s){t.removeAttribute("class");t.removeAttribute("className")}return s}return t.className})},hasClass:function(p,o){p=this.get(p);if(!p||!o){return false}return(" "+p.className+" ").indexOf(" "+o+" ")!==-1},show:function(o){return this.setStyle(o,"display","block")},hide:function(o){return this.setStyle(o,"display","none")},isHidden:function(o){o=this.get(o);return !o||o.style.display=="none"||this.getStyle(o,"display")=="none"},uniqueId:function(o){return(!o?"mce_":o)+(this.counter++)},setHTML:function(q,p){var o=this;return this.run(q,function(v){var r,t,s,z,u,r;p=o.processHTML(p);if(d){function y(){while(v.firstChild){v.firstChild.removeNode()}try{v.innerHTML="<br />"+p;v.removeChild(v.firstChild)}catch(x){r=o.create("div");r.innerHTML="<br />"+p;k(r.childNodes,function(B,A){if(A){v.appendChild(B)}})}}if(o.settings.fix_ie_paragraphs){p=p.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi,'<p$1 _mce_keep="true"> </p>')}y();if(o.settings.fix_ie_paragraphs){s=v.getElementsByTagName("p");for(t=s.length-1,r=0;t>=0;t--){z=s[t];if(!z.hasChildNodes()){if(!z._mce_keep){r=1;break}z.removeAttribute("_mce_keep")}}}if(r){p=p.replace(/<p ([^>]+)>|<p>/ig,'<div $1 _mce_tmp="1">');p=p.replace(/<\/p>/gi,"</div>");y();if(o.settings.fix_ie_paragraphs){s=v.getElementsByTagName("DIV");for(t=s.length-1;t>=0;t--){z=s[t];if(z._mce_tmp){u=o.doc.createElement("p");z.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(A,x){var B;if(x!=="_mce_tmp"){B=z.getAttribute(x);if(!B&&x==="class"){B=z.className}u.setAttribute(x,B)}});for(r=0;r<z.childNodes.length;r++){u.appendChild(z.childNodes[r].cloneNode(true))}z.swapNode(u)}}}}}else{v.innerHTML=p}return p})},processHTML:function(r){var p=this,q=p.settings,v=[];if(!q.process_html){return r}if(d){r=r.replace(/'/g,"'");r=r.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,"")}r=r.replace(/<a( )([^>]+)\/>|<a\/>/gi,"<a$1$2></a>");if(q.keep_values){if(/<script|noscript|style/i.test(r)){function o(t){t=t.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n");t=t.replace(/^[\r\n]*|[\r\n]*$/g,"");t=t.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g,"");t=t.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g,"");return t}r=r.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/gi,function(s,x,t){if(!x){x=' type="text/javascript"'}x=x.replace(/src=\"([^\"]+)\"?/i,function(y,z){if(q.url_converter){z=p.encode(q.url_converter.call(q.url_converter_scope||p,p.decode(z),"src","script"))}return'_mce_src="'+z+'"'});if(m.trim(t)){v.push(o(t));t="<!--\nMCE_SCRIPT:"+(v.length-1)+"\n// -->"}return"<mce:script"+x+">"+t+"</mce:script>"});r=r.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/gi,function(s,x,t){if(t){v.push(o(t));t="<!--\nMCE_SCRIPT:"+(v.length-1)+"\n-->"}return"<mce:style"+x+">"+t+"</mce:style><style "+x+' _mce_bogus="1">'+t+"</style>"});r=r.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g,function(s,x,t){return"<mce:noscript"+x+"><!--"+p.encode(t).replace(/--/g,"--")+"--></mce:noscript>"})}r=r.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g,"<!--[CDATA[$1]]-->");function u(s){return s.replace(h,function(y,z,x,t){return"<"+z+x.replace(l,function(B,A,E,D,C){var F;A=A.toLowerCase();E=E||D||C||"";if(e[A]){if(E==="false"||E==="0"){return}return A+'="'+A+'"'}if(f[A]&&x.indexOf("_mce_"+A)==-1){F=p.decode(E);if(q.url_converter&&(A=="src"||A=="href")){F=q.url_converter.call(q.url_converter_scope||p,F,A,z)}if(A=="style"){F=p.serializeStyle(p.parseStyle(F),A)}return A+'="'+E+'" _mce_'+A+'="'+p.encode(F)+'"'}return B})+t+">"})}r=u(r);r=r.replace(/MCE_SCRIPT:([0-9]+)/g,function(t,s){return v[s]})}return r},getOuterHTML:function(o){var p;o=this.get(o);if(!o){return null}if(o.outerHTML!==undefined){return o.outerHTML}p=(o.ownerDocument||this.doc).createElement("body");p.appendChild(o.cloneNode(true));return p.innerHTML},setOuterHTML:function(r,p,s){var o=this;function q(u,t,x){var y,v;v=x.createElement("body");v.innerHTML=t;y=v.lastChild;while(y){o.insertAfter(y.cloneNode(true),u);y=y.previousSibling}o.remove(u)}return this.run(r,function(u){u=o.get(u);if(u.nodeType==1){s=s||u.ownerDocument||o.doc;if(d){try{if(d&&u.nodeType==1){u.outerHTML=p}else{q(u,p,s)}}catch(t){q(u,p,s)}}else{q(u,p,s)}}})},decode:function(p){var q,r,o;if(/&[\w#]+;/.test(p)){q=this.doc.createElement("div");q.innerHTML=p;r=q.firstChild;o="";if(r){do{o+=r.nodeValue}while(r=r.nextSibling)}return o||p}return p},encode:function(o){return(""+o).replace(n,function(p){return c[p]})},insertAfter:function(o,p){p=this.get(p);return this.run(o,function(r){var q,s;q=p.parentNode;s=p.nextSibling;if(s){q.insertBefore(r,s)}else{q.appendChild(r)}return r})},isBlock:function(o){if(o.nodeType&&o.nodeType!==1){return false}o=o.nodeName||o;return a.test(o)},replace:function(s,r,p){var q=this;if(j(r,"array")){s=s.cloneNode(true)}return q.run(r,function(t){if(p){k(m.grep(t.childNodes),function(o){s.appendChild(o)})}return t.parentNode.replaceChild(s,t)})},rename:function(r,o){var q=this,p;if(r.nodeName!=o.toUpperCase()){p=q.create(o);k(q.getAttribs(r),function(s){q.setAttrib(p,s.nodeName,q.getAttrib(r,s.nodeName))});q.replace(p,r,1)}return p||r},findCommonAncestor:function(q,o){var r=q,p;while(r){p=o;while(p&&r!=p){p=p.parentNode}if(r==p){break}r=r.parentNode}if(!r&&q.ownerDocument){return q.ownerDocument.documentElement}return r},toHex:function(o){var q=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(o);function p(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}if(q){o="#"+p(q[1])+p(q[2])+p(q[3]);return o}return o},getClasses:function(){var s=this,o=[],r,u={},v=s.settings.class_filter,q;if(s.classes){return s.classes}function x(t){k(t.imports,function(y){x(y)});k(t.cssRules||t.rules,function(y){switch(y.type||1){case 1:if(y.selectorText){k(y.selectorText.split(","),function(z){z=z.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(z)||!/\.[\w\-]+$/.test(z)){return}q=z;z=z.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(v&&!(z=v(z,q))){return}if(!u[z]){o.push({"class":z});u[z]=1}})}break;case 3:x(y.styleSheet);break}})}try{k(s.doc.styleSheets,x)}catch(p){}if(o.length>0){s.classes=o}return o},run:function(u,r,q){var p=this,v;if(p.doc&&typeof(u)==="string"){u=p.get(u)}if(!u){return false}q=q||this;if(!u.nodeType&&(u.length||u.length===0)){v=[];k(u,function(s,o){if(s){if(typeof(s)=="string"){s=p.doc.getElementById(s)}v.push(r.call(q,s,o))}});return v}return r.call(q,u)},getAttribs:function(q){var p;q=this.get(q);if(!q){return[]}if(d){p=[];if(q.nodeName=="OBJECT"){return q.attributes}if(q.nodeName==="OPTION"&&this.getAttrib(q,"selected")){p.push({specified:1,nodeName:"selected"})}q.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(o){p.push({specified:1,nodeName:o})});return p}return q.attributes},destroy:function(p){var o=this;if(o.events){o.events.destroy()}o.win=o.doc=o.root=o.events=null;if(!p){m.removeUnload(o.destroy)}},createRng:function(){var o=this.doc;return o.createRange?o.createRange():new m.dom.Range(this)},nodeIndex:function(s,t){var o=0,q,r,p;if(s){for(q=s.nodeType,s=s.previousSibling,r=s;s;s=s.previousSibling){p=s.nodeType;if(t&&p==3){if(p==q||!s.nodeValue.length){continue}}o++;q=p}}return o},split:function(u,s,y){var z=this,o=z.createRng(),v,q,x;function p(A){var t,r=A.childNodes;if(A.nodeType==1&&A.getAttribute("_mce_type")=="bookmark"){return}for(t=r.length-1;t>=0;t--){p(r[t])}if(A.nodeType!=9){if(A.nodeType==3&&A.nodeValue.length>0){return}if(A.nodeType==1){r=A.childNodes;if(r.length==1&&r[0]&&r[0].nodeType==1&&r[0].getAttribute("_mce_type")=="bookmark"){A.parentNode.insertBefore(r[0],A)}if(r.length||/^(br|hr|input|img)$/i.test(A.nodeName)){return}}z.remove(A)}return A}if(u&&s){o.setStart(u.parentNode,z.nodeIndex(u));o.setEnd(s.parentNode,z.nodeIndex(s));v=o.extractContents();o=z.createRng();o.setStart(s.parentNode,z.nodeIndex(s)+1);o.setEnd(u.parentNode,z.nodeIndex(u)+1);q=o.extractContents();x=u.parentNode;x.insertBefore(p(v),u);if(y){x.replaceChild(y,s)}else{x.insertBefore(s,u)}x.insertBefore(p(q),u);z.remove(u);return y||s}},bind:function(s,o,r,q){var p=this;if(!p.events){p.events=new m.dom.EventUtils()}return p.events.add(s,o,r,q||this)},unbind:function(r,o,q){var p=this;if(!p.events){p.events=new m.dom.EventUtils()}return p.events.remove(r,o,q)},_findSib:function(r,o,p){var q=this,s=o;if(r){if(j(s,"string")){s=function(t){return q.is(t,o)}}for(r=r[p];r;r=r[p]){if(s(r)){return r}}}return null},_isRes:function(o){return/^(top|left|bottom|right|width|height)/i.test(o)||/;\s*(top|left|bottom|right|width|height)/i.test(o)}});m.DOM=new m.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(W,X){var Z=N[h],Y=N[U],V=N[P],t=N[z];if(W===0){return G(Z,Y,Z,Y)}if(W===1){return G(Z,Y,V,t)}if(W===2){return G(V,t,V,t)}if(W===3){return G(V,t,Z,Y)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z<Y){return -1}return 1}aa=V;while(aa&&aa.parentNode!=X){aa=aa.parentNode}if(aa){W=0;t=X.firstChild;while(t!=aa&&W<Z){W++;t=t.nextSibling}if(Z<=W){return -1}return 1}aa=X;while(aa&&aa.parentNode!=V){aa=aa.parentNode}if(aa){W=0;t=V.firstChild;while(t!=aa&&W<Y){W++;t=t.nextSibling}if(W<Y){return -1}return 1}ab=c.findCommonAncestor(X,V);ad=X;while(ad&&ad.parentNode!=ab){ad=ad.parentNode}if(!ad){ad=ab}ac=V;while(ac&&ac.parentNode!=ab){ac=ac.parentNode}if(!ac){ac=ab}if(ad==ac){return 0}t=ab.firstChild;while(t){if(t==ad){return -1}if(t==ac){return 1}t=t.nextSibling}}function B(V,Y,X){var t,W;if(V){N[h]=Y;N[U]=X}else{N[P]=Y;N[z]=X}t=N[P];while(t.parentNode){t=t.parentNode}W=N[h];while(W.parentNode){W=W.parentNode}if(W==t){if(G(N[h],N[U],N[P],N[z])>0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(g){var i=this,j="\uFEFF",e,h,d=g.dom,c=true,f=false;function b(){var n=g.getRng(),k=d.createRng(),m,o;m=n.item?n.item(0):n.parentElement();if(m.ownerDocument!=d.doc){return k}if(n.item||!m.hasChildNodes()){k.setStart(m.parentNode,d.nodeIndex(m));k.setEnd(k.startContainer,k.startOffset+1);return k}o=g.isCollapsed();function l(s){var u,q,t,p,A=0,x,y,z,r,v;r=n.duplicate();r.collapse(s);u=d.create("a");z=r.parentElement();if(!z.hasChildNodes()){k[s?"setStart":"setEnd"](z,0);return}z.appendChild(u);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){k[s?"setStartAfter":"setEndAfter"](z);d.remove(u);return}p=tinymce.grep(z.childNodes);x=p.length-1;while(A<=x){y=Math.floor((A+x)/2);z.insertBefore(u,p[y]);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){A=y+1}else{if(v<0){x=y-1}else{found=true;break}}}q=v>0||y==0?u.nextSibling:u.previousSibling;if(q.nodeType==1){d.remove(u);t=d.nodeIndex(q);q=q.parentNode;if(!s||y>0){t++}}else{if(v>0||y==0){r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=r.text.length}else{r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=q.nodeValue.length-r.text.length}d.remove(u)}k[s?"setStart":"setEnd"](q,t)}l(true);if(!o){l()}return k}this.addRange=function(k){var p,n,m,r,u,s,t=g.dom.doc,o=t.body;function l(B){var x,A,v,z,y;v=d.create("a");x=B?m:u;A=B?r:s;z=p.duplicate();if(x==t){x=o;A=0}if(x.nodeType==3){x.parentNode.insertBefore(v,x);z.moveToElementText(v);z.moveStart("character",A);d.remove(v);p.setEndPoint(B?"StartToStart":"EndToEnd",z)}else{y=x.childNodes;if(y.length){if(A>=y.length){d.insertAfter(v,y[y.length-1])}else{x.insertBefore(v,y[A])}z.moveToElementText(v)}else{v=t.createTextNode(j);x.appendChild(v);z.moveToElementText(v.parentNode);z.collapse(c)}p.setEndPoint(B?"StartToStart":"EndToEnd",z);d.remove(v)}}this.destroy();m=k.startContainer;r=k.startOffset;u=k.endContainer;s=k.endOffset;p=o.createTextRange();if(m==u&&m.nodeType==1&&r==s-1){if(r==s-1){try{n=o.createControlRange();n.addElement(m.childNodes[r]);n.select();n.scrollIntoView();return}catch(q){}}}l(true);l();p.select();p.scrollIntoView()};this.getRangeAt=function(){if(!e||!tinymce.dom.RangeUtils.compareRanges(h,g.getRng())){e=b();h=g.getRng()}try{e.startContainer.nextSibling}catch(k){e=b();h=null}return e};this.destroy=function(){h=e=null};if(g.dom.boxModel){(function(){var q=d.doc,l=q.body,n,o;q.documentElement.unselectable=c;function p(r,u){var s=l.createTextRange();try{s.moveToPoint(r,u)}catch(t){s=null}return s}function m(s){var r;if(s.button){r=p(s.x,s.y);if(r){if(r.compareEndPoints("StartToStart",o)>0){r.setEndPoint("StartToStart",o)}else{r.setEndPoint("EndToEnd",o)}r.select()}}else{k()}}function k(){d.unbind(q,"mouseup",k);d.unbind(q,"mousemove",m);n=0}d.bind(q,"mousedown",function(r){if(r.target.nodeName==="HTML"){if(n){k()}n=1;o=p(r.x,r.y);if(o){d.bind(q,"mouseup",k);d.bind(q,"mousemove",m);o.select()}}})})()}}tinymce.dom.TridentSelection=a})();(function(d){var f=d.each,c=d.DOM,b=d.isIE,e=d.isWebKit,a;d.create("tinymce.dom.EventUtils",{EventUtils:function(){this.inits=[];this.events=[]},add:function(m,p,l,j){var g,h=this,i=h.events,k;if(p instanceof Array){k=[];f(p,function(o){k.push(h.add(m,o,l,j))});return k}if(m&&m.hasOwnProperty&&m instanceof Array){k=[];f(m,function(n){n=c.get(n);k.push(h.add(n,p,l,j))});return k}m=c.get(m);if(!m){return}g=function(n){if(h.disabled){return}n=n||window.event;if(n&&b){if(!n.target){n.target=n.srcElement}d.extend(n,h._stoppers)}if(!j){return l(n)}return l.call(j,n)};if(p=="unload"){d.unloads.unshift({func:g});return g}if(p=="init"){if(h.domLoaded){g()}else{h.inits.push(g)}return g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return l},remove:function(l,m,k){var h=this,g=h.events,i=false,j;if(l&&l.hasOwnProperty&&l instanceof Array){j=[];f(l,function(n){n=c.get(n);j.push(h.remove(n,m,k))});return j}l=c.get(l);f(g,function(o,n){if(o.obj==l&&o.name==m&&(!k||(o.func==k||o.cfunc==k))){g.splice(n,1);h._remove(l,m,o.cfunc);i=true;return false}});return i},clear:function(l){var j=this,g=j.events,h,k;if(l){l=c.get(l);for(h=g.length-1;h>=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(c){function e(f){return f.replace(/[\n\r]+/g,"")}var b=c.is,a=c.isIE,d=c.each;c.create("tinymce.dom.Selection",{Selection:function(i,h,g){var f=this;f.dom=i;f.win=h;f.serializer=g;d(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=new c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=new c.dom.TridentSelection(f)}c.addUnload(f.destroy,f)},getContent:function(g){var f=this,h=f.getRng(),l=f.dom.create("body"),j=f.getSel(),i,k,m;g=g||{};i=k="";g.get=true;g.format=g.format||"html";f.onBeforeGetContent.dispatch(f,g);if(g.format=="text"){return f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneContents){m=h.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h.htmlText)){l.innerHTML=h.item?h.item(0).outerHTML:h.htmlText}else{l.innerHTML=h.toString()}}if(/^\s/.test(l.innerHTML)){i=" "}if(/\s+$/.test(l.innerHTML)){k=" "}g.getInner=true;g.content=f.isCollapsed()?"":i+f.serializer.serialize(l,g)+k;f.onGetContent.dispatch(f,g);return g.content},setContent:function(i,g){var f=this,j=f.getRng(),l,k=f.win.document;g=g||{format:"html"};g.set=true;i=g.content=f.dom.processHTML(i);f.onBeforeSetContent.dispatch(f,g);i=g.content;if(j.insertNode){i+='<span id="__caret">_</span>';if(j.startContainer==k&&j.endContainer==k){k.body.innerHTML=i}else{j.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=i}else{j.insertNode(j.createContextualFragment(i))}}l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndBefore(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}if(h&&h.nodeName=="BODY"){return h.firstChild||h}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(q,r){var u=this,m=u.dom,g,j,i,n,h,o,p,l="\uFEFF",s;function f(v,x){var t=0;d(m.select(v),function(z,y){if(z==x){t=y}});return t}if(q==2){function k(){var v=u.getRng(true),t=m.getRoot(),x={};function y(B,G){var A=B[G?"startContainer":"endContainer"],F=B[G?"startOffset":"endOffset"],z=[],C,E,D=0;if(A.nodeType==3){if(r){for(C=A.previousSibling;C&&C.nodeType==3;C=C.previousSibling){F+=C.nodeValue.length}}z.push(F)}else{E=A.childNodes;if(F>=E.length&&E.length){D=1;F=Math.max(0,E.length-1)}z.push(u.dom.nodeIndex(E[F],r)+D)}for(;A&&A!=t;A=A.parentNode){z.push(u.dom.nodeIndex(A,r))}return z}x.start=y(v,true);if(!u.isCollapsed()){x.end=y(v)}return x}return k()}if(q){return{rng:u.getRng()}}g=u.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();s="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();g.collapse();g.pasteHTML('<span _mce_type="bookmark" id="'+i+'_start" style="'+s+'">'+l+"</span>");if(!n){j.collapse(false);j.pasteHTML('<span _mce_type="bookmark" id="'+i+'_end" style="'+s+'">'+l+"</span>")}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=u.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{_mce_type:"bookmark",id:i+"_end",style:s},l))}g.collapse(true);g.insertNode(m.create("span",{_mce_type:"bookmark",id:i+"_start",style:s},l))}u.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(r.tridentSel){r.tridentSel.destroy()}if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(u.length){x=u[t[v]]}}if(z){f.setStart(x,t[0])}else{f.setEnd(x,t[0])}}}g(true);g();r.setRng(f)}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(!a&&l.isBlock(t)&&!t.innerHTML){t.innerHTML='<br _mce_bogus="1" />'}return t}k("start");k("end");f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g);return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=g.win.document.createRange?g.win.document.createRange():g.win.document.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;h.removeAllRanges();h.addRange(i);g.selectedRange=h.getRangeAt(0)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var g=this,f=g.getRng(),h=g.getSel(),i;if(f.setStart){if(!f){return g.dom.getRoot()}i=f.commonAncestorContainer;if(!f.collapsed){if(f.startContainer==f.endContainer){if(f.startOffset-f.endOffset<2){if(f.startContainer.hasChildNodes()){i=f.startContainer.childNodes[f.startOffset]}}}if(c.isWebKit&&h.anchorNode&&h.anchorNode.nodeType==1){return h.anchorNode.childNodes[h.anchorOffset]}}if(i&&i.nodeType==3){return i.parentNode}return i}return f.item?f.item(0):f.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,">")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:0},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("</"+b+">")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("</"+this.tags.pop()+">");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("<![CDATA["+b+"]]>");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("<!-- "+b+"-->");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"<";case">":return">";case"&":return"&";case'"':return"""}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(_mce_|_moz_|sizset|sizcache)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",valid_elements:"*[*]",extended_valid_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;i.schema=j.schema;if(j.entity_encoding=="named"&&!j.entities){j.entity_encoding="raw"}if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^<br \/>\s*<\//.test(n)){return"</"+o+">"}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,z,y=["ol","ul"],u,t,q,k=/^(OL|UL)$/,A;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p<o.length;p++){if(r.nodeName==o[p]){return r}}}return null}for(z=0;z<y.length;z++){l=i.dom.select(y[z],s.node);for(u=0;u<l.length;u++){t=l[u];q=t.parentNode;if(k.test(q.nodeName)){A=m(t,"LI");if(!A){A=i.dom.create("li");A.innerHTML=" ";A.appendChild(t);q.insertBefore(A,q.firstChild)}else{A.appendChild(t)}}}}})}if(j.fix_table_elements){i.onPreProcess.add(function(k,l){if(!e.isOpera||opera.buildNumber()>=1767){f(i.dom.select("p table",l.node).reverse(),function(p){var o=i.dom.getParent(p.parentNode,"table,p");if(o.nodeName!="TABLE"){try{i.dom.split(o,p)}catch(m){}}})}})}},setEntities:function(o){var n=this,j,m,h={},k;if(n.entityLookup){return}j=o.split(",");for(m=0;m<j.length;m+=2){k=j[m];if(k==34||k==38||k==60||k==62){continue}h[String.fromCharCode(j[m])]=j[m+1];k=parseInt(j[m]).toString(16)}n.entityLookup=h},setRules:function(i){var h=this;h._setup();h.rules={};h.wildRules=[];h.validElements={};return h.addRules(i)},addRules:function(i){var h=this,j;if(!i){return}h._setup();f(i.split(","),function(m){var q=m.split(/\[|\]/),l=q[0].split("/"),r,k,o,n=[];if(j){k=e.extend([],j.attribs)}if(q.length>1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t<k.length;t++){if(k[t].name==u[2]){k.splice(t,1);return}}}switch(u[3]){case"=":p.defaultVal=u[4]||"";break;case":":p.forcedVal=u[4];break;case"<":p.validVals=u[4].split("?");break}if(/[*.?]/.test(u[2])){o=o||[];p.nameRE=new RegExp("^"+c(u[2])+"$");o.push(p)}else{p.name=u[2];k.push(p)}n.push(u[2])})}f(l,function(v,u){var y=v.charAt(0),t=1,p={};if(j){if(j.noEmpty){p.noEmpty=j.noEmpty}if(j.fullEnd){p.fullEnd=j.fullEnd}if(j.padd){p.padd=j.padd}}switch(y){case"-":p.noEmpty=true;break;case"+":p.fullEnd=true;break;case"#":p.padd=true;break;default:t=0}l[u]=v=v.substring(t);h.validElements[v]=1;if(/[*.?]/.test(l[0])){p.nameRE=new RegExp("^"+c(l[0])+"$");h.wildRules=h.wildRules||{};h.wildRules.push(p)}else{p.name=l[0];if(l[0]=="@"){j=p}h.rules[v]=p}p.attribs=k;if(r){p.requiredAttribs=r}if(o){v="";f(n,function(s){if(v){v+="|"}v+="("+c(s)+")"});p.validAttribsRE=new RegExp("^"+v.toLowerCase()+"$");p.wildAttribs=o}})});i="";f(h.validElements,function(m,l){if(i){i+="|"}if(l!="@"){i+=l}});h.validElementsRE=new RegExp("^("+c(i.toLowerCase())+")$")},findRule:function(m){var j=this,l=j.rules,h,k;j._setup();k=l[m];if(k){return k}l=j.wildRules;for(h=0;h<l.length;h++){if(l[h].nameRE.test(m)){return l[h]}}return null},findAttribRule:function(h,l){var j,k=h.wildAttribs;for(j=0;j<k.length;j++){if(k[j].nameRE.test(l)){return k[j]}}return null},serialize:function(r,q){var m,k=this,p,i,j,l;k._setup();q=q||{};q.format=q.format||"html";k.processObj=q;if(d){l=[];f(r.getElementsByTagName("option"),function(o){var h=k.dom.getAttrib(o,"selected");l.push(h?h:null)})}r=r.cloneNode(true);if(d){f(r.getElementsByTagName("option"),function(o,h){k.dom.setAttrib(o,"selected",l[h])})}j=r.ownerDocument.implementation;if(j.createHTMLDocument&&(e.isOpera&&opera.buildNumber()>=1767)){p=j.createHTMLDocument("");f(r.nodeName=="BODY"?r.childNodes:[r],function(h){p.body.appendChild(p.importNode(h,true))});if(r.nodeName!="BODY"){r=p.body.firstChild}else{r=p.body}i=k.dom.doc;k.dom.doc=p}k.key=""+(parseInt(k.key)+1);if(!q.no_events){q.node=r;k.onPreProcess.dispatch(k,q)}k.writer.reset();k._info=q;k._serializeNode(r,q.getInner);q.content=k.writer.getContent();if(i){k.dom.doc=i}if(!q.no_events){k.onPostProcess.dispatch(k,q)}k._postProcess(q);q.node=null;return e.trim(q.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/script>)/g},{pattern:/(<noscript[^>]*>)(.*?)(<\/noscript>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?"<p$1> </p>":"<p$1> </p>");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"</$1>")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"</$1>\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g,"<![CDATA[$1]]>");if(k.entity_encoding=="raw"){j=j.replace(/<p> <\/p>|<p([^>]+)> <\/p>/g,"<p$1>\u00a0</p>")}j=j.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g,function(h,p,o){return"<noscript"+p+">"+i.dom.decode(o.replace(/<!--|-->/g,""))+"</noscript>"})}n.content=j},_serializeNode:function(E,J){var A=this,B=A.settings,y=A.writer,q,j,u,G,F,I,C,h,z,k,r,D,p,m,H,o,x;if(!B.node_filter||B.node_filter(E)){switch(E.nodeType){case 1:if(E.hasAttribute?E.hasAttribute("_mce_bogus"):E.getAttribute("_mce_bogus")){return}p=H=false;q=E.hasChildNodes();k=E.getAttribute("_mce_name")||E.nodeName.toLowerCase();o=E.getAttribute("_mce_type");if(o){if(!A._info.cleanup){p=true;return}else{H=1}}if(d){x=E.scopeName;if(x&&x!=="HTML"&&x!=="html"){k=x+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!H){if(!A.validElementsRE||!A.validElementsRE.test(k)||(A.invalidElementsRE&&A.invalidElementsRE.test(k))||J){p=true;break}}if(d){if(B.fix_content_duplication){if(E._mce_serialized==A.key){return}E._mce_serialized=A.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(E.nodeName==="BR"&&E.getAttribute("type")=="_moz"){return}}}if(B.validate_children){if(A.elementName&&!A.schema.isValid(A.elementName,k)){p=true;break}A.elementName=k}r=A.findRule(k);if(!r){p=true;break}k=r.name||k;m=B.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){I=r.requiredAttribs;for(G=I.length-1;G>=0;G--){if(this.dom.getAttrib(E,I[G])!==""){break}}if(G==-1){p=true;break}}y.writeStartElement(k);if(r.attribs){for(G=0,C=r.attribs,F=C.length;G<F;G++){I=C[G];z=A._getAttrib(E,I);if(z!==null){y.writeAttribute(I.name,z)}}}if(r.validAttribsRE){C=A.dom.getAttribs(E);for(G=C.length-1;G>-1;G--){h=C[G];if(h.specified){I=h.nodeName.toLowerCase();if(B.invalid_attrs.test(I)||!r.validAttribsRE.test(I)){continue}D=A.findAttribRule(r,I);z=A._getAttrib(E,D,I);if(z!==null){y.writeAttribute(I,z)}}}}if(o&&H){y.writeAttribute("_mce_type",o)}if(k==="script"&&e.trim(E.innerHTML)){y.writeText("// ");y.writeCDATA(E.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=E.firstChild)&&u.nodeType===1&&E.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("_mce_bogus"):u.getAttribute("_mce_bogus")){y.writeText("\u00a0")}}else{if(!q){y.writeText("\u00a0")}}}break;case 3:if(B.validate_children&&A.elementName&&!A.schema.isValid(A.elementName,"#text")){return}return y.writeText(E.nodeValue);case 4:return y.writeCDATA(E.nodeValue);case 8:return y.writeComment(E.nodeValue)}}else{if(E.nodeType==1){q=E.hasChildNodes()}}if(q&&!m){u=E.firstChild;while(u){A._serializeNode(u);A.elementName=k;u=u.nextSibling}}if(!p){if(!m){y.writeFullEndElement()}else{y.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+"<!--mce:"+(j.items.length-1)+"-->"+p}))});return j},_unprotect:function(i,j){i=i.replace(/\<!--mce:([0-9]+)--\>/g,function(k,h){return j.items[parseInt(h)]});j.items=[];return i},_encode:function(m){var j=this,k=j.settings,i;if(k.entity_encoding!=="raw"){if(k.entity_encoding.indexOf("named")!=-1){j.setEntities(k.entities);i=j.entityLookup;m=m.replace(/[\u007E-\uFFFF]/g,function(h){var l;if(l=i[h]){h="&"+l+";"}return h})}if(k.entity_encoding.indexOf("numeric")!=-1){m=m.replace(/[\u007E-\uFFFF]/g,function(h){return"&#"+h.charCodeAt(0)+";"})}}return m},_setup:function(){var h=this,i=this.settings;if(h.done){return}h.done=1;h.setRules(i.valid_elements);h.addRules(i.extended_valid_elements);if(i.invalid_elements){h.invalidElementsRE=new RegExp("^("+c(i.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}if(i.attrib_value_filter){h.attribValueFilter=i.attribValueFilter}},_getAttrib:function(m,j,h){var l,k;h=h||j.name;if(j.forcedVal&&(k=j.forcedVal)){if(k==="{$uid}"){return this.dom.uniqueId()}return k}k=this.dom.getAttrib(m,h);switch(h){case"rowspan":case"colspan":if(k=="1"){k=""}break}if(this.attribValueFilter){k=this.attribValueFilter(h,k,m)}if(j.validVals){for(l=j.validVals.length-1;l>=0;l--){if(k==j.validVals[l]){break}}if(l==-1){return null}}if(k===""&&typeof(j.defaultVal)!="undefined"){k=j.defaultVal;if(k==="{$uid}"){return this.dom.uniqueId()}return k}else{if(h=="class"&&this.processObj.get){k=k.replace(/\s?mceItem\w+\s?/g,"")}}if(k===""){return null}return k}})})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],f={},d=[],g=0,e;function b(m,u){var v=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}u()}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(x){var t=q.create("script",{type:"text/javascript"});t.text=x;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()}});return}}s=q.create("script",{id:n,type:"text/javascript",src:a._addVer(m)});s.onload=p;s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}};(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==e){j.push(m);l[m]=c}if(q){if(!f[m]){f[m]=[]}f[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(f[r],function(s){s.func.call(s.scope)});f[r]=e}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","lastSibling",e))}};(function(){var a={};function b(f,e){var d;function c(g){return g.replace(/[A-Z]+/g,function(h){return c(f[h])})}for(d in f){if(f.hasOwnProperty(d)){f[d]=c(f[d])}}c(e).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]/g,function(l,g,j){var h,k={};j=j.split(/\|/);for(h=j.length-1;h>=0;h--){k[j[h]]=1}a[g]=k})}b({Z:"#|H|K|N|O|P",Y:"#|X|form|R|Q",X:"p|T|div|U|W|isindex|fieldset|table",W:"pre|hr|blockquote|address|center|noframes",U:"ul|ol|dl|menu|dir",ZC:"#|p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"#|X|S|Q",S:"R|P",ZA:"#|a|G|J|M|O|P",R:"#|a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe"},"script[]style[]object[#|param|X|form|a|H|K|N|O|Q]param[]p[S]a[Z]br[]span[S]bdo[S]applet[#|param|X|form|a|H|K|N|O|Q]h1[S]img[]map[X|form|Q|area]h2[S]iframe[#|X|form|a|H|K|N|O|Q]h3[S]tt[S]i[S]b[S]u[S]s[S]strike[S]big[S]small[S]font[S]basefont[]em[S]strong[S]dfn[S]code[S]q[S]samp[S]kbd[S]var[S]cite[S]abbr[S]acronym[S]sub[S]sup[S]input[]select[optgroup|option]optgroup[option]option[]textarea[]label[S]button[#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[S]ins[#|X|form|a|H|K|N|O|Q]h5[S]del[#|X|form|a|H|K|N|O|Q]h6[S]div[#|X|form|a|H|K|N|O|Q]ul[li]li[#|X|form|a|H|K|N|O|Q]ol[li]dl[dt|dd]dt[S]dd[#|X|form|a|H|K|N|O|Q]menu[li]dir[li]pre[ZA]hr[]blockquote[#|X|form|a|H|K|N|O|Q]address[S|p]center[#|X|form|a|H|K|N|O|Q]noframes[#|X|form|a|H|K|N|O|Q]isindex[]fieldset[#|legend|X|form|a|H|K|N|O|Q]legend[S]table[caption|col|colgroup|thead|tfoot|tbody|tr]caption[S]col[]colgroup[col]thead[tr]tr[th|td]th[#|X|form|a|H|K|N|O|Q]form[#|X|a|H|K|N|O|Q]noscript[#|X|form|a|H|K|N|O|Q]td[#|X|form|a|H|K|N|O|Q]tfoot[tr]tbody[tr]area[]base[]body[#|X|form|a|H|K|N|O|Q]");tinymce.dom.Schema=function(){var c=this,d=a;c.isValid=function(f,e){var g=d[f];return !!(g&&(!e||g[e]))}}})();(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,r){var h=d.startContainer,k=d.startOffset,s=d.endContainer,l=d.endOffset,i,f,n,g,q,p,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(t){r([t])});return}function o(v,u,t){var x=[];for(;v&&v!=t;v=v[u]){x.push(v)}return x}function m(u,t){do{if(u.parentNode==t){return u}u=u.parentNode}while(u)}function j(v,u,x){var t=x?"nextSibling":"previousSibling";for(g=v,q=g.parentNode;g&&g!=u;g=q){q=g.parentNode;p=o(g==v?g:g[t],t);if(p.length){if(!x){p.reverse()}r(p)}}}if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[k]}if(s.nodeType==1&&s.hasChildNodes()){s=s.childNodes[Math.min(k==l?l:l-1,s.childNodes.length-1)]}i=c.findCommonAncestor(h,s);if(h==s){return r([h])}for(g=h;g;g=g.parentNode){if(g==s){return j(h,i,true)}if(g==i){break}}for(g=s;g;g=g.parentNode){if(g==h){return j(s,i)}if(g==i){break}}f=m(h,i)||h;n=m(s,i)||s;j(h,f,true);p=o(f==h?f:f.nextSibling,"nextSibling",n==s?n.nextSibling:n);if(p.length){r(p)}j(s,n)}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(e,d){this.id=e;this.settings=d=d||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=d.scope||this;this.disabled=0;this.active=0},setDisabled:function(d){var f;if(d!=this.disabled){f=b.get(this.id);if(f&&this.settings.unavailable_prefix){if(d){this.prevTitle=f.title;f.title=this.settings.unavailable_prefix+": "+f.title}else{f.title=this.prevTitle}}this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(b,a){this.parent(b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator"},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.clientWidth,j.max_width):g.clientWidth;k=j.max_height?Math.min(g.clientHeight,j.max_height):g.clientHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}z.onShowMenu.dispatch(z);if(A.keyboard_focus){a.add(o,"keydown",z._keyHandler,z);c.select("a","menu_"+z.id)[0].focus();z._focusIdx=0}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);a.remove(h,"mouseover",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000"});k=c.add(g,"div",{id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_keyHandler:function(j){var i=this,h=j.keyCode;function g(m){var k=i._focusIdx+m,l=c.select("a","menu_"+i.id)[k];if(l){i._focusIdx=k;l.focus()}}switch(h){case 38:g(-1);return;case 40:g(1);return;case 13:return;case 27:return this.hideMenu()}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,"td");i=p=c.add(i,"a",{href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(d,c){this.parent(d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" title="'+a.encode(e.title)+'">';if(e.image){d+='<img class="mceIcon" src="'+e.image+'" />'+c+"</a>"}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")+"</a>"}return d},postRender:function(){var c=this,d=c.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.isDisabled()){return d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(h,g){var f=this;f.parent(h,g);f.items=[];f.onChange=new a(f);f.onPostRender=new a(f);f.onAdd=new a(f);f.onRenderMenu=new d.util.Dispatcher(this);f.classPrefix="mceListBox"},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var g=this,h,i;if(f!=g.selectedIndex){h=c.get(g.id+"_text");i=g.items[f];if(i){g.selectedValue=i.value;g.selectedIndex=f;c.setHTML(h,c.encode(i.title));c.removeClass(h,"mceTitle")}else{c.setHTML(h,c.encode(g.settings.title));c.addClass(h,"mceTitle");g.selectedValue=g.selectedIndex=null}h=0}},add:function(i,f,h){var g=this;h=h||{};h=d.extend(h,{title:i,value:f});g.items.push(h);g.onAdd.dispatch(g,h)},getLength:function(){return this.items.length},renderHTML:function(){var i="",f=this,g=f.settings,j=f.classPrefix;i='<table id="'+f.id+'" cellpadding="0" cellspacing="0" class="'+j+" "+j+"Enabled"+(g["class"]?(" "+g["class"]):"")+'"><tbody><tr>';i+="<td>"+c.createHTML("a",{id:f.id+"_text",href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},c.encode(f.settings.title))+"</td>";i+="<td>"+c.createHTML("a",{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},"<span></span>")+"</td>";i+="</tr></tbody></table>";return i},showMenu:function(){var g=this,j,i,h=c.get(this.id),f;if(g.isDisabled()||g.items.length==0){return}if(g.menu&&g.menu.isMenuVisible){return g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}j=c.getPos(this.settings.menu_container);i=c.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.keyboard_focus=!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,function(k){if(k.value===g.selectedValue){f.items[k.id].setSelected(1);g.oldID=k.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function(g){var f=this;if(f.menu&&f.menu.isMenuVisible){if(g&&g.type=="mousedown"&&(g.target.id==f.id+"_text"||g.target.id==f.id+"_open")){return}if(!g||!c.getParent(g.target,".mceMenu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mousedown",f.hideMenu,f);f.menu.hideMenu()}}},renderMenu:function(){var g=this,f;f=g.settings.control_manager.createDropMenu(g.id+"_menu",{menu_line:1,"class":g.classPrefix+"Menu mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(g.hideMenu,g);f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}});e(g.items,function(h){if(h.value===undefined){f.add({title:h.title,"class":"mceMenuItemTitle",onclick:function(){if(g.settings.onselect("")!==false){g.select("")}}})}else{h.id=c.uniqueId();h.onclick=function(){if(g.settings.onselect(h.value)!==false){g.select(h.value)}};f.add(h)}});g.onRenderMenu.dispatch(g,f);g.menu=f},postRender:function(){var f=this,g=f.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id+"_text","focus",function(){if(!f._focused){f.keyDownHandler=b.add(f.id+"_text","keydown",function(k){var h=-1,i,j=k.keyCode;e(f.items,function(l,m){if(f.selectedValue==l.value){h=m}});if(j==38){i=f.items[h-1]}else{if(j==40){i=f.items[h+1]}else{if(j==13){i=f.selectedValue;f.selectedValue=null;f.settings.onselect(i);return b.cancel(k)}}}if(i){f.hideMenu();f.select(i.value)}})}f._focused=1});b.add(f.id+"_text","blur",function(){b.remove(f.id+"_text","keydown",f.keyDownHandler);f._focused=0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseover",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hover")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,b=d.dom.Event,e=d.each,a=d.util.Dispatcher;d.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){this.parent(g,f);this.classPrefix="mceNativeListBox"},setDisabled:function(f){c.get(this.id).disabled=f},isDisabled:function(){return c.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==undefined){return g.selectByIndex(-1)}if(h&&h.call){i=h}else{i=function(f){return f==h}}if(h!=g.selectedValue){e(g.items,function(k,f){if(i(k.value)){j=1;g.selectByIndex(f);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(this.id).selectedIndex=f+1;this.selectedValue=this.items[f]?this.items[f].value:null},add:function(j,g,f){var i,h=this;f=f||{};f.value=g;if(h.isRendered()){c.add(c.get(this.id),"option",f,j)}i={title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var g,f=this;g=c.createHTML("option",{value:""},"-- "+f.settings.title+" --");e(f.items,function(h){g+=c.createHTML("option",{value:h.value},h.title)});g=c.createHTML("select",{id:f.id,"class":"mceNativeListBox"},g);return g},postRender:function(){var g=this,h;g.rendered=true;function f(j){var i=g.items[j.target.selectedIndex-1];if(i&&(i=i.value)){g.onChange.dispatch(g,i);if(g.settings.onselect){g.settings.onselect(i)}}}b.add(g.id,"change",f);b.add(g.id,"keydown",function(j){var i;b.remove(g.id,"change",h);i=b.add(g.id,"blur",function(){b.add(g.id,"change",f);b.remove(g.id,"blur",i)});if(j.keyCode==13||j.keyCode==32){f(j);return b.cancel(j)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(f,e){this.parent(f,e);this.onRenderMenu=new c.util.Dispatcher(this);e.menu_container=e.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(f.hideMenu,f);f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(f,e){this.parent(f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,"class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}i+="<td>"+b.createHTML("a",{id:f.id+"_action",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]});i+="<td>"+b.createHTML("a",{id:f.id+"_open",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";return b.createHTML("table",{id:f.id,"class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return false;",title:g.title},i)},postRender:function(){var e=this,f=e.settings;if(f.onclick){a.add(e.id+"_action","click",function(){if(!e.isDisabled()){f.onclick(e.value)}})}a.add(e.id+"_open","click",e.showMenu,e);a.add(e.id+"_open","focus",function(){e._focused=1});a.add(e.id+"_open","blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open")}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(h,g){var f=this;f.parent(h,g);f.settings=g=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},f.settings);f.onShowMenu=new d.util.Dispatcher(f);f.onHideMenu=new d.util.Dispatcher(f);f.value=g.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.isMenuVisible=1},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.onHideMenu.dispatch(f);f.isMenuVisible=0},renderMenu:function(){var k=this,f,j=0,l=k.settings,p,h,o,g;g=c.add(l.menu_container,"div",{id:k.id+"_menu","class":l.menu_class+" "+l["class"],style:"position:absolute;left:0;top:-1000px;"});f=c.add(g,"div",{"class":l["class"]+" mceSplitButtonMenu"});c.add(f,"span",{"class":"mceMenuLine"});p=c.add(f,"table",{"class":"mceColorSplitMenu"});h=c.add(p,"tbody");j=0;e(b(l.colors,"array")?l.colors:l.colors.split(","),function(i){i=i.replace(/^#/,"");if(!j--){o=c.add(h,"tr");j=l.grid_width-1}p=c.add(o,"td");p=c.add(p,"a",{href:"javascript:;",style:{backgroundColor:"#"+i},_mce_color:"#"+i})});if(l.more_colors_func){p=c.add(h,"tr");p=c.add(p,"td",{colspan:l.grid_width,"class":"mceMoreColors"});p=c.add(p,"a",{id:k.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},l.more_colors_title);a.add(p,"click",function(i){l.more_colors_func.call(l.more_colors_scope||this);return a.cancel(i)})}c.addClass(f,"mceColorSplitMenu");a.add(k.id+"_menu","click",function(i){var m;i=i.target;if(i.nodeName=="A"&&(m=i.getAttribute("_mce_color"))){k.setColor(m)}return a.cancel(i)});return g},setColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g;f.hideMenu();f.settings.onselect(g)},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);tinymce.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var l=this,e="",g,j,b=tinymce.DOM,m=l.settings,d,a,f,k;k=l.controls;for(d=0;d<k.length;d++){j=k[d];a=k[d-1];f=k[d+1];if(d===0){g="mceToolbarStart";if(j.Button){g+=" mceToolbarStartButton"}else{if(j.SplitButton){g+=" mceToolbarStartSplitButton"}else{if(j.ListBox){g+=" mceToolbarStartListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,"<!-- IE -->"))}}if(b.stdMode){e+='<td style="position: relative">'+j.renderHTML()+"</td>"}else{e+="<td>"+j.renderHTML()+"</td>"}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,"<!-- IE -->"))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,"<!-- IE -->"));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},"<tbody><tr>"+e+"</tr></tbody>")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(e){var d=b.settings;if(d&&d.language){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);if(j.adapter){j.adapter.patchEditor(m)}return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(m){var n=m.DOM,j=m.dom.Event,f=m.extend,k=m.util.Dispatcher,i=m.each,a=m.isGecko,b=m.isIE,e=m.isWebKit,d=m.is,h=m.ThemeManager,c=m.PluginManager,o=m.inArray,l=m.grep,g=m.explode;m.create("tinymce.Editor",{Editor:function(r,q){var p=this;p.id=p.editorId=r;p.execCommands={};p.queryStateCommands={};p.queryValueCommands={};p.isNotDirty=false;p.plugins={};i(["onPreInit","onBeforeRenderUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState"],function(s){p[s]=new k(p)});p.settings=q=f({id:r,language:"en",docs_language:"en",theme:"simple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:m.documentBaseURL,add_form_submit_trigger:1,submit_patch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_host:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_focus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_undo_redo_restore_selection:1,custom_undo_redo:1,doctype:m.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p,-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_newlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,inline_styles:1,convert_fonts_to_spans:true},q);p.documentBaseURI=new m.util.URI(q.document_base_url||m.documentBaseURL,{base_uri:tinyMCE.baseURI});p.baseURI=m.baseURI;p.execCallback("setup",p)},render:function(r){var u=this,v=u.settings,x=u.id,p=m.ScriptLoader;if(!j.domLoaded){j.add(document,"init",function(){u.render()});return}tinyMCE.settings=v;if(!u.getElement()){return}if(m.isIDevice){return}if(!/TEXTAREA|INPUT/i.test(u.getElement().nodeName)&&v.hidden_input&&n.getParent(x,"form")){n.insertAfter(n.create("input",{type:"hidden",name:x}),x)}if(m.WindowManager){u.windowManager=new m.WindowManager(u)}if(v.encoding=="xml"){u.onGetContent.add(function(s,t){if(t.save){t.content=n.encode(t.content)}})}if(v.add_form_submit_trigger){u.onSubmit.addToTop(function(){if(u.initialized){u.save();u.isNotDirty=1}})}if(v.add_unload_trigger){u._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(u.initialized&&!u.destroyed&&!u.isHidden()){u.save({format:"raw",no_events:true})}})}m.addUnload(u.destroy,u);if(v.submit_patch){u.onBeforeRenderUI.add(function(){var s=u.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){u.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){m.triggerSave();u.isNotDirty=1;return u.formElement._mceOldSubmit(u.formElement)}}s=null})}function q(){if(v.language){p.add(m.baseURL+"/langs/"+v.language+".js")}if(v.theme&&v.theme.charAt(0)!="-"&&!h.urls[v.theme]){h.load(v.theme,"themes/"+v.theme+"/editor_template"+m.suffix+".js")}i(g(v.plugins),function(s){if(s&&s.charAt(0)!="-"&&!c.urls[s]){if(s=="safari"){return}c.load(s,"plugins/"+s+"/editor_plugin"+m.suffix+".js")}});p.loadQueue(function(){if(!u.removed){u.init()}})}q()},init:function(){var r,E=this,F=E.settings,B,y,A=E.getElement(),q,p,C,x,z,D;m.add(E);if(F.theme){F.theme=F.theme.replace(/-/,"");q=h.get(F.theme);E.theme=new q();if(E.theme.init&&F.init_theme){E.theme.init(E,h.urls[F.theme]||m.documentBaseURL.replace(/\/$/,""))}}i(g(F.plugins.replace(/\-/g,"")),function(G){var H=c.get(G),t=c.urls[G]||m.documentBaseURL.replace(/\/$/,""),s;if(H){s=new H(E,t);E.plugins[G]=s;if(s.init){s.init(E,t)}}});if(F.popup_css!==false){if(F.popup_css){F.popup_css=E.documentBaseURI.toAbsolute(F.popup_css)}else{F.popup_css=E.baseURI.toAbsolute("themes/"+F.theme+"/skins/"+F.skin+"/dialog.css")}}if(F.popup_css_add){F.popup_css+=","+E.documentBaseURI.toAbsolute(F.popup_css_add)}E.controlManager=new m.ControlManager(E);if(F.custom_undo_redo){E.onBeforeExecCommand.add(function(t,G,u,H,s){if(G!="Undo"&&G!="Redo"&&G!="mceRepaint"&&(!s||!s.skip_undo)){if(!E.undoManager.hasUndo()){E.undoManager.add()}}});E.onExecCommand.add(function(t,G,u,H,s){if(G!="Undo"&&G!="Redo"&&G!="mceRepaint"&&(!s||!s.skip_undo)){E.undoManager.add()}})}E.onExecCommand.add(function(s,t){if(!/^(FontName|FontSize)$/.test(t)){E.nodeChanged()}});if(a){function v(s,t){if(!t||!t.initial){E.execCommand("mceRepaint")}}E.onUndo.add(v);E.onRedo.add(v);E.onSetContent.add(v)}E.onBeforeRenderUI.dispatch(E,E.controlManager);if(F.render_ui){B=F.width||A.style.width||A.offsetWidth;y=F.height||A.style.height||A.offsetHeight;E.orgDisplay=A.style.display;D=/^[0-9\.]+(|px)$/i;if(D.test(""+B)){B=Math.max(parseInt(B)+(q.deltaWidth||0),100)}if(D.test(""+y)){y=Math.max(parseInt(y)+(q.deltaHeight||0),100)}q=E.theme.renderUI({targetNode:A,width:B,height:y,deltaWidth:F.delta_width,deltaHeight:F.delta_height});E.editorContainer=q.editorContainer}if(document.domain&&location.hostname!=document.domain){m.relaxedDomain=document.domain}n.setStyles(q.sizeContainer||q.editorContainer,{width:B,height:y});y=(q.iframeHeight||y)+(typeof(y)=="number"?(q.deltaHeight||0):"");if(y<100){y=100}E.iframeHTML=F.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(F.document_base_url!=m.documentBaseURL){E.iframeHTML+='<base href="'+E.documentBaseURI.getURI()+'" />'}E.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';if(m.relaxedDomain){E.iframeHTML+='<script type="text/javascript">document.domain = "'+m.relaxedDomain+'";<\/script>'}x=F.body_id||"tinymce";if(x.indexOf("=")!=-1){x=E.getParam("body_id","","hash");x=x[E.id]||x}z=F.body_class||"";if(z.indexOf("=")!=-1){z=E.getParam("body_class","","hash");z=z[E.id]||""}E.iframeHTML+='</head><body id="'+x+'" class="mceContentBody '+z+'"></body></html>';if(m.relaxedDomain){if(b||(m.isOpera&&parseFloat(opera.version())>=9.5)){C='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+E.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'}else{if(m.isOpera){C='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()'}}}r=n.add(q.iframeContainer,"iframe",{id:E.id+"_ifr",src:C||'javascript:""',frameBorder:"0",style:{width:"100%",height:y}});E.contentAreaContainer=q.iframeContainer;n.get(q.editorContainer).style.display=E.orgDisplay;n.get(E.id).style.display="none";if(!b||!m.relaxedDomain){E.setupIframe()}A=r=q=null},setupIframe:function(){var z=this,A=z.settings,r=n.get(z.id),u=z.getDoc(),q,x;if(!b||!m.relaxedDomain){u.open();u.write(z.iframeHTML);u.close()}if(!b){try{if(!A.readonly){u.designMode="On"}}catch(v){}}if(b){x=z.getBody();n.hide(x);if(!A.readonly){x.contentEditable=true}n.show(x)}z.dom=new m.dom.DOMUtils(z.getDoc(),{keep_values:true,url_converter:z.convertURL,url_converter_scope:z,hex_colors:A.force_hex_style_colors,class_filter:A.class_filter,update_styles:1,fix_ie_paragraphs:1,valid_styles:A.valid_styles});z.schema=new m.dom.Schema();z.serializer=new m.dom.Serializer(f(A,{valid_elements:A.verify_html===false?"*[*]":A.valid_elements,dom:z.dom,schema:z.schema}));z.selection=new m.dom.Selection(z.dom,z.getWin(),z.serializer);z.formatter=new m.Formatter(this);z.formatter.register({alignleft:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"}},{selector:"img,table",styles:{"float":"left"}}],aligncenter:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"}},{selector:"img",styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"}},{selector:"img,table",styles:{"float":"right"}}],alignfull:[{selector:"p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"}}],bold:[{inline:"strong"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b"}],italic:[{inline:"em"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"u"}],forecolor:{inline:"span",styles:{color:"%value"}},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"}},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});i("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(s){z.formatter.register(s,{block:s,remove:"all"})});z.formatter.register(z.settings.formats);z.undoManager=new m.UndoManager(z);z.undoManager.onAdd.add(function(t,s){if(!s.initial){return z.onChange.dispatch(z,s,t)}});z.undoManager.onUndo.add(function(t,s){return z.onUndo.dispatch(z,s,t)});z.undoManager.onRedo.add(function(t,s){return z.onRedo.dispatch(z,s,t)});z.forceBlocks=new m.ForceBlocks(z,{forced_root_block:A.forced_root_block});z.editorCommands=new m.EditorCommands(z);z.serializer.onPreProcess.add(function(s,t){return z.onPreProcess.dispatch(z,t,s)});z.serializer.onPostProcess.add(function(s,t){return z.onPostProcess.dispatch(z,t,s)});z.onPreInit.dispatch(z);if(!A.gecko_spellcheck){z.getBody().spellcheck=0}if(!A.readonly){z._addEvents()}z.controlManager.onPostRender.dispatch(z,z.controlManager);z.onPostRender.dispatch(z);if(A.directionality){z.getBody().dir=A.directionality}if(A.nowrap){z.getBody().style.whiteSpace="nowrap"}if(A.custom_elements){function y(s,t){i(g(A.custom_elements),function(B){var C;if(B.indexOf("~")===0){B=B.substring(1);C="span"}else{C="div"}t.content=t.content.replace(new RegExp("<("+B+")([^>]*)>","g"),"<"+C+' _mce_name="$1"$2>');t.content=t.content.replace(new RegExp("</("+B+")>","g"),"</"+C+">")})}z.onBeforeSetContent.add(y);z.onPostProcess.add(function(s,t){if(t.set){y(s,t)}})}if(A.handle_node_change_callback){z.onNodeChange.add(function(t,s,B){z.execCallback("handle_node_change_callback",z.id,B,-1,-1,true,z.selection.isCollapsed())})}if(A.save_callback){z.onSaveContent.add(function(s,B){var t=z.execCallback("save_callback",z.id,B.content,z.getBody());if(t){B.content=t}})}if(A.onchange_callback){z.onChange.add(function(t,s){z.execCallback("onchange_callback",z,s)})}if(A.convert_newlines_to_brs){z.onBeforeSetContent.add(function(s,t){if(t.initial){t.content=t.content.replace(/\r?\n/g,"<br />")}})}if(A.fix_nesting&&b){z.onBeforeSetContent.add(function(s,t){t.content=z._fixNesting(t.content)})}if(A.preformatted){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^\s*<pre.*?>/,"");t.content=t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content='<pre class="mceItemHidden">'+t.content+"</pre>"}})}if(A.verify_css_classes){z.serializer.attribValueFilter=function(D,B){var C,t;if(D=="class"){if(!z.classesRE){t=z.dom.getClasses();if(t.length>0){C="";i(t,function(s){C+=(C?"|":"")+s["class"]});z.classesRE=new RegExp("("+C+")","gi")}}return !z.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B)||z.classesRE.test(B)?B:""}return B}}if(A.cleanup_callback){z.onBeforeSetContent.add(function(s,t){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)});z.onPreProcess.add(function(s,t){if(t.set){z.execCallback("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){z.execCallback("cleanup_callback","get_from_editor_dom",t.node,t)}});z.onPostProcess.add(function(s,t){if(t.set){t.content=z.execCallback("cleanup_callback","insert_to_editor",t.content,t)}if(t.get){t.content=z.execCallback("cleanup_callback","get_from_editor",t.content,t)}})}if(A.save_callback){z.onGetContent.add(function(s,t){if(t.save){t.content=z.execCallback("save_callback",z.id,t.content,z.getBody())}})}if(A.handle_event_callback){z.onEvent.add(function(s,t,B){if(z.execCallback("handle_event_callback",t,s,B)===false){j.cancel(t)}})}z.onSetContent.add(function(){z.addVisual(z.getBody())});if(A.padd_empty_editor){z.onPostProcess.add(function(s,t){t.content=t.content.replace(/^(<p[^>]*>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function p(s,t){i(s.dom.select("a"),function(C){var B=C.parentNode;if(s.dom.isBlock(B)&&B.lastChild===C){s.dom.add(B,"br",{_mce_bogus:1})}})}z.onExecCommand.add(function(s,t){if(t==="CreateLink"){p(s)}});z.onSetContent.add(z.selection.onSetContent.add(p));if(!A.readonly){try{u.designMode="Off";u.designMode="On"}catch(v){}}}setTimeout(function(){if(z.removed){return}z.load({initial:true,format:(A.cleanup_on_startup?"html":"raw")});z.startContent=z.getContent({format:"raw"});z.initialized=true;z.onInit.dispatch(z);z.execCallback("setupcontent_callback",z.id,z.getBody(),z.getDoc());z.execCallback("init_instance_callback",z);z.focus(true);z.nodeChanged({initial:1});if(A.content_css){m.each(g(A.content_css),function(s){z.dom.loadCSS(z.documentBaseURI.toAbsolute(s))})}if(A.auto_focus){setTimeout(function(){var s=m.get(A.auto_focus);s.selection.select(s.getBody(),1);s.selection.collapse(1);s.getWin().focus()},100)}},1);r=null},focus:function(s){var x,q=this,v=q.settings.content_editable,r,p,u=q.getDoc();if(!s){r=q.selection.getRng();if(r.item){p=r.item(0)}if(!v){q.getWin().focus()}if(p&&p.ownerDocument==u){r=u.body.createControlRange();r.addElement(p);r.select()}}if(m.activeEditor!=q){if((x=m.activeEditor)!=null){x.onDeactivate.dispatch(x,q)}q.onActivate.dispatch(q,x)}m._setActive(q)},execCallback:function(u){var p=this,r=p.settings[u],q;if(!r){return}if(p.callbackLookup&&(q=p.callbackLookup[u])){r=q.func;q=q.scope}if(d(r,"string")){q=r.replace(/\.\w+$/,"");q=q?m.resolve(q):0;r=m.resolve(r);p.callbackLookup=p.callbackLookup||{};p.callbackLookup[u]={func:r,scope:q}}return r.apply(q||p,Array.prototype.slice.call(arguments,1))},translate:function(p){var r=this.settings.language||"en",q=m.i18n;if(!p){return""}return q[r+"."+p]||p.replace(/{\#([^}]+)\}/g,function(t,s){return q[r+"."+s]||"{#"+s+"}"})},getLang:function(q,p){return m.i18n[(this.settings.language||"en")+"."+q]||(d(p)?p:"{#"+q+"}")},getParam:function(u,r,p){var s=m.trim,q=d(this.settings[u])?this.settings[u]:r,t;if(p==="hash"){t={};if(d(q,"string")){i(q.indexOf("=")>0?q.split(/[;,](?![^=;,]*(?:[;,]|$))/):q.split(","),function(x){x=x.split("=");if(x.length>1){t[s(x[0])]=s(x[1])}else{t[s(x[0])]=s(x)}})}else{t=q}return t}return q},nodeChanged:function(r){var p=this,q=p.selection,u=(b?q.getNode():q.getStart())||p.getBody();if(p.initialized){r=r||{};u=b&&u.ownerDocument!=p.getDoc()?p.getBody():u;r.parents=[];p.dom.getParent(u,function(s){if(s.nodeName=="BODY"){return true}r.parents.push(s)});p.onNodeChange.dispatch(p,r?r.controlManager||p.controlManager:p.controlManager,u,q.isCollapsed(),r)}},addButton:function(r,q){var p=this;p.buttons=p.buttons||{};p.buttons[r]=q},addCommand:function(r,q,p){this.execCommands[r]={func:q,scope:p||this}},addQueryStateHandler:function(r,q,p){this.queryStateCommands[r]={func:q,scope:p||this}},addQueryValueHandler:function(r,q,p){this.queryValueCommands[r]={func:q,scope:p||this}},addShortcut:function(r,u,p,s){var q=this,v;if(!q.settings.custom_shortcuts){return false}q.shortcuts=q.shortcuts||{};if(d(p,"string")){v=p;p=function(){q.execCommand(v,false,null)}}if(d(p,"object")){v=p;p=function(){q.execCommand(v[0],v[1],v[2])}}i(g(r),function(t){var x={func:p,scope:s||this,desc:u,alt:false,ctrl:false,shift:false};i(g(t,"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=true;break;default:x.charCode=y.charCodeAt(0);x.keyCode=y.toUpperCase().charCodeAt(0)}});q.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.shift?"shift":"")+","+x.keyCode]=x});return true},execCommand:function(x,v,z,p){var r=this,u=0,y,q;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(x)&&(!p||!p.skip_focus)){r.focus()}y={};r.onBeforeExecCommand.dispatch(r,x,v,z,y);if(y.terminate){return false}if(r.execCallback("execcommand_callback",r.id,r.selection.getNode(),x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(y=r.execCommands[x]){q=y.func.call(y.scope,v,z);if(q!==true){r.onExecCommand.dispatch(r,x,v,z,p);return q}}i(r.plugins,function(s){if(s.execCommand&&s.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);u=1;return false}});if(u){return true}if(r.theme&&r.theme.execCommand&&r.theme.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(m.GlobalCommands.execCommand(r,x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}if(r.editorCommands.execCommand(x,v,z)){r.onExecCommand.dispatch(r,x,v,z,p);return true}r.getDoc().execCommand(x,v,z);r.onExecCommand.dispatch(r,x,v,z,p)},queryCommandState:function(u){var q=this,v,r;if(q._isHidden()){return}if(v=q.queryStateCommands[u]){r=v.func.call(v.scope);if(r!==true){return r}}v=q.editorCommands.queryCommandState(u);if(v!==-1){return v}try{return this.getDoc().queryCommandState(u)}catch(p){}},queryCommandValue:function(v){var q=this,u,r;if(q._isHidden()){return}if(u=q.queryValueCommands[v]){r=u.func.call(u.scope);if(r!==true){return r}}u=q.editorCommands.queryCommandValue(v);if(d(u)){return u}try{return this.getDoc().queryCommandValue(v)}catch(p){}},show:function(){var p=this;n.show(p.getContainer());n.hide(p.id);p.load()},hide:function(){var p=this,q=p.getDoc();if(b&&q){q.execCommand("SelectAll")}p.save();n.hide(p.getContainer());n.setStyle(p.id,"display",p.orgDisplay)},isHidden:function(){return !n.isHidden(this.id)},setProgressState:function(p,q,r){this.onSetProgressState.dispatch(this,p,q,r);return p},load:function(s){var p=this,r=p.getElement(),q;if(r){s=s||{};s.load=true;q=p.setContent(d(r.value)?r.value:r.innerHTML,s);s.element=r;if(!s.no_events){p.onLoadContent.dispatch(p,s)}s.element=r=null;return q}},save:function(u){var p=this,s=p.getElement(),q,r;if(!s||!p.initialized){return}u=u||{};u.save=true;if(!u.no_events){p.undoManager.typing=0;p.undoManager.add()}u.element=s;q=u.content=p.getContent(u);if(!u.no_events){p.onSaveContent.dispatch(p,u)}q=u.content;if(!/TEXTAREA|INPUT/i.test(s.nodeName)){s.innerHTML=q;if(r=n.getParent(p.id,"form")){i(r.elements,function(t){if(t.name==p.id){t.value=q;return false}})}}else{s.value=q}u.element=s=null;return q},setContent:function(q,r){var p=this;r=r||{};r.format=r.format||"html";r.set=true;r.content=q;if(!r.no_events){p.onBeforeSetContent.dispatch(p,r)}if(!m.isIE&&(q.length===0||/^\s+$/.test(q))){r.content=p.dom.setHTML(p.getBody(),'<br _mce_bogus="1" />');r.format="raw"}r.content=p.dom.setHTML(p.getBody(),m.trim(r.content));if(r.format!="raw"&&p.settings.cleanup){r.getInner=true;r.content=p.dom.setHTML(p.getBody(),p.serializer.serialize(p.getBody(),r))}if(!r.no_events){p.onSetContent.dispatch(p,r)}return r.content},getContent:function(r){var p=this,q;r=r||{};r.format=r.format||"html";r.get=true;if(!r.no_events){p.onBeforeGetContent.dispatch(p,r)}if(r.format!="raw"&&p.settings.cleanup){r.getInner=true;q=p.serializer.serialize(p.getBody(),r)}else{q=p.getBody().innerHTML}q=q.replace(/^\s*|\s*$/g,"");r.content=q;if(!r.no_events){p.onGetContent.dispatch(p,r)}return r.content},isDirty:function(){var p=this;return m.trim(p.startContent)!=m.trim(p.getContent({format:"raw",no_events:1}))&&!p.isNotDirty},getContainer:function(){var p=this;if(!p.container){p.container=n.get(p.editorContainer||p.id+"_parent")}return p.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return n.get(this.settings.content_element||this.id)},getWin:function(){var p=this,q;if(!p.contentWindow){q=n.get(p.id+"_ifr");if(q){p.contentWindow=q.contentWindow}}return p.contentWindow},getDoc:function(){var q=this,p;if(!q.contentDocument){p=q.getWin();if(p){q.contentDocument=p.document}}return q.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(p,x,v){var q=this,r=q.settings;if(r.urlconverter_callback){return q.execCallback("urlconverter_callback",p,v,true,x)}if(!r.convert_urls||(v&&v.nodeName=="LINK")||p.indexOf("file:")===0){return p}if(r.relative_urls){return q.documentBaseURI.toRelative(p)}p=q.documentBaseURI.toAbsolute(p,r.remove_script_host);return p},addVisual:function(r){var p=this,q=p.settings;r=r||p.getBody();if(!d(p.hasVisual)){p.hasVisual=q.visual}i(p.dom.select("table,a",r),function(t){var s;switch(t.nodeName){case"TABLE":s=p.dom.getAttrib(t,"border");if(!s||s=="0"){if(p.hasVisual){p.dom.addClass(t,q.visual_table_class)}else{p.dom.removeClass(t,q.visual_table_class)}}return;case"A":s=p.dom.getAttrib(t,"name");if(s){if(p.hasVisual){p.dom.addClass(t,"mceItemAnchor")}else{p.dom.removeClass(t,"mceItemAnchor")}}return}});p.onVisualAid.dispatch(p,r,p.hasVisual)},remove:function(){var p=this,q=p.getContainer();p.removed=1;p.hide();p.execCallback("remove_instance_callback",p);p.onRemove.dispatch(p);p.onExecCommand.listeners=[];m.remove(p);n.remove(q)},destroy:function(q){var p=this;if(p.destroyed){return}if(!q){m.removeUnload(p.destroy);tinyMCE.onBeforeUnload.remove(p._beforeUnload);if(p.theme&&p.theme.destroy){p.theme.destroy()}p.controlManager.destroy();p.selection.destroy();p.dom.destroy();if(!p.settings.content_editable){j.clear(p.getWin());j.clear(p.getDoc())}j.clear(p.getBody());j.clear(p.formElement)}if(p.formElement){p.formElement.submit=p.formElement._mceOldSubmit;p.formElement._mceOldSubmit=null}p.contentAreaContainer=p.formElement=p.container=p.settings.content_element=p.bodyElement=p.contentDocument=p.contentWindow=null;if(p.selection){p.selection=p.selection.win=p.selection.dom=p.selection.dom.doc=null}p.destroyed=1},_addEvents:function(){var v=this,u,y=v.settings,x={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function r(t,A){var s=t.type;if(v.removed){return}if(v.onEvent.dispatch(v,t,A)!==false){v[x[t.fakeType||t.type]].dispatch(v,t,A)}}i(x,function(t,s){switch(s){case"contextmenu":if(m.isOpera){v.dom.bind(v.getBody(),"mousedown",function(A){if(A.ctrlKey){A.fakeType="contextmenu";r(A)}})}else{v.dom.bind(v.getBody(),s,r)}break;case"paste":v.dom.bind(v.getBody(),s,function(A){r(A)});break;case"submit":case"reset":v.dom.bind(v.getElement().form||n.getParent(v.id,"form"),s,r);break;default:v.dom.bind(y.content_editable?v.getBody():v.getDoc(),s,r)}});v.dom.bind(y.content_editable?v.getBody():(a?v.getDoc():v.getWin()),"focus",function(s){v.focus(true)});if(m.isGecko){v.dom.bind(v.getDoc(),"DOMNodeInserted",function(t){var s;t=t.target;if(t.nodeType===1&&t.nodeName==="IMG"&&(s=t.getAttribute("_mce_src"))){t.src=v.documentBaseURI.toAbsolute(s)}})}if(a){function p(){var B=this,D=B.getDoc(),C=B.settings;if(a&&!C.readonly){if(B._isHidden()){try{if(!C.content_editable){D.designMode="On"}}catch(A){}}try{D.execCommand("styleWithCSS",0,false)}catch(A){if(!B._isHidden()){try{D.execCommand("useCSS",0,true)}catch(A){}}}if(!C.table_inline_editing){try{D.execCommand("enableInlineTableEditing",false,false)}catch(A){}}if(!C.object_resizing){try{D.execCommand("enableObjectResizing",false,false)}catch(A){}}}}v.onBeforeExecCommand.add(p);v.onMouseDown.add(p)}if(m.isWebKit){v.onClick.add(function(s,t){t=t.target;if(t.nodeName=="IMG"||(t.nodeName=="A"&&v.dom.hasClass(t,"mceItemAnchor"))){v.selection.getSel().setBaseAndExtent(t,0,t,1)}})}v.onMouseUp.add(v.nodeChanged);v.onKeyUp.add(function(s,t){var A=t.keyCode;if((A>=33&&A<=36)||(A>=37&&A<=40)||A==13||A==45||A==46||A==8||(m.isMac&&(A==91||A==93))||t.ctrlKey){v.nodeChanged()}});v.onReset.add(function(){v.setContent(v.startContent,{format:"raw"})});if(y.custom_shortcuts){if(y.custom_undo_redo_keyboard_shortcuts){v.addShortcut("ctrl+z",v.getLang("undo_desc"),"Undo");v.addShortcut("ctrl+y",v.getLang("redo_desc"),"Redo")}v.addShortcut("ctrl+b",v.getLang("bold_desc"),"Bold");v.addShortcut("ctrl+i",v.getLang("italic_desc"),"Italic");v.addShortcut("ctrl+u",v.getLang("underline_desc"),"Underline");for(u=1;u<=6;u++){v.addShortcut("ctrl+"+u,"",["FormatBlock",false,"h"+u])}v.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);v.addShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);v.addShortcut("ctrl+9","",["FormatBlock",false,"<address>"]);function z(t){var s=null;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return s}i(v.shortcuts,function(A){if(m.isMac&&A.ctrl!=t.metaKey){return}else{if(!m.isMac&&A.ctrl!=t.ctrlKey){return}}if(A.alt!=t.altKey){return}if(A.shift!=t.shiftKey){return}if(t.keyCode==A.keyCode||(t.charCode&&t.charCode==A.charCode)){s=A;return false}});return s}v.onKeyUp.add(function(s,t){var A=z(t);if(A){return j.cancel(t)}});v.onKeyPress.add(function(s,t){var A=z(t);if(A){return j.cancel(t)}});v.onKeyDown.add(function(s,t){var A=z(t);if(A){A.func.call(A.scope);return j.cancel(t)}})}if(m.isIE){v.dom.bind(v.getDoc(),"controlselect",function(A){var t=v.resizeInfo,s;A=A.target;if(A.nodeName!=="IMG"){return}if(t){v.dom.unbind(t.node,t.ev,t.cb)}if(!v.dom.hasClass(A,"mceItemNoResize")){ev="resizeend";s=v.dom.bind(A,ev,function(C){var B;C=C.target;if(B=v.dom.getStyle(C,"width")){v.dom.setAttrib(C,"width",B.replace(/[^0-9%]+/g,""));v.dom.setStyle(C,"width","")}if(B=v.dom.getStyle(C,"height")){v.dom.setAttrib(C,"height",B.replace(/[^0-9%]+/g,""));v.dom.setStyle(C,"height","")}})}else{ev="resizestart";s=v.dom.bind(A,"resizestart",j.cancel,j)}t=v.resizeInfo={node:A,ev:ev,cb:s}});v.onKeyDown.add(function(s,t){switch(t.keyCode){case 8:if(v.selection.getRng().item){s.dom.remove(v.selection.getRng().item(0));return j.cancel(t)}}})}if(m.isOpera){v.onClick.add(function(s,t){j.prevent(t)})}if(y.custom_undo_redo){function q(){v.undoManager.typing=0;v.undoManager.add()}v.dom.bind(v.getDoc(),"focusout",function(s){if(!v.removed&&v.undoManager.typing){q()}});v.onKeyUp.add(function(s,t){if((t.keyCode>=33&&t.keyCode<=36)||(t.keyCode>=37&&t.keyCode<=40)||t.keyCode==13||t.keyCode==45||t.ctrlKey){q()}});v.onKeyDown.add(function(t,D){var s,C,B;if(b&&D.keyCode==46){s=v.selection.getRng();if(s.parentElement){C=s.parentElement();if(D.ctrlKey){s.moveEnd("word",1);s.select()}v.selection.getSel().clear();if(s.parentElement()==C){B=v.selection.getBookmark();try{C.innerHTML=C.innerHTML}catch(A){}v.selection.moveToBookmark(B)}D.preventDefault();return}}if((D.keyCode>=33&&D.keyCode<=36)||(D.keyCode>=37&&D.keyCode<=40)||D.keyCode==13||D.keyCode==45){if(v.undoManager.typing){q()}return}if(!v.undoManager.typing){v.undoManager.add();v.undoManager.typing=1}});v.onMouseDown.add(function(){if(v.undoManager.typing){q()}})}},_isHidden:function(){var p;if(!a){return 0}p=this.selection.getSel();return(!p||!p.rangeCount||p.rangeCount==0)},_fixNesting:function(q){var r=[],p;q=q.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(t,s,v){var u;if(s==="/"){if(!r.length){return""}if(v!==r[r.length-1].tag){for(p=r.length-1;p>=0;p--){if(r[p].tag===v){r[p].close=1;break}}return""}else{r.pop();if(r.length&&r[r.length-1].close){t=t+"</"+r[r.length-1].tag+">";r.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(v)){return t}if(/\/>$/.test(t)){return t}r.push({tag:v})}return t});for(p=r.length-1;p>=0;p--){q+="</"+r[p].tag+">"}return q}})})(tinymce);(function(c){var d=c.each,e,a=true,b=false;c.EditorCommands=function(n){var l=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,o;function q(y,x,v){var u;y=y.toLowerCase();if(u=j.exec[y]){u(y,x,v);return a}return b}function m(v){var u;v=v.toLowerCase();if(u=j.state[v]){return u(v)}return -1}function h(v){var u;v=v.toLowerCase();if(u=j.value[v]){return u(v)}return b}function t(u,v){v=v||"exec";d(u,function(y,x){d(x.toLowerCase().split(","),function(z){j[v][z]=y})})}c.extend(this,{execCommand:q,queryCommandState:m,queryCommandValue:h,addCommands:t});function f(x,v,u){if(v===e){v=b}if(u===e){u=null}return n.getDoc().execCommand(x,v,u)}function s(u){return n.formatter.match(u)}function r(u,v){n.formatter.toggle(u,v?{value:v}:e)}function i(u){o=p.getBookmark(u)}function g(){p.moveToBookmark(o)}t({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(y){var x=n.getDoc(),u;try{f(y)}catch(v){u=a}if(u||!x.queryCommandSupported(y)){if(c.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(z){if(z){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(u){if(p.isCollapsed()){p.select(p.getNode())}f(u);p.collapse(b)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(u){var v=u.substring(7);d("left,center,right,full".split(","),function(x){if(v!=x){n.formatter.remove("align"+x)}});r("align"+v)},"InsertUnorderedList,InsertOrderedList":function(x){var u,v;f(x);u=l.getParent(p.getNode(),"ol,ul");if(u){v=u.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(v.nodeName)){i();l.split(v,u);g()}}},"Bold,Italic,Underline,Strikethrough":function(u){r(u)},"ForeColor,HiliteColor,FontName":function(x,v,u){r(x,u)},FontSize:function(y,x,v){var u,z;if(v>=1&&v<=7){z=c.explode(k.font_size_style_values);u=c.explode(k.font_size_classes);if(u){v=u[v-1]||v}else{v=z[v-1]||v}}r(y,v)},RemoveFormat:function(u){n.formatter.remove(u)},mceBlockQuote:function(u){r("blockquote")},FormatBlock:function(x,v,u){return r(u||"p")},mceCleanup:function(){var u=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(u)},mceRemoveNode:function(y,x,v){var u=v||p.getNode();if(u!=n.getBody()){i();n.dom.remove(u,a);g()}},mceSelectNodeDepth:function(y,x,v){var u=0;l.getParent(p.getNode(),function(z){if(z.nodeType==1&&u++==v){p.select(z);return b}},n.getBody())},mceSelectNode:function(x,v,u){p.select(u)},mceInsertContent:function(x,v,u){p.setContent(u)},mceInsertRawHTML:function(x,v,u){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,u))},mceSetContent:function(x,v,u){n.setContent(u)},"Indent,Outdent":function(y){var v,u,x;v=k.indentation;u=/[a-z%]+$/i.exec(v);v=parseInt(v);if(!m("InsertUnorderedList")&&!m("InsertOrderedList")){d(p.getSelectedBlocks(),function(z){if(y=="outdent"){x=Math.max(0,parseInt(z.style.paddingLeft||0)-v);l.setStyle(z,"paddingLeft",x?x+u:"")}else{l.setStyle(z,"paddingLeft",(parseInt(z.style.paddingLeft||0)+v)+u)}})}else{f(y)}},mceRepaint:function(){var v;if(c.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(u){}}},mceToggleFormat:function(x,v,u){n.formatter.toggle(u)},InsertHorizontalRule:function(){p.setContent("<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(x,v,u){p.setContent(u.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(y,x,v){var u=l.getParent(p.getNode(),"a");if(c.is(v,"string")){v={href:v}}if(!u){f("CreateLink",b,"javascript:mctmp(0);");d(l.select("a[href=javascript:mctmp(0);]"),function(z){l.setAttribs(z,v)})}else{if(v.href){l.setAttribs(u,v)}else{n.dom.remove(u,a)}}},selectAll:function(){var v=l.getRoot(),u=l.createRng();u.setStart(v,0);u.setEnd(v,v.childNodes.length);n.selection.setRng(u)}});t({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(u){return s("align"+u.substring(7))},"Bold,Italic,Underline,Strikethrough":function(u){return s(u)},mceBlockQuote:function(){return s("blockquote")},Outdent:function(){var u;if(k.inline_styles){if((u=l.getParent(p.getStart(),l.isBlock))&&parseInt(u.style.paddingLeft)>0){return a}if((u=l.getParent(p.getEnd(),l.isBlock))&&parseInt(u.style.paddingLeft)>0){return a}}return m("InsertUnorderedList")||m("InsertOrderedList")||(!k.inline_styles&&!!l.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(u){return l.getParent(p.getNode(),u=="insertunorderedlist"?"UL":"OL")}},"state");t({"FontSize,FontName":function(x){var v=0,u;if(u=l.getParent(p.getNode(),"span")){if(x=="fontsize"){v=u.style.fontSize}else{v=u.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return v}},"value");if(k.custom_undo_redo){t({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(e){var c,d=0,g=[];function f(){return b.trim(e.getContent({format:"raw",no_events:1}))}return c={typing:0,onAdd:new a(c),onUndo:new a(c),onRedo:new a(c),add:function(l){var h,j=e.settings,k;l=l||{};l.content=f();k=g[d];if(k&&k.content==l.content){if(d>0||g.length==1){return null}}if(j.custom_undo_redo_levels){if(g.length>j.custom_undo_redo_levels){for(h=0;h<g.length-1;h++){g[h]=g[h+1]}g.length--;d=g.length}}l.bookmark=e.selection.getBookmark(2,true);if(d<g.length-1){if(d==0){g=[]}else{g.length=d+1}}g.push(l);d=g.length-1;c.onAdd.dispatch(c,l);e.isNotDirty=0;return l},undo:function(){var j,h;if(c.typing){c.add();c.typing=0}if(d>0){j=g[--d];e.setContent(j.content,{format:"raw"});e.selection.moveToBookmark(j.bookmark);c.onUndo.dispatch(c,j)}return j},redo:function(){var h;if(d<g.length-1){h=g[++d];e.setContent(h.content,{format:"raw"});e.selection.moveToBookmark(h.bookmark);c.onRedo.dispatch(c,h)}return h},clear:function(){g=[];d=c.typing=0},hasUndo:function(){return d>0||c.typing},hasRedo:function(){return d<g.length-1}}}})(tinymce);(function(m){var k=m.dom.Event,c=m.isIE,a=m.isGecko,b=m.isOpera,j=m.each,i=m.extend,d=true,h=false;function l(p){var q,o,n;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(p.nodeName)){if(q){o=p.cloneNode(false);o.appendChild(q);q=o}else{q=n=p.cloneNode(false)}q.removeAttribute("id")}}while(p=p.parentNode);if(q){return{wrapper:q,inner:n}}}function g(o,p){var n=p.ownerDocument.createRange();n.setStart(o.endContainer,o.endOffset);n.setEndAfter(p);return n.cloneContents().textContent.length==0}function f(o){o=o.innerHTML;o=o.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi,"-");o=o.replace(/<[^>]+>/g,"");return o.replace(/[ \u00a0\t\r\n]+/g,"")==""}function e(p,r,n){var o,q;if(f(n)){o=r.getParent(n,"ul,ol");if(!r.getParent(o.parentNode,"ul,ol")){r.split(o,n);q=r.create("p",0,'<br _mce_bogus="1" />');r.replace(q,n);p.select(q,1)}return h}return d}m.create("tinymce.ForceBlocks",{ForceBlocks:function(o){var p=this,q=o.settings,r;p.editor=o;p.dom=o.dom;r=(q.forced_root_block||"p").toLowerCase();q.element=r.toUpperCase();o.onPreInit.add(p.setup,p);p.reOpera=new RegExp("(\\u00a0| | )</"+r+">","gi");p.rePadd=new RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( )([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,r),"gi");p.reNbsp2BR1=new RegExp("<p( )([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,r),"gi");p.reNbsp2BR2=new RegExp("<%p()([^>]+)>( | )<\\/%p>|<%p>( | )<\\/%p>".replace(/%p/g,r),"gi");p.reBR2Nbsp=new RegExp("<p( )([^>]+)>\\s*<br \\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,r),"gi");function n(s,t){if(b){t.content=t.content.replace(p.reOpera,"</"+r+">")}t.content=t.content.replace(p.rePadd,"<"+r+"$1$2$3$4$5$6>\u00a0</"+r+">");if(!c&&!b&&t.set){t.content=t.content.replace(p.reNbsp2BR1,"<"+r+"$1$2><br /></"+r+">");t.content=t.content.replace(p.reNbsp2BR2,"<"+r+"$1$2><br /></"+r+">")}else{t.content=t.content.replace(p.reBR2Nbsp,"<"+r+"$1$2>\u00a0</"+r+">")}}o.onBeforeSetContent.add(n);o.onPostProcess.add(n);if(q.forced_root_block){o.onInit.add(p.forceRoots,p);o.onSetContent.add(p.forceRoots,p);o.onBeforeGetContent.add(p.forceRoots,p)}},setup:function(){var o=this,n=o.editor,q=n.settings,u=n.dom,p=n.selection;if(q.forced_root_block){n.onBeforeExecCommand.add(o.forceRoots,o);n.onKeyUp.add(o.forceRoots,o);n.onPreProcess.add(o.forceRoots,o)}if(q.force_br_newlines){if(c){n.onKeyPress.add(function(s,t){var v;if(t.keyCode==13&&p.getNode().nodeName!="LI"){p.setContent('<br id="__" /> ',{format:"raw"});v=u.get("__");v.removeAttribute("id");p.select(v);p.collapse();return k.cancel(t)}})}}if(q.force_p_newlines){if(!c){n.onKeyPress.add(function(s,t){if(t.keyCode==13&&!t.shiftKey&&!o.insertPara(t)){k.cancel(t)}})}else{m.addUnload(function(){o._previousFormats=0});n.onKeyPress.add(function(s,t){o._previousFormats=0;if(t.keyCode==13&&!t.shiftKey&&s.selection.isCollapsed()&&q.keep_styles){o._previousFormats=l(s.selection.getStart())}});n.onKeyUp.add(function(t,x){if(x.keyCode==13&&!x.shiftKey){var v=t.selection.getStart(),s=o._previousFormats;if(!v.hasChildNodes()){v=u.getParent(v,u.isBlock);if(v){v.innerHTML="";if(o._previousFormats){v.appendChild(s.wrapper);s.inner.innerHTML="\uFEFF"}else{v.innerHTML="\uFEFF"}p.select(v,1);t.getDoc().execCommand("Delete",false,null)}}}})}if(a){n.onKeyDown.add(function(s,t){if((t.keyCode==8||t.keyCode==46)&&!t.shiftKey){o.backspaceDelete(t,t.keyCode==8)}})}}if(m.isWebKit){function r(t){var s=p.getRng(),v,z=u.create("div",null," "),y,x=u.getViewPort(t.getWin()).h;s.insertNode(v=u.create("br"));s.setStartAfter(v);s.setEndAfter(v);p.setRng(s);if(p.getSel().focusNode==v.previousSibling){p.select(u.insertAfter(u.doc.createTextNode("\u00a0"),v));p.collapse(d)}u.insertAfter(z,v);y=u.getPos(z).y;u.remove(z);if(y>x){t.getWin().scrollTo(0,y)}}n.onKeyPress.add(function(s,t){if(t.keyCode==13&&(t.shiftKey||(q.force_br_newlines&&!u.getParent(p.getNode(),"h1,h2,h3,h4,h5,h6,ol,ul")))){r(s);k.cancel(t)}})}n.onPreProcess.add(function(s,t){j(u.select("p,h1,h2,h3,h4,h5,h6,div",t.node),function(v){if(f(v)){j(u.select("span,em,strong,b,i",t.node),function(x){if(!x.hasChildNodes()){x.appendChild(s.getDoc().createTextNode("\u00a0"));return h}})}})});if(c){if(q.element!="P"){n.onKeyPress.add(function(s,t){o.lastElm=p.getNode().nodeName});n.onKeyUp.add(function(t,v){var y,x=p.getNode(),s=t.getBody();if(s.childNodes.length===1&&x.nodeName=="P"){x=u.rename(x,q.element);p.select(x);p.collapse();t.nodeChanged()}else{if(v.keyCode==13&&!v.shiftKey&&o.lastElm!="P"){y=u.getParent(x,"p");if(y){u.rename(y,q.element);t.nodeChanged()}}}})}}},find:function(v,q,r){var p=this.editor,o=p.getDoc().createTreeWalker(v,4,null,h),u=-1;while(v=o.nextNode()){u++;if(q==0&&v==r){return u}if(q==1&&u==r){return v}}return -1},forceRoots:function(x,I){var z=this,x=z.editor,M=x.getBody(),J=x.getDoc(),P=x.selection,A=P.getSel(),B=P.getRng(),N=-2,v,G,o,p,K=-16777215;var L,q,O,F,C,u=M.childNodes,E,D,y;for(E=u.length-1;E>=0;E--){L=u[E];if(L.nodeType===1&&L.getAttribute("_mce_type")){q=null;continue}if(L.nodeType===3||(!z.dom.isBlock(L)&&L.nodeType!==8&&!/^(script|mce:script|style|mce:style)$/i.test(L.nodeName))){if(!q){if(L.nodeType!=3||/[^\s]/g.test(L.nodeValue)){if(N==-2&&B){if(!c){if(B.startContainer.nodeType==1&&(D=B.startContainer.childNodes[B.startOffset])&&D.nodeType==1){y=D.getAttribute("id");D.setAttribute("id","__mce")}else{if(x.dom.getParent(B.startContainer,function(n){return n===M})){G=B.startOffset;o=B.endOffset;N=z.find(M,0,B.startContainer);v=z.find(M,0,B.endContainer)}}}else{if(B.item){p=J.body.createTextRange();p.moveToElementText(B.item(0));B=p}p=J.body.createTextRange();p.moveToElementText(M);p.collapse(1);O=p.move("character",K)*-1;p=B.duplicate();p.collapse(1);F=p.move("character",K)*-1;p=B.duplicate();p.collapse(0);C=(p.move("character",K)*-1)-F;N=F-O;v=C}}q=x.dom.create(x.settings.forced_root_block);L.parentNode.replaceChild(q,L);q.appendChild(L)}}else{if(q.hasChildNodes()){q.insertBefore(L,q.firstChild)}else{q.appendChild(L)}}}else{q=null}}if(N!=-2){if(!c){q=M.getElementsByTagName(x.settings.element)[0];B=J.createRange();if(N!=-1){B.setStart(z.find(M,1,N),G)}else{B.setStart(q,0)}if(v!=-1){B.setEnd(z.find(M,1,v),o)}else{B.setEnd(q,0)}if(A){A.removeAllRanges();A.addRange(B)}}else{try{B=A.createRange();B.moveToElementText(M);B.collapse(1);B.moveStart("character",N);B.moveEnd("character",v);B.select()}catch(H){}}}else{if(!c&&(D=x.dom.get("__mce"))){if(y){D.setAttribute("id",y)}else{D.removeAttribute("id")}B=J.createRange();B.setStartBefore(D);B.setEndBefore(D);P.setRng(B)}}},getParentBlock:function(p){var o=this.dom;return o.getParent(p,o.isBlock)},insertPara:function(S){var G=this,x=G.editor,O=x.dom,T=x.getDoc(),X=x.settings,H=x.selection.getSel(),I=H.getRangeAt(0),W=T.body;var L,M,J,Q,P,u,p,v,A,o,E,V,q,z,K,N=O.getViewPort(x.getWin()),D,F,C;L=T.createRange();L.setStart(H.anchorNode,H.anchorOffset);L.collapse(d);M=T.createRange();M.setStart(H.focusNode,H.focusOffset);M.collapse(d);J=L.compareBoundaryPoints(L.START_TO_END,M)<0;Q=J?H.anchorNode:H.focusNode;P=J?H.anchorOffset:H.focusOffset;u=J?H.focusNode:H.anchorNode;p=J?H.focusOffset:H.anchorOffset;if(Q===u&&/^(TD|TH)$/.test(Q.nodeName)){if(Q.firstChild.nodeName=="BR"){O.remove(Q.firstChild)}if(Q.childNodes.length==0){x.dom.add(Q,X.element,null,"<br />");V=x.dom.add(Q,X.element,null,"<br />")}else{K=Q.innerHTML;Q.innerHTML="";x.dom.add(Q,X.element,null,K);V=x.dom.add(Q,X.element,null,"<br />")}I=T.createRange();I.selectNodeContents(V);I.collapse(1);x.selection.setRng(I);return h}if(Q==W&&u==W&&W.firstChild&&x.dom.isBlock(W.firstChild)){Q=u=Q.firstChild;P=p=0;L=T.createRange();L.setStart(Q,0);M=T.createRange();M.setStart(u,0)}Q=Q.nodeName=="HTML"?T.body:Q;Q=Q.nodeName=="BODY"?Q.firstChild:Q;u=u.nodeName=="HTML"?T.body:u;u=u.nodeName=="BODY"?u.firstChild:u;v=G.getParentBlock(Q);A=G.getParentBlock(u);o=v?v.nodeName:X.element;if(K=G.dom.getParent(v,"li,pre")){if(K.nodeName=="LI"){return e(x.selection,G.dom,K)}return d}if(v&&(v.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(O.getStyle(v,"position",1)))){o=X.element;v=null}if(A&&(A.nodeName=="CAPTION"||/absolute|relative|fixed/gi.test(O.getStyle(v,"position",1)))){o=X.element;A=null}if(/(TD|TABLE|TH|CAPTION)/.test(o)||(v&&o=="DIV"&&/left|right/gi.test(O.getStyle(v,"float",1)))){o=X.element;v=A=null}E=(v&&v.nodeName==o)?v.cloneNode(0):x.dom.create(o);V=(A&&A.nodeName==o)?A.cloneNode(0):x.dom.create(o);V.removeAttribute("id");if(/^(H[1-6])$/.test(o)&&g(I,v)){V=x.dom.create(X.element)}K=q=Q;do{if(K==W||K.nodeType==9||G.dom.isBlock(K)||/(TD|TABLE|TH|CAPTION)/.test(K.nodeName)){break}q=K}while((K=K.previousSibling?K.previousSibling:K.parentNode));K=z=u;do{if(K==W||K.nodeType==9||G.dom.isBlock(K)||/(TD|TABLE|TH|CAPTION)/.test(K.nodeName)){break}z=K}while((K=K.nextSibling?K.nextSibling:K.parentNode));if(q.nodeName==o){L.setStart(q,0)}else{L.setStartBefore(q)}L.setEnd(Q,P);E.appendChild(L.cloneContents()||T.createTextNode(""));try{M.setEndAfter(z)}catch(R){}M.setStart(u,p);V.appendChild(M.cloneContents()||T.createTextNode(""));I=T.createRange();if(!q.previousSibling&&q.parentNode.nodeName==o){I.setStartBefore(q.parentNode)}else{if(L.startContainer.nodeName==o&&L.startOffset==0){I.setStartBefore(L.startContainer)}else{I.setStart(L.startContainer,L.startOffset)}}if(!z.nextSibling&&z.parentNode.nodeName==o){I.setEndAfter(z.parentNode)}else{I.setEnd(M.endContainer,M.endOffset)}I.deleteContents();if(b){x.getWin().scrollTo(0,N.y)}if(E.firstChild&&E.firstChild.nodeName==o){E.innerHTML=E.firstChild.innerHTML}if(V.firstChild&&V.firstChild.nodeName==o){V.innerHTML=V.firstChild.innerHTML}if(f(E)){E.innerHTML="<br />"}function U(y,s){var r=[],Z,Y,t;y.innerHTML="";if(X.keep_styles){Y=s;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(Y.nodeName)){Z=Y.cloneNode(h);O.setAttrib(Z,"id","");r.push(Z)}}while(Y=Y.parentNode)}if(r.length>0){for(t=r.length-1,Z=y;t>=0;t--){Z=Z.appendChild(r[t])}r[0].innerHTML=b?" ":"<br />";return r[0]}else{y.innerHTML=b?" ":"<br />"}}if(f(V)){C=U(V,u)}if(b&&parseFloat(opera.version())<9.5){I.insertNode(E);I.insertNode(V)}else{I.insertNode(V);I.insertNode(E)}V.normalize();E.normalize();function B(r){return T.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,h).nextNode()||r}I=T.createRange();I.selectNodeContents(a?B(C||V):C||V);I.collapse(1);H.removeAllRanges();H.addRange(I);D=x.dom.getPos(V).y;F=V.clientHeight;if(D<N.y||D+F>N.y+N.h){x.getWin().scrollTo(0,D<N.y?D:D-N.h+25)}return h},backspaceDelete:function(v,C){var D=this,u=D.editor,z=u.getBody(),s=u.dom,q,x=u.selection,p=x.getRng(),y=p.startContainer,q,A,B,o;if(!C&&p.collapsed&&y.nodeType==1&&p.startOffset==y.childNodes.length){o=new m.dom.TreeWalker(y.lastChild,y);for(q=y.lastChild;q;q=o.prev()){if(q.nodeType==3){p.setStart(q,q.nodeValue.length);p.collapse(true);x.setRng(p);return}}}if(y&&u.dom.isBlock(y)&&!/^(TD|TH)$/.test(y.nodeName)&&C){if(y.childNodes.length==0||(y.childNodes.length==1&&y.firstChild.nodeName=="BR")){q=y;while((q=q.previousSibling)&&!u.dom.isBlock(q)){}if(q){if(y!=z.firstChild){A=u.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,h);while(B=A.nextNode()){q=B}p=u.getDoc().createRange();p.setStart(q,q.nodeValue?q.nodeValue.length:0);p.setEnd(q,q.nodeValue?q.nodeValue.length:0);x.setRng(p);u.dom.remove(y)}return k.cancel(v)}}}}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(i){var h,g=this,f=g.editor;d(f.plugins,function(j){if(j.createControl){h=j.createControl(i,g);if(h){return false}}});switch(i){case"|":case"separator":return g.createSeparator()}if(!h&&f.buttons&&(h=f.buttons[i])){return g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;if(g.settings.use_native_selects){k=new c.ui.NativeListBox(m,i)}else{f=l||h._cls.listbox||c.ui.ListBox;k=new f(m,i)}h.controls[m]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){g.bookmark=g.selection.getBookmark(1)});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);g.bookmark=null})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}return h.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){function b(){var d={},c={},e={};function f(j,i,h,g){if(typeof(i)=="string"){i=[i]}a.each(i,function(k){j[k.toLowerCase()]={func:h,scope:g}})}a.extend(this,{add:function(i,h,g){f(d,i,h,g)},addQueryStateHandler:function(i,h,g){f(c,i,h,g)},addQueryValueHandler:function(i,h,g){f(e,i,h,g)},execCommand:function(h,k,j,i,g){if(k=d[k.toLowerCase()]){if(k.func.call(h||k.scope,j,i,g)!==false){return true}}},queryCommandValue:function(){if(cmd=e[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}},queryCommandState:function(){if(cmd=c[cmd.toLowerCase()]){return cmd.func.call(scope||cmd.scope,ui,value,args)}}})}a.GlobalCommands=new b()})(tinymce);(function(a){a.Formatter=function(T){var K={},M=a.each,c=T.dom,p=T.selection,s=a.dom.TreeWalker,I=new a.dom.RangeUtils(c),d=T.schema.isValid,E=c.isBlock,k=T.settings.forced_root_block,r=c.nodeIndex,D="\uFEFF",e=/^(src|href|style)$/,Q=false,A=true,o,N={apply:[],remove:[]};function y(U){return U instanceof Array}function l(V,U){return c.getParents(V,U,c.getRoot())}function b(U){return U.nodeType===1&&(U.face==="mceinline"||U.style.fontFamily==="mceinline")}function P(U){return U?K[U]:K}function j(U,V){if(U){if(typeof(U)!=="string"){M(U,function(X,W){j(W,X)})}else{V=V.length?V:[V];M(V,function(W){if(W.deep===o){W.deep=!W.selector}if(W.split===o){W.split=!W.selector||W.inline}if(W.remove===o&&W.selector&&!W.inline){W.remove="none"}if(W.selector&&W.inline){W.mixed=true;W.block_expand=true}if(typeof(W.classes)==="string"){W.classes=W.classes.split(/\s+/)}});K[U]=V}}}function R(W,ac,Y){var Z=P(W),ad=Z[0],ab,V,aa;function X(ag){var af=ag.startContainer,aj=ag.startOffset,ai,ah;if(af.nodeType==1||af.nodeValue===""){af=af.nodeType==1?af.childNodes[aj]:af;if(af){ai=new s(af,af.parentNode);for(ah=ai.current();ah;ah=ai.next()){if(ah.nodeType==3&&!f(ah)){ag.setStart(ah,0);break}}}}return ag}function U(ag,af){af=af||ad;if(ag){M(af.styles,function(ai,ah){c.setStyle(ag,ah,q(ai,ac))});M(af.attributes,function(ai,ah){c.setAttrib(ag,ah,q(ai,ac))});M(af.classes,function(ah){ah=q(ah,ac);if(!c.hasClass(ag,ah)){c.addClass(ag,ah)}})}}function ae(ag){var af=[],ai,ah;ai=ad.inline||ad.block;ah=c.create(ai);U(ah);I.walk(ag,function(aj){var ak;function al(am){var ap=am.nodeName.toLowerCase(),ao=am.parentNode.nodeName.toLowerCase(),an;if(g(ap,"br")){ak=0;if(ad.block){c.remove(am)}return}if(ad.wrapper&&v(am,W,ac)){ak=0;return}if(ad.block&&!ad.wrapper&&F(ap)){am=c.rename(am,ai);U(am);af.push(am);ak=0;return}if(ad.selector){M(Z,function(aq){if(c.is(am,aq.selector)&&!b(am)){U(am,aq);an=true}});if(!ad.inline||an){ak=0;return}}if(d(ai,ap)&&d(ao,ai)){if(!ak){ak=ah.cloneNode(Q);am.parentNode.insertBefore(ak,am);af.push(ak)}ak.appendChild(am)}else{ak=0;M(a.grep(am.childNodes),al);ak=0}}M(aj,al)});M(af,function(al){var aj;function am(ao){var an=0;M(ao.childNodes,function(ap){if(!f(ap)&&!G(ap)){an++}});return an}function ak(an){var ap,ao;M(an.childNodes,function(aq){if(aq.nodeType==1&&!G(aq)&&!b(aq)){ap=aq;return Q}});if(ap&&h(ap,ad)){ao=ap.cloneNode(Q);U(ao);c.replace(ao,an,A);c.remove(ap,1)}return ao||an}aj=am(al);if(aj===0){c.remove(al,1);return}if(ad.inline||ad.wrapper){if(!ad.exact&&aj===1){al=ak(al)}M(Z,function(an){M(c.select(an.inline,al),function(ao){S(an,ac,ao,an.exact?ao:null)})});if(v(al.parentNode,W,ac)){c.remove(al,1);al=0;return A}if(ad.merge_with_parents){c.getParent(al.parentNode,function(an){if(v(an,W,ac)){c.remove(al,1);al=0;return A}})}if(al){al=t(B(al),al);al=t(al,B(al,A))}}})}if(ad){if(Y){V=c.createRng();V.setStartBefore(Y);V.setEndAfter(Y);ae(n(V,Z))}else{if(!p.isCollapsed()||!ad.inline){ab=p.getBookmark();ae(n(p.getRng(A),Z));p.moveToBookmark(ab);p.setRng(X(p.getRng(A)));T.nodeChanged()}else{O("apply",W,ac)}}}}function z(W,af,Z){var aa=P(W),ah=aa[0],ae,ad,V;function Y(ak){var aj=ak.startContainer,ap=ak.startOffset,ao,an,al,am;if(aj.nodeType==3&&ap>=aj.nodeValue.length-1){aj=aj.parentNode;ap=r(aj)+1}if(aj.nodeType==1){al=aj.childNodes;aj=al[Math.min(ap,al.length-1)];ao=new s(aj);if(ap>al.length-1){ao.next()}for(an=ao.current();an;an=ao.next()){if(an.nodeType==3&&!f(an)){am=c.create("a",null,D);an.parentNode.insertBefore(am,an);ak.setStart(an,0);p.setRng(ak);c.remove(am);return}}}}function X(am){var al,ak,aj;al=a.grep(am.childNodes);for(ak=0,aj=aa.length;ak<aj;ak++){if(S(aa[ak],af,am,am)){break}}if(ah.deep){for(ak=0,aj=al.length;ak<aj;ak++){X(al[ak])}}}function ab(aj){var ak;M(l(aj.parentNode).reverse(),function(al){var am;if(!ak&&al.id!="_start"&&al.id!="_end"){am=v(al,W,af);if(am&&am.split!==false){ak=al}}});return ak}function U(am,aj,ao,ar){var at,aq,ap,al,an,ak;if(am){ak=am.parentNode;for(at=aj.parentNode;at&&at!=ak;at=at.parentNode){aq=at.cloneNode(Q);for(an=0;an<aa.length;an++){if(S(aa[an],af,aq,aq)){aq=0;break}}if(aq){if(ap){aq.appendChild(ap)}if(!al){al=aq}ap=aq}}if(ar&&(!ah.mixed||!E(am))){aj=c.split(am,aj)}if(ap){ao.parentNode.insertBefore(ap,ao);al.appendChild(ao)}}return aj}function ag(aj){return U(ab(aj),aj,aj,true)}function ac(al){var ak=c.get(al?"_start":"_end"),aj=ak[al?"firstChild":"lastChild"];if(G(aj)){aj=aj[al?"firstChild":"lastChild"]}c.remove(ak,true);return aj}function ai(aj){var ak,al;aj=n(aj,aa,A);if(ah.split){ak=H(aj,A);al=H(aj);if(ak!=al){ak=L(ak,"span",{id:"_start",_mce_type:"bookmark"});al=L(al,"span",{id:"_end",_mce_type:"bookmark"});ag(ak);ag(al);ak=ac(A);al=ac()}else{ak=al=ag(ak)}aj.startContainer=ak.parentNode;aj.startOffset=r(ak);aj.endContainer=al.parentNode;aj.endOffset=r(al)+1}I.walk(aj,function(am){M(am,function(an){X(an)})})}if(Z){V=c.createRng();V.setStartBefore(Z);V.setEndAfter(Z);ai(V);return}if(!p.isCollapsed()||!ah.inline){ae=p.getBookmark();ai(p.getRng(A));p.moveToBookmark(ae);if(i(W,af,p.getStart())){Y(p.getRng(true))}T.nodeChanged()}else{O("remove",W,af)}}function C(U,W,V){if(i(U,W,V)){z(U,W,V)}else{R(U,W,V)}}function v(V,U,aa,Y){var W=P(U),ab,Z,X;function ac(ag,ai,aj){var af,ah,ad=ai[aj],ae;if(ad){if(ad.length===o){for(af in ad){if(ad.hasOwnProperty(af)){if(aj==="attributes"){ah=c.getAttrib(ag,af)}else{ah=J(ag,af)}if(Y&&!ah&&!ai.exact){return}if((!Y||ai.exact)&&!g(ah,q(ad[af],aa))){return}}}}else{for(ae=0;ae<ad.length;ae++){if(aj==="attributes"?c.getAttrib(ag,ad[ae]):J(ag,ad[ae])){return ai}}}}return ai}if(W&&V){for(Z=0;Z<W.length;Z++){ab=W[Z];if(h(V,ab)&&ac(V,ab,"attributes")&&ac(V,ab,"styles")){if(X=ab.classes){for(Z=0;Z<X.length;Z++){if(!c.hasClass(V,X[Z])){return}}}return ab}}}}function i(W,Z,Y){var V,X;function U(aa){aa=c.getParent(aa,function(ab){return !!v(ab,W,Z,true)});return v(aa,W,Z)}if(Y){return U(Y)}if(p.isCollapsed()){for(X=N.apply.length-1;X>=0;X--){if(N.apply[X].name==W){return true}}for(X=N.remove.length-1;X>=0;X--){if(N.remove[X].name==W){return false}}return U(p.getNode())}Y=p.getNode();if(U(Y)){return A}V=p.getStart();if(V!=Y){if(U(V)){return A}}return Q}function u(ab,aa){var Y,Z=[],X={},W,V,U;if(p.isCollapsed()){for(V=0;V<ab.length;V++){for(W=N.remove.length-1;W>=0;W--){U=ab[V];if(N.remove[W].name==U){X[U]=true;break}}}for(W=N.apply.length-1;W>=0;W--){for(V=0;V<ab.length;V++){U=ab[V];if(!X[U]&&N.apply[W].name==U){X[U]=true;Z.push(U)}}}}Y=p.getStart();c.getParent(Y,function(ae){var ad,ac;for(ad=0;ad<ab.length;ad++){ac=ab[ad];if(!X[ac]&&v(ae,ac,aa)){X[ac]=true;Z.push(ac)}}});return Z}function x(Y){var aa=P(Y),X,W,Z,V,U;if(aa){X=p.getStart();W=l(X);for(V=aa.length-1;V>=0;V--){U=aa[V].selector;if(!U){return A}for(Z=W.length-1;Z>=0;Z--){if(c.is(W[Z],U)){return A}}}}return Q}a.extend(this,{get:P,register:j,apply:R,remove:z,toggle:C,match:i,matchAll:u,matchNode:v,canApply:x});function h(U,V){if(g(U,V.inline)){return A}if(g(U,V.block)){return A}if(V.selector){return c.is(U,V.selector)}}function g(V,U){V=V||"";U=U||"";V=""+(V.nodeName||V);U=""+(U.nodeName||U);return V.toLowerCase()==U.toLowerCase()}function J(V,U){var W=c.getStyle(V,U);if(U=="color"||U=="backgroundColor"){W=c.toHex(W)}if(U=="fontWeight"&&W==700){W="bold"}return""+W}function q(U,V){if(typeof(U)!="string"){U=U(V)}else{if(V){U=U.replace(/%(\w+)/g,function(X,W){return V[W]||X})}}return U}function f(U){return U&&U.nodeType===3&&/^([\s\r\n]+|)$/.test(U.nodeValue)}function L(W,V,U){var X=c.create(V,U);W.parentNode.insertBefore(X,W);X.appendChild(W);return X}function n(U,ac,X){var W=U.startContainer,Z=U.startOffset,af=U.endContainer,aa=U.endOffset,ae,ab;function ad(ai,aj,ag,ah){var ak,al;ah=ah||c.getRoot();for(;;){ak=ai.parentNode;if(ak==ah||(!ac[0].block_expand&&E(ak))){return ai}for(ae=ak[aj];ae&&ae!=ai;ae=ae[ag]){if(ae.nodeType==1&&!G(ae)){return ai}if(ae.nodeType==3&&!f(ae)){return ai}}ai=ai.parentNode}return ai}if(W.nodeType==1&&W.hasChildNodes()){ab=W.childNodes.length-1;W=W.childNodes[Z>ab?ab:Z];if(W.nodeType==3){Z=0}}if(af.nodeType==1&&af.hasChildNodes()){ab=af.childNodes.length-1;af=af.childNodes[aa>ab?ab:aa-1];if(af.nodeType==3){aa=af.nodeValue.length}}if(G(W.parentNode)){W=W.parentNode}if(G(W)){W=W.nextSibling||W}if(G(af.parentNode)){af=af.parentNode}if(G(af)){af=af.previousSibling||af}if(ac[0].inline||ac[0].block_expand){W=ad(W,"firstChild","nextSibling");af=ad(af,"lastChild","previousSibling")}if(ac[0].selector&&ac[0].expand!==Q&&!ac[0].inline){function Y(ah,ag){var ai,aj,ak;if(ah.nodeType==3&&ah.nodeValue.length==0&&ah[ag]){ah=ah[ag]}ai=l(ah);for(aj=0;aj<ai.length;aj++){for(ak=0;ak<ac.length;ak++){if(c.is(ai[aj],ac[ak].selector)){return ai[aj]}}}return ah}W=Y(W,"previousSibling");af=Y(af,"nextSibling")}if(ac[0].block||ac[0].selector){function V(ah,ag,aj){var ai;if(!ac[0].wrapper){ai=c.getParent(ah,ac[0].block)}if(!ai){ai=c.getParent(ah.nodeType==3?ah.parentNode:ah,E)}if(ai&&ac[0].wrapper){ai=l(ai,"ul,ol").reverse()[0]||ai}if(!ai){ai=ah;while(ai[ag]&&!E(ai[ag])){ai=ai[ag];if(g(ai,"br")){break}}}return ai||ah}W=V(W,"previousSibling");af=V(af,"nextSibling");if(ac[0].block){if(!E(W)){W=ad(W,"firstChild","nextSibling")}if(!E(af)){af=ad(af,"lastChild","previousSibling")}}}if(W.nodeType==1){Z=r(W);W=W.parentNode}if(af.nodeType==1){aa=r(af)+1;af=af.parentNode}return{startContainer:W,startOffset:Z,endContainer:af,endOffset:aa}}function S(aa,Z,X,U){var W,V,Y;if(!h(X,aa)){return Q}if(aa.remove!="all"){M(aa.styles,function(ac,ab){ac=q(ac,Z);if(typeof(ab)==="number"){ab=ac;U=0}if(!U||g(J(U,ab),ac)){c.setStyle(X,ab,"")}Y=1});if(Y&&c.getAttrib(X,"style")==""){X.removeAttribute("style");X.removeAttribute("_mce_style")}M(aa.attributes,function(ad,ab){var ac;ad=q(ad,Z);if(typeof(ab)==="number"){ab=ad;U=0}if(!U||g(c.getAttrib(U,ab),ad)){if(ab=="class"){ad=c.getAttrib(X,ab);if(ad){ac="";M(ad.split(/\s+/),function(ae){if(/mce\w+/.test(ae)){ac+=(ac?" ":"")+ae}});if(ac){c.setAttrib(X,ab,ac);return}}}if(ab=="class"){X.removeAttribute("className")}if(e.test(ab)){X.removeAttribute("_mce_"+ab)}X.removeAttribute(ab)}});M(aa.classes,function(ab){ab=q(ab,Z);if(!U||c.hasClass(U,ab)){c.removeClass(X,ab)}});V=c.getAttribs(X);for(W=0;W<V.length;W++){if(V[W].nodeName.indexOf("_")!==0){return Q}}}if(aa.remove!="none"){m(X,aa);return A}}function m(W,X){var U=W.parentNode,V;if(X.block){if(!k){function Y(aa,Z,ab){aa=B(aa,Z,ab);return !aa||(aa.nodeName=="BR"||E(aa))}if(E(W)&&!E(U)){if(!Y(W,Q)&&!Y(W.firstChild,A,1)){W.insertBefore(c.create("br"),W.firstChild)}if(!Y(W,A)&&!Y(W.lastChild,Q,1)){W.appendChild(c.create("br"))}}}else{if(U==c.getRoot()){if(!X.list_block||!g(W,X.list_block)){M(a.grep(W.childNodes),function(Z){if(d(k,Z.nodeName.toLowerCase())){if(!V){V=L(Z,k)}else{V.appendChild(Z)}}else{V=0}})}}}}if(X.selector&&X.inline&&!g(X.inline,W)){return}c.remove(W,1)}function B(V,U,W){if(V){U=U?"nextSibling":"previousSibling";for(V=W?V:V[U];V;V=V[U]){if(V.nodeType==1||!f(V)){return V}}}}function G(U){return U&&U.nodeType==1&&U.getAttribute("_mce_type")=="bookmark"}function t(Y,X){var U,W,V;function aa(ad,ac){if(ad.nodeName!=ac.nodeName){return Q}function ab(af){var ag={};M(c.getAttribs(af),function(ah){var ai=ah.nodeName.toLowerCase();if(ai.indexOf("_")!==0&&ai!=="style"){ag[ai]=c.getAttrib(af,ai)}});return ag}function ae(ai,ah){var ag,af;for(af in ai){if(ai.hasOwnProperty(af)){ag=ah[af];if(ag===o){return Q}if(ai[af]!=ag){return Q}delete ah[af]}}for(af in ah){if(ah.hasOwnProperty(af)){return Q}}return A}if(!ae(ab(ad),ab(ac))){return Q}if(!ae(c.parseStyle(c.getAttrib(ad,"style")),c.parseStyle(c.getAttrib(ac,"style")))){return Q}return A}if(Y&&X){function Z(ac,ab){for(W=ac;W;W=W[ab]){if(W.nodeType==3&&!f(W)){return ac}if(W.nodeType==1&&!G(W)){return W}}return ac}Y=Z(Y,"previousSibling");X=Z(X,"nextSibling");if(aa(Y,X)){for(W=Y.nextSibling;W&&W!=X;){V=W;W=W.nextSibling;Y.appendChild(V)}c.remove(X);M(a.grep(X.childNodes),function(ab){Y.appendChild(ab)});return Y}}return X}function F(U){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(U)}function H(V,Y){var U,X,W;U=V[Y?"startContainer":"endContainer"];X=V[Y?"startOffset":"endOffset"];if(U.nodeType==1){W=U.childNodes.length-1;if(!Y&&X){X--}U=U.childNodes[X>W?W:X]}return U}function O(Z,V,Y){var W,U=N[Z],aa=N[Z=="apply"?"remove":"apply"];function ab(){return N.apply.length||N.remove.length}function X(){N.apply=[];N.remove=[]}function ac(ad){M(N.apply.reverse(),function(ae){R(ae.name,ae.vars,ad)});M(N.remove.reverse(),function(ae){z(ae.name,ae.vars,ad)});c.remove(ad,1);X()}for(W=U.length-1;W>=0;W--){if(U[W].name==V){return}}U.push({name:V,vars:Y});for(W=aa.length-1;W>=0;W--){if(aa[W].name==V){aa.splice(W,1)}}if(ab()){T.getDoc().execCommand("FontName",false,"mceinline");N.lastRng=p.getRng();M(c.select("font,span"),function(ae){var ad;if(b(ae)){ad=p.getBookmark();ac(ae);p.moveToBookmark(ad);T.nodeChanged()}});if(!N.isListening&&ab()){N.isListening=true;M("onKeyDown,onKeyUp,onKeyPress,onMouseUp".split(","),function(ad){T[ad].addToTop(function(ae,af){if(ab()&&!a.dom.RangeUtils.compareRanges(N.lastRng,p.getRng())){M(c.select("font,span"),function(ah){var ai,ag;if(b(ah)){ai=ah.firstChild;if(ai){ac(ah);ag=c.createRng();ag.setStart(ai,ai.nodeValue.length);ag.setEnd(ai,ai.nodeValue.length);p.setRng(ag);ae.nodeChanged()}else{c.remove(ah)}}});if(af.type=="keyup"||af.type=="mouseup"){X()}}})})}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;if(c.inline_styles){h=e.explode(c.font_size_style_values);function b(j,i){g.replace(g.create("span",{style:i}),j,1)}d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}a.onPreProcess.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});
\ No newline at end of file diff --git a/plugins/TinyMCE/js/tiny_mce_popup.js b/plugins/TinyMCE/js/tiny_mce_popup.js new file mode 100644 index 000000000..3ef3acb1f --- /dev/null +++ b/plugins/TinyMCE/js/tiny_mce_popup.js @@ -0,0 +1,5 @@ + +// Uncomment and change this document.domain value if you are loading the script cross subdomains +// document.domain = 'moxiecode.com'; + +var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},0)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.domLoaded){return}b.domLoaded=1;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){tinymce.dom.Event._add(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){a=a.target||a.srcElement;if(a.onchange){a.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_wait:function(){if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);tinyMCEPopup._onDOMLoaded()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(tinyMCEPopup.domLoaded){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}tinyMCEPopup._onDOMLoaded()})()}document.attachEvent("onload",tinyMCEPopup._onDOMLoaded)}else{if(document.addEventListener){window.addEventListener("DOMContentLoaded",tinyMCEPopup._onDOMLoaded,false);window.addEventListener("load",tinyMCEPopup._onDOMLoaded,false)}}}};tinyMCEPopup.init();tinyMCEPopup._wait();
\ No newline at end of file diff --git a/plugins/TinyMCE/js/tiny_mce_src.js b/plugins/TinyMCE/js/tiny_mce_src.js new file mode 100644 index 000000000..acc1db528 --- /dev/null +++ b/plugins/TinyMCE/js/tiny_mce_src.js @@ -0,0 +1,13346 @@ +(function(win) {
+ var whiteSpaceRe = /^\s*|\s*$/g,
+ undefined;
+
+ var tinymce = {
+ majorVersion : '3',
+
+ minorVersion : '3.8',
+
+ releaseDate : '2010-06-30',
+
+ _init : function() {
+ var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
+
+ t.isOpera = win.opera && opera.buildNumber;
+
+ t.isWebKit = /WebKit/.test(ua);
+
+ t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);
+
+ t.isIE6 = t.isIE && /MSIE [56]/.test(ua);
+
+ t.isGecko = !t.isWebKit && /Gecko/.test(ua);
+
+ t.isMac = ua.indexOf('Mac') != -1;
+
+ t.isAir = /adobeair/i.test(ua);
+
+ t.isIDevice = /(iPad|iPhone)/.test(ua);
+
+ // TinyMCE .NET webcontrol might be setting the values for TinyMCE
+ if (win.tinyMCEPreInit) {
+ t.suffix = tinyMCEPreInit.suffix;
+ t.baseURL = tinyMCEPreInit.base;
+ t.query = tinyMCEPreInit.query;
+ return;
+ }
+
+ // Get suffix and base
+ t.suffix = '';
+
+ // If base element found, add that infront of baseURL
+ nl = d.getElementsByTagName('base');
+ for (i=0; i<nl.length; i++) {
+ if (v = nl[i].href) {
+ // Host only value like http://site.com or http://site.com:8008
+ if (/^https?:\/\/[^\/]+$/.test(v))
+ v += '/';
+
+ base = v ? v.match(/.*\//)[0] : ''; // Get only directory
+ }
+ }
+
+ function getBase(n) {
+ if (n.src && /tiny_mce(|_gzip|_jquery|_prototype)(_dev|_src)?.js/.test(n.src)) {
+ if (/_(src|dev)\.js/g.test(n.src))
+ t.suffix = '_src';
+
+ if ((p = n.src.indexOf('?')) != -1)
+ t.query = n.src.substring(p + 1);
+
+ t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
+
+ // If path to script is relative and a base href was found add that one infront
+ // the src property will always be an absolute one on non IE browsers and IE 8
+ // so this logic will basically only be executed on older IE versions
+ if (base && t.baseURL.indexOf('://') == -1 && t.baseURL.indexOf('/') !== 0)
+ t.baseURL = base + t.baseURL;
+
+ return t.baseURL;
+ }
+
+ return null;
+ };
+
+ // Check document
+ nl = d.getElementsByTagName('script');
+ for (i=0; i<nl.length; i++) {
+ if (getBase(nl[i]))
+ return;
+ }
+
+ // Check head
+ n = d.getElementsByTagName('head')[0];
+ if (n) {
+ nl = n.getElementsByTagName('script');
+ for (i=0; i<nl.length; i++) {
+ if (getBase(nl[i]))
+ return;
+ }
+ }
+
+ return;
+ },
+
+ is : function(o, t) {
+ if (!t)
+ return o !== undefined;
+
+ if (t == 'array' && (o.hasOwnProperty && o instanceof Array))
+ return true;
+
+ return typeof(o) == t;
+ },
+
+ each : function(o, cb, s) {
+ var n, l;
+
+ if (!o)
+ return 0;
+
+ s = s || o;
+
+ if (o.length !== undefined) {
+ // Indexed arrays, needed for Safari
+ for (n=0, l = o.length; n < l; n++) {
+ if (cb.call(s, o[n], n, o) === false)
+ return 0;
+ }
+ } else {
+ // Hashtables
+ for (n in o) {
+ if (o.hasOwnProperty(n)) {
+ if (cb.call(s, o[n], n, o) === false)
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+ },
+
+
+ trim : function(s) {
+ return (s ? '' + s : '').replace(whiteSpaceRe, '');
+ },
+
+ create : function(s, p) {
+ var t = this, sp, ns, cn, scn, c, de = 0;
+
+ // Parse : <prefix> <class>:<super class>
+ s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
+ cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
+
+ // Create namespace for new class
+ ns = t.createNS(s[3].replace(/\.\w+$/, ''));
+
+ // Class already exists
+ if (ns[cn])
+ return;
+
+ // Make pure static class
+ if (s[2] == 'static') {
+ ns[cn] = p;
+
+ if (this.onCreate)
+ this.onCreate(s[2], s[3], ns[cn]);
+
+ return;
+ }
+
+ // Create default constructor
+ if (!p[cn]) {
+ p[cn] = function() {};
+ de = 1;
+ }
+
+ // Add constructor and methods
+ ns[cn] = p[cn];
+ t.extend(ns[cn].prototype, p);
+
+ // Extend
+ if (s[5]) {
+ sp = t.resolve(s[5]).prototype;
+ scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
+
+ // Extend constructor
+ c = ns[cn];
+ if (de) {
+ // Add passthrough constructor
+ ns[cn] = function() {
+ return sp[scn].apply(this, arguments);
+ };
+ } else {
+ // Add inherit constructor
+ ns[cn] = function() {
+ this.parent = sp[scn];
+ return c.apply(this, arguments);
+ };
+ }
+ ns[cn].prototype[cn] = ns[cn];
+
+ // Add super methods
+ t.each(sp, function(f, n) {
+ ns[cn].prototype[n] = sp[n];
+ });
+
+ // Add overridden methods
+ t.each(p, function(f, n) {
+ // Extend methods if needed
+ if (sp[n]) {
+ ns[cn].prototype[n] = function() {
+ this.parent = sp[n];
+ return f.apply(this, arguments);
+ };
+ } else {
+ if (n != cn)
+ ns[cn].prototype[n] = f;
+ }
+ });
+ }
+
+ // Add static methods
+ t.each(p['static'], function(f, n) {
+ ns[cn][n] = f;
+ });
+
+ if (this.onCreate)
+ this.onCreate(s[2], s[3], ns[cn].prototype);
+ },
+
+ walk : function(o, f, n, s) {
+ s = s || this;
+
+ if (o) {
+ if (n)
+ o = o[n];
+
+ tinymce.each(o, function(o, i) {
+ if (f.call(s, o, i, n) === false)
+ return false;
+
+ tinymce.walk(o, f, n, s);
+ });
+ }
+ },
+
+ createNS : function(n, o) {
+ var i, v;
+
+ o = o || win;
+
+ n = n.split('.');
+ for (i=0; i<n.length; i++) {
+ v = n[i];
+
+ if (!o[v])
+ o[v] = {};
+
+ o = o[v];
+ }
+
+ return o;
+ },
+
+ resolve : function(n, o) {
+ var i, l;
+
+ o = o || win;
+
+ n = n.split('.');
+ for (i = 0, l = n.length; i < l; i++) {
+ o = o[n[i]];
+
+ if (!o)
+ break;
+ }
+
+ return o;
+ },
+
+ addUnload : function(f, s) {
+ var t = this;
+
+ f = {func : f, scope : s || this};
+
+ if (!t.unloads) {
+ function unload() {
+ var li = t.unloads, o, n;
+
+ if (li) {
+ // Call unload handlers
+ for (n in li) {
+ o = li[n];
+
+ if (o && o.func)
+ o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
+ }
+
+ // Detach unload function
+ if (win.detachEvent) {
+ win.detachEvent('onbeforeunload', fakeUnload);
+ win.detachEvent('onunload', unload);
+ } else if (win.removeEventListener)
+ win.removeEventListener('unload', unload, false);
+
+ // Destroy references
+ t.unloads = o = li = w = unload = 0;
+
+ // Run garbarge collector on IE
+ if (win.CollectGarbage)
+ CollectGarbage();
+ }
+ };
+
+ function fakeUnload() {
+ var d = document;
+
+ // Is there things still loading, then do some magic
+ if (d.readyState == 'interactive') {
+ function stop() {
+ // Prevent memory leak
+ d.detachEvent('onstop', stop);
+
+ // Call unload handler
+ if (unload)
+ unload();
+
+ d = 0;
+ };
+
+ // Fire unload when the currently loading page is stopped
+ if (d)
+ d.attachEvent('onstop', stop);
+
+ // Remove onstop listener after a while to prevent the unload function
+ // to execute if the user presses cancel in an onbeforeunload
+ // confirm dialog and then presses the browser stop button
+ win.setTimeout(function() {
+ if (d)
+ d.detachEvent('onstop', stop);
+ }, 0);
+ }
+ };
+
+ // Attach unload handler
+ if (win.attachEvent) {
+ win.attachEvent('onunload', unload);
+ win.attachEvent('onbeforeunload', fakeUnload);
+ } else if (win.addEventListener)
+ win.addEventListener('unload', unload, false);
+
+ // Setup initial unload handler array
+ t.unloads = [f];
+ } else
+ t.unloads.push(f);
+
+ return f;
+ },
+
+ removeUnload : function(f) {
+ var u = this.unloads, r = null;
+
+ tinymce.each(u, function(o, i) {
+ if (o && o.func == f) {
+ u.splice(i, 1);
+ r = f;
+ return false;
+ }
+ });
+
+ return r;
+ },
+
+ explode : function(s, d) {
+ return s ? tinymce.map(s.split(d || ','), tinymce.trim) : s;
+ },
+
+ _addVer : function(u) {
+ var v;
+
+ if (!this.query)
+ return u;
+
+ v = (u.indexOf('?') == -1 ? '?' : '&') + this.query;
+
+ if (u.indexOf('#') == -1)
+ return u + v;
+
+ return u.replace('#', v + '#');
+ }
+
+ };
+
+ // Initialize the API
+ tinymce._init();
+
+ // Expose tinymce namespace to the global namespace (window)
+ win.tinymce = win.tinyMCE = tinymce;
+})(window);
+
+(function($, tinymce) {
+ var is = tinymce.is, attrRegExp = /^(href|src|style)$/i, undefined;
+
+ // jQuery is undefined
+ if (!$)
+ return alert("Load jQuery first!");
+
+ // Stick jQuery into the tinymce namespace
+ tinymce.$ = $;
+
+ // Setup adapter
+ tinymce.adapter = {
+ patchEditor : function(editor) {
+ var fn = $.fn;
+
+ // Adapt the css function to make sure that the _mce_style
+ // attribute gets updated with the new style information
+ function css(name, value) {
+ var self = this;
+
+ // Remove _mce_style when set operation occurs
+ if (value)
+ self.removeAttr('_mce_style');
+
+ return fn.css.apply(self, arguments);
+ };
+
+ // Apapt the attr function to make sure that it uses the _mce_ prefixed variants
+ function attr(name, value) {
+ var self = this;
+
+ // Update/retrive _mce_ attribute variants
+ if (attrRegExp.test(name)) {
+ if (value !== undefined) {
+ // Use TinyMCE behavior when setting the specifc attributes
+ self.each(function(i, node) {
+ editor.dom.setAttrib(node, name, value);
+ });
+
+ return self;
+ } else
+ return self.attr('_mce_' + name);
+ }
+
+ // Default behavior
+ return fn.attr.apply(self, arguments);
+ };
+
+ function htmlPatchFunc(func) {
+ // Returns a modified function that processes
+ // the HTML before executing the action this makes sure
+ // that href/src etc gets moved into the _mce_ variants
+ return function(content) {
+ if (content)
+ content = editor.dom.processHTML(content);
+
+ return func.call(this, content);
+ };
+ };
+
+ // Patch various jQuery functions to handle tinymce specific attribute and content behavior
+ // we don't patch the jQuery.fn directly since it will most likely break compatibility
+ // with other jQuery logic on the page. Only instances created by TinyMCE should be patched.
+ function patch(jq) {
+ // Patch some functions, only patch the object once
+ if (jq.css !== css) {
+ // Patch css/attr to use the _mce_ prefixed attribute variants
+ jq.css = css;
+ jq.attr = attr;
+
+ // Patch HTML functions to use the DOMUtils.processHTML filter logic
+ jq.html = htmlPatchFunc(fn.html);
+ jq.append = htmlPatchFunc(fn.append);
+ jq.prepend = htmlPatchFunc(fn.prepend);
+ jq.after = htmlPatchFunc(fn.after);
+ jq.before = htmlPatchFunc(fn.before);
+ jq.replaceWith = htmlPatchFunc(fn.replaceWith);
+ jq.tinymce = editor;
+
+ // Each pushed jQuery instance needs to be patched
+ // as well for example when traversing the DOM
+ jq.pushStack = function() {
+ return patch(fn.pushStack.apply(this, arguments));
+ };
+ }
+
+ return jq;
+ };
+
+ // Add a $ function on each editor instance this one is scoped for the editor document object
+ // this way you can do chaining like this tinymce.get(0).$('p').append('text').css('color', 'red');
+ editor.$ = function(selector, scope) {
+ var doc = editor.getDoc();
+
+ return patch($(selector || doc, doc || scope));
+ };
+ }
+ };
+
+ // Patch in core NS functions
+ tinymce.extend = $.extend;
+ tinymce.extend(tinymce, {
+ map : $.map,
+ grep : function(a, f) {return $.grep(a, f || function(){return 1;});},
+ inArray : function(a, v) {return $.inArray(v, a || []);}
+
+ /* Didn't iterate stylesheets
+ each : function(o, cb, s) {
+ if (!o)
+ return 0;
+
+ var r = 1;
+
+ $.each(o, function(nr, el){
+ if (cb.call(s, el, nr, o) === false) {
+ r = 0;
+ return false;
+ }
+ });
+
+ return r;
+ }*/
+ });
+
+ // Patch in functions in various clases
+ // Add a "#ifndefjquery" statement around each core API function you add below
+ var patches = {
+ 'tinymce.dom.DOMUtils' : {
+ /*
+ addClass : function(e, c) {
+ if (is(e, 'array') && is(e[0], 'string'))
+ e = e.join(',#');
+ return (e && $(is(e, 'string') ? '#' + e : e)
+ .addClass(c)
+ .attr('class')) || false;
+ },
+
+ hasClass : function(n, c) {
+ return $(is(n, 'string') ? '#' + n : n).hasClass(c);
+ },
+
+ removeClass : function(e, c) {
+ if (!e)
+ return false;
+
+ var r = [];
+
+ $(is(e, 'string') ? '#' + e : e)
+ .removeClass(c)
+ .each(function(){
+ r.push(this.className);
+ });
+
+ return r.length == 1 ? r[0] : r;
+ },
+ */
+
+ select : function(pattern, scope) {
+ var t = this;
+
+ return $.find(pattern, t.get(scope) || t.get(t.settings.root_element) || t.doc, []);
+ },
+
+ is : function(n, patt) {
+ return $(this.get(n)).is(patt);
+ }
+
+ /*
+ show : function(e) {
+ if (is(e, 'array') && is(e[0], 'string'))
+ e = e.join(',#');
+
+ $(is(e, 'string') ? '#' + e : e).css('display', 'block');
+ },
+
+ hide : function(e) {
+ if (is(e, 'array') && is(e[0], 'string'))
+ e = e.join(',#');
+
+ $(is(e, 'string') ? '#' + e : e).css('display', 'none');
+ },
+
+ isHidden : function(e) {
+ return $(is(e, 'string') ? '#' + e : e).is(':hidden');
+ },
+
+ insertAfter : function(n, e) {
+ return $(is(e, 'string') ? '#' + e : e).after(n);
+ },
+
+ replace : function(o, n, k) {
+ n = $(is(n, 'string') ? '#' + n : n);
+
+ if (k)
+ n.children().appendTo(o);
+
+ n.replaceWith(o);
+ },
+
+ setStyle : function(n, na, v) {
+ if (is(n, 'array') && is(n[0], 'string'))
+ n = n.join(',#');
+
+ $(is(n, 'string') ? '#' + n : n).css(na, v);
+ },
+
+ getStyle : function(n, na, c) {
+ return $(is(n, 'string') ? '#' + n : n).css(na);
+ },
+
+ setStyles : function(e, o) {
+ if (is(e, 'array') && is(e[0], 'string'))
+ e = e.join(',#');
+ $(is(e, 'string') ? '#' + e : e).css(o);
+ },
+
+ setAttrib : function(e, n, v) {
+ var t = this, s = t.settings;
+
+ if (is(e, 'array') && is(e[0], 'string'))
+ e = e.join(',#');
+
+ e = $(is(e, 'string') ? '#' + e : e);
+
+ switch (n) {
+ case "style":
+ e.each(function(i, v){
+ if (s.keep_values)
+ $(v).attr('_mce_style', v);
+
+ v.style.cssText = v;
+ });
+ break;
+
+ case "class":
+ e.each(function(){
+ this.className = v;
+ });
+ break;
+
+ case "src":
+ case "href":
+ e.each(function(i, v){
+ if (s.keep_values) {
+ if (s.url_converter)
+ v = s.url_converter.call(s.url_converter_scope || t, v, n, v);
+
+ t.setAttrib(v, '_mce_' + n, v);
+ }
+ });
+
+ break;
+ }
+
+ if (v !== null && v.length !== 0)
+ e.attr(n, '' + v);
+ else
+ e.removeAttr(n);
+ },
+
+ setAttribs : function(e, o) {
+ var t = this;
+
+ $.each(o, function(n, v){
+ t.setAttrib(e,n,v);
+ });
+ }
+ */
+ }
+
+/*
+ 'tinymce.dom.Event' : {
+ add : function (o, n, f, s) {
+ var lo, cb;
+
+ cb = function(e) {
+ e.target = e.target || this;
+ f.call(s || this, e);
+ };
+
+ if (is(o, 'array') && is(o[0], 'string'))
+ o = o.join(',#');
+ o = $(is(o, 'string') ? '#' + o : o);
+ if (n == 'init') {
+ o.ready(cb, s);
+ } else {
+ if (s) {
+ o.bind(n, s, cb);
+ } else {
+ o.bind(n, cb);
+ }
+ }
+
+ lo = this._jqLookup || (this._jqLookup = []);
+ lo.push({func : f, cfunc : cb});
+
+ return cb;
+ },
+
+ remove : function(o, n, f) {
+ // Find cfunc
+ $(this._jqLookup).each(function() {
+ if (this.func === f)
+ f = this.cfunc;
+ });
+
+ if (is(o, 'array') && is(o[0], 'string'))
+ o = o.join(',#');
+
+ $(is(o, 'string') ? '#' + o : o).unbind(n,f);
+
+ return true;
+ }
+ }
+*/
+ };
+
+ // Patch functions after a class is created
+ tinymce.onCreate = function(ty, c, p) {
+ tinymce.extend(p, patches[c]);
+ };
+})(window.jQuery, tinymce);
+
+
+
+tinymce.create('tinymce.util.Dispatcher', {
+ scope : null,
+ listeners : null,
+
+ Dispatcher : function(s) {
+ this.scope = s || this;
+ this.listeners = [];
+ },
+
+ add : function(cb, s) {
+ this.listeners.push({cb : cb, scope : s || this.scope});
+
+ return cb;
+ },
+
+ addToTop : function(cb, s) {
+ this.listeners.unshift({cb : cb, scope : s || this.scope});
+
+ return cb;
+ },
+
+ remove : function(cb) {
+ var l = this.listeners, o = null;
+
+ tinymce.each(l, function(c, i) {
+ if (cb == c.cb) {
+ o = cb;
+ l.splice(i, 1);
+ return false;
+ }
+ });
+
+ return o;
+ },
+
+ dispatch : function() {
+ var s, a = arguments, i, li = this.listeners, c;
+
+ // Needs to be a real loop since the listener count might change while looping
+ // And this is also more efficient
+ for (i = 0; i<li.length; i++) {
+ c = li[i];
+ s = c.cb.apply(c.scope, a);
+
+ if (s === false)
+ break;
+ }
+
+ return s;
+ }
+
+ });
+
+(function() {
+ var each = tinymce.each;
+
+ tinymce.create('tinymce.util.URI', {
+ URI : function(u, s) {
+ var t = this, o, a, b;
+
+ // Trim whitespace
+ u = tinymce.trim(u);
+
+ // Default settings
+ s = t.settings = s || {};
+
+ // Strange app protocol or local anchor
+ if (/^(mailto|tel|news|javascript|about|data):/i.test(u) || /^\s*#/.test(u)) {
+ t.source = u;
+ return;
+ }
+
+ // Absolute path with no host, fake host and protocol
+ if (u.indexOf('/') === 0 && u.indexOf('//') !== 0)
+ u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;
+
+ // Relative path http:// or protocol relative //path
+ if (!/^\w*:?\/\//.test(u))
+ u = (s.base_uri.protocol || 'http') + '://mce_host' + t.toAbsPath(s.base_uri.path, u);
+
+ // Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
+ u = u.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
+ u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);
+ each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {
+ var s = u[i];
+
+ // Zope 3 workaround, they use @@something
+ if (s)
+ s = s.replace(/\(mce_at\)/g, '@@');
+
+ t[v] = s;
+ });
+
+ if (b = s.base_uri) {
+ if (!t.protocol)
+ t.protocol = b.protocol;
+
+ if (!t.userInfo)
+ t.userInfo = b.userInfo;
+
+ if (!t.port && t.host == 'mce_host')
+ t.port = b.port;
+
+ if (!t.host || t.host == 'mce_host')
+ t.host = b.host;
+
+ t.source = '';
+ }
+
+ //t.path = t.path || '/';
+ },
+
+ setPath : function(p) {
+ var t = this;
+
+ p = /^(.*?)\/?(\w+)?$/.exec(p);
+
+ // Update path parts
+ t.path = p[0];
+ t.directory = p[1];
+ t.file = p[2];
+
+ // Rebuild source
+ t.source = '';
+ t.getURI();
+ },
+
+ toRelative : function(u) {
+ var t = this, o;
+
+ if (u === "./")
+ return u;
+
+ u = new tinymce.util.URI(u, {base_uri : t});
+
+ // Not on same domain/port or protocol
+ if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)
+ return u.getURI();
+
+ o = t.toRelPath(t.path, u.path);
+
+ // Add query
+ if (u.query)
+ o += '?' + u.query;
+
+ // Add anchor
+ if (u.anchor)
+ o += '#' + u.anchor;
+
+ return o;
+ },
+
+ toAbsolute : function(u, nh) {
+ var u = new tinymce.util.URI(u, {base_uri : this});
+
+ return u.getURI(this.host == u.host && this.protocol == u.protocol ? nh : 0);
+ },
+
+ toRelPath : function(base, path) {
+ var items, bp = 0, out = '', i, l;
+
+ // Split the paths
+ base = base.substring(0, base.lastIndexOf('/'));
+ base = base.split('/');
+ items = path.split('/');
+
+ if (base.length >= items.length) {
+ for (i = 0, l = base.length; i < l; i++) {
+ if (i >= items.length || base[i] != items[i]) {
+ bp = i + 1;
+ break;
+ }
+ }
+ }
+
+ if (base.length < items.length) {
+ for (i = 0, l = items.length; i < l; i++) {
+ if (i >= base.length || base[i] != items[i]) {
+ bp = i + 1;
+ break;
+ }
+ }
+ }
+
+ if (bp == 1)
+ return path;
+
+ for (i = 0, l = base.length - (bp - 1); i < l; i++)
+ out += "../";
+
+ for (i = bp - 1, l = items.length; i < l; i++) {
+ if (i != bp - 1)
+ out += "/" + items[i];
+ else
+ out += items[i];
+ }
+
+ return out;
+ },
+
+ toAbsPath : function(base, path) {
+ var i, nb = 0, o = [], tr, outPath;
+
+ // Split paths
+ tr = /\/$/.test(path) ? '/' : '';
+ base = base.split('/');
+ path = path.split('/');
+
+ // Remove empty chunks
+ each(base, function(k) {
+ if (k)
+ o.push(k);
+ });
+
+ base = o;
+
+ // Merge relURLParts chunks
+ for (i = path.length - 1, o = []; i >= 0; i--) {
+ // Ignore empty or .
+ if (path[i].length == 0 || path[i] == ".")
+ continue;
+
+ // Is parent
+ if (path[i] == '..') {
+ nb++;
+ continue;
+ }
+
+ // Move up
+ if (nb > 0) {
+ nb--;
+ continue;
+ }
+
+ o.push(path[i]);
+ }
+
+ i = base.length - nb;
+
+ // If /a/b/c or /
+ if (i <= 0)
+ outPath = o.reverse().join('/');
+ else
+ outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');
+
+ // Add front / if it's needed
+ if (outPath.indexOf('/') !== 0)
+ outPath = '/' + outPath;
+
+ // Add traling / if it's needed
+ if (tr && outPath.lastIndexOf('/') !== outPath.length - 1)
+ outPath += tr;
+
+ return outPath;
+ },
+
+ getURI : function(nh) {
+ var s, t = this;
+
+ // Rebuild source
+ if (!t.source || nh) {
+ s = '';
+
+ if (!nh) {
+ if (t.protocol)
+ s += t.protocol + '://';
+
+ if (t.userInfo)
+ s += t.userInfo + '@';
+
+ if (t.host)
+ s += t.host;
+
+ if (t.port)
+ s += ':' + t.port;
+ }
+
+ if (t.path)
+ s += t.path;
+
+ if (t.query)
+ s += '?' + t.query;
+
+ if (t.anchor)
+ s += '#' + t.anchor;
+
+ t.source = s;
+ }
+
+ return t.source;
+ }
+ });
+})();
+
+(function() {
+ var each = tinymce.each;
+
+ tinymce.create('static tinymce.util.Cookie', {
+ getHash : function(n) {
+ var v = this.get(n), h;
+
+ if (v) {
+ each(v.split('&'), function(v) {
+ v = v.split('=');
+ h = h || {};
+ h[unescape(v[0])] = unescape(v[1]);
+ });
+ }
+
+ return h;
+ },
+
+ setHash : function(n, v, e, p, d, s) {
+ var o = '';
+
+ each(v, function(v, k) {
+ o += (!o ? '' : '&') + escape(k) + '=' + escape(v);
+ });
+
+ this.set(n, o, e, p, d, s);
+ },
+
+ get : function(n) {
+ var c = document.cookie, e, p = n + "=", b;
+
+ // Strict mode
+ if (!c)
+ return;
+
+ b = c.indexOf("; " + p);
+
+ if (b == -1) {
+ b = c.indexOf(p);
+
+ if (b != 0)
+ return null;
+ } else
+ b += 2;
+
+ e = c.indexOf(";", b);
+
+ if (e == -1)
+ e = c.length;
+
+ return unescape(c.substring(b + p.length, e));
+ },
+
+ set : function(n, v, e, p, d, s) {
+ document.cookie = n + "=" + escape(v) +
+ ((e) ? "; expires=" + e.toGMTString() : "") +
+ ((p) ? "; path=" + escape(p) : "") +
+ ((d) ? "; domain=" + d : "") +
+ ((s) ? "; secure" : "");
+ },
+
+ remove : function(n, p) {
+ var d = new Date();
+
+ d.setTime(d.getTime() - 1000);
+
+ this.set(n, '', d, p, d);
+ }
+ });
+})();
+
+tinymce.create('static tinymce.util.JSON', {
+ serialize : function(o) {
+ var i, v, s = tinymce.util.JSON.serialize, t;
+
+ if (o == null)
+ return 'null';
+
+ t = typeof o;
+
+ if (t == 'string') {
+ v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+ return '"' + o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g, function(a, b) {
+ i = v.indexOf(b);
+
+ if (i + 1)
+ return '\\' + v.charAt(i + 1);
+
+ a = b.charCodeAt().toString(16);
+
+ return '\\u' + '0000'.substring(a.length) + a;
+ }) + '"';
+ }
+
+ if (t == 'object') {
+ if (o.hasOwnProperty && o instanceof Array) {
+ for (i=0, v = '['; i<o.length; i++)
+ v += (i > 0 ? ',' : '') + s(o[i]);
+
+ return v + ']';
+ }
+
+ v = '{';
+
+ for (i in o)
+ v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : '';
+
+ return v + '}';
+ }
+
+ return '' + o;
+ },
+
+ parse : function(s) {
+ try {
+ return eval('(' + s + ')');
+ } catch (ex) {
+ // Ignore
+ }
+ }
+
+ });
+
+tinymce.create('static tinymce.util.XHR', {
+ send : function(o) {
+ var x, t, w = window, c = 0;
+
+ // Default settings
+ o.scope = o.scope || this;
+ o.success_scope = o.success_scope || o.scope;
+ o.error_scope = o.error_scope || o.scope;
+ o.async = o.async === false ? false : true;
+ o.data = o.data || '';
+
+ function get(s) {
+ x = 0;
+
+ try {
+ x = new ActiveXObject(s);
+ } catch (ex) {
+ }
+
+ return x;
+ };
+
+ x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP');
+
+ if (x) {
+ if (x.overrideMimeType)
+ x.overrideMimeType(o.content_type);
+
+ x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async);
+
+ if (o.content_type)
+ x.setRequestHeader('Content-Type', o.content_type);
+
+ x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+
+ x.send(o.data);
+
+ function ready() {
+ if (!o.async || x.readyState == 4 || c++ > 10000) {
+ if (o.success && c < 10000 && x.status == 200)
+ o.success.call(o.success_scope, '' + x.responseText, x, o);
+ else if (o.error)
+ o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
+
+ x = null;
+ } else
+ w.setTimeout(ready, 10);
+ };
+
+ // Syncronous request
+ if (!o.async)
+ return ready();
+
+ // Wait for response, onReadyStateChange can not be used since it leaks memory in IE
+ t = w.setTimeout(ready, 10);
+ }
+ }
+});
+
+(function() {
+ var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR;
+
+ tinymce.create('tinymce.util.JSONRequest', {
+ JSONRequest : function(s) {
+ this.settings = extend({
+ }, s);
+ this.count = 0;
+ },
+
+ send : function(o) {
+ var ecb = o.error, scb = o.success;
+
+ o = extend(this.settings, o);
+
+ o.success = function(c, x) {
+ c = JSON.parse(c);
+
+ if (typeof(c) == 'undefined') {
+ c = {
+ error : 'JSON Parse error.'
+ };
+ }
+
+ if (c.error)
+ ecb.call(o.error_scope || o.scope, c.error, x);
+ else
+ scb.call(o.success_scope || o.scope, c.result);
+ };
+
+ o.error = function(ty, x) {
+ ecb.call(o.error_scope || o.scope, ty, x);
+ };
+
+ o.data = JSON.serialize({
+ id : o.id || 'c' + (this.count++),
+ method : o.method,
+ params : o.params
+ });
+
+ // JSON content type for Ruby on rails. Bug: #1883287
+ o.content_type = 'application/json';
+
+ XHR.send(o);
+ },
+
+ 'static' : {
+ sendRPC : function(o) {
+ return new tinymce.util.JSONRequest().send(o);
+ }
+ }
+ });
+}());
+(function(tinymce) {
+ // Shorten names
+ var each = tinymce.each,
+ is = tinymce.is,
+ isWebKit = tinymce.isWebKit,
+ isIE = tinymce.isIE,
+ blockRe = /^(H[1-6R]|P|DIV|ADDRESS|PRE|FORM|T(ABLE|BODY|HEAD|FOOT|H|R|D)|LI|OL|UL|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|MENU|ISINDEX|SAMP)$/,
+ boolAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'),
+ mceAttribs = makeMap('src,href,style,coords,shape'),
+ encodedChars = {'&' : '&', '"' : '"', '<' : '<', '>' : '>'},
+ encodeCharsRe = /[<>&\"]/g,
+ simpleSelectorRe = /^([a-z0-9],?)+$/i,
+ tagRegExp = /<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)(\s*\/?)>/g,
+ attrRegExp = /(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
+
+ function makeMap(str) {
+ var map = {}, i;
+
+ str = str.split(',');
+ for (i = str.length; i >= 0; i--)
+ map[str[i]] = 1;
+
+ return map;
+ };
+
+ tinymce.create('tinymce.dom.DOMUtils', {
+ doc : null,
+ root : null,
+ files : null,
+ pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,
+ props : {
+ "for" : "htmlFor",
+ "class" : "className",
+ className : "className",
+ checked : "checked",
+ disabled : "disabled",
+ maxlength : "maxLength",
+ readonly : "readOnly",
+ selected : "selected",
+ value : "value",
+ id : "id",
+ name : "name",
+ type : "type"
+ },
+
+ DOMUtils : function(d, s) {
+ var t = this, globalStyle;
+
+ t.doc = d;
+ t.win = window;
+ t.files = {};
+ t.cssFlicker = false;
+ t.counter = 0;
+ t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat";
+ t.stdMode = d.documentMode === 8;
+
+ t.settings = s = tinymce.extend({
+ keep_values : false,
+ hex_colors : 1,
+ process_html : 1
+ }, s);
+
+ // Fix IE6SP2 flicker and check it failed for pre SP2
+ if (tinymce.isIE6) {
+ try {
+ d.execCommand('BackgroundImageCache', false, true);
+ } catch (e) {
+ t.cssFlicker = true;
+ }
+ }
+
+ // Build styles list
+ if (s.valid_styles) {
+ t._styles = {};
+
+ // Convert styles into a rule list
+ each(s.valid_styles, function(value, key) {
+ t._styles[key] = tinymce.explode(value);
+ });
+ }
+
+ tinymce.addUnload(t.destroy, t);
+ },
+
+ getRoot : function() {
+ var t = this, s = t.settings;
+
+ return (s && t.get(s.root_element)) || t.doc.body;
+ },
+
+ getViewPort : function(w) {
+ var d, b;
+
+ w = !w ? this.win : w;
+ d = w.document;
+ b = this.boxModel ? d.documentElement : d.body;
+
+ // Returns viewport size excluding scrollbars
+ return {
+ x : w.pageXOffset || b.scrollLeft,
+ y : w.pageYOffset || b.scrollTop,
+ w : w.innerWidth || b.clientWidth,
+ h : w.innerHeight || b.clientHeight
+ };
+ },
+
+ getRect : function(e) {
+ var p, t = this, sr;
+
+ e = t.get(e);
+ p = t.getPos(e);
+ sr = t.getSize(e);
+
+ return {
+ x : p.x,
+ y : p.y,
+ w : sr.w,
+ h : sr.h
+ };
+ },
+
+ getSize : function(e) {
+ var t = this, w, h;
+
+ e = t.get(e);
+ w = t.getStyle(e, 'width');
+ h = t.getStyle(e, 'height');
+
+ // Non pixel value, then force offset/clientWidth
+ if (w.indexOf('px') === -1)
+ w = 0;
+
+ // Non pixel value, then force offset/clientWidth
+ if (h.indexOf('px') === -1)
+ h = 0;
+
+ return {
+ w : parseInt(w) || e.offsetWidth || e.clientWidth,
+ h : parseInt(h) || e.offsetHeight || e.clientHeight
+ };
+ },
+
+ getParent : function(n, f, r) {
+ return this.getParents(n, f, r, false);
+ },
+
+ getParents : function(n, f, r, c) {
+ var t = this, na, se = t.settings, o = [];
+
+ n = t.get(n);
+ c = c === undefined;
+
+ if (se.strict_root)
+ r = r || t.getRoot();
+
+ // Wrap node name as func
+ if (is(f, 'string')) {
+ na = f;
+
+ if (f === '*') {
+ f = function(n) {return n.nodeType == 1;};
+ } else {
+ f = function(n) {
+ return t.is(n, na);
+ };
+ }
+ }
+
+ while (n) {
+ if (n == r || !n.nodeType || n.nodeType === 9)
+ break;
+
+ if (!f || f(n)) {
+ if (c)
+ o.push(n);
+ else
+ return n;
+ }
+
+ n = n.parentNode;
+ }
+
+ return c ? o : null;
+ },
+
+ get : function(e) {
+ var n;
+
+ if (e && this.doc && typeof(e) == 'string') {
+ n = e;
+ e = this.doc.getElementById(e);
+
+ // IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
+ if (e && e.id !== n)
+ return this.doc.getElementsByName(n)[1];
+ }
+
+ return e;
+ },
+
+ getNext : function(node, selector) {
+ return this._findSib(node, selector, 'nextSibling');
+ },
+
+ getPrev : function(node, selector) {
+ return this._findSib(node, selector, 'previousSibling');
+ },
+
+
+ add : function(p, n, a, h, c) {
+ var t = this;
+
+ return this.run(p, function(p) {
+ var e, k;
+
+ e = is(n, 'string') ? t.doc.createElement(n) : n;
+ t.setAttribs(e, a);
+
+ if (h) {
+ if (h.nodeType)
+ e.appendChild(h);
+ else
+ t.setHTML(e, h);
+ }
+
+ return !c ? p.appendChild(e) : e;
+ });
+ },
+
+ create : function(n, a, h) {
+ return this.add(this.doc.createElement(n), n, a, h, 1);
+ },
+
+ createHTML : function(n, a, h) {
+ var o = '', t = this, k;
+
+ o += '<' + n;
+
+ for (k in a) {
+ if (a.hasOwnProperty(k))
+ o += ' ' + k + '="' + t.encode(a[k]) + '"';
+ }
+
+ if (tinymce.is(h))
+ return o + '>' + h + '</' + n + '>';
+
+ return o + ' />';
+ },
+
+ remove : function(node, keep_children) {
+ return this.run(node, function(node) {
+ var parent, child;
+
+ parent = node.parentNode;
+
+ if (!parent)
+ return null;
+
+ if (keep_children) {
+ while (child = node.firstChild) {
+ // IE 8 will crash if you don't remove completely empty text nodes
+ if (!tinymce.isIE || child.nodeType !== 3 || child.nodeValue)
+ parent.insertBefore(child, node);
+ else
+ node.removeChild(child);
+ }
+ }
+
+ return parent.removeChild(node);
+ });
+ },
+
+ setStyle : function(n, na, v) {
+ var t = this;
+
+ return t.run(n, function(e) {
+ var s, i;
+
+ s = e.style;
+
+ // Camelcase it, if needed
+ na = na.replace(/-(\D)/g, function(a, b){
+ return b.toUpperCase();
+ });
+
+ // Default px suffix on these
+ if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v)))
+ v += 'px';
+
+ switch (na) {
+ case 'opacity':
+ // IE specific opacity
+ if (isIE) {
+ s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
+
+ if (!n.currentStyle || !n.currentStyle.hasLayout)
+ s.display = 'inline-block';
+ }
+
+ // Fix for older browsers
+ s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || '';
+ break;
+
+ case 'float':
+ isIE ? s.styleFloat = v : s.cssFloat = v;
+ break;
+
+ default:
+ s[na] = v || '';
+ }
+
+ // Force update of the style data
+ if (t.settings.update_styles)
+ t.setAttrib(e, '_mce_style');
+ });
+ },
+
+ getStyle : function(n, na, c) {
+ n = this.get(n);
+
+ if (!n)
+ return false;
+
+ // Gecko
+ if (this.doc.defaultView && c) {
+ // Remove camelcase
+ na = na.replace(/[A-Z]/g, function(a){
+ return '-' + a;
+ });
+
+ try {
+ return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na);
+ } catch (ex) {
+ // Old safari might fail
+ return null;
+ }
+ }
+
+ // Camelcase it, if needed
+ na = na.replace(/-(\D)/g, function(a, b){
+ return b.toUpperCase();
+ });
+
+ if (na == 'float')
+ na = isIE ? 'styleFloat' : 'cssFloat';
+
+ // IE & Opera
+ if (n.currentStyle && c)
+ return n.currentStyle[na];
+
+ return n.style[na];
+ },
+
+ setStyles : function(e, o) {
+ var t = this, s = t.settings, ol;
+
+ ol = s.update_styles;
+ s.update_styles = 0;
+
+ each(o, function(v, n) {
+ t.setStyle(e, n, v);
+ });
+
+ // Update style info
+ s.update_styles = ol;
+ if (s.update_styles)
+ t.setAttrib(e, s.cssText);
+ },
+
+ setAttrib : function(e, n, v) {
+ var t = this;
+
+ // Whats the point
+ if (!e || !n)
+ return;
+
+ // Strict XML mode
+ if (t.settings.strict)
+ n = n.toLowerCase();
+
+ return this.run(e, function(e) {
+ var s = t.settings;
+
+ switch (n) {
+ case "style":
+ if (!is(v, 'string')) {
+ each(v, function(v, n) {
+ t.setStyle(e, n, v);
+ });
+
+ return;
+ }
+
+ // No mce_style for elements with these since they might get resized by the user
+ if (s.keep_values) {
+ if (v && !t._isRes(v))
+ e.setAttribute('_mce_style', v, 2);
+ else
+ e.removeAttribute('_mce_style', 2);
+ }
+
+ e.style.cssText = v;
+ break;
+
+ case "class":
+ e.className = v || ''; // Fix IE null bug
+ break;
+
+ case "src":
+ case "href":
+ if (s.keep_values) {
+ if (s.url_converter)
+ v = s.url_converter.call(s.url_converter_scope || t, v, n, e);
+
+ t.setAttrib(e, '_mce_' + n, v, 2);
+ }
+
+ break;
+
+ case "shape":
+ e.setAttribute('_mce_style', v);
+ break;
+ }
+
+ if (is(v) && v !== null && v.length !== 0)
+ e.setAttribute(n, '' + v, 2);
+ else
+ e.removeAttribute(n, 2);
+ });
+ },
+
+ setAttribs : function(e, o) {
+ var t = this;
+
+ return this.run(e, function(e) {
+ each(o, function(v, n) {
+ t.setAttrib(e, n, v);
+ });
+ });
+ },
+
+ getAttrib : function(e, n, dv) {
+ var v, t = this;
+
+ e = t.get(e);
+
+ if (!e || e.nodeType !== 1)
+ return false;
+
+ if (!is(dv))
+ dv = '';
+
+ // Try the mce variant for these
+ if (/^(src|href|style|coords|shape)$/.test(n)) {
+ v = e.getAttribute("_mce_" + n);
+
+ if (v)
+ return v;
+ }
+
+ if (isIE && t.props[n]) {
+ v = e[t.props[n]];
+ v = v && v.nodeValue ? v.nodeValue : v;
+ }
+
+ if (!v)
+ v = e.getAttribute(n, 2);
+
+ // Check boolean attribs
+ if (/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(n)) {
+ if (e[t.props[n]] === true && v === '')
+ return n;
+
+ return v ? n : '';
+ }
+
+ // Inner input elements will override attributes on form elements
+ if (e.nodeName === "FORM" && e.getAttributeNode(n))
+ return e.getAttributeNode(n).nodeValue;
+
+ if (n === 'style') {
+ v = v || e.style.cssText;
+
+ if (v) {
+ v = t.serializeStyle(t.parseStyle(v), e.nodeName);
+
+ if (t.settings.keep_values && !t._isRes(v))
+ e.setAttribute('_mce_style', v);
+ }
+ }
+
+ // Remove Apple and WebKit stuff
+ if (isWebKit && n === "class" && v)
+ v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, '');
+
+ // Handle IE issues
+ if (isIE) {
+ switch (n) {
+ case 'rowspan':
+ case 'colspan':
+ // IE returns 1 as default value
+ if (v === 1)
+ v = '';
+
+ break;
+
+ case 'size':
+ // IE returns +0 as default value for size
+ if (v === '+0' || v === 20 || v === 0)
+ v = '';
+
+ break;
+
+ case 'width':
+ case 'height':
+ case 'vspace':
+ case 'checked':
+ case 'disabled':
+ case 'readonly':
+ if (v === 0)
+ v = '';
+
+ break;
+
+ case 'hspace':
+ // IE returns -1 as default value
+ if (v === -1)
+ v = '';
+
+ break;
+
+ case 'maxlength':
+ case 'tabindex':
+ // IE returns default value
+ if (v === 32768 || v === 2147483647 || v === '32768')
+ v = '';
+
+ break;
+
+ case 'multiple':
+ case 'compact':
+ case 'noshade':
+ case 'nowrap':
+ if (v === 65535)
+ return n;
+
+ return dv;
+
+ case 'shape':
+ v = v.toLowerCase();
+ break;
+
+ default:
+ // IE has odd anonymous function for event attributes
+ if (n.indexOf('on') === 0 && v)
+ v = ('' + v).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1');
+ }
+ }
+
+ return (v !== undefined && v !== null && v !== '') ? '' + v : dv;
+ },
+
+ getPos : function(n, ro) {
+ var t = this, x = 0, y = 0, e, d = t.doc, r;
+
+ n = t.get(n);
+ ro = ro || d.body;
+
+ if (n) {
+ // Use getBoundingClientRect on IE, Opera has it but it's not perfect
+ if (isIE && !t.stdMode) {
+ n = n.getBoundingClientRect();
+ e = t.boxModel ? d.documentElement : d.body;
+ x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border
+ x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;
+
+ return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};
+ }
+
+ r = n;
+ while (r && r != ro && r.nodeType) {
+ x += r.offsetLeft || 0;
+ y += r.offsetTop || 0;
+ r = r.offsetParent;
+ }
+
+ r = n.parentNode;
+ while (r && r != ro && r.nodeType) {
+ x -= r.scrollLeft || 0;
+ y -= r.scrollTop || 0;
+ r = r.parentNode;
+ }
+ }
+
+ return {x : x, y : y};
+ },
+
+ parseStyle : function(st) {
+ var t = this, s = t.settings, o = {};
+
+ if (!st)
+ return o;
+
+ function compress(p, s, ot) {
+ var t, r, b, l;
+
+ // Get values and check it it needs compressing
+ t = o[p + '-top' + s];
+ if (!t)
+ return;
+
+ r = o[p + '-right' + s];
+ if (t != r)
+ return;
+
+ b = o[p + '-bottom' + s];
+ if (r != b)
+ return;
+
+ l = o[p + '-left' + s];
+ if (b != l)
+ return;
+
+ // Compress
+ o[ot] = l;
+ delete o[p + '-top' + s];
+ delete o[p + '-right' + s];
+ delete o[p + '-bottom' + s];
+ delete o[p + '-left' + s];
+ };
+
+ function compress2(ta, a, b, c) {
+ var t;
+
+ t = o[a];
+ if (!t)
+ return;
+
+ t = o[b];
+ if (!t)
+ return;
+
+ t = o[c];
+ if (!t)
+ return;
+
+ // Compress
+ o[ta] = o[a] + ' ' + o[b] + ' ' + o[c];
+ delete o[a];
+ delete o[b];
+ delete o[c];
+ };
+
+ st = st.replace(/&(#?[a-z0-9]+);/g, '&$1_MCE_SEMI_'); // Protect entities
+
+ each(st.split(';'), function(v) {
+ var sv, ur = [];
+
+ if (v) {
+ v = v.replace(/_MCE_SEMI_/g, ';'); // Restore entities
+ v = v.replace(/url\([^\)]+\)/g, function(v) {ur.push(v);return 'url(' + ur.length + ')';});
+ v = v.split(':');
+ sv = tinymce.trim(v[1]);
+ sv = sv.replace(/url\(([^\)]+)\)/g, function(a, b) {return ur[parseInt(b) - 1];});
+
+ sv = sv.replace(/rgb\([^\)]+\)/g, function(v) {
+ return t.toHex(v);
+ });
+
+ if (s.url_converter) {
+ sv = sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g, function(x, c) {
+ return 'url(' + s.url_converter.call(s.url_converter_scope || t, t.decode(c), 'style', null) + ')';
+ });
+ }
+
+ o[tinymce.trim(v[0]).toLowerCase()] = sv;
+ }
+ });
+
+ compress("border", "", "border");
+ compress("border", "-width", "border-width");
+ compress("border", "-color", "border-color");
+ compress("border", "-style", "border-style");
+ compress("padding", "", "padding");
+ compress("margin", "", "margin");
+ compress2('border', 'border-width', 'border-style', 'border-color');
+
+ if (isIE) {
+ // Remove pointless border
+ if (o.border == 'medium none')
+ o.border = '';
+ }
+
+ return o;
+ },
+
+ serializeStyle : function(o, name) {
+ var t = this, s = '';
+
+ function add(v, k) {
+ if (k && v) {
+ // Remove browser specific styles like -moz- or -webkit-
+ if (k.indexOf('-') === 0)
+ return;
+
+ switch (k) {
+ case 'font-weight':
+ // Opera will output bold as 700
+ if (v == 700)
+ v = 'bold';
+
+ break;
+
+ case 'color':
+ case 'background-color':
+ v = v.toLowerCase();
+ break;
+ }
+
+ s += (s ? ' ' : '') + k + ': ' + v + ';';
+ }
+ };
+
+ // Validate style output
+ if (name && t._styles) {
+ each(t._styles['*'], function(name) {
+ add(o[name], name);
+ });
+
+ each(t._styles[name.toLowerCase()], function(name) {
+ add(o[name], name);
+ });
+ } else
+ each(o, add);
+
+ return s;
+ },
+
+ loadCSS : function(u) {
+ var t = this, d = t.doc, head;
+
+ if (!u)
+ u = '';
+
+ head = t.select('head')[0];
+
+ each(u.split(','), function(u) {
+ var link;
+
+ if (t.files[u])
+ return;
+
+ t.files[u] = true;
+ link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)});
+
+ // IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
+ // This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading
+ // It's ugly but it seems to work fine.
+ if (isIE && d.documentMode) {
+ link.onload = function() {
+ d.recalc();
+ link.onload = null;
+ };
+ }
+
+ head.appendChild(link);
+ });
+ },
+
+ addClass : function(e, c) {
+ return this.run(e, function(e) {
+ var o;
+
+ if (!c)
+ return 0;
+
+ if (this.hasClass(e, c))
+ return e.className;
+
+ o = this.removeClass(e, c);
+
+ return e.className = (o != '' ? (o + ' ') : '') + c;
+ });
+ },
+
+ removeClass : function(e, c) {
+ var t = this, re;
+
+ return t.run(e, function(e) {
+ var v;
+
+ if (t.hasClass(e, c)) {
+ if (!re)
+ re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g");
+
+ v = e.className.replace(re, ' ');
+ v = tinymce.trim(v != ' ' ? v : '');
+
+ e.className = v;
+
+ // Empty class attr
+ if (!v) {
+ e.removeAttribute('class');
+ e.removeAttribute('className');
+ }
+
+ return v;
+ }
+
+ return e.className;
+ });
+ },
+
+ hasClass : function(n, c) {
+ n = this.get(n);
+
+ if (!n || !c)
+ return false;
+
+ return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1;
+ },
+
+ show : function(e) {
+ return this.setStyle(e, 'display', 'block');
+ },
+
+ hide : function(e) {
+ return this.setStyle(e, 'display', 'none');
+ },
+
+ isHidden : function(e) {
+ e = this.get(e);
+
+ return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none';
+ },
+
+ uniqueId : function(p) {
+ return (!p ? 'mce_' : p) + (this.counter++);
+ },
+
+ setHTML : function(e, h) {
+ var t = this;
+
+ return this.run(e, function(e) {
+ var x, i, nl, n, p, x;
+
+ h = t.processHTML(h);
+
+ if (isIE) {
+ function set() {
+ // Remove all child nodes
+ while (e.firstChild)
+ e.firstChild.removeNode();
+
+ try {
+ // IE will remove comments from the beginning
+ // unless you padd the contents with something
+ e.innerHTML = '<br />' + h;
+ e.removeChild(e.firstChild);
+ } catch (ex) {
+ // IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p
+ // This seems to fix this problem
+
+ // Create new div with HTML contents and a BR infront to keep comments
+ x = t.create('div');
+ x.innerHTML = '<br />' + h;
+
+ // Add all children from div to target
+ each (x.childNodes, function(n, i) {
+ // Skip br element
+ if (i)
+ e.appendChild(n);
+ });
+ }
+ };
+
+ // IE has a serious bug when it comes to paragraphs it can produce an invalid
+ // DOM tree if contents like this <p><ul><li>Item 1</li></ul></p> is inserted
+ // It seems to be that IE doesn't like a root block element placed inside another root block element
+ if (t.settings.fix_ie_paragraphs)
+ h = h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi, '<p$1 _mce_keep="true"> </p>');
+
+ set();
+
+ if (t.settings.fix_ie_paragraphs) {
+ // Check for odd paragraphs this is a sign of a broken DOM
+ nl = e.getElementsByTagName("p");
+ for (i = nl.length - 1, x = 0; i >= 0; i--) {
+ n = nl[i];
+
+ if (!n.hasChildNodes()) {
+ if (!n._mce_keep) {
+ x = 1; // Is broken
+ break;
+ }
+
+ n.removeAttribute('_mce_keep');
+ }
+ }
+ }
+
+ // Time to fix the madness IE left us
+ if (x) {
+ // So if we replace the p elements with divs and mark them and then replace them back to paragraphs
+ // after we use innerHTML we can fix the DOM tree
+ h = h.replace(/<p ([^>]+)>|<p>/ig, '<div $1 _mce_tmp="1">');
+ h = h.replace(/<\/p>/gi, '</div>');
+
+ // Set the new HTML with DIVs
+ set();
+
+ // Replace all DIV elements with the _mce_tmp attibute back to paragraphs
+ // This is needed since IE has a annoying bug see above for details
+ // This is a slow process but it has to be done. :(
+ if (t.settings.fix_ie_paragraphs) {
+ nl = e.getElementsByTagName("DIV");
+ for (i = nl.length - 1; i >= 0; i--) {
+ n = nl[i];
+
+ // Is it a temp div
+ if (n._mce_tmp) {
+ // Create new paragraph
+ p = t.doc.createElement('p');
+
+ // Copy all attributes
+ n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi, function(a, b) {
+ var v;
+
+ if (b !== '_mce_tmp') {
+ v = n.getAttribute(b);
+
+ if (!v && b === 'class')
+ v = n.className;
+
+ p.setAttribute(b, v);
+ }
+ });
+
+ // Append all children to new paragraph
+ for (x = 0; x<n.childNodes.length; x++)
+ p.appendChild(n.childNodes[x].cloneNode(true));
+
+ // Replace div with new paragraph
+ n.swapNode(p);
+ }
+ }
+ }
+ }
+ } else
+ e.innerHTML = h;
+
+ return h;
+ });
+ },
+
+ processHTML : function(h) {
+ var t = this, s = t.settings, codeBlocks = [];
+
+ if (!s.process_html)
+ return h;
+
+ if (isIE) {
+ h = h.replace(/'/g, '''); // IE can't handle apos
+ h = h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi, ''); // IE doesn't handle default values correct
+ }
+
+ // Fix some issues
+ h = h.replace(/<a( )([^>]+)\/>|<a\/>/gi, '<a$1$2></a>'); // Force open
+
+ // Store away src and href in _mce_src and mce_href since browsers mess them up
+ if (s.keep_values) {
+ // Wrap scripts and styles in comments for serialization purposes
+ if (/<script|noscript|style/i.test(h)) {
+ function trim(s) {
+ // Remove prefix and suffix code for element
+ s = s.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n');
+ s = s.replace(/^[\r\n]*|[\r\n]*$/g, '');
+ s = s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g, '');
+ s = s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g, '');
+
+ return s;
+ };
+
+ // Wrap the script contents in CDATA and keep them from executing
+ h = h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/gi, function(v, attribs, text) {
+ // Force type attribute
+ if (!attribs)
+ attribs = ' type="text/javascript"';
+
+ // Convert the src attribute of the scripts
+ attribs = attribs.replace(/src=\"([^\"]+)\"?/i, function(a, url) {
+ if (s.url_converter)
+ url = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(url), 'src', 'script'));
+
+ return '_mce_src="' + url + '"';
+ });
+
+ // Wrap text contents
+ if (tinymce.trim(text)) {
+ codeBlocks.push(trim(text));
+ text = '<!--\nMCE_SCRIPT:' + (codeBlocks.length - 1) + '\n// -->';
+ }
+
+ return '<mce:script' + attribs + '>' + text + '</mce:script>';
+ });
+
+ // Wrap style elements
+ h = h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/gi, function(v, attribs, text) {
+ // Wrap text contents
+ if (text) {
+ codeBlocks.push(trim(text));
+ text = '<!--\nMCE_SCRIPT:' + (codeBlocks.length - 1) + '\n-->';
+ }
+
+ return '<mce:style' + attribs + '>' + text + '</mce:style><style ' + attribs + ' _mce_bogus="1">' + text + '</style>';
+ });
+
+ // Wrap noscript elements
+ h = h.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g, function(v, attribs, text) {
+ return '<mce:noscript' + attribs + '><!--' + t.encode(text).replace(/--/g, '--') + '--></mce:noscript>';
+ });
+ }
+
+ h = h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g, '<!--[CDATA[$1]]-->');
+
+ // This function processes the attributes in the HTML string to force boolean
+ // attributes to the attr="attr" format and convert style, src and href to _mce_ versions
+ function processTags(html) {
+ return html.replace(tagRegExp, function(match, elm_name, attrs, end) {
+ return '<' + elm_name + attrs.replace(attrRegExp, function(match, name, value, val2, val3) {
+ var mceValue;
+
+ name = name.toLowerCase();
+ value = value || val2 || val3 || "";
+
+ // Treat boolean attributes
+ if (boolAttrs[name]) {
+ // false or 0 is treated as a missing attribute
+ if (value === 'false' || value === '0')
+ return;
+
+ return name + '="' + name + '"';
+ }
+
+ // Is attribute one that needs special treatment
+ if (mceAttribs[name] && attrs.indexOf('_mce_' + name) == -1) {
+ mceValue = t.decode(value);
+
+ // Convert URLs to relative/absolute ones
+ if (s.url_converter && (name == "src" || name == "href"))
+ mceValue = s.url_converter.call(s.url_converter_scope || t, mceValue, name, elm_name);
+
+ // Process styles lowercases them and compresses them
+ if (name == 'style')
+ mceValue = t.serializeStyle(t.parseStyle(mceValue), name);
+
+ return name + '="' + value + '"' + ' _mce_' + name + '="' + t.encode(mceValue) + '"';
+ }
+
+ return match;
+ }) + end + '>';
+ });
+ };
+
+ h = processTags(h);
+
+ // Restore script blocks
+ h = h.replace(/MCE_SCRIPT:([0-9]+)/g, function(val, idx) {
+ return codeBlocks[idx];
+ });
+ }
+
+ return h;
+ },
+
+ getOuterHTML : function(e) {
+ var d;
+
+ e = this.get(e);
+
+ if (!e)
+ return null;
+
+ if (e.outerHTML !== undefined)
+ return e.outerHTML;
+
+ d = (e.ownerDocument || this.doc).createElement("body");
+ d.appendChild(e.cloneNode(true));
+
+ return d.innerHTML;
+ },
+
+ setOuterHTML : function(e, h, d) {
+ var t = this;
+
+ function setHTML(e, h, d) {
+ var n, tp;
+
+ tp = d.createElement("body");
+ tp.innerHTML = h;
+
+ n = tp.lastChild;
+ while (n) {
+ t.insertAfter(n.cloneNode(true), e);
+ n = n.previousSibling;
+ }
+
+ t.remove(e);
+ };
+
+ return this.run(e, function(e) {
+ e = t.get(e);
+
+ // Only set HTML on elements
+ if (e.nodeType == 1) {
+ d = d || e.ownerDocument || t.doc;
+
+ if (isIE) {
+ try {
+ // Try outerHTML for IE it sometimes produces an unknown runtime error
+ if (isIE && e.nodeType == 1)
+ e.outerHTML = h;
+ else
+ setHTML(e, h, d);
+ } catch (ex) {
+ // Fix for unknown runtime error
+ setHTML(e, h, d);
+ }
+ } else
+ setHTML(e, h, d);
+ }
+ });
+ },
+
+ decode : function(s) {
+ var e, n, v;
+
+ // Look for entities to decode
+ if (/&[\w#]+;/.test(s)) {
+ // Decode the entities using a div element not super efficient but less code
+ e = this.doc.createElement("div");
+ e.innerHTML = s;
+ n = e.firstChild;
+ v = '';
+
+ if (n) {
+ do {
+ v += n.nodeValue;
+ } while (n = n.nextSibling);
+ }
+
+ return v || s;
+ }
+
+ return s;
+ },
+
+ encode : function(str) {
+ return ('' + str).replace(encodeCharsRe, function(chr) {
+ return encodedChars[chr];
+ });
+ },
+
+ insertAfter : function(node, reference_node) {
+ reference_node = this.get(reference_node);
+
+ return this.run(node, function(node) {
+ var parent, nextSibling;
+
+ parent = reference_node.parentNode;
+ nextSibling = reference_node.nextSibling;
+
+ if (nextSibling)
+ parent.insertBefore(node, nextSibling);
+ else
+ parent.appendChild(node);
+
+ return node;
+ });
+ },
+
+ isBlock : function(n) {
+ if (n.nodeType && n.nodeType !== 1)
+ return false;
+
+ n = n.nodeName || n;
+
+ return blockRe.test(n);
+ },
+
+ replace : function(n, o, k) {
+ var t = this;
+
+ if (is(o, 'array'))
+ n = n.cloneNode(true);
+
+ return t.run(o, function(o) {
+ if (k) {
+ each(tinymce.grep(o.childNodes), function(c) {
+ n.appendChild(c);
+ });
+ }
+
+ return o.parentNode.replaceChild(n, o);
+ });
+ },
+
+ rename : function(elm, name) {
+ var t = this, newElm;
+
+ if (elm.nodeName != name.toUpperCase()) {
+ // Rename block element
+ newElm = t.create(name);
+
+ // Copy attribs to new block
+ each(t.getAttribs(elm), function(attr_node) {
+ t.setAttrib(newElm, attr_node.nodeName, t.getAttrib(elm, attr_node.nodeName));
+ });
+
+ // Replace block
+ t.replace(newElm, elm, 1);
+ }
+
+ return newElm || elm;
+ },
+
+ findCommonAncestor : function(a, b) {
+ var ps = a, pe;
+
+ while (ps) {
+ pe = b;
+
+ while (pe && ps != pe)
+ pe = pe.parentNode;
+
+ if (ps == pe)
+ break;
+
+ ps = ps.parentNode;
+ }
+
+ if (!ps && a.ownerDocument)
+ return a.ownerDocument.documentElement;
+
+ return ps;
+ },
+
+ toHex : function(s) {
+ var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
+
+ function hex(s) {
+ s = parseInt(s).toString(16);
+
+ return s.length > 1 ? s : '0' + s; // 0 -> 00
+ };
+
+ if (c) {
+ s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]);
+
+ return s;
+ }
+
+ return s;
+ },
+
+ getClasses : function() {
+ var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov;
+
+ if (t.classes)
+ return t.classes;
+
+ function addClasses(s) {
+ // IE style imports
+ each(s.imports, function(r) {
+ addClasses(r);
+ });
+
+ each(s.cssRules || s.rules, function(r) {
+ // Real type or fake it on IE
+ switch (r.type || 1) {
+ // Rule
+ case 1:
+ if (r.selectorText) {
+ each(r.selectorText.split(','), function(v) {
+ v = v.replace(/^\s*|\s*$|^\s\./g, "");
+
+ // Is internal or it doesn't contain a class
+ if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v))
+ return;
+
+ // Remove everything but class name
+ ov = v;
+ v = v.replace(/.*\.([a-z0-9_\-]+).*/i, '$1');
+
+ // Filter classes
+ if (f && !(v = f(v, ov)))
+ return;
+
+ if (!lo[v]) {
+ cl.push({'class' : v});
+ lo[v] = 1;
+ }
+ });
+ }
+ break;
+
+ // Import
+ case 3:
+ addClasses(r.styleSheet);
+ break;
+ }
+ });
+ };
+
+ try {
+ each(t.doc.styleSheets, addClasses);
+ } catch (ex) {
+ // Ignore
+ }
+
+ if (cl.length > 0)
+ t.classes = cl;
+
+ return cl;
+ },
+
+ run : function(e, f, s) {
+ var t = this, o;
+
+ if (t.doc && typeof(e) === 'string')
+ e = t.get(e);
+
+ if (!e)
+ return false;
+
+ s = s || this;
+ if (!e.nodeType && (e.length || e.length === 0)) {
+ o = [];
+
+ each(e, function(e, i) {
+ if (e) {
+ if (typeof(e) == 'string')
+ e = t.doc.getElementById(e);
+
+ o.push(f.call(s, e, i));
+ }
+ });
+
+ return o;
+ }
+
+ return f.call(s, e);
+ },
+
+ getAttribs : function(n) {
+ var o;
+
+ n = this.get(n);
+
+ if (!n)
+ return [];
+
+ if (isIE) {
+ o = [];
+
+ // Object will throw exception in IE
+ if (n.nodeName == 'OBJECT')
+ return n.attributes;
+
+ // IE doesn't keep the selected attribute if you clone option elements
+ if (n.nodeName === 'OPTION' && this.getAttrib(n, 'selected'))
+ o.push({specified : 1, nodeName : 'selected'});
+
+ // It's crazy that this is faster in IE but it's because it returns all attributes all the time
+ n.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi, '').replace(/[\w:\-]+/gi, function(a) {
+ o.push({specified : 1, nodeName : a});
+ });
+
+ return o;
+ }
+
+ return n.attributes;
+ },
+
+ destroy : function(s) {
+ var t = this;
+
+ if (t.events)
+ t.events.destroy();
+
+ t.win = t.doc = t.root = t.events = null;
+
+ // Manual destroy then remove unload handler
+ if (!s)
+ tinymce.removeUnload(t.destroy);
+ },
+
+ createRng : function() {
+ var d = this.doc;
+
+ return d.createRange ? d.createRange() : new tinymce.dom.Range(this);
+ },
+
+ nodeIndex : function(node, normalized) {
+ var idx = 0, lastNodeType, lastNode, nodeType;
+
+ if (node) {
+ for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) {
+ nodeType = node.nodeType;
+
+ // Normalize text nodes
+ if (normalized && nodeType == 3) {
+ if (nodeType == lastNodeType || !node.nodeValue.length)
+ continue;
+ }
+
+ idx++;
+ lastNodeType = nodeType;
+ }
+ }
+
+ return idx;
+ },
+
+ split : function(pe, e, re) {
+ var t = this, r = t.createRng(), bef, aft, pa;
+
+ // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sense
+ // but we don't want that in our code since it serves no purpose for the end user
+ // For example if this is chopped:
+ // <p>text 1<span><b>CHOP</b></span>text 2</p>
+ // would produce:
+ // <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
+ // this function will then trim of empty edges and produce:
+ // <p>text 1</p><b>CHOP</b><p>text 2</p>
+ function trim(node) {
+ var i, children = node.childNodes;
+
+ if (node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark')
+ return;
+
+ for (i = children.length - 1; i >= 0; i--)
+ trim(children[i]);
+
+ if (node.nodeType != 9) {
+ // Keep non whitespace text nodes
+ if (node.nodeType == 3 && node.nodeValue.length > 0)
+ return;
+
+ if (node.nodeType == 1) {
+ // If the only child is a bookmark then move it up
+ children = node.childNodes;
+ if (children.length == 1 && children[0] && children[0].nodeType == 1 && children[0].getAttribute('_mce_type') == 'bookmark')
+ node.parentNode.insertBefore(children[0], node);
+
+ // Keep non empty elements or img, hr etc
+ if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName))
+ return;
+ }
+
+ t.remove(node);
+ }
+
+ return node;
+ };
+
+ if (pe && e) {
+ // Get before chunk
+ r.setStart(pe.parentNode, t.nodeIndex(pe));
+ r.setEnd(e.parentNode, t.nodeIndex(e));
+ bef = r.extractContents();
+
+ // Get after chunk
+ r = t.createRng();
+ r.setStart(e.parentNode, t.nodeIndex(e) + 1);
+ r.setEnd(pe.parentNode, t.nodeIndex(pe) + 1);
+ aft = r.extractContents();
+
+ // Insert before chunk
+ pa = pe.parentNode;
+ pa.insertBefore(trim(bef), pe);
+
+ // Insert middle chunk
+ if (re)
+ pa.replaceChild(re, e);
+ else
+ pa.insertBefore(e, pe);
+
+ // Insert after chunk
+ pa.insertBefore(trim(aft), pe);
+ t.remove(pe);
+
+ return re || e;
+ }
+ },
+
+ bind : function(target, name, func, scope) {
+ var t = this;
+
+ if (!t.events)
+ t.events = new tinymce.dom.EventUtils();
+
+ return t.events.add(target, name, func, scope || this);
+ },
+
+ unbind : function(target, name, func) {
+ var t = this;
+
+ if (!t.events)
+ t.events = new tinymce.dom.EventUtils();
+
+ return t.events.remove(target, name, func);
+ },
+
+
+ _findSib : function(node, selector, name) {
+ var t = this, f = selector;
+
+ if (node) {
+ // If expression make a function of it using is
+ if (is(f, 'string')) {
+ f = function(node) {
+ return t.is(node, selector);
+ };
+ }
+
+ // Loop all siblings
+ for (node = node[name]; node; node = node[name]) {
+ if (f(node))
+ return node;
+ }
+ }
+
+ return null;
+ },
+
+ _isRes : function(c) {
+ // Is live resizble element
+ return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);
+ }
+
+ /*
+ walk : function(n, f, s) {
+ var d = this.doc, w;
+
+ if (d.createTreeWalker) {
+ w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
+
+ while ((n = w.nextNode()) != null)
+ f.call(s || this, n);
+ } else
+ tinymce.walk(n, f, 'childNodes', s);
+ }
+ */
+
+ /*
+ toRGB : function(s) {
+ var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
+
+ if (c) {
+ // #FFF -> #FFFFFF
+ if (!is(c[3]))
+ c[3] = c[2] = c[1];
+
+ return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
+ }
+
+ return s;
+ }
+ */
+ });
+
+ tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
+})(tinymce);
+
+(function(ns) {
+ // Range constructor
+ function Range(dom) {
+ var t = this,
+ doc = dom.doc,
+ EXTRACT = 0,
+ CLONE = 1,
+ DELETE = 2,
+ TRUE = true,
+ FALSE = false,
+ START_OFFSET = 'startOffset',
+ START_CONTAINER = 'startContainer',
+ END_CONTAINER = 'endContainer',
+ END_OFFSET = 'endOffset',
+ extend = tinymce.extend,
+ nodeIndex = dom.nodeIndex;
+
+ extend(t, {
+ // Inital states
+ startContainer : doc,
+ startOffset : 0,
+ endContainer : doc,
+ endOffset : 0,
+ collapsed : TRUE,
+ commonAncestorContainer : doc,
+
+ // Range constants
+ START_TO_START : 0,
+ START_TO_END : 1,
+ END_TO_END : 2,
+ END_TO_START : 3,
+
+ // Public methods
+ setStart : setStart,
+ setEnd : setEnd,
+ setStartBefore : setStartBefore,
+ setStartAfter : setStartAfter,
+ setEndBefore : setEndBefore,
+ setEndAfter : setEndAfter,
+ collapse : collapse,
+ selectNode : selectNode,
+ selectNodeContents : selectNodeContents,
+ compareBoundaryPoints : compareBoundaryPoints,
+ deleteContents : deleteContents,
+ extractContents : extractContents,
+ cloneContents : cloneContents,
+ insertNode : insertNode,
+ surroundContents : surroundContents,
+ cloneRange : cloneRange
+ });
+
+ function setStart(n, o) {
+ _setEndPoint(TRUE, n, o);
+ };
+
+ function setEnd(n, o) {
+ _setEndPoint(FALSE, n, o);
+ };
+
+ function setStartBefore(n) {
+ setStart(n.parentNode, nodeIndex(n));
+ };
+
+ function setStartAfter(n) {
+ setStart(n.parentNode, nodeIndex(n) + 1);
+ };
+
+ function setEndBefore(n) {
+ setEnd(n.parentNode, nodeIndex(n));
+ };
+
+ function setEndAfter(n) {
+ setEnd(n.parentNode, nodeIndex(n) + 1);
+ };
+
+ function collapse(ts) {
+ if (ts) {
+ t[END_CONTAINER] = t[START_CONTAINER];
+ t[END_OFFSET] = t[START_OFFSET];
+ } else {
+ t[START_CONTAINER] = t[END_CONTAINER];
+ t[START_OFFSET] = t[END_OFFSET];
+ }
+
+ t.collapsed = TRUE;
+ };
+
+ function selectNode(n) {
+ setStartBefore(n);
+ setEndAfter(n);
+ };
+
+ function selectNodeContents(n) {
+ setStart(n, 0);
+ setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
+ };
+
+ function compareBoundaryPoints(h, r) {
+ var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET];
+
+ // Check START_TO_START
+ if (h === 0)
+ return _compareBoundaryPoints(sc, so, sc, so);
+
+ // Check START_TO_END
+ if (h === 1)
+ return _compareBoundaryPoints(sc, so, ec, eo);
+
+ // Check END_TO_END
+ if (h === 2)
+ return _compareBoundaryPoints(ec, eo, ec, eo);
+
+ // Check END_TO_START
+ if (h === 3)
+ return _compareBoundaryPoints(ec, eo, sc, so);
+ };
+
+ function deleteContents() {
+ _traverse(DELETE);
+ };
+
+ function extractContents() {
+ return _traverse(EXTRACT);
+ };
+
+ function cloneContents() {
+ return _traverse(CLONE);
+ };
+
+ function insertNode(n) {
+ var startContainer = this[START_CONTAINER],
+ startOffset = this[START_OFFSET], nn, o;
+
+ // Node is TEXT_NODE or CDATA
+ if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) {
+ if (!startOffset) {
+ // At the start of text
+ startContainer.parentNode.insertBefore(n, startContainer);
+ } else if (startOffset >= startContainer.nodeValue.length) {
+ // At the end of text
+ dom.insertAfter(n, startContainer);
+ } else {
+ // Middle, need to split
+ nn = startContainer.splitText(startOffset);
+ startContainer.parentNode.insertBefore(n, nn);
+ }
+ } else {
+ // Insert element node
+ if (startContainer.childNodes.length > 0)
+ o = startContainer.childNodes[startOffset];
+
+ if (o)
+ startContainer.insertBefore(n, o);
+ else
+ startContainer.appendChild(n);
+ }
+ };
+
+ function surroundContents(n) {
+ var f = t.extractContents();
+
+ t.insertNode(n);
+ n.appendChild(f);
+ t.selectNode(n);
+ };
+
+ function cloneRange() {
+ return extend(new Range(dom), {
+ startContainer : t[START_CONTAINER],
+ startOffset : t[START_OFFSET],
+ endContainer : t[END_CONTAINER],
+ endOffset : t[END_OFFSET],
+ collapsed : t.collapsed,
+ commonAncestorContainer : t.commonAncestorContainer
+ });
+ };
+
+ // Private methods
+
+ function _getSelectedNode(container, offset) {
+ var child;
+
+ if (container.nodeType == 3 /* TEXT_NODE */)
+ return container;
+
+ if (offset < 0)
+ return container;
+
+ child = container.firstChild;
+ while (child && offset > 0) {
+ --offset;
+ child = child.nextSibling;
+ }
+
+ if (child)
+ return child;
+
+ return container;
+ };
+
+ function _isCollapsed() {
+ return (t[START_CONTAINER] == t[END_CONTAINER] && t[START_OFFSET] == t[END_OFFSET]);
+ };
+
+ function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
+ var c, offsetC, n, cmnRoot, childA, childB;
+
+ // In the first case the boundary-points have the same container. A is before B
+ // if its offset is less than the offset of B, A is equal to B if its offset is
+ // equal to the offset of B, and A is after B if its offset is greater than the
+ // offset of B.
+ if (containerA == containerB) {
+ if (offsetA == offsetB)
+ return 0; // equal
+
+ if (offsetA < offsetB)
+ return -1; // before
+
+ return 1; // after
+ }
+
+ // In the second case a child node C of the container of A is an ancestor
+ // container of B. In this case, A is before B if the offset of A is less than or
+ // equal to the index of the child node C and A is after B otherwise.
+ c = containerB;
+ while (c && c.parentNode != containerA)
+ c = c.parentNode;
+
+ if (c) {
+ offsetC = 0;
+ n = containerA.firstChild;
+
+ while (n != c && offsetC < offsetA) {
+ offsetC++;
+ n = n.nextSibling;
+ }
+
+ if (offsetA <= offsetC)
+ return -1; // before
+
+ return 1; // after
+ }
+
+ // In the third case a child node C of the container of B is an ancestor container
+ // of A. In this case, A is before B if the index of the child node C is less than
+ // the offset of B and A is after B otherwise.
+ c = containerA;
+ while (c && c.parentNode != containerB) {
+ c = c.parentNode;
+ }
+
+ if (c) {
+ offsetC = 0;
+ n = containerB.firstChild;
+
+ while (n != c && offsetC < offsetB) {
+ offsetC++;
+ n = n.nextSibling;
+ }
+
+ if (offsetC < offsetB)
+ return -1; // before
+
+ return 1; // after
+ }
+
+ // In the fourth case, none of three other cases hold: the containers of A and B
+ // are siblings or descendants of sibling nodes. In this case, A is before B if
+ // the container of A is before the container of B in a pre-order traversal of the
+ // Ranges' context tree and A is after B otherwise.
+ cmnRoot = dom.findCommonAncestor(containerA, containerB);
+ childA = containerA;
+
+ while (childA && childA.parentNode != cmnRoot)
+ childA = childA.parentNode;
+
+ if (!childA)
+ childA = cmnRoot;
+
+ childB = containerB;
+ while (childB && childB.parentNode != cmnRoot)
+ childB = childB.parentNode;
+
+ if (!childB)
+ childB = cmnRoot;
+
+ if (childA == childB)
+ return 0; // equal
+
+ n = cmnRoot.firstChild;
+ while (n) {
+ if (n == childA)
+ return -1; // before
+
+ if (n == childB)
+ return 1; // after
+
+ n = n.nextSibling;
+ }
+ };
+
+ function _setEndPoint(st, n, o) {
+ var ec, sc;
+
+ if (st) {
+ t[START_CONTAINER] = n;
+ t[START_OFFSET] = o;
+ } else {
+ t[END_CONTAINER] = n;
+ t[END_OFFSET] = o;
+ }
+
+ // If one boundary-point of a Range is set to have a root container
+ // other than the current one for the Range, the Range is collapsed to
+ // the new position. This enforces the restriction that both boundary-
+ // points of a Range must have the same root container.
+ ec = t[END_CONTAINER];
+ while (ec.parentNode)
+ ec = ec.parentNode;
+
+ sc = t[START_CONTAINER];
+ while (sc.parentNode)
+ sc = sc.parentNode;
+
+ if (sc == ec) {
+ // The start position of a Range is guaranteed to never be after the
+ // end position. To enforce this restriction, if the start is set to
+ // be at a position after the end, the Range is collapsed to that
+ // position.
+ if (_compareBoundaryPoints(t[START_CONTAINER], t[START_OFFSET], t[END_CONTAINER], t[END_OFFSET]) > 0)
+ t.collapse(st);
+ } else
+ t.collapse(st);
+
+ t.collapsed = _isCollapsed();
+ t.commonAncestorContainer = dom.findCommonAncestor(t[START_CONTAINER], t[END_CONTAINER]);
+ };
+
+ function _traverse(how) {
+ var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
+
+ if (t[START_CONTAINER] == t[END_CONTAINER])
+ return _traverseSameContainer(how);
+
+ for (c = t[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+ if (p == t[START_CONTAINER])
+ return _traverseCommonStartContainer(c, how);
+
+ ++endContainerDepth;
+ }
+
+ for (c = t[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
+ if (p == t[END_CONTAINER])
+ return _traverseCommonEndContainer(c, how);
+
+ ++startContainerDepth;
+ }
+
+ depthDiff = startContainerDepth - endContainerDepth;
+
+ startNode = t[START_CONTAINER];
+ while (depthDiff > 0) {
+ startNode = startNode.parentNode;
+ depthDiff--;
+ }
+
+ endNode = t[END_CONTAINER];
+ while (depthDiff < 0) {
+ endNode = endNode.parentNode;
+ depthDiff++;
+ }
+
+ // ascend the ancestor hierarchy until we have a common parent.
+ for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
+ startNode = sp;
+ endNode = ep;
+ }
+
+ return _traverseCommonAncestors(startNode, endNode, how);
+ };
+
+ function _traverseSameContainer(how) {
+ var frag, s, sub, n, cnt, sibling, xferNode;
+
+ if (how != DELETE)
+ frag = doc.createDocumentFragment();
+
+ // If selection is empty, just return the fragment
+ if (t[START_OFFSET] == t[END_OFFSET])
+ return frag;
+
+ // Text node needs special case handling
+ if (t[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
+ // get the substring
+ s = t[START_CONTAINER].nodeValue;
+ sub = s.substring(t[START_OFFSET], t[END_OFFSET]);
+
+ // set the original text node to its new value
+ if (how != CLONE) {
+ t[START_CONTAINER].deleteData(t[START_OFFSET], t[END_OFFSET] - t[START_OFFSET]);
+
+ // Nothing is partially selected, so collapse to start point
+ t.collapse(TRUE);
+ }
+
+ if (how == DELETE)
+ return;
+
+ frag.appendChild(doc.createTextNode(sub));
+ return frag;
+ }
+
+ // Copy nodes between the start/end offsets.
+ n = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]);
+ cnt = t[END_OFFSET] - t[START_OFFSET];
+
+ while (cnt > 0) {
+ sibling = n.nextSibling;
+ xferNode = _traverseFullySelected(n, how);
+
+ if (frag)
+ frag.appendChild( xferNode );
+
+ --cnt;
+ n = sibling;
+ }
+
+ // Nothing is partially selected, so collapse to start point
+ if (how != CLONE)
+ t.collapse(TRUE);
+
+ return frag;
+ };
+
+ function _traverseCommonStartContainer(endAncestor, how) {
+ var frag, n, endIdx, cnt, sibling, xferNode;
+
+ if (how != DELETE)
+ frag = doc.createDocumentFragment();
+
+ n = _traverseRightBoundary(endAncestor, how);
+
+ if (frag)
+ frag.appendChild(n);
+
+ endIdx = nodeIndex(endAncestor);
+ cnt = endIdx - t[START_OFFSET];
+
+ if (cnt <= 0) {
+ // Collapse to just before the endAncestor, which
+ // is partially selected.
+ if (how != CLONE) {
+ t.setEndBefore(endAncestor);
+ t.collapse(FALSE);
+ }
+
+ return frag;
+ }
+
+ n = endAncestor.previousSibling;
+ while (cnt > 0) {
+ sibling = n.previousSibling;
+ xferNode = _traverseFullySelected(n, how);
+
+ if (frag)
+ frag.insertBefore(xferNode, frag.firstChild);
+
+ --cnt;
+ n = sibling;
+ }
+
+ // Collapse to just before the endAncestor, which
+ // is partially selected.
+ if (how != CLONE) {
+ t.setEndBefore(endAncestor);
+ t.collapse(FALSE);
+ }
+
+ return frag;
+ };
+
+ function _traverseCommonEndContainer(startAncestor, how) {
+ var frag, startIdx, n, cnt, sibling, xferNode;
+
+ if (how != DELETE)
+ frag = doc.createDocumentFragment();
+
+ n = _traverseLeftBoundary(startAncestor, how);
+ if (frag)
+ frag.appendChild(n);
+
+ startIdx = nodeIndex(startAncestor);
+ ++startIdx; // Because we already traversed it....
+
+ cnt = t[END_OFFSET] - startIdx;
+ n = startAncestor.nextSibling;
+ while (cnt > 0) {
+ sibling = n.nextSibling;
+ xferNode = _traverseFullySelected(n, how);
+
+ if (frag)
+ frag.appendChild(xferNode);
+
+ --cnt;
+ n = sibling;
+ }
+
+ if (how != CLONE) {
+ t.setStartAfter(startAncestor);
+ t.collapse(TRUE);
+ }
+
+ return frag;
+ };
+
+ function _traverseCommonAncestors(startAncestor, endAncestor, how) {
+ var n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling;
+
+ if (how != DELETE)
+ frag = doc.createDocumentFragment();
+
+ n = _traverseLeftBoundary(startAncestor, how);
+ if (frag)
+ frag.appendChild(n);
+
+ commonParent = startAncestor.parentNode;
+ startOffset = nodeIndex(startAncestor);
+ endOffset = nodeIndex(endAncestor);
+ ++startOffset;
+
+ cnt = endOffset - startOffset;
+ sibling = startAncestor.nextSibling;
+
+ while (cnt > 0) {
+ nextSibling = sibling.nextSibling;
+ n = _traverseFullySelected(sibling, how);
+
+ if (frag)
+ frag.appendChild(n);
+
+ sibling = nextSibling;
+ --cnt;
+ }
+
+ n = _traverseRightBoundary(endAncestor, how);
+
+ if (frag)
+ frag.appendChild(n);
+
+ if (how != CLONE) {
+ t.setStartAfter(startAncestor);
+ t.collapse(TRUE);
+ }
+
+ return frag;
+ };
+
+ function _traverseRightBoundary(root, how) {
+ var next = _getSelectedNode(t[END_CONTAINER], t[END_OFFSET] - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != t[END_CONTAINER];
+
+ if (next == root)
+ return _traverseNode(next, isFullySelected, FALSE, how);
+
+ parent = next.parentNode;
+ clonedParent = _traverseNode(parent, FALSE, FALSE, how);
+
+ while (parent) {
+ while (next) {
+ prevSibling = next.previousSibling;
+ clonedChild = _traverseNode(next, isFullySelected, FALSE, how);
+
+ if (how != DELETE)
+ clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
+
+ isFullySelected = TRUE;
+ next = prevSibling;
+ }
+
+ if (parent == root)
+ return clonedParent;
+
+ next = parent.previousSibling;
+ parent = parent.parentNode;
+
+ clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how);
+
+ if (how != DELETE)
+ clonedGrandParent.appendChild(clonedParent);
+
+ clonedParent = clonedGrandParent;
+ }
+ };
+
+ function _traverseLeftBoundary(root, how) {
+ var next = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]), isFullySelected = next != t[START_CONTAINER], parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
+
+ if (next == root)
+ return _traverseNode(next, isFullySelected, TRUE, how);
+
+ parent = next.parentNode;
+ clonedParent = _traverseNode(parent, FALSE, TRUE, how);
+
+ while (parent) {
+ while (next) {
+ nextSibling = next.nextSibling;
+ clonedChild = _traverseNode(next, isFullySelected, TRUE, how);
+
+ if (how != DELETE)
+ clonedParent.appendChild(clonedChild);
+
+ isFullySelected = TRUE;
+ next = nextSibling;
+ }
+
+ if (parent == root)
+ return clonedParent;
+
+ next = parent.nextSibling;
+ parent = parent.parentNode;
+
+ clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how);
+
+ if (how != DELETE)
+ clonedGrandParent.appendChild(clonedParent);
+
+ clonedParent = clonedGrandParent;
+ }
+ };
+
+ function _traverseNode(n, isFullySelected, isLeft, how) {
+ var txtValue, newNodeValue, oldNodeValue, offset, newNode;
+
+ if (isFullySelected)
+ return _traverseFullySelected(n, how);
+
+ if (n.nodeType == 3 /* TEXT_NODE */) {
+ txtValue = n.nodeValue;
+
+ if (isLeft) {
+ offset = t[START_OFFSET];
+ newNodeValue = txtValue.substring(offset);
+ oldNodeValue = txtValue.substring(0, offset);
+ } else {
+ offset = t[END_OFFSET];
+ newNodeValue = txtValue.substring(0, offset);
+ oldNodeValue = txtValue.substring(offset);
+ }
+
+ if (how != CLONE)
+ n.nodeValue = oldNodeValue;
+
+ if (how == DELETE)
+ return;
+
+ newNode = n.cloneNode(FALSE);
+ newNode.nodeValue = newNodeValue;
+
+ return newNode;
+ }
+
+ if (how == DELETE)
+ return;
+
+ return n.cloneNode(FALSE);
+ };
+
+ function _traverseFullySelected(n, how) {
+ if (how != DELETE)
+ return how == CLONE ? n.cloneNode(TRUE) : n;
+
+ n.parentNode.removeChild(n);
+ };
+ };
+
+ ns.Range = Range;
+})(tinymce.dom);
+
+(function() {
+ function Selection(selection) {
+ var t = this, invisibleChar = '\uFEFF', range, lastIERng, dom = selection.dom, TRUE = true, FALSE = false;
+
+ // Returns a W3C DOM compatible range object by using the IE Range API
+ function getRange() {
+ var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed;
+
+ // If selection is outside the current document just return an empty range
+ element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
+ if (element.ownerDocument != dom.doc)
+ return domRange;
+
+ // Handle control selection or text selection of a image
+ if (ieRange.item || !element.hasChildNodes()) {
+ domRange.setStart(element.parentNode, dom.nodeIndex(element));
+ domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
+
+ return domRange;
+ }
+
+ collapsed = selection.isCollapsed();
+
+ function findEndPoint(start) {
+ var marker, container, offset, nodes, startIndex = 0, endIndex, index, parent, checkRng, position;
+
+ // Setup temp range and collapse it
+ checkRng = ieRange.duplicate();
+ checkRng.collapse(start);
+
+ // Create marker and insert it at the end of the endpoints parent
+ marker = dom.create('a');
+ parent = checkRng.parentElement();
+
+ // If parent doesn't have any children then set the container to that parent and the index to 0
+ if (!parent.hasChildNodes()) {
+ domRange[start ? 'setStart' : 'setEnd'](parent, 0);
+ return;
+ }
+
+ parent.appendChild(marker);
+ checkRng.moveToElementText(marker);
+ position = ieRange.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', checkRng);
+ if (position > 0) {
+ // The position is after the end of the parent element.
+ // This is the case where IE puts the caret to the left edge of a table.
+ domRange[start ? 'setStartAfter' : 'setEndAfter'](parent);
+ dom.remove(marker);
+ return;
+ }
+
+ // Setup node list and endIndex
+ nodes = tinymce.grep(parent.childNodes);
+ endIndex = nodes.length - 1;
+ // Perform a binary search for the position
+ while (startIndex <= endIndex) {
+ index = Math.floor((startIndex + endIndex) / 2);
+
+ // Insert marker and check it's position relative to the selection
+ parent.insertBefore(marker, nodes[index]);
+ checkRng.moveToElementText(marker);
+ position = ieRange.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', checkRng);
+ if (position > 0) {
+ // Marker is to the right
+ startIndex = index + 1;
+ } else if (position < 0) {
+ // Marker is to the left
+ endIndex = index - 1;
+ } else {
+ // Maker is where we are
+ found = true;
+ break;
+ }
+ }
+
+ // Setup container
+ container = position > 0 || index == 0 ? marker.nextSibling : marker.previousSibling;
+
+ // Handle element selection
+ if (container.nodeType == 1) {
+ dom.remove(marker);
+
+ // Find offset and container
+ offset = dom.nodeIndex(container);
+ container = container.parentNode;
+
+ // Move the offset if we are setting the end or the position is after an element
+ if (!start || index > 0)
+ offset++;
+ } else {
+ // Calculate offset within text node
+ if (position > 0 || index == 0) {
+ checkRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', ieRange);
+ offset = checkRng.text.length;
+ } else {
+ checkRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', ieRange);
+ offset = container.nodeValue.length - checkRng.text.length;
+ }
+
+ dom.remove(marker);
+ }
+
+ domRange[start ? 'setStart' : 'setEnd'](container, offset);
+ };
+
+ // Find start point
+ findEndPoint(true);
+
+ // Find end point if needed
+ if (!collapsed)
+ findEndPoint();
+
+ return domRange;
+ };
+
+ this.addRange = function(rng) {
+ var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, doc = selection.dom.doc, body = doc.body;
+
+ function setEndPoint(start) {
+ var container, offset, marker, tmpRng, nodes;
+
+ marker = dom.create('a');
+ container = start ? startContainer : endContainer;
+ offset = start ? startOffset : endOffset;
+ tmpRng = ieRng.duplicate();
+
+ if (container == doc) {
+ container = body;
+ offset = 0;
+ }
+
+ if (container.nodeType == 3) {
+ container.parentNode.insertBefore(marker, container);
+ tmpRng.moveToElementText(marker);
+ tmpRng.moveStart('character', offset);
+ dom.remove(marker);
+ ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+ } else {
+ nodes = container.childNodes;
+
+ if (nodes.length) {
+ if (offset >= nodes.length) {
+ dom.insertAfter(marker, nodes[nodes.length - 1]);
+ } else {
+ container.insertBefore(marker, nodes[offset]);
+ }
+
+ tmpRng.moveToElementText(marker);
+ } else {
+ // Empty node selection for example <div>|</div>
+ marker = doc.createTextNode(invisibleChar);
+ container.appendChild(marker);
+ tmpRng.moveToElementText(marker.parentNode);
+ tmpRng.collapse(TRUE);
+ }
+
+ ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
+ dom.remove(marker);
+ }
+ }
+
+ // Destroy cached range
+ this.destroy();
+
+ // Setup some shorter versions
+ startContainer = rng.startContainer;
+ startOffset = rng.startOffset;
+ endContainer = rng.endContainer;
+ endOffset = rng.endOffset;
+ ieRng = body.createTextRange();
+
+ // If single element selection then try making a control selection out of it
+ if (startContainer == endContainer && startContainer.nodeType == 1 && startOffset == endOffset - 1) {
+ if (startOffset == endOffset - 1) {
+ try {
+ ctrlRng = body.createControlRange();
+ ctrlRng.addElement(startContainer.childNodes[startOffset]);
+ ctrlRng.select();
+ ctrlRng.scrollIntoView();
+ return;
+ } catch (ex) {
+ // Ignore
+ }
+ }
+ }
+
+ // Set start/end point of selection
+ setEndPoint(true);
+ setEndPoint();
+
+ // Select the new range and scroll it into view
+ ieRng.select();
+ ieRng.scrollIntoView();
+ };
+
+ this.getRangeAt = function() {
+ // Setup new range if the cache is empty
+ if (!range || !tinymce.dom.RangeUtils.compareRanges(lastIERng, selection.getRng())) {
+ range = getRange();
+
+ // Store away text range for next call
+ lastIERng = selection.getRng();
+ }
+
+ // IE will say that the range is equal then produce an invalid argument exception
+ // if you perform specific operations in a keyup event. For example Ctrl+Del.
+ // This hack will invalidate the range cache if the exception occurs
+ try {
+ range.startContainer.nextSibling;
+ } catch (ex) {
+ range = getRange();
+ lastIERng = null;
+ }
+
+ // Return cached range
+ return range;
+ };
+
+ this.destroy = function() {
+ // Destroy cached range and last IE range to avoid memory leaks
+ lastIERng = range = null;
+ };
+
+ // IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode
+ if (selection.dom.boxModel) {
+ (function() {
+ var doc = dom.doc, body = doc.body, started, startRng;
+
+ // Make HTML element unselectable since we are going to handle selection by hand
+ doc.documentElement.unselectable = TRUE;
+
+ // Return range from point or null if it failed
+ function rngFromPoint(x, y) {
+ var rng = body.createTextRange();
+
+ try {
+ rng.moveToPoint(x, y);
+ } catch (ex) {
+ // IE sometimes throws and exception, so lets just ignore it
+ rng = null;
+ }
+
+ return rng;
+ };
+
+ // Fires while the selection is changing
+ function selectionChange(e) {
+ var pointRng;
+
+ // Check if the button is down or not
+ if (e.button) {
+ // Create range from mouse position
+ pointRng = rngFromPoint(e.x, e.y);
+
+ if (pointRng) {
+ // Check if pointRange is before/after selection then change the endPoint
+ if (pointRng.compareEndPoints('StartToStart', startRng) > 0)
+ pointRng.setEndPoint('StartToStart', startRng);
+ else
+ pointRng.setEndPoint('EndToEnd', startRng);
+
+ pointRng.select();
+ }
+ } else
+ endSelection();
+ }
+
+ // Removes listeners
+ function endSelection() {
+ dom.unbind(doc, 'mouseup', endSelection);
+ dom.unbind(doc, 'mousemove', selectionChange);
+ started = 0;
+ };
+
+ // Detect when user selects outside BODY
+ dom.bind(doc, 'mousedown', function(e) {
+ if (e.target.nodeName === 'HTML') {
+ if (started)
+ endSelection();
+
+ started = 1;
+
+ // Setup start position
+ startRng = rngFromPoint(e.x, e.y);
+ if (startRng) {
+ // Listen for selection change events
+ dom.bind(doc, 'mouseup', endSelection);
+ dom.bind(doc, 'mousemove', selectionChange);
+
+ startRng.select();
+ }
+ }
+ });
+ })();
+ }
+ };
+
+ // Expose the selection object
+ tinymce.dom.TridentSelection = Selection;
+})();
+
+
+(function(tinymce) {
+ // Shorten names
+ var each = tinymce.each, DOM = tinymce.DOM, isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, Event;
+
+ tinymce.create('tinymce.dom.EventUtils', {
+ EventUtils : function() {
+ this.inits = [];
+ this.events = [];
+ },
+
+ add : function(o, n, f, s) {
+ var cb, t = this, el = t.events, r;
+
+ if (n instanceof Array) {
+ r = [];
+
+ each(n, function(n) {
+ r.push(t.add(o, n, f, s));
+ });
+
+ return r;
+ }
+
+ // Handle array
+ if (o && o.hasOwnProperty && o instanceof Array) {
+ r = [];
+
+ each(o, function(o) {
+ o = DOM.get(o);
+ r.push(t.add(o, n, f, s));
+ });
+
+ return r;
+ }
+
+ o = DOM.get(o);
+
+ if (!o)
+ return;
+
+ // Setup event callback
+ cb = function(e) {
+ // Is all events disabled
+ if (t.disabled)
+ return;
+
+ e = e || window.event;
+
+ // Patch in target, preventDefault and stopPropagation in IE it's W3C valid
+ if (e && isIE) {
+ if (!e.target)
+ e.target = e.srcElement;
+
+ // Patch in preventDefault, stopPropagation methods for W3C compatibility
+ tinymce.extend(e, t._stoppers);
+ }
+
+ if (!s)
+ return f(e);
+
+ return f.call(s, e);
+ };
+
+ if (n == 'unload') {
+ tinymce.unloads.unshift({func : cb});
+ return cb;
+ }
+
+ if (n == 'init') {
+ if (t.domLoaded)
+ cb();
+ else
+ t.inits.push(cb);
+
+ return cb;
+ }
+
+ // Store away listener reference
+ el.push({
+ obj : o,
+ name : n,
+ func : f,
+ cfunc : cb,
+ scope : s
+ });
+
+ t._add(o, n, cb);
+
+ return f;
+ },
+
+ remove : function(o, n, f) {
+ var t = this, a = t.events, s = false, r;
+
+ // Handle array
+ if (o && o.hasOwnProperty && o instanceof Array) {
+ r = [];
+
+ each(o, function(o) {
+ o = DOM.get(o);
+ r.push(t.remove(o, n, f));
+ });
+
+ return r;
+ }
+
+ o = DOM.get(o);
+
+ each(a, function(e, i) {
+ if (e.obj == o && e.name == n && (!f || (e.func == f || e.cfunc == f))) {
+ a.splice(i, 1);
+ t._remove(o, n, e.cfunc);
+ s = true;
+ return false;
+ }
+ });
+
+ return s;
+ },
+
+ clear : function(o) {
+ var t = this, a = t.events, i, e;
+
+ if (o) {
+ o = DOM.get(o);
+
+ for (i = a.length - 1; i >= 0; i--) {
+ e = a[i];
+
+ if (e.obj === o) {
+ t._remove(e.obj, e.name, e.cfunc);
+ e.obj = e.cfunc = null;
+ a.splice(i, 1);
+ }
+ }
+ }
+ },
+
+ cancel : function(e) {
+ if (!e)
+ return false;
+
+ this.stop(e);
+
+ return this.prevent(e);
+ },
+
+ stop : function(e) {
+ if (e.stopPropagation)
+ e.stopPropagation();
+ else
+ e.cancelBubble = true;
+
+ return false;
+ },
+
+ prevent : function(e) {
+ if (e.preventDefault)
+ e.preventDefault();
+ else
+ e.returnValue = false;
+
+ return false;
+ },
+
+ destroy : function() {
+ var t = this;
+
+ each(t.events, function(e, i) {
+ t._remove(e.obj, e.name, e.cfunc);
+ e.obj = e.cfunc = null;
+ });
+
+ t.events = [];
+ t = null;
+ },
+
+ _add : function(o, n, f) {
+ if (o.attachEvent)
+ o.attachEvent('on' + n, f);
+ else if (o.addEventListener)
+ o.addEventListener(n, f, false);
+ else
+ o['on' + n] = f;
+ },
+
+ _remove : function(o, n, f) {
+ if (o) {
+ try {
+ if (o.detachEvent)
+ o.detachEvent('on' + n, f);
+ else if (o.removeEventListener)
+ o.removeEventListener(n, f, false);
+ else
+ o['on' + n] = null;
+ } catch (ex) {
+ // Might fail with permission denined on IE so we just ignore that
+ }
+ }
+ },
+
+ _pageInit : function(win) {
+ var t = this;
+
+ // Keep it from running more than once
+ if (t.domLoaded)
+ return;
+
+ t.domLoaded = true;
+
+ each(t.inits, function(c) {
+ c();
+ });
+
+ t.inits = [];
+ },
+
+ _wait : function(win) {
+ var t = this, doc = win.document;
+
+ // No need since the document is already loaded
+ if (win.tinyMCE_GZ && tinyMCE_GZ.loaded) {
+ t.domLoaded = 1;
+ return;
+ }
+
+ // Use IE method
+ if (doc.attachEvent) {
+ doc.attachEvent("onreadystatechange", function() {
+ if (doc.readyState === "complete") {
+ doc.detachEvent("onreadystatechange", arguments.callee);
+ t._pageInit(win);
+ }
+ });
+
+ if (doc.documentElement.doScroll && win == win.top) {
+ (function() {
+ if (t.domLoaded)
+ return;
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ doc.documentElement.doScroll("left");
+ } catch (ex) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+
+ t._pageInit(win);
+ })();
+ }
+ } else if (doc.addEventListener) {
+ t._add(win, 'DOMContentLoaded', function() {
+ t._pageInit(win);
+ });
+ }
+
+ t._add(win, 'load', function() {
+ t._pageInit(win);
+ });
+ },
+
+ _stoppers : {
+ preventDefault : function() {
+ this.returnValue = false;
+ },
+
+ stopPropagation : function() {
+ this.cancelBubble = true;
+ }
+ }
+ });
+
+ Event = tinymce.dom.Event = new tinymce.dom.EventUtils();
+
+ // Dispatch DOM content loaded event for IE and Safari
+ Event._wait(window);
+
+ tinymce.addUnload(function() {
+ Event.destroy();
+ });
+})(tinymce);
+
+(function(tinymce) {
+ tinymce.dom.Element = function(id, settings) {
+ var t = this, dom, el;
+
+ t.settings = settings = settings || {};
+ t.id = id;
+ t.dom = dom = settings.dom || tinymce.DOM;
+
+ // Only IE leaks DOM references, this is a lot faster
+ if (!tinymce.isIE)
+ el = dom.get(t.id);
+
+ tinymce.each(
+ ('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' +
+ 'setAttrib,setAttribs,getAttrib,addClass,removeClass,' +
+ 'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' +
+ 'isHidden,setHTML,get').split(/,/)
+ , function(k) {
+ t[k] = function() {
+ var a = [id], i;
+
+ for (i = 0; i < arguments.length; i++)
+ a.push(arguments[i]);
+
+ a = dom[k].apply(dom, a);
+ t.update(k);
+
+ return a;
+ };
+ });
+
+ tinymce.extend(t, {
+ on : function(n, f, s) {
+ return tinymce.dom.Event.add(t.id, n, f, s);
+ },
+
+ getXY : function() {
+ return {
+ x : parseInt(t.getStyle('left')),
+ y : parseInt(t.getStyle('top'))
+ };
+ },
+
+ getSize : function() {
+ var n = dom.get(t.id);
+
+ return {
+ w : parseInt(t.getStyle('width') || n.clientWidth),
+ h : parseInt(t.getStyle('height') || n.clientHeight)
+ };
+ },
+
+ moveTo : function(x, y) {
+ t.setStyles({left : x, top : y});
+ },
+
+ moveBy : function(x, y) {
+ var p = t.getXY();
+
+ t.moveTo(p.x + x, p.y + y);
+ },
+
+ resizeTo : function(w, h) {
+ t.setStyles({width : w, height : h});
+ },
+
+ resizeBy : function(w, h) {
+ var s = t.getSize();
+
+ t.resizeTo(s.w + w, s.h + h);
+ },
+
+ update : function(k) {
+ var b;
+
+ if (tinymce.isIE6 && settings.blocker) {
+ k = k || '';
+
+ // Ignore getters
+ if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0)
+ return;
+
+ // Remove blocker on remove
+ if (k == 'remove') {
+ dom.remove(t.blocker);
+ return;
+ }
+
+ if (!t.blocker) {
+ t.blocker = dom.uniqueId();
+ b = dom.add(settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'});
+ dom.setStyle(b, 'opacity', 0);
+ } else
+ b = dom.get(t.blocker);
+
+ dom.setStyles(b, {
+ left : t.getStyle('left', 1),
+ top : t.getStyle('top', 1),
+ width : t.getStyle('width', 1),
+ height : t.getStyle('height', 1),
+ display : t.getStyle('display', 1),
+ zIndex : parseInt(t.getStyle('zIndex', 1) || 0) - 1
+ });
+ }
+ }
+ });
+ };
+})(tinymce);
+
+(function(tinymce) {
+ function trimNl(s) {
+ return s.replace(/[\n\r]+/g, '');
+ };
+
+ // Shorten names
+ var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each;
+
+ tinymce.create('tinymce.dom.Selection', {
+ Selection : function(dom, win, serializer) {
+ var t = this;
+
+ t.dom = dom;
+ t.win = win;
+ t.serializer = serializer;
+
+ // Add events
+ each([
+ 'onBeforeSetContent',
+ 'onBeforeGetContent',
+ 'onSetContent',
+ 'onGetContent'
+ ], function(e) {
+ t[e] = new tinymce.util.Dispatcher(t);
+ });
+
+ // No W3C Range support
+ if (!t.win.getSelection)
+ t.tridentSel = new tinymce.dom.TridentSelection(t);
+
+ // Prevent leaks
+ tinymce.addUnload(t.destroy, t);
+ },
+
+ getContent : function(s) {
+ var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;
+
+ s = s || {};
+ wb = wa = '';
+ s.get = true;
+ s.format = s.format || 'html';
+ t.onBeforeGetContent.dispatch(t, s);
+
+ if (s.format == 'text')
+ return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : ''));
+
+ if (r.cloneContents) {
+ n = r.cloneContents();
+
+ if (n)
+ e.appendChild(n);
+ } else if (is(r.item) || is(r.htmlText))
+ e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
+ else
+ e.innerHTML = r.toString();
+
+ // Keep whitespace before and after
+ if (/^\s/.test(e.innerHTML))
+ wb = ' ';
+
+ if (/\s+$/.test(e.innerHTML))
+ wa = ' ';
+
+ s.getInner = true;
+
+ s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
+ t.onGetContent.dispatch(t, s);
+
+ return s.content;
+ },
+
+ setContent : function(h, s) {
+ var t = this, r = t.getRng(), c, d = t.win.document;
+
+ s = s || {format : 'html'};
+ s.set = true;
+ h = s.content = t.dom.processHTML(h);
+
+ // Dispatch before set content event
+ t.onBeforeSetContent.dispatch(t, s);
+ h = s.content;
+
+ if (r.insertNode) {
+ // Make caret marker since insertNode places the caret in the beginning of text after insert
+ h += '<span id="__caret">_</span>';
+
+ // Delete and insert new node
+
+ if (r.startContainer == d && r.endContainer == d) {
+ // WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
+ d.body.innerHTML = h;
+ } else {
+ r.deleteContents();
+ if (d.body.childNodes.length == 0) {
+ d.body.innerHTML = h;
+ } else {
+ r.insertNode(r.createContextualFragment(h));
+ }
+ }
+
+ // Move to caret marker
+ c = t.dom.get('__caret');
+ // Make sure we wrap it compleatly, Opera fails with a simple select call
+ r = d.createRange();
+ r.setStartBefore(c);
+ r.setEndBefore(c);
+ t.setRng(r);
+
+ // Remove the caret position
+ t.dom.remove('__caret');
+ } else {
+ if (r.item) {
+ // Delete content and get caret text selection
+ d.execCommand('Delete', false, null);
+ r = t.getRng();
+ }
+
+ r.pasteHTML(h);
+ }
+
+ // Dispatch set content event
+ t.onSetContent.dispatch(t, s);
+ },
+
+ getStart : function() {
+ var rng = this.getRng(), startElement, parentElement, checkRng, node;
+
+ if (rng.duplicate || rng.item) {
+ // Control selection, return first item
+ if (rng.item)
+ return rng.item(0);
+
+ // Get start element
+ checkRng = rng.duplicate();
+ checkRng.collapse(1);
+ startElement = checkRng.parentElement();
+
+ // Check if range parent is inside the start element, then return the inner parent element
+ // This will fix issues when a single element is selected, IE would otherwise return the wrong start element
+ parentElement = node = rng.parentElement();
+ while (node = node.parentNode) {
+ if (node == startElement) {
+ startElement = parentElement;
+ break;
+ }
+ }
+
+ // If start element is body element try to move to the first child if it exists
+ if (startElement && startElement.nodeName == 'BODY')
+ return startElement.firstChild || startElement;
+
+ return startElement;
+ } else {
+ startElement = rng.startContainer;
+
+ if (startElement.nodeType == 1 && startElement.hasChildNodes())
+ startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
+
+ if (startElement && startElement.nodeType == 3)
+ return startElement.parentNode;
+
+ return startElement;
+ }
+ },
+
+ getEnd : function() {
+ var t = this, r = t.getRng(), e, eo;
+
+ if (r.duplicate || r.item) {
+ if (r.item)
+ return r.item(0);
+
+ r = r.duplicate();
+ r.collapse(0);
+ e = r.parentElement();
+
+ if (e && e.nodeName == 'BODY')
+ return e.lastChild || e;
+
+ return e;
+ } else {
+ e = r.endContainer;
+ eo = r.endOffset;
+
+ if (e.nodeType == 1 && e.hasChildNodes())
+ e = e.childNodes[eo > 0 ? eo - 1 : eo];
+
+ if (e && e.nodeType == 3)
+ return e.parentNode;
+
+ return e;
+ }
+ },
+
+ getBookmark : function(type, normalized) {
+ var t = this, dom = t.dom, rng, rng2, id, collapsed, name, element, index, chr = '\uFEFF', styles;
+
+ function findIndex(name, element) {
+ var index = 0;
+
+ each(dom.select(name), function(node, i) {
+ if (node == element)
+ index = i;
+ });
+
+ return index;
+ };
+
+ if (type == 2) {
+ function getLocation() {
+ var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};
+
+ function getPoint(rng, start) {
+ var container = rng[start ? 'startContainer' : 'endContainer'],
+ offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
+
+ if (container.nodeType == 3) {
+ if (normalized) {
+ for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)
+ offset += node.nodeValue.length;
+ }
+
+ point.push(offset);
+ } else {
+ childNodes = container.childNodes;
+
+ if (offset >= childNodes.length && childNodes.length) {
+ after = 1;
+ offset = Math.max(0, childNodes.length - 1);
+ }
+
+ point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);
+ }
+
+ for (; container && container != root; container = container.parentNode)
+ point.push(t.dom.nodeIndex(container, normalized));
+
+ return point;
+ };
+
+ bookmark.start = getPoint(rng, true);
+
+ if (!t.isCollapsed())
+ bookmark.end = getPoint(rng);
+
+ return bookmark;
+ };
+
+ return getLocation();
+ }
+
+ // Handle simple range
+ if (type)
+ return {rng : t.getRng()};
+
+ rng = t.getRng();
+ id = dom.uniqueId();
+ collapsed = tinyMCE.activeEditor.selection.isCollapsed();
+ styles = 'overflow:hidden;line-height:0px';
+
+ // Explorer method
+ if (rng.duplicate || rng.item) {
+ // Text selection
+ if (!rng.item) {
+ rng2 = rng.duplicate();
+
+ // Insert start marker
+ rng.collapse();
+ rng.pasteHTML('<span _mce_type="bookmark" id="' + id + '_start" style="' + styles + '">' + chr + '</span>');
+
+ // Insert end marker
+ if (!collapsed) {
+ rng2.collapse(false);
+ rng2.pasteHTML('<span _mce_type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
+ }
+ } else {
+ // Control selection
+ element = rng.item(0);
+ name = element.nodeName;
+
+ return {name : name, index : findIndex(name, element)};
+ }
+ } else {
+ element = t.getNode();
+ name = element.nodeName;
+ if (name == 'IMG')
+ return {name : name, index : findIndex(name, element)};
+
+ // W3C method
+ rng2 = rng.cloneRange();
+
+ // Insert end marker
+ if (!collapsed) {
+ rng2.collapse(false);
+ rng2.insertNode(dom.create('span', {_mce_type : "bookmark", id : id + '_end', style : styles}, chr));
+ }
+
+ rng.collapse(true);
+ rng.insertNode(dom.create('span', {_mce_type : "bookmark", id : id + '_start', style : styles}, chr));
+ }
+
+ t.moveToBookmark({id : id, keep : 1});
+
+ return {id : id};
+ },
+
+ moveToBookmark : function(bookmark) {
+ var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset;
+
+ // Clear selection cache
+ if (t.tridentSel)
+ t.tridentSel.destroy();
+
+ if (bookmark) {
+ if (bookmark.start) {
+ rng = dom.createRng();
+ root = dom.getRoot();
+
+ function setEndPoint(start) {
+ var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
+
+ if (point) {
+ // Find container node
+ for (node = root, i = point.length - 1; i >= 1; i--) {
+ children = node.childNodes;
+
+ if (children.length)
+ node = children[point[i]];
+ }
+
+ // Set offset within container node
+ if (start)
+ rng.setStart(node, point[0]);
+ else
+ rng.setEnd(node, point[0]);
+ }
+ };
+
+ setEndPoint(true);
+ setEndPoint();
+
+ t.setRng(rng);
+ } else if (bookmark.id) {
+ function restoreEndPoint(suffix) {
+ var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
+
+ if (marker) {
+ node = marker.parentNode;
+
+ if (suffix == 'start') {
+ if (!keep) {
+ idx = dom.nodeIndex(marker);
+ } else {
+ node = marker.firstChild;
+ idx = 1;
+ }
+
+ startContainer = endContainer = node;
+ startOffset = endOffset = idx;
+ } else {
+ if (!keep) {
+ idx = dom.nodeIndex(marker);
+ } else {
+ node = marker.firstChild;
+ idx = 1;
+ }
+
+ endContainer = node;
+ endOffset = idx;
+ }
+
+ if (!keep) {
+ prev = marker.previousSibling;
+ next = marker.nextSibling;
+
+ // Remove all marker text nodes
+ each(tinymce.grep(marker.childNodes), function(node) {
+ if (node.nodeType == 3)
+ node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
+ });
+
+ // Remove marker but keep children if for example contents where inserted into the marker
+ // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature
+ while (marker = dom.get(bookmark.id + '_' + suffix))
+ dom.remove(marker, 1);
+
+ // If siblings are text nodes then merge them
+ if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3) {
+ idx = prev.nodeValue.length;
+ prev.appendData(next.nodeValue);
+ dom.remove(next);
+
+ if (suffix == 'start') {
+ startContainer = endContainer = prev;
+ startOffset = endOffset = idx;
+ } else {
+ endContainer = prev;
+ endOffset = idx;
+ }
+ }
+ }
+ }
+ };
+
+ function addBogus(node) {
+ // Adds a bogus BR element for empty block elements
+ // on non IE browsers just to have a place to put the caret
+ if (!isIE && dom.isBlock(node) && !node.innerHTML)
+ node.innerHTML = '<br _mce_bogus="1" />';
+
+ return node;
+ };
+
+ // Restore start/end points
+ restoreEndPoint('start');
+ restoreEndPoint('end');
+
+ rng = dom.createRng();
+ rng.setStart(addBogus(startContainer), startOffset);
+ rng.setEnd(addBogus(endContainer), endOffset);
+ t.setRng(rng);
+ } else if (bookmark.name) {
+ t.select(dom.select(bookmark.name)[bookmark.index]);
+ } else if (bookmark.rng)
+ t.setRng(bookmark.rng);
+ }
+ },
+
+ select : function(node, content) {
+ var t = this, dom = t.dom, rng = dom.createRng(), idx;
+
+ idx = dom.nodeIndex(node);
+ rng.setStart(node.parentNode, idx);
+ rng.setEnd(node.parentNode, idx + 1);
+
+ // Find first/last text node or BR element
+ if (content) {
+ function setPoint(node, start) {
+ var walker = new tinymce.dom.TreeWalker(node, node);
+
+ do {
+ // Text node
+ if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {
+ if (start)
+ rng.setStart(node, 0);
+ else
+ rng.setEnd(node, node.nodeValue.length);
+
+ return;
+ }
+
+ // BR element
+ if (node.nodeName == 'BR') {
+ if (start)
+ rng.setStartBefore(node);
+ else
+ rng.setEndBefore(node);
+
+ return;
+ }
+ } while (node = (start ? walker.next() : walker.prev()));
+ };
+
+ setPoint(node, 1);
+ setPoint(node);
+ }
+
+ t.setRng(rng);
+
+ return node;
+ },
+
+ isCollapsed : function() {
+ var t = this, r = t.getRng(), s = t.getSel();
+
+ if (!r || r.item)
+ return false;
+
+ if (r.compareEndPoints)
+ return r.compareEndPoints('StartToEnd', r) === 0;
+
+ return !s || r.collapsed;
+ },
+
+ collapse : function(b) {
+ var t = this, r = t.getRng(), n;
+
+ // Control range on IE
+ if (r.item) {
+ n = r.item(0);
+ r = this.win.document.body.createTextRange();
+ r.moveToElementText(n);
+ }
+
+ r.collapse(!!b);
+ t.setRng(r);
+ },
+
+ getSel : function() {
+ var t = this, w = this.win;
+
+ return w.getSelection ? w.getSelection() : w.document.selection;
+ },
+
+ getRng : function(w3c) {
+ var t = this, s, r;
+
+ // Found tridentSel object then we need to use that one
+ if (w3c && t.tridentSel)
+ return t.tridentSel.getRangeAt(0);
+
+ try {
+ if (s = t.getSel())
+ r = s.rangeCount > 0 ? s.getRangeAt(0) : (s.createRange ? s.createRange() : t.win.document.createRange());
+ } catch (ex) {
+ // IE throws unspecified error here if TinyMCE is placed in a frame/iframe
+ }
+
+ // No range found then create an empty one
+ // This can occur when the editor is placed in a hidden container element on Gecko
+ // Or on IE when there was an exception
+ if (!r)
+ r = t.win.document.createRange ? t.win.document.createRange() : t.win.document.body.createTextRange();
+
+ if (t.selectedRange && t.explicitRange) {
+ if (r.compareBoundaryPoints(r.START_TO_START, t.selectedRange) === 0 && r.compareBoundaryPoints(r.END_TO_END, t.selectedRange) === 0) {
+ // Safari, Opera and Chrome only ever select text which causes the range to change.
+ // This lets us use the originally set range if the selection hasn't been changed by the user.
+ r = t.explicitRange;
+ } else {
+ t.selectedRange = null;
+ t.explicitRange = null;
+ }
+ }
+ return r;
+ },
+
+ setRng : function(r) {
+ var s, t = this;
+
+ if (!t.tridentSel) {
+ s = t.getSel();
+
+ if (s) {
+ t.explicitRange = r;
+ s.removeAllRanges();
+ s.addRange(r);
+ t.selectedRange = s.getRangeAt(0);
+ }
+ } else {
+ // Is W3C Range
+ if (r.cloneRange) {
+ t.tridentSel.addRange(r);
+ return;
+ }
+
+ // Is IE specific range
+ try {
+ r.select();
+ } catch (ex) {
+ // Needed for some odd IE bug #1843306
+ }
+ }
+ },
+
+ setNode : function(n) {
+ var t = this;
+
+ t.setContent(t.dom.getOuterHTML(n));
+
+ return n;
+ },
+
+ getNode : function() {
+ var t = this, rng = t.getRng(), sel = t.getSel(), elm;
+
+ if (rng.setStart) {
+ // Range maybe lost after the editor is made visible again
+ if (!rng)
+ return t.dom.getRoot();
+
+ elm = rng.commonAncestorContainer;
+
+ // Handle selection a image or other control like element such as anchors
+ if (!rng.collapsed) {
+ if (rng.startContainer == rng.endContainer) {
+ if (rng.startOffset - rng.endOffset < 2) {
+ if (rng.startContainer.hasChildNodes())
+ elm = rng.startContainer.childNodes[rng.startOffset];
+ }
+ }
+
+ // If the anchor node is a element instead of a text node then return this element
+ if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)
+ return sel.anchorNode.childNodes[sel.anchorOffset];
+ }
+
+ if (elm && elm.nodeType == 3)
+ return elm.parentNode;
+
+ return elm;
+ }
+
+ return rng.item ? rng.item(0) : rng.parentElement();
+ },
+
+ getSelectedBlocks : function(st, en) {
+ var t = this, dom = t.dom, sb, eb, n, bl = [];
+
+ sb = dom.getParent(st || t.getStart(), dom.isBlock);
+ eb = dom.getParent(en || t.getEnd(), dom.isBlock);
+
+ if (sb)
+ bl.push(sb);
+
+ if (sb && eb && sb != eb) {
+ n = sb;
+
+ while ((n = n.nextSibling) && n != eb) {
+ if (dom.isBlock(n))
+ bl.push(n);
+ }
+ }
+
+ if (eb && sb != eb)
+ bl.push(eb);
+
+ return bl;
+ },
+
+ destroy : function(s) {
+ var t = this;
+
+ t.win = null;
+
+ if (t.tridentSel)
+ t.tridentSel.destroy();
+
+ // Manual destroy then remove unload handler
+ if (!s)
+ tinymce.removeUnload(t.destroy);
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ tinymce.create('tinymce.dom.XMLWriter', {
+ node : null,
+
+ XMLWriter : function(s) {
+ // Get XML document
+ function getXML() {
+ var i = document.implementation;
+
+ if (!i || !i.createDocument) {
+ // Try IE objects
+ try {return new ActiveXObject('MSXML2.DOMDocument');} catch (ex) {}
+ try {return new ActiveXObject('Microsoft.XmlDom');} catch (ex) {}
+ } else
+ return i.createDocument('', '', null);
+ };
+
+ this.doc = getXML();
+
+ // Since Opera and WebKit doesn't escape > into > we need to do it our self to normalize the output for all browsers
+ this.valid = tinymce.isOpera || tinymce.isWebKit;
+
+ this.reset();
+ },
+
+ reset : function() {
+ var t = this, d = t.doc;
+
+ if (d.firstChild)
+ d.removeChild(d.firstChild);
+
+ t.node = d.appendChild(d.createElement("html"));
+ },
+
+ writeStartElement : function(n) {
+ var t = this;
+
+ t.node = t.node.appendChild(t.doc.createElement(n));
+ },
+
+ writeAttribute : function(n, v) {
+ if (this.valid)
+ v = v.replace(/>/g, '%MCGT%');
+
+ this.node.setAttribute(n, v);
+ },
+
+ writeEndElement : function() {
+ this.node = this.node.parentNode;
+ },
+
+ writeFullEndElement : function() {
+ var t = this, n = t.node;
+
+ n.appendChild(t.doc.createTextNode(""));
+ t.node = n.parentNode;
+ },
+
+ writeText : function(v) {
+ if (this.valid)
+ v = v.replace(/>/g, '%MCGT%');
+
+ this.node.appendChild(this.doc.createTextNode(v));
+ },
+
+ writeCDATA : function(v) {
+ this.node.appendChild(this.doc.createCDATASection(v));
+ },
+
+ writeComment : function(v) {
+ // Fix for bug #2035694
+ if (tinymce.isIE)
+ v = v.replace(/^\-|\-$/g, ' ');
+
+ this.node.appendChild(this.doc.createComment(v.replace(/\-\-/g, ' ')));
+ },
+
+ getContent : function() {
+ var h;
+
+ h = this.doc.xml || new XMLSerializer().serializeToString(this.doc);
+ h = h.replace(/<\?[^?]+\?>|<html>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g, '');
+ h = h.replace(/ ?\/>/g, ' />');
+
+ if (this.valid)
+ h = h.replace(/\%MCGT%/g, '>');
+
+ return h;
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ tinymce.create('tinymce.dom.StringWriter', {
+ str : null,
+ tags : null,
+ count : 0,
+ settings : null,
+ indent : null,
+
+ StringWriter : function(s) {
+ this.settings = tinymce.extend({
+ indent_char : ' ',
+ indentation : 0
+ }, s);
+
+ this.reset();
+ },
+
+ reset : function() {
+ this.indent = '';
+ this.str = "";
+ this.tags = [];
+ this.count = 0;
+ },
+
+ writeStartElement : function(n) {
+ this._writeAttributesEnd();
+ this.writeRaw('<' + n);
+ this.tags.push(n);
+ this.inAttr = true;
+ this.count++;
+ this.elementCount = this.count;
+ },
+
+ writeAttribute : function(n, v) {
+ var t = this;
+
+ t.writeRaw(" " + t.encode(n) + '="' + t.encode(v) + '"');
+ },
+
+ writeEndElement : function() {
+ var n;
+
+ if (this.tags.length > 0) {
+ n = this.tags.pop();
+
+ if (this._writeAttributesEnd(1))
+ this.writeRaw('</' + n + '>');
+
+ if (this.settings.indentation > 0)
+ this.writeRaw('\n');
+ }
+ },
+
+ writeFullEndElement : function() {
+ if (this.tags.length > 0) {
+ this._writeAttributesEnd();
+ this.writeRaw('</' + this.tags.pop() + '>');
+
+ if (this.settings.indentation > 0)
+ this.writeRaw('\n');
+ }
+ },
+
+ writeText : function(v) {
+ this._writeAttributesEnd();
+ this.writeRaw(this.encode(v));
+ this.count++;
+ },
+
+ writeCDATA : function(v) {
+ this._writeAttributesEnd();
+ this.writeRaw('<![CDATA[' + v + ']]>');
+ this.count++;
+ },
+
+ writeComment : function(v) {
+ this._writeAttributesEnd();
+ this.writeRaw('<!-- ' + v + '-->');
+ this.count++;
+ },
+
+ writeRaw : function(v) {
+ this.str += v;
+ },
+
+ encode : function(s) {
+ return s.replace(/[<>&"]/g, function(v) {
+ switch (v) {
+ case '<':
+ return '<';
+
+ case '>':
+ return '>';
+
+ case '&':
+ return '&';
+
+ case '"':
+ return '"';
+ }
+
+ return v;
+ });
+ },
+
+ getContent : function() {
+ return this.str;
+ },
+
+ _writeAttributesEnd : function(s) {
+ if (!this.inAttr)
+ return;
+
+ this.inAttr = false;
+
+ if (s && this.elementCount == this.count) {
+ this.writeRaw(' />');
+ return false;
+ }
+
+ this.writeRaw('>');
+
+ return true;
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ // Shorten names
+ var extend = tinymce.extend, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, isIE = tinymce.isIE, isGecko = tinymce.isGecko;
+
+ function wildcardToRE(s) {
+ return s.replace(/([?+*])/g, '.$1');
+ };
+
+ tinymce.create('tinymce.dom.Serializer', {
+ Serializer : function(s) {
+ var t = this;
+
+ t.key = 0;
+ t.onPreProcess = new Dispatcher(t);
+ t.onPostProcess = new Dispatcher(t);
+
+ try {
+ t.writer = new tinymce.dom.XMLWriter();
+ } catch (ex) {
+ // IE might throw exception if ActiveX is disabled so we then switch to the slightly slower StringWriter
+ t.writer = new tinymce.dom.StringWriter();
+ }
+
+ // Default settings
+ t.settings = s = extend({
+ dom : tinymce.DOM,
+ valid_nodes : 0,
+ node_filter : 0,
+ attr_filter : 0,
+ invalid_attrs : /^(_mce_|_moz_|sizset|sizcache)/,
+ closed : /^(br|hr|input|meta|img|link|param|area)$/,
+ entity_encoding : 'named',
+ entities : '160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro',
+ valid_elements : '*[*]',
+ extended_valid_elements : 0,
+ invalid_elements : 0,
+ fix_table_elements : 1,
+ fix_list_elements : true,
+ fix_content_duplication : true,
+ convert_fonts_to_spans : false,
+ font_size_classes : 0,
+ apply_source_formatting : 0,
+ indent_mode : 'simple',
+ indent_char : '\t',
+ indent_levels : 1,
+ remove_linebreaks : 1,
+ remove_redundant_brs : 1,
+ element_format : 'xhtml'
+ }, s);
+
+ t.dom = s.dom;
+ t.schema = s.schema;
+
+ // Use raw entities if no entities are defined
+ if (s.entity_encoding == 'named' && !s.entities)
+ s.entity_encoding = 'raw';
+
+ if (s.remove_redundant_brs) {
+ t.onPostProcess.add(function(se, o) {
+ // Remove single BR at end of block elements since they get rendered
+ o.content = o.content.replace(/(<br \/>\s*)+<\/(p|h[1-6]|div|li)>/gi, function(a, b, c) {
+ // Check if it's a single element
+ if (/^<br \/>\s*<\//.test(a))
+ return '</' + c + '>';
+
+ return a;
+ });
+ });
+ }
+
+ // Remove XHTML element endings i.e. produce crap :) XHTML is better
+ if (s.element_format == 'html') {
+ t.onPostProcess.add(function(se, o) {
+ o.content = o.content.replace(/<([^>]+) \/>/g, '<$1>');
+ });
+ }
+
+ if (s.fix_list_elements) {
+ t.onPreProcess.add(function(se, o) {
+ var nl, x, a = ['ol', 'ul'], i, n, p, r = /^(OL|UL)$/, np;
+
+ function prevNode(e, n) {
+ var a = n.split(','), i;
+
+ while ((e = e.previousSibling) != null) {
+ for (i=0; i<a.length; i++) {
+ if (e.nodeName == a[i])
+ return e;
+ }
+ }
+
+ return null;
+ };
+
+ for (x=0; x<a.length; x++) {
+ nl = t.dom.select(a[x], o.node);
+
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+ p = n.parentNode;
+
+ if (r.test(p.nodeName)) {
+ np = prevNode(n, 'LI');
+
+ if (!np) {
+ np = t.dom.create('li');
+ np.innerHTML = ' ';
+ np.appendChild(n);
+ p.insertBefore(np, p.firstChild);
+ } else
+ np.appendChild(n);
+ }
+ }
+ }
+ });
+ }
+
+ if (s.fix_table_elements) {
+ t.onPreProcess.add(function(se, o) {
+ // Since Opera will crash if you attach the node to a dynamic document we need to brrowser sniff a specific build
+ // so Opera users with an older version will have to live with less compaible output not much we can do here
+ if (!tinymce.isOpera || opera.buildNumber() >= 1767) {
+ each(t.dom.select('p table', o.node).reverse(), function(n) {
+ var parent = t.dom.getParent(n.parentNode, 'table,p');
+
+ if (parent.nodeName != 'TABLE') {
+ try {
+ t.dom.split(parent, n);
+ } catch (ex) {
+ // IE can sometimes fire an unknown runtime error so we just ignore it
+ }
+ }
+ });
+ }
+ });
+ }
+ },
+
+ setEntities : function(s) {
+ var t = this, a, i, l = {}, v;
+
+ // No need to setup more than once
+ if (t.entityLookup)
+ return;
+
+ // Build regex and lookup array
+ a = s.split(',');
+ for (i = 0; i < a.length; i += 2) {
+ v = a[i];
+
+ // Don't add default & " etc.
+ if (v == 34 || v == 38 || v == 60 || v == 62)
+ continue;
+
+ l[String.fromCharCode(a[i])] = a[i + 1];
+
+ v = parseInt(a[i]).toString(16);
+ }
+
+ t.entityLookup = l;
+ },
+
+ setRules : function(s) {
+ var t = this;
+
+ t._setup();
+ t.rules = {};
+ t.wildRules = [];
+ t.validElements = {};
+
+ return t.addRules(s);
+ },
+
+ addRules : function(s) {
+ var t = this, dr;
+
+ if (!s)
+ return;
+
+ t._setup();
+
+ each(s.split(','), function(s) {
+ var p = s.split(/\[|\]/), tn = p[0].split('/'), ra, at, wat, va = [];
+
+ // Extend with default rules
+ if (dr)
+ at = tinymce.extend([], dr.attribs);
+
+ // Parse attributes
+ if (p.length > 1) {
+ each(p[1].split('|'), function(s) {
+ var ar = {}, i;
+
+ at = at || [];
+
+ // Parse attribute rule
+ s = s.replace(/::/g, '~');
+ s = /^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(s);
+ s[2] = s[2].replace(/~/g, ':');
+
+ // Add required attributes
+ if (s[1] == '!') {
+ ra = ra || [];
+ ra.push(s[2]);
+ }
+
+ // Remove inherited attributes
+ if (s[1] == '-') {
+ for (i = 0; i <at.length; i++) {
+ if (at[i].name == s[2]) {
+ at.splice(i, 1);
+ return;
+ }
+ }
+ }
+
+ switch (s[3]) {
+ // Add default attrib values
+ case '=':
+ ar.defaultVal = s[4] || '';
+ break;
+
+ // Add forced attrib values
+ case ':':
+ ar.forcedVal = s[4];
+ break;
+
+ // Add validation values
+ case '<':
+ ar.validVals = s[4].split('?');
+ break;
+ }
+
+ if (/[*.?]/.test(s[2])) {
+ wat = wat || [];
+ ar.nameRE = new RegExp('^' + wildcardToRE(s[2]) + '$');
+ wat.push(ar);
+ } else {
+ ar.name = s[2];
+ at.push(ar);
+ }
+
+ va.push(s[2]);
+ });
+ }
+
+ // Handle element names
+ each(tn, function(s, i) {
+ var pr = s.charAt(0), x = 1, ru = {};
+
+ // Extend with default rule data
+ if (dr) {
+ if (dr.noEmpty)
+ ru.noEmpty = dr.noEmpty;
+
+ if (dr.fullEnd)
+ ru.fullEnd = dr.fullEnd;
+
+ if (dr.padd)
+ ru.padd = dr.padd;
+ }
+
+ // Handle prefixes
+ switch (pr) {
+ case '-':
+ ru.noEmpty = true;
+ break;
+
+ case '+':
+ ru.fullEnd = true;
+ break;
+
+ case '#':
+ ru.padd = true;
+ break;
+
+ default:
+ x = 0;
+ }
+
+ tn[i] = s = s.substring(x);
+ t.validElements[s] = 1;
+
+ // Add element name or element regex
+ if (/[*.?]/.test(tn[0])) {
+ ru.nameRE = new RegExp('^' + wildcardToRE(tn[0]) + '$');
+ t.wildRules = t.wildRules || {};
+ t.wildRules.push(ru);
+ } else {
+ ru.name = tn[0];
+
+ // Store away default rule
+ if (tn[0] == '@')
+ dr = ru;
+
+ t.rules[s] = ru;
+ }
+
+ ru.attribs = at;
+
+ if (ra)
+ ru.requiredAttribs = ra;
+
+ if (wat) {
+ // Build valid attributes regexp
+ s = '';
+ each(va, function(v) {
+ if (s)
+ s += '|';
+
+ s += '(' + wildcardToRE(v) + ')';
+ });
+ ru.validAttribsRE = new RegExp('^' + s.toLowerCase() + '$');
+ ru.wildAttribs = wat;
+ }
+ });
+ });
+
+ // Build valid elements regexp
+ s = '';
+ each(t.validElements, function(v, k) {
+ if (s)
+ s += '|';
+
+ if (k != '@')
+ s += k;
+ });
+ t.validElementsRE = new RegExp('^(' + wildcardToRE(s.toLowerCase()) + ')$');
+
+ //console.debug(t.validElementsRE.toString());
+ //console.dir(t.rules);
+ //console.dir(t.wildRules);
+ },
+
+ findRule : function(n) {
+ var t = this, rl = t.rules, i, r;
+
+ t._setup();
+
+ // Exact match
+ r = rl[n];
+ if (r)
+ return r;
+
+ // Try wildcards
+ rl = t.wildRules;
+ for (i = 0; i < rl.length; i++) {
+ if (rl[i].nameRE.test(n))
+ return rl[i];
+ }
+
+ return null;
+ },
+
+ findAttribRule : function(ru, n) {
+ var i, wa = ru.wildAttribs;
+
+ for (i = 0; i < wa.length; i++) {
+ if (wa[i].nameRE.test(n))
+ return wa[i];
+ }
+
+ return null;
+ },
+
+ serialize : function(n, o) {
+ var h, t = this, doc, oldDoc, impl, selected;
+
+ t._setup();
+ o = o || {};
+ o.format = o.format || 'html';
+ t.processObj = o;
+
+ // IE looses the selected attribute on option elements so we need to store it
+ // See: http://support.microsoft.com/kb/829907
+ if (isIE) {
+ selected = [];
+ each(n.getElementsByTagName('option'), function(n) {
+ var v = t.dom.getAttrib(n, 'selected');
+
+ selected.push(v ? v : null);
+ });
+ }
+
+ n = n.cloneNode(true);
+
+ // IE looses the selected attribute on option elements so we need to restore it
+ if (isIE) {
+ each(n.getElementsByTagName('option'), function(n, i) {
+ t.dom.setAttrib(n, 'selected', selected[i]);
+ });
+ }
+
+ // Nodes needs to be attached to something in WebKit/Opera
+ // Older builds of Opera crashes if you attach the node to an document created dynamically
+ // and since we can't feature detect a crash we need to sniff the acutal build number
+ // This fix will make DOM ranges and make Sizzle happy!
+ impl = n.ownerDocument.implementation;
+ if (impl.createHTMLDocument && (tinymce.isOpera && opera.buildNumber() >= 1767)) {
+ // Create an empty HTML document
+ doc = impl.createHTMLDocument("");
+
+ // Add the element or it's children if it's a body element to the new document
+ each(n.nodeName == 'BODY' ? n.childNodes : [n], function(node) {
+ doc.body.appendChild(doc.importNode(node, true));
+ });
+
+ // Grab first child or body element for serialization
+ if (n.nodeName != 'BODY')
+ n = doc.body.firstChild;
+ else
+ n = doc.body;
+
+ // set the new document in DOMUtils so createElement etc works
+ oldDoc = t.dom.doc;
+ t.dom.doc = doc;
+ }
+
+ t.key = '' + (parseInt(t.key) + 1);
+
+ // Pre process
+ if (!o.no_events) {
+ o.node = n;
+ t.onPreProcess.dispatch(t, o);
+ }
+
+ // Serialize HTML DOM into a string
+ t.writer.reset();
+ t._info = o;
+ t._serializeNode(n, o.getInner);
+
+ // Post process
+ o.content = t.writer.getContent();
+
+ // Restore the old document if it was changed
+ if (oldDoc)
+ t.dom.doc = oldDoc;
+
+ if (!o.no_events)
+ t.onPostProcess.dispatch(t, o);
+
+ t._postProcess(o);
+ o.node = null;
+
+ return tinymce.trim(o.content);
+ },
+
+ // Internal functions
+
+ _postProcess : function(o) {
+ var t = this, s = t.settings, h = o.content, sc = [], p;
+
+ if (o.format == 'html') {
+ // Protect some elements
+ p = t._protect({
+ content : h,
+ patterns : [
+ {pattern : /(<script[^>]*>)(.*?)(<\/script>)/g},
+ {pattern : /(<noscript[^>]*>)(.*?)(<\/noscript>)/g},
+ {pattern : /(<style[^>]*>)(.*?)(<\/style>)/g},
+ {pattern : /(<pre[^>]*>)(.*?)(<\/pre>)/g, encode : 1},
+ {pattern : /(<!--\[CDATA\[)(.*?)(\]\]-->)/g}
+ ]
+ });
+
+ h = p.content;
+
+ // Entity encode
+ if (s.entity_encoding !== 'raw')
+ h = t._encode(h);
+
+ // Use BR instead of padded P elements inside editor and use <p> </p> outside editor
+/* if (o.set)
+ h = h.replace(/<p>\s+( | |\u00a0|<br \/>)\s+<\/p>/g, '<p><br /></p>');
+ else
+ h = h.replace(/<p>\s+( | |\u00a0|<br \/>)\s+<\/p>/g, '<p>$1</p>');*/
+
+ // Since Gecko and Safari keeps whitespace in the DOM we need to
+ // remove it inorder to match other browsers. But I think Gecko and Safari is right.
+ // This process is only done when getting contents out from the editor.
+ if (!o.set) {
+ // We need to replace paragraph whitespace with an nbsp before indentation to keep the \u00a0 char
+ h = h.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g, s.entity_encoding == 'numeric' ? '<p$1> </p>' : '<p$1> </p>');
+
+ if (s.remove_linebreaks) {
+ h = h.replace(/\r?\n|\r/g, ' ');
+ h = h.replace(/(<[^>]+>)\s+/g, '$1 ');
+ h = h.replace(/\s+(<\/[^>]+>)/g, ' $1');
+ h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g, '<$1 $2>'); // Trim block start
+ h = h.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g, '<$1>'); // Trim block start
+ h = h.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g, '</$1>'); // Trim block end
+ }
+
+ // Simple indentation
+ if (s.apply_source_formatting && s.indent_mode == 'simple') {
+ // Add line breaks before and after block elements
+ h = h.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g, '\n<$1$2$3>\n');
+ h = h.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g, '\n<$1$2>');
+ h = h.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g, '</$1>\n');
+ h = h.replace(/\n\n/g, '\n');
+ }
+ }
+
+ h = t._unprotect(h, p);
+
+ // Restore CDATA sections
+ h = h.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/g, '<![CDATA[$1]]>');
+
+ // Restore the \u00a0 character if raw mode is enabled
+ if (s.entity_encoding == 'raw')
+ h = h.replace(/<p> <\/p>|<p([^>]+)> <\/p>/g, '<p$1>\u00a0</p>');
+
+ // Restore noscript elements
+ h = h.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g, function(v, attribs, text) {
+ return '<noscript' + attribs + '>' + t.dom.decode(text.replace(/<!--|-->/g, '')) + '</noscript>';
+ });
+ }
+
+ o.content = h;
+ },
+
+ _serializeNode : function(n, inner) {
+ var t = this, s = t.settings, w = t.writer, hc, el, cn, i, l, a, at, no, v, nn, ru, ar, iv, closed, keep, type, scopeName;
+
+ if (!s.node_filter || s.node_filter(n)) {
+ switch (n.nodeType) {
+ case 1: // Element
+ if (n.hasAttribute ? n.hasAttribute('_mce_bogus') : n.getAttribute('_mce_bogus'))
+ return;
+
+ iv = keep = false;
+ hc = n.hasChildNodes();
+ nn = n.getAttribute('_mce_name') || n.nodeName.toLowerCase();
+
+ // Get internal type
+ type = n.getAttribute('_mce_type');
+ if (type) {
+ if (!t._info.cleanup) {
+ iv = true;
+ return;
+ } else
+ keep = 1;
+ }
+
+ // Add correct prefix on IE
+ if (isIE) {
+ scopeName = n.scopeName;
+ if (scopeName && scopeName !== 'HTML' && scopeName !== 'html')
+ nn = scopeName + ':' + nn;
+ }
+
+ // Remove mce prefix on IE needed for the abbr element
+ if (nn.indexOf('mce:') === 0)
+ nn = nn.substring(4);
+
+ // Check if valid
+ if (!keep) {
+ if (!t.validElementsRE || !t.validElementsRE.test(nn) || (t.invalidElementsRE && t.invalidElementsRE.test(nn)) || inner) {
+ iv = true;
+ break;
+ }
+ }
+
+ if (isIE) {
+ // Fix IE content duplication (DOM can have multiple copies of the same node)
+ if (s.fix_content_duplication) {
+ if (n._mce_serialized == t.key)
+ return;
+
+ n._mce_serialized = t.key;
+ }
+
+ // IE sometimes adds a / infront of the node name
+ if (nn.charAt(0) == '/')
+ nn = nn.substring(1);
+ } else if (isGecko) {
+ // Ignore br elements
+ if (n.nodeName === 'BR' && n.getAttribute('type') == '_moz')
+ return;
+ }
+
+ // Check if valid child
+ if (s.validate_children) {
+ if (t.elementName && !t.schema.isValid(t.elementName, nn)) {
+ iv = true;
+ break;
+ }
+
+ t.elementName = nn;
+ }
+
+ ru = t.findRule(nn);
+
+ // No valid rule for this element could be found then skip it
+ if (!ru) {
+ iv = true;
+ break;
+ }
+
+ nn = ru.name || nn;
+ closed = s.closed.test(nn);
+
+ // Skip empty nodes or empty node name in IE
+ if ((!hc && ru.noEmpty) || (isIE && !nn)) {
+ iv = true;
+ break;
+ }
+
+ // Check required
+ if (ru.requiredAttribs) {
+ a = ru.requiredAttribs;
+
+ for (i = a.length - 1; i >= 0; i--) {
+ if (this.dom.getAttrib(n, a[i]) !== '')
+ break;
+ }
+
+ // None of the required was there
+ if (i == -1) {
+ iv = true;
+ break;
+ }
+ }
+
+ w.writeStartElement(nn);
+
+ // Add ordered attributes
+ if (ru.attribs) {
+ for (i=0, at = ru.attribs, l = at.length; i<l; i++) {
+ a = at[i];
+ v = t._getAttrib(n, a);
+
+ if (v !== null)
+ w.writeAttribute(a.name, v);
+ }
+ }
+
+ // Add wild attributes
+ if (ru.validAttribsRE) {
+ at = t.dom.getAttribs(n);
+ for (i=at.length-1; i>-1; i--) {
+ no = at[i];
+
+ if (no.specified) {
+ a = no.nodeName.toLowerCase();
+
+ if (s.invalid_attrs.test(a) || !ru.validAttribsRE.test(a))
+ continue;
+
+ ar = t.findAttribRule(ru, a);
+ v = t._getAttrib(n, ar, a);
+
+ if (v !== null)
+ w.writeAttribute(a, v);
+ }
+ }
+ }
+
+ // Keep type attribute
+ if (type && keep)
+ w.writeAttribute('_mce_type', type);
+
+ // Write text from script
+ if (nn === 'script' && tinymce.trim(n.innerHTML)) {
+ w.writeText('// '); // Padd it with a comment so it will parse on older browsers
+ w.writeCDATA(n.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g, '')); // Remove comments and cdata stuctures
+ hc = false;
+ break;
+ }
+
+ // Padd empty nodes with a
+ if (ru.padd) {
+ // If it has only one bogus child, padd it anyway workaround for <td><br /></td> bug
+ if (hc && (cn = n.firstChild) && cn.nodeType === 1 && n.childNodes.length === 1) {
+ if (cn.hasAttribute ? cn.hasAttribute('_mce_bogus') : cn.getAttribute('_mce_bogus'))
+ w.writeText('\u00a0');
+ } else if (!hc)
+ w.writeText('\u00a0'); // No children then padd it
+ }
+
+ break;
+
+ case 3: // Text
+ // Check if valid child
+ if (s.validate_children && t.elementName && !t.schema.isValid(t.elementName, '#text'))
+ return;
+
+ return w.writeText(n.nodeValue);
+
+ case 4: // CDATA
+ return w.writeCDATA(n.nodeValue);
+
+ case 8: // Comment
+ return w.writeComment(n.nodeValue);
+ }
+ } else if (n.nodeType == 1)
+ hc = n.hasChildNodes();
+
+ if (hc && !closed) {
+ cn = n.firstChild;
+
+ while (cn) {
+ t._serializeNode(cn);
+ t.elementName = nn;
+ cn = cn.nextSibling;
+ }
+ }
+
+ // Write element end
+ if (!iv) {
+ if (!closed)
+ w.writeFullEndElement();
+ else
+ w.writeEndElement();
+ }
+ },
+
+ _protect : function(o) {
+ var t = this;
+
+ o.items = o.items || [];
+
+ function enc(s) {
+ return s.replace(/[\r\n\\]/g, function(c) {
+ if (c === '\n')
+ return '\\n';
+ else if (c === '\\')
+ return '\\\\';
+
+ return '\\r';
+ });
+ };
+
+ function dec(s) {
+ return s.replace(/\\[\\rn]/g, function(c) {
+ if (c === '\\n')
+ return '\n';
+ else if (c === '\\\\')
+ return '\\';
+
+ return '\r';
+ });
+ };
+
+ each(o.patterns, function(p) {
+ o.content = dec(enc(o.content).replace(p.pattern, function(x, a, b, c) {
+ b = dec(b);
+
+ if (p.encode)
+ b = t._encode(b);
+
+ o.items.push(b);
+ return a + '<!--mce:' + (o.items.length - 1) + '-->' + c;
+ }));
+ });
+
+ return o;
+ },
+
+ _unprotect : function(h, o) {
+ h = h.replace(/\<!--mce:([0-9]+)--\>/g, function(a, b) {
+ return o.items[parseInt(b)];
+ });
+
+ o.items = [];
+
+ return h;
+ },
+
+ _encode : function(h) {
+ var t = this, s = t.settings, l;
+
+ // Entity encode
+ if (s.entity_encoding !== 'raw') {
+ if (s.entity_encoding.indexOf('named') != -1) {
+ t.setEntities(s.entities);
+ l = t.entityLookup;
+
+ h = h.replace(/[\u007E-\uFFFF]/g, function(a) {
+ var v;
+
+ if (v = l[a])
+ a = '&' + v + ';';
+
+ return a;
+ });
+ }
+
+ if (s.entity_encoding.indexOf('numeric') != -1) {
+ h = h.replace(/[\u007E-\uFFFF]/g, function(a) {
+ return '&#' + a.charCodeAt(0) + ';';
+ });
+ }
+ }
+
+ return h;
+ },
+
+ _setup : function() {
+ var t = this, s = this.settings;
+
+ if (t.done)
+ return;
+
+ t.done = 1;
+
+ t.setRules(s.valid_elements);
+ t.addRules(s.extended_valid_elements);
+
+ if (s.invalid_elements)
+ t.invalidElementsRE = new RegExp('^(' + wildcardToRE(s.invalid_elements.replace(/,/g, '|').toLowerCase()) + ')$');
+
+ if (s.attrib_value_filter)
+ t.attribValueFilter = s.attribValueFilter;
+ },
+
+ _getAttrib : function(n, a, na) {
+ var i, v;
+
+ na = na || a.name;
+
+ if (a.forcedVal && (v = a.forcedVal)) {
+ if (v === '{$uid}')
+ return this.dom.uniqueId();
+
+ return v;
+ }
+
+ v = this.dom.getAttrib(n, na);
+
+ switch (na) {
+ case 'rowspan':
+ case 'colspan':
+ // Whats the point? Remove usless attribute value
+ if (v == '1')
+ v = '';
+
+ break;
+ }
+
+ if (this.attribValueFilter)
+ v = this.attribValueFilter(na, v, n);
+
+ if (a.validVals) {
+ for (i = a.validVals.length - 1; i >= 0; i--) {
+ if (v == a.validVals[i])
+ break;
+ }
+
+ if (i == -1)
+ return null;
+ }
+
+ if (v === '' && typeof(a.defaultVal) != 'undefined') {
+ v = a.defaultVal;
+
+ if (v === '{$uid}')
+ return this.dom.uniqueId();
+
+ return v;
+ } else {
+ // Remove internal mceItemXX classes when content is extracted from editor
+ if (na == 'class' && this.processObj.get)
+ v = v.replace(/\s?mceItem\w+\s?/g, '');
+ }
+
+ if (v === '')
+ return null;
+
+
+ return v;
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ tinymce.dom.ScriptLoader = function(settings) {
+ var QUEUED = 0,
+ LOADING = 1,
+ LOADED = 2,
+ states = {},
+ queue = [],
+ scriptLoadedCallbacks = {},
+ queueLoadedCallbacks = [],
+ loading = 0,
+ undefined;
+
+ function loadScript(url, callback) {
+ var t = this, dom = tinymce.DOM, elm, uri, loc, id;
+
+ // Execute callback when script is loaded
+ function done() {
+ dom.remove(id);
+
+ if (elm)
+ elm.onreadystatechange = elm.onload = elm = null;
+
+ callback();
+ };
+
+ id = dom.uniqueId();
+
+ if (tinymce.isIE6) {
+ uri = new tinymce.util.URI(url);
+ loc = location;
+
+ // If script is from same domain and we
+ // use IE 6 then use XHR since it's more reliable
+ if (uri.host == loc.hostname && uri.port == loc.port && (uri.protocol + ':') == loc.protocol) {
+ tinymce.util.XHR.send({
+ url : tinymce._addVer(uri.getURI()),
+ success : function(content) {
+ // Create new temp script element
+ var script = dom.create('script', {
+ type : 'text/javascript'
+ });
+
+ // Evaluate script in global scope
+ script.text = content;
+ document.getElementsByTagName('head')[0].appendChild(script);
+ dom.remove(script);
+
+ done();
+ }
+ });
+
+ return;
+ }
+ }
+
+ // Create new script element
+ elm = dom.create('script', {
+ id : id,
+ type : 'text/javascript',
+ src : tinymce._addVer(url)
+ });
+
+ // Add onload and readystate listeners
+ elm.onload = done;
+ elm.onreadystatechange = function() {
+ var state = elm.readyState;
+
+ // Loaded state is passed on IE 6 however there
+ // are known issues with this method but we can't use
+ // XHR in a cross domain loading
+ if (state == 'complete' || state == 'loaded')
+ done();
+ };
+
+ // Most browsers support this feature so we report errors
+ // for those at least to help users track their missing plugins etc
+ // todo: Removed since it produced error if the document is unloaded by navigating away, re-add it as an option
+ /*elm.onerror = function() {
+ alert('Failed to load: ' + url);
+ };*/
+
+ // Add script to document
+ (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
+ };
+
+ this.isDone = function(url) {
+ return states[url] == LOADED;
+ };
+
+ this.markDone = function(url) {
+ states[url] = LOADED;
+ };
+
+ this.add = this.load = function(url, callback, scope) {
+ var item, state = states[url];
+
+ // Add url to load queue
+ if (state == undefined) {
+ queue.push(url);
+ states[url] = QUEUED;
+ }
+
+ if (callback) {
+ // Store away callback for later execution
+ if (!scriptLoadedCallbacks[url])
+ scriptLoadedCallbacks[url] = [];
+
+ scriptLoadedCallbacks[url].push({
+ func : callback,
+ scope : scope || this
+ });
+ }
+ };
+
+ this.loadQueue = function(callback, scope) {
+ this.loadScripts(queue, callback, scope);
+ };
+
+ this.loadScripts = function(scripts, callback, scope) {
+ var loadScripts;
+
+ function execScriptLoadedCallbacks(url) {
+ // Execute URL callback functions
+ tinymce.each(scriptLoadedCallbacks[url], function(callback) {
+ callback.func.call(callback.scope);
+ });
+
+ scriptLoadedCallbacks[url] = undefined;
+ };
+
+ queueLoadedCallbacks.push({
+ func : callback,
+ scope : scope || this
+ });
+
+ loadScripts = function() {
+ var loadingScripts = tinymce.grep(scripts);
+
+ // Current scripts has been handled
+ scripts.length = 0;
+
+ // Load scripts that needs to be loaded
+ tinymce.each(loadingScripts, function(url) {
+ // Script is already loaded then execute script callbacks directly
+ if (states[url] == LOADED) {
+ execScriptLoadedCallbacks(url);
+ return;
+ }
+
+ // Is script not loading then start loading it
+ if (states[url] != LOADING) {
+ states[url] = LOADING;
+ loading++;
+
+ loadScript(url, function() {
+ states[url] = LOADED;
+ loading--;
+
+ execScriptLoadedCallbacks(url);
+
+ // Load more scripts if they where added by the recently loaded script
+ loadScripts();
+ });
+ }
+ });
+
+ // No scripts are currently loading then execute all pending queue loaded callbacks
+ if (!loading) {
+ tinymce.each(queueLoadedCallbacks, function(callback) {
+ callback.func.call(callback.scope);
+ });
+
+ queueLoadedCallbacks.length = 0;
+ }
+ };
+
+ loadScripts();
+ };
+ };
+
+ // Global script loader
+ tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();
+})(tinymce);
+
+tinymce.dom.TreeWalker = function(start_node, root_node) {
+ var node = start_node;
+
+ function findSibling(node, start_name, sibling_name, shallow) {
+ var sibling, parent;
+
+ if (node) {
+ // Walk into nodes if it has a start
+ if (!shallow && node[start_name])
+ return node[start_name];
+
+ // Return the sibling if it has one
+ if (node != root_node) {
+ sibling = node[sibling_name];
+ if (sibling)
+ return sibling;
+
+ // Walk up the parents to look for siblings
+ for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {
+ sibling = parent[sibling_name];
+ if (sibling)
+ return sibling;
+ }
+ }
+ }
+ };
+
+ this.current = function() {
+ return node;
+ };
+
+ this.next = function(shallow) {
+ return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));
+ };
+
+ this.prev = function(shallow) {
+ return (node = findSibling(node, 'lastChild', 'lastSibling', shallow));
+ };
+};
+
+(function() {
+ var transitional = {};
+
+ function unpack(lookup, data) {
+ var key;
+
+ function replace(value) {
+ return value.replace(/[A-Z]+/g, function(key) {
+ return replace(lookup[key]);
+ });
+ };
+
+ // Unpack lookup
+ for (key in lookup) {
+ if (lookup.hasOwnProperty(key))
+ lookup[key] = replace(lookup[key]);
+ }
+
+ // Unpack and parse data into object map
+ replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]/g, function(str, name, children) {
+ var i, map = {};
+
+ children = children.split(/\|/);
+
+ for (i = children.length - 1; i >= 0; i--)
+ map[children[i]] = 1;
+
+ transitional[name] = map;
+ });
+ };
+
+ // This is the XHTML 1.0 transitional elements with it's children packed to reduce it's size
+ // we will later include the attributes here and use it as a default for valid elements but it
+ // requires us to rewrite the serializer engine
+ unpack({
+ Z : '#|H|K|N|O|P',
+ Y : '#|X|form|R|Q',
+ X : 'p|T|div|U|W|isindex|fieldset|table',
+ W : 'pre|hr|blockquote|address|center|noframes',
+ U : 'ul|ol|dl|menu|dir',
+ ZC : '#|p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q',
+ T : 'h1|h2|h3|h4|h5|h6',
+ ZB : '#|X|S|Q',
+ S : 'R|P',
+ ZA : '#|a|G|J|M|O|P',
+ R : '#|a|H|K|N|O',
+ Q : 'noscript|P',
+ P : 'ins|del|script',
+ O : 'input|select|textarea|label|button',
+ N : 'M|L',
+ M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym',
+ L : 'sub|sup',
+ K : 'J|I',
+ J : 'tt|i|b|u|s|strike',
+ I : 'big|small|font|basefont',
+ H : 'G|F',
+ G : 'br|span|bdo',
+ F : 'object|applet|img|map|iframe'
+ }, 'script[]' +
+ 'style[]' +
+ 'object[#|param|X|form|a|H|K|N|O|Q]' +
+ 'param[]' +
+ 'p[S]' +
+ 'a[Z]' +
+ 'br[]' +
+ 'span[S]' +
+ 'bdo[S]' +
+ 'applet[#|param|X|form|a|H|K|N|O|Q]' +
+ 'h1[S]' +
+ 'img[]' +
+ 'map[X|form|Q|area]' +
+ 'h2[S]' +
+ 'iframe[#|X|form|a|H|K|N|O|Q]' +
+ 'h3[S]' +
+ 'tt[S]' +
+ 'i[S]' +
+ 'b[S]' +
+ 'u[S]' +
+ 's[S]' +
+ 'strike[S]' +
+ 'big[S]' +
+ 'small[S]' +
+ 'font[S]' +
+ 'basefont[]' +
+ 'em[S]' +
+ 'strong[S]' +
+ 'dfn[S]' +
+ 'code[S]' +
+ 'q[S]' +
+ 'samp[S]' +
+ 'kbd[S]' +
+ 'var[S]' +
+ 'cite[S]' +
+ 'abbr[S]' +
+ 'acronym[S]' +
+ 'sub[S]' +
+ 'sup[S]' +
+ 'input[]' +
+ 'select[optgroup|option]' +
+ 'optgroup[option]' +
+ 'option[]' +
+ 'textarea[]' +
+ 'label[S]' +
+ 'button[#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' +
+ 'h4[S]' +
+ 'ins[#|X|form|a|H|K|N|O|Q]' +
+ 'h5[S]' +
+ 'del[#|X|form|a|H|K|N|O|Q]' +
+ 'h6[S]' +
+ 'div[#|X|form|a|H|K|N|O|Q]' +
+ 'ul[li]' +
+ 'li[#|X|form|a|H|K|N|O|Q]' +
+ 'ol[li]' +
+ 'dl[dt|dd]' +
+ 'dt[S]' +
+ 'dd[#|X|form|a|H|K|N|O|Q]' +
+ 'menu[li]' +
+ 'dir[li]' +
+ 'pre[ZA]' +
+ 'hr[]' +
+ 'blockquote[#|X|form|a|H|K|N|O|Q]' +
+ 'address[S|p]' +
+ 'center[#|X|form|a|H|K|N|O|Q]' +
+ 'noframes[#|X|form|a|H|K|N|O|Q]' +
+ 'isindex[]' +
+ 'fieldset[#|legend|X|form|a|H|K|N|O|Q]' +
+ 'legend[S]' +
+ 'table[caption|col|colgroup|thead|tfoot|tbody|tr]' +
+ 'caption[S]' +
+ 'col[]' +
+ 'colgroup[col]' +
+ 'thead[tr]' +
+ 'tr[th|td]' +
+ 'th[#|X|form|a|H|K|N|O|Q]' +
+ 'form[#|X|a|H|K|N|O|Q]' +
+ 'noscript[#|X|form|a|H|K|N|O|Q]' +
+ 'td[#|X|form|a|H|K|N|O|Q]' +
+ 'tfoot[tr]' +
+ 'tbody[tr]' +
+ 'area[]' +
+ 'base[]' +
+ 'body[#|X|form|a|H|K|N|O|Q]'
+ );
+
+ tinymce.dom.Schema = function() {
+ var t = this, elements = transitional;
+
+ t.isValid = function(name, child_name) {
+ var element = elements[name];
+
+ return !!(element && (!child_name || element[child_name]));
+ };
+ };
+})();
+(function(tinymce) {
+ tinymce.dom.RangeUtils = function(dom) {
+ var INVISIBLE_CHAR = '\uFEFF';
+
+ this.walk = function(rng, callback) {
+ var startContainer = rng.startContainer,
+ startOffset = rng.startOffset,
+ endContainer = rng.endContainer,
+ endOffset = rng.endOffset,
+ ancestor, startPoint,
+ endPoint, node, parent, siblings, nodes;
+
+ // Handle table cell selection the table plugin enables
+ // you to fake select table cells and perform formatting actions on them
+ nodes = dom.select('td.mceSelected,th.mceSelected');
+ if (nodes.length > 0) {
+ tinymce.each(nodes, function(node) {
+ callback([node]);
+ });
+
+ return;
+ }
+
+ function collectSiblings(node, name, end_node) {
+ var siblings = [];
+
+ for (; node && node != end_node; node = node[name])
+ siblings.push(node);
+
+ return siblings;
+ };
+
+ function findEndPoint(node, root) {
+ do {
+ if (node.parentNode == root)
+ return node;
+
+ node = node.parentNode;
+ } while(node);
+ };
+
+ function walkBoundary(start_node, end_node, next) {
+ var siblingName = next ? 'nextSibling' : 'previousSibling';
+
+ for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) {
+ parent = node.parentNode;
+ siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName);
+
+ if (siblings.length) {
+ if (!next)
+ siblings.reverse();
+
+ callback(siblings);
+ }
+ }
+ };
+
+ // If index based start position then resolve it
+ if (startContainer.nodeType == 1 && startContainer.hasChildNodes())
+ startContainer = startContainer.childNodes[startOffset];
+
+ // If index based end position then resolve it
+ if (endContainer.nodeType == 1 && endContainer.hasChildNodes())
+ endContainer = endContainer.childNodes[Math.min(startOffset == endOffset ? endOffset : endOffset - 1, endContainer.childNodes.length - 1)];
+
+ // Find common ancestor and end points
+ ancestor = dom.findCommonAncestor(startContainer, endContainer);
+
+ // Same container
+ if (startContainer == endContainer)
+ return callback([startContainer]);
+
+ // Process left side
+ for (node = startContainer; node; node = node.parentNode) {
+ if (node == endContainer)
+ return walkBoundary(startContainer, ancestor, true);
+
+ if (node == ancestor)
+ break;
+ }
+
+ // Process right side
+ for (node = endContainer; node; node = node.parentNode) {
+ if (node == startContainer)
+ return walkBoundary(endContainer, ancestor);
+
+ if (node == ancestor)
+ break;
+ }
+
+ // Find start/end point
+ startPoint = findEndPoint(startContainer, ancestor) || startContainer;
+ endPoint = findEndPoint(endContainer, ancestor) || endContainer;
+
+ // Walk left leaf
+ walkBoundary(startContainer, startPoint, true);
+
+ // Walk the middle from start to end point
+ siblings = collectSiblings(
+ startPoint == startContainer ? startPoint : startPoint.nextSibling,
+ 'nextSibling',
+ endPoint == endContainer ? endPoint.nextSibling : endPoint
+ );
+
+ if (siblings.length)
+ callback(siblings);
+
+ // Walk right leaf
+ walkBoundary(endContainer, endPoint);
+ };
+
+ /* this.split = function(rng) {
+ var startContainer = rng.startContainer,
+ startOffset = rng.startOffset,
+ endContainer = rng.endContainer,
+ endOffset = rng.endOffset;
+
+ function splitText(node, offset) {
+ if (offset == node.nodeValue.length)
+ node.appendData(INVISIBLE_CHAR);
+
+ node = node.splitText(offset);
+
+ if (node.nodeValue === INVISIBLE_CHAR)
+ node.nodeValue = '';
+
+ return node;
+ };
+
+ // Handle single text node
+ if (startContainer == endContainer) {
+ if (startContainer.nodeType == 3) {
+ if (startOffset != 0)
+ startContainer = endContainer = splitText(startContainer, startOffset);
+
+ if (endOffset - startOffset != startContainer.nodeValue.length)
+ splitText(startContainer, endOffset - startOffset);
+ }
+ } else {
+ // Split startContainer text node if needed
+ if (startContainer.nodeType == 3 && startOffset != 0) {
+ startContainer = splitText(startContainer, startOffset);
+ startOffset = 0;
+ }
+
+ // Split endContainer text node if needed
+ if (endContainer.nodeType == 3 && endOffset != endContainer.nodeValue.length) {
+ endContainer = splitText(endContainer, endOffset).previousSibling;
+ endOffset = endContainer.nodeValue.length;
+ }
+ }
+
+ return {
+ startContainer : startContainer,
+ startOffset : startOffset,
+ endContainer : endContainer,
+ endOffset : endOffset
+ };
+ };
+*/
+ };
+
+ tinymce.dom.RangeUtils.compareRanges = function(rng1, rng2) {
+ if (rng1 && rng2) {
+ // Compare native IE ranges
+ if (rng1.item || rng1.duplicate) {
+ // Both are control ranges and the selected element matches
+ if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0))
+ return true;
+
+ // Both are text ranges and the range matches
+ if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1))
+ return true;
+ } else {
+ // Compare w3c ranges
+ return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset;
+ }
+ }
+
+ return false;
+ };
+})(tinymce);
+
+(function(tinymce) {
+ // Shorten class names
+ var DOM = tinymce.DOM, is = tinymce.is;
+
+ tinymce.create('tinymce.ui.Control', {
+ Control : function(id, s) {
+ this.id = id;
+ this.settings = s = s || {};
+ this.rendered = false;
+ this.onRender = new tinymce.util.Dispatcher(this);
+ this.classPrefix = '';
+ this.scope = s.scope || this;
+ this.disabled = 0;
+ this.active = 0;
+ },
+
+ setDisabled : function(s) {
+ var e;
+
+ if (s != this.disabled) {
+ e = DOM.get(this.id);
+
+ // Add accessibility title for unavailable actions
+ if (e && this.settings.unavailable_prefix) {
+ if (s) {
+ this.prevTitle = e.title;
+ e.title = this.settings.unavailable_prefix + ": " + e.title;
+ } else
+ e.title = this.prevTitle;
+ }
+
+ this.setState('Disabled', s);
+ this.setState('Enabled', !s);
+ this.disabled = s;
+ }
+ },
+
+ isDisabled : function() {
+ return this.disabled;
+ },
+
+ setActive : function(s) {
+ if (s != this.active) {
+ this.setState('Active', s);
+ this.active = s;
+ }
+ },
+
+ isActive : function() {
+ return this.active;
+ },
+
+ setState : function(c, s) {
+ var n = DOM.get(this.id);
+
+ c = this.classPrefix + c;
+
+ if (s)
+ DOM.addClass(n, c);
+ else
+ DOM.removeClass(n, c);
+ },
+
+ isRendered : function() {
+ return this.rendered;
+ },
+
+ renderHTML : function() {
+ },
+
+ renderTo : function(n) {
+ DOM.setHTML(n, this.renderHTML());
+ },
+
+ postRender : function() {
+ var t = this, b;
+
+ // Set pending states
+ if (is(t.disabled)) {
+ b = t.disabled;
+ t.disabled = -1;
+ t.setDisabled(b);
+ }
+
+ if (is(t.active)) {
+ b = t.active;
+ t.active = -1;
+ t.setActive(b);
+ }
+ },
+
+ remove : function() {
+ DOM.remove(this.id);
+ this.destroy();
+ },
+
+ destroy : function() {
+ tinymce.dom.Event.clear(this.id);
+ }
+ });
+})(tinymce);
+tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {
+ Container : function(id, s) {
+ this.parent(id, s);
+
+ this.controls = [];
+
+ this.lookup = {};
+ },
+
+ add : function(c) {
+ this.lookup[c.id] = c;
+ this.controls.push(c);
+
+ return c;
+ },
+
+ get : function(n) {
+ return this.lookup[n];
+ }
+});
+
+
+tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
+ Separator : function(id, s) {
+ this.parent(id, s);
+ this.classPrefix = 'mceSeparator';
+ },
+
+ renderHTML : function() {
+ return tinymce.DOM.createHTML('span', {'class' : this.classPrefix});
+ }
+});
+
+(function(tinymce) {
+ var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
+
+ tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', {
+ MenuItem : function(id, s) {
+ this.parent(id, s);
+ this.classPrefix = 'mceMenuItem';
+ },
+
+ setSelected : function(s) {
+ this.setState('Selected', s);
+ this.selected = s;
+ },
+
+ isSelected : function() {
+ return this.selected;
+ },
+
+ postRender : function() {
+ var t = this;
+
+ t.parent();
+
+ // Set pending state
+ if (is(t.selected))
+ t.setSelected(t.selected);
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
+
+ tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', {
+ Menu : function(id, s) {
+ var t = this;
+
+ t.parent(id, s);
+ t.items = {};
+ t.collapsed = false;
+ t.menuCount = 0;
+ t.onAddItem = new tinymce.util.Dispatcher(this);
+ },
+
+ expand : function(d) {
+ var t = this;
+
+ if (d) {
+ walk(t, function(o) {
+ if (o.expand)
+ o.expand();
+ }, 'items', t);
+ }
+
+ t.collapsed = false;
+ },
+
+ collapse : function(d) {
+ var t = this;
+
+ if (d) {
+ walk(t, function(o) {
+ if (o.collapse)
+ o.collapse();
+ }, 'items', t);
+ }
+
+ t.collapsed = true;
+ },
+
+ isCollapsed : function() {
+ return this.collapsed;
+ },
+
+ add : function(o) {
+ if (!o.settings)
+ o = new tinymce.ui.MenuItem(o.id || DOM.uniqueId(), o);
+
+ this.onAddItem.dispatch(this, o);
+
+ return this.items[o.id] = o;
+ },
+
+ addSeparator : function() {
+ return this.add({separator : true});
+ },
+
+ addMenu : function(o) {
+ if (!o.collapse)
+ o = this.createMenu(o);
+
+ this.menuCount++;
+
+ return this.add(o);
+ },
+
+ hasMenus : function() {
+ return this.menuCount !== 0;
+ },
+
+ remove : function(o) {
+ delete this.items[o.id];
+ },
+
+ removeAll : function() {
+ var t = this;
+
+ walk(t, function(o) {
+ if (o.removeAll)
+ o.removeAll();
+ else
+ o.remove();
+
+ o.destroy();
+ }, 'items', t);
+
+ t.items = {};
+ },
+
+ createMenu : function(o) {
+ var m = new tinymce.ui.Menu(o.id || DOM.uniqueId(), o);
+
+ m.onAddItem.add(this.onAddItem.dispatch, this.onAddItem);
+
+ return m;
+ }
+ });
+})(tinymce);
+(function(tinymce) {
+ var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element;
+
+ tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', {
+ DropMenu : function(id, s) {
+ s = s || {};
+ s.container = s.container || DOM.doc.body;
+ s.offset_x = s.offset_x || 0;
+ s.offset_y = s.offset_y || 0;
+ s.vp_offset_x = s.vp_offset_x || 0;
+ s.vp_offset_y = s.vp_offset_y || 0;
+
+ if (is(s.icons) && !s.icons)
+ s['class'] += ' mceNoIcons';
+
+ this.parent(id, s);
+ this.onShowMenu = new tinymce.util.Dispatcher(this);
+ this.onHideMenu = new tinymce.util.Dispatcher(this);
+ this.classPrefix = 'mceMenu';
+ },
+
+ createMenu : function(s) {
+ var t = this, cs = t.settings, m;
+
+ s.container = s.container || cs.container;
+ s.parent = t;
+ s.constrain = s.constrain || cs.constrain;
+ s['class'] = s['class'] || cs['class'];
+ s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x;
+ s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y;
+ m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s);
+
+ m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem);
+
+ return m;
+ },
+
+ update : function() {
+ var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;
+
+ tw = s.max_width ? Math.min(tb.clientWidth, s.max_width) : tb.clientWidth;
+ th = s.max_height ? Math.min(tb.clientHeight, s.max_height) : tb.clientHeight;
+
+ if (!DOM.boxModel)
+ t.element.setStyles({width : tw + 2, height : th + 2});
+ else
+ t.element.setStyles({width : tw, height : th});
+
+ if (s.max_width)
+ DOM.setStyle(co, 'width', tw);
+
+ if (s.max_height) {
+ DOM.setStyle(co, 'height', th);
+
+ if (tb.clientHeight < s.max_height)
+ DOM.setStyle(co, 'overflow', 'hidden');
+ }
+ },
+
+ showMenu : function(x, y, px) {
+ var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix;
+
+ t.collapse(1);
+
+ if (t.isMenuVisible)
+ return;
+
+ if (!t.rendered) {
+ co = DOM.add(t.settings.container, t.renderNode());
+
+ each(t.items, function(o) {
+ o.postRender();
+ });
+
+ t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
+ } else
+ co = DOM.get('menu_' + t.id);
+
+ // Move layer out of sight unless it's Opera since it scrolls to top of page due to an bug
+ if (!tinymce.isOpera)
+ DOM.setStyles(co, {left : -0xFFFF , top : -0xFFFF});
+
+ DOM.show(co);
+ t.update();
+
+ x += s.offset_x || 0;
+ y += s.offset_y || 0;
+ vp.w -= 4;
+ vp.h -= 4;
+
+ // Move inside viewport if not submenu
+ if (s.constrain) {
+ w = co.clientWidth - ot;
+ h = co.clientHeight - ot;
+ mx = vp.x + vp.w;
+ my = vp.y + vp.h;
+
+ if ((x + s.vp_offset_x + w) > mx)
+ x = px ? px - w : Math.max(0, (mx - s.vp_offset_x) - w);
+
+ if ((y + s.vp_offset_y + h) > my)
+ y = Math.max(0, (my - s.vp_offset_y) - h);
+ }
+
+ DOM.setStyles(co, {left : x , top : y});
+ t.element.update();
+
+ t.isMenuVisible = 1;
+ t.mouseClickFunc = Event.add(co, 'click', function(e) {
+ var m;
+
+ e = e.target;
+
+ if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) {
+ m = t.items[e.id];
+
+ if (m.isDisabled())
+ return;
+
+ dm = t;
+
+ while (dm) {
+ if (dm.hideMenu)
+ dm.hideMenu();
+
+ dm = dm.settings.parent;
+ }
+
+ if (m.settings.onclick)
+ m.settings.onclick(e);
+
+ return Event.cancel(e); // Cancel to fix onbeforeunload problem
+ }
+ });
+
+ if (t.hasMenus()) {
+ t.mouseOverFunc = Event.add(co, 'mouseover', function(e) {
+ var m, r, mi;
+
+ e = e.target;
+ if (e && (e = DOM.getParent(e, 'tr'))) {
+ m = t.items[e.id];
+
+ if (t.lastMenu)
+ t.lastMenu.collapse(1);
+
+ if (m.isDisabled())
+ return;
+
+ if (e && DOM.hasClass(e, cp + 'ItemSub')) {
+ //p = DOM.getPos(s.container);
+ r = DOM.getRect(e);
+ m.showMenu((r.x + r.w - ot), r.y - ot, r.x);
+ t.lastMenu = m;
+ DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive');
+ }
+ }
+ });
+ }
+
+ t.onShowMenu.dispatch(t);
+
+ if (s.keyboard_focus) {
+ Event.add(co, 'keydown', t._keyHandler, t);
+ DOM.select('a', 'menu_' + t.id)[0].focus(); // Select first link
+ t._focusIdx = 0;
+ }
+ },
+
+ hideMenu : function(c) {
+ var t = this, co = DOM.get('menu_' + t.id), e;
+
+ if (!t.isMenuVisible)
+ return;
+
+ Event.remove(co, 'mouseover', t.mouseOverFunc);
+ Event.remove(co, 'click', t.mouseClickFunc);
+ Event.remove(co, 'keydown', t._keyHandler);
+ DOM.hide(co);
+ t.isMenuVisible = 0;
+
+ if (!c)
+ t.collapse(1);
+
+ if (t.element)
+ t.element.hide();
+
+ if (e = DOM.get(t.id))
+ DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive');
+
+ t.onHideMenu.dispatch(t);
+ },
+
+ add : function(o) {
+ var t = this, co;
+
+ o = t.parent(o);
+
+ if (t.isRendered && (co = DOM.get('menu_' + t.id)))
+ t._add(DOM.select('tbody', co)[0], o);
+
+ return o;
+ },
+
+ collapse : function(d) {
+ this.parent(d);
+ this.hideMenu(1);
+ },
+
+ remove : function(o) {
+ DOM.remove(o.id);
+ this.destroy();
+
+ return this.parent(o);
+ },
+
+ destroy : function() {
+ var t = this, co = DOM.get('menu_' + t.id);
+
+ Event.remove(co, 'mouseover', t.mouseOverFunc);
+ Event.remove(co, 'click', t.mouseClickFunc);
+
+ if (t.element)
+ t.element.remove();
+
+ DOM.remove(co);
+ },
+
+ renderNode : function() {
+ var t = this, s = t.settings, n, tb, co, w;
+
+ w = DOM.create('div', {id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000'});
+ co = DOM.add(w, 'div', {id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')});
+ t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
+
+ if (s.menu_line)
+ DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'});
+
+// n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'});
+ n = DOM.add(co, 'table', {id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0});
+ tb = DOM.add(n, 'tbody');
+
+ each(t.items, function(o) {
+ t._add(tb, o);
+ });
+
+ t.rendered = true;
+
+ return w;
+ },
+
+ // Internal functions
+
+ _keyHandler : function(e) {
+ var t = this, kc = e.keyCode;
+
+ function focus(d) {
+ var i = t._focusIdx + d, e = DOM.select('a', 'menu_' + t.id)[i];
+
+ if (e) {
+ t._focusIdx = i;
+ e.focus();
+ }
+ };
+
+ switch (kc) {
+ case 38:
+ focus(-1); // Select first link
+ return;
+
+ case 40:
+ focus(1);
+ return;
+
+ case 13:
+ return;
+
+ case 27:
+ return this.hideMenu();
+ }
+ },
+
+ _add : function(tb, o) {
+ var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic;
+
+ if (s.separator) {
+ ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'});
+ DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'});
+
+ if (n = ro.previousSibling)
+ DOM.addClass(n, 'mceLast');
+
+ return;
+ }
+
+ n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'});
+ n = it = DOM.add(n, 'td');
+ n = a = DOM.add(n, 'a', {href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'});
+
+ DOM.addClass(it, s['class']);
+// n = DOM.add(n, 'span', {'class' : 'item'});
+
+ ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});
+
+ if (s.icon_src)
+ DOM.add(ic, 'img', {src : s.icon_src});
+
+ n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);
+
+ if (o.settings.style)
+ DOM.setAttrib(n, 'style', o.settings.style);
+
+ if (tb.childNodes.length == 1)
+ DOM.addClass(ro, 'mceFirst');
+
+ if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator'))
+ DOM.addClass(ro, 'mceFirst');
+
+ if (o.collapse)
+ DOM.addClass(ro, cp + 'ItemSub');
+
+ if (n = ro.previousSibling)
+ DOM.removeClass(n, 'mceLast');
+
+ DOM.addClass(ro, 'mceLast');
+ }
+ });
+})(tinymce);
+(function(tinymce) {
+ var DOM = tinymce.DOM;
+
+ tinymce.create('tinymce.ui.Button:tinymce.ui.Control', {
+ Button : function(id, s) {
+ this.parent(id, s);
+ this.classPrefix = 'mceButton';
+ },
+
+ renderHTML : function() {
+ var cp = this.classPrefix, s = this.settings, h, l;
+
+ l = DOM.encode(s.label || '');
+ h = '<a id="' + this.id + '" href="javascript:;" class="' + cp + ' ' + cp + 'Enabled ' + s['class'] + (l ? ' ' + cp + 'Labeled' : '') +'" onmousedown="return false;" onclick="return false;" title="' + DOM.encode(s.title) + '">';
+
+ if (s.image)
+ h += '<img class="mceIcon" src="' + s.image + '" />' + l + '</a>';
+ else
+ h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '') + '</a>';
+
+ return h;
+ },
+
+ postRender : function() {
+ var t = this, s = t.settings;
+
+ tinymce.dom.Event.add(t.id, 'click', function(e) {
+ if (!t.isDisabled())
+ return s.onclick.call(s.scope, e);
+ });
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
+
+ tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {
+ ListBox : function(id, s) {
+ var t = this;
+
+ t.parent(id, s);
+
+ t.items = [];
+
+ t.onChange = new Dispatcher(t);
+
+ t.onPostRender = new Dispatcher(t);
+
+ t.onAdd = new Dispatcher(t);
+
+ t.onRenderMenu = new tinymce.util.Dispatcher(this);
+
+ t.classPrefix = 'mceListBox';
+ },
+
+ select : function(va) {
+ var t = this, fv, f;
+
+ if (va == undefined)
+ return t.selectByIndex(-1);
+
+ // Is string or number make function selector
+ if (va && va.call)
+ f = va;
+ else {
+ f = function(v) {
+ return v == va;
+ };
+ }
+
+ // Do we need to do something?
+ if (va != t.selectedValue) {
+ // Find item
+ each(t.items, function(o, i) {
+ if (f(o.value)) {
+ fv = 1;
+ t.selectByIndex(i);
+ return false;
+ }
+ });
+
+ if (!fv)
+ t.selectByIndex(-1);
+ }
+ },
+
+ selectByIndex : function(idx) {
+ var t = this, e, o;
+
+ if (idx != t.selectedIndex) {
+ e = DOM.get(t.id + '_text');
+ o = t.items[idx];
+
+ if (o) {
+ t.selectedValue = o.value;
+ t.selectedIndex = idx;
+ DOM.setHTML(e, DOM.encode(o.title));
+ DOM.removeClass(e, 'mceTitle');
+ } else {
+ DOM.setHTML(e, DOM.encode(t.settings.title));
+ DOM.addClass(e, 'mceTitle');
+ t.selectedValue = t.selectedIndex = null;
+ }
+
+ e = 0;
+ }
+ },
+
+ add : function(n, v, o) {
+ var t = this;
+
+ o = o || {};
+ o = tinymce.extend(o, {
+ title : n,
+ value : v
+ });
+
+ t.items.push(o);
+ t.onAdd.dispatch(t, o);
+ },
+
+ getLength : function() {
+ return this.items.length;
+ },
+
+ renderHTML : function() {
+ var h = '', t = this, s = t.settings, cp = t.classPrefix;
+
+ h = '<table id="' + t.id + '" cellpadding="0" cellspacing="0" class="' + cp + ' ' + cp + 'Enabled' + (s['class'] ? (' ' + s['class']) : '') + '"><tbody><tr>';
+ h += '<td>' + DOM.createHTML('a', {id : t.id + '_text', href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '</td>';
+ h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '<span></span>') + '</td>';
+ h += '</tr></tbody></table>';
+
+ return h;
+ },
+
+ showMenu : function() {
+ var t = this, p1, p2, e = DOM.get(this.id), m;
+
+ if (t.isDisabled() || t.items.length == 0)
+ return;
+
+ if (t.menu && t.menu.isMenuVisible)
+ return t.hideMenu();
+
+ if (!t.isMenuRendered) {
+ t.renderMenu();
+ t.isMenuRendered = true;
+ }
+
+ p1 = DOM.getPos(this.settings.menu_container);
+ p2 = DOM.getPos(e);
+
+ m = t.menu;
+ m.settings.offset_x = p2.x;
+ m.settings.offset_y = p2.y;
+ m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus
+
+ // Select in menu
+ if (t.oldID)
+ m.items[t.oldID].setSelected(0);
+
+ each(t.items, function(o) {
+ if (o.value === t.selectedValue) {
+ m.items[o.id].setSelected(1);
+ t.oldID = o.id;
+ }
+ });
+
+ m.showMenu(0, e.clientHeight);
+
+ Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
+ DOM.addClass(t.id, t.classPrefix + 'Selected');
+
+ //DOM.get(t.id + '_text').focus();
+ },
+
+ hideMenu : function(e) {
+ var t = this;
+
+ if (t.menu && t.menu.isMenuVisible) {
+ // Prevent double toogles by canceling the mouse click event to the button
+ if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open'))
+ return;
+
+ if (!e || !DOM.getParent(e.target, '.mceMenu')) {
+ DOM.removeClass(t.id, t.classPrefix + 'Selected');
+ Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
+ t.menu.hideMenu();
+ }
+ }
+ },
+
+ renderMenu : function() {
+ var t = this, m;
+
+ m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
+ menu_line : 1,
+ 'class' : t.classPrefix + 'Menu mceNoIcons',
+ max_width : 150,
+ max_height : 150
+ });
+
+ m.onHideMenu.add(t.hideMenu, t);
+
+ m.add({
+ title : t.settings.title,
+ 'class' : 'mceMenuItemTitle',
+ onclick : function() {
+ if (t.settings.onselect('') !== false)
+ t.select(''); // Must be runned after
+ }
+ });
+
+ each(t.items, function(o) {
+ // No value then treat it as a title
+ if (o.value === undefined) {
+ m.add({
+ title : o.title,
+ 'class' : 'mceMenuItemTitle',
+ onclick : function() {
+ if (t.settings.onselect('') !== false)
+ t.select(''); // Must be runned after
+ }
+ });
+ } else {
+ o.id = DOM.uniqueId();
+ o.onclick = function() {
+ if (t.settings.onselect(o.value) !== false)
+ t.select(o.value); // Must be runned after
+ };
+
+ m.add(o);
+ }
+ });
+
+ t.onRenderMenu.dispatch(t, m);
+ t.menu = m;
+ },
+
+ postRender : function() {
+ var t = this, cp = t.classPrefix;
+
+ Event.add(t.id, 'click', t.showMenu, t);
+ Event.add(t.id + '_text', 'focus', function() {
+ if (!t._focused) {
+ t.keyDownHandler = Event.add(t.id + '_text', 'keydown', function(e) {
+ var idx = -1, v, kc = e.keyCode;
+
+ // Find current index
+ each(t.items, function(v, i) {
+ if (t.selectedValue == v.value)
+ idx = i;
+ });
+
+ // Move up/down
+ if (kc == 38)
+ v = t.items[idx - 1];
+ else if (kc == 40)
+ v = t.items[idx + 1];
+ else if (kc == 13) {
+ // Fake select on enter
+ v = t.selectedValue;
+ t.selectedValue = null; // Needs to be null to fake change
+ t.settings.onselect(v);
+ return Event.cancel(e);
+ }
+
+ if (v) {
+ t.hideMenu();
+ t.select(v.value);
+ }
+ });
+ }
+
+ t._focused = 1;
+ });
+ Event.add(t.id + '_text', 'blur', function() {Event.remove(t.id + '_text', 'keydown', t.keyDownHandler); t._focused = 0;});
+
+ // Old IE doesn't have hover on all elements
+ if (tinymce.isIE6 || !DOM.boxModel) {
+ Event.add(t.id, 'mouseover', function() {
+ if (!DOM.hasClass(t.id, cp + 'Disabled'))
+ DOM.addClass(t.id, cp + 'Hover');
+ });
+
+ Event.add(t.id, 'mouseout', function() {
+ if (!DOM.hasClass(t.id, cp + 'Disabled'))
+ DOM.removeClass(t.id, cp + 'Hover');
+ });
+ }
+
+ t.onPostRender.dispatch(t, DOM.get(t.id));
+ },
+
+ destroy : function() {
+ this.parent();
+
+ Event.clear(this.id + '_text');
+ Event.clear(this.id + '_open');
+ }
+ });
+})(tinymce);
+(function(tinymce) {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher;
+
+ tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {
+ NativeListBox : function(id, s) {
+ this.parent(id, s);
+ this.classPrefix = 'mceNativeListBox';
+ },
+
+ setDisabled : function(s) {
+ DOM.get(this.id).disabled = s;
+ },
+
+ isDisabled : function() {
+ return DOM.get(this.id).disabled;
+ },
+
+ select : function(va) {
+ var t = this, fv, f;
+
+ if (va == undefined)
+ return t.selectByIndex(-1);
+
+ // Is string or number make function selector
+ if (va && va.call)
+ f = va;
+ else {
+ f = function(v) {
+ return v == va;
+ };
+ }
+
+ // Do we need to do something?
+ if (va != t.selectedValue) {
+ // Find item
+ each(t.items, function(o, i) {
+ if (f(o.value)) {
+ fv = 1;
+ t.selectByIndex(i);
+ return false;
+ }
+ });
+
+ if (!fv)
+ t.selectByIndex(-1);
+ }
+ },
+
+ selectByIndex : function(idx) {
+ DOM.get(this.id).selectedIndex = idx + 1;
+ this.selectedValue = this.items[idx] ? this.items[idx].value : null;
+ },
+
+ add : function(n, v, a) {
+ var o, t = this;
+
+ a = a || {};
+ a.value = v;
+
+ if (t.isRendered())
+ DOM.add(DOM.get(this.id), 'option', a, n);
+
+ o = {
+ title : n,
+ value : v,
+ attribs : a
+ };
+
+ t.items.push(o);
+ t.onAdd.dispatch(t, o);
+ },
+
+ getLength : function() {
+ return this.items.length;
+ },
+
+ renderHTML : function() {
+ var h, t = this;
+
+ h = DOM.createHTML('option', {value : ''}, '-- ' + t.settings.title + ' --');
+
+ each(t.items, function(it) {
+ h += DOM.createHTML('option', {value : it.value}, it.title);
+ });
+
+ h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox'}, h);
+
+ return h;
+ },
+
+ postRender : function() {
+ var t = this, ch;
+
+ t.rendered = true;
+
+ function onChange(e) {
+ var v = t.items[e.target.selectedIndex - 1];
+
+ if (v && (v = v.value)) {
+ t.onChange.dispatch(t, v);
+
+ if (t.settings.onselect)
+ t.settings.onselect(v);
+ }
+ };
+
+ Event.add(t.id, 'change', onChange);
+
+ // Accessibility keyhandler
+ Event.add(t.id, 'keydown', function(e) {
+ var bf;
+
+ Event.remove(t.id, 'change', ch);
+
+ bf = Event.add(t.id, 'blur', function() {
+ Event.add(t.id, 'change', onChange);
+ Event.remove(t.id, 'blur', bf);
+ });
+
+ if (e.keyCode == 13 || e.keyCode == 32) {
+ onChange(e);
+ return Event.cancel(e);
+ }
+ });
+
+ t.onPostRender.dispatch(t, DOM.get(t.id));
+ }
+ });
+})(tinymce);
+(function(tinymce) {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
+
+ tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', {
+ MenuButton : function(id, s) {
+ this.parent(id, s);
+
+ this.onRenderMenu = new tinymce.util.Dispatcher(this);
+
+ s.menu_container = s.menu_container || DOM.doc.body;
+ },
+
+ showMenu : function() {
+ var t = this, p1, p2, e = DOM.get(t.id), m;
+
+ if (t.isDisabled())
+ return;
+
+ if (!t.isMenuRendered) {
+ t.renderMenu();
+ t.isMenuRendered = true;
+ }
+
+ if (t.isMenuVisible)
+ return t.hideMenu();
+
+ p1 = DOM.getPos(t.settings.menu_container);
+ p2 = DOM.getPos(e);
+
+ m = t.menu;
+ m.settings.offset_x = p2.x;
+ m.settings.offset_y = p2.y;
+ m.settings.vp_offset_x = p2.x;
+ m.settings.vp_offset_y = p2.y;
+ m.settings.keyboard_focus = t._focused;
+ m.showMenu(0, e.clientHeight);
+
+ Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
+ t.setState('Selected', 1);
+
+ t.isMenuVisible = 1;
+ },
+
+ renderMenu : function() {
+ var t = this, m;
+
+ m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
+ menu_line : 1,
+ 'class' : this.classPrefix + 'Menu',
+ icons : t.settings.icons
+ });
+
+ m.onHideMenu.add(t.hideMenu, t);
+
+ t.onRenderMenu.dispatch(t, m);
+ t.menu = m;
+ },
+
+ hideMenu : function(e) {
+ var t = this;
+
+ // Prevent double toogles by canceling the mouse click event to the button
+ if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';}))
+ return;
+
+ if (!e || !DOM.getParent(e.target, '.mceMenu')) {
+ t.setState('Selected', 0);
+ Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
+ if (t.menu)
+ t.menu.hideMenu();
+ }
+
+ t.isMenuVisible = 0;
+ },
+
+ postRender : function() {
+ var t = this, s = t.settings;
+
+ Event.add(t.id, 'click', function() {
+ if (!t.isDisabled()) {
+ if (s.onclick)
+ s.onclick(t.value);
+
+ t.showMenu();
+ }
+ });
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
+
+ tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', {
+ SplitButton : function(id, s) {
+ this.parent(id, s);
+ this.classPrefix = 'mceSplitButton';
+ },
+
+ renderHTML : function() {
+ var h, t = this, s = t.settings, h1;
+
+ h = '<tbody><tr>';
+
+ if (s.image)
+ h1 = DOM.createHTML('img ', {src : s.image, 'class' : 'mceAction ' + s['class']});
+ else
+ h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, '');
+
+ h += '<td>' + DOM.createHTML('a', {id : t.id + '_action', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
+
+ h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']});
+ h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
+
+ h += '</tr></tbody>';
+
+ return DOM.createHTML('table', {id : t.id, 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', onmousedown : 'return false;', title : s.title}, h);
+ },
+
+ postRender : function() {
+ var t = this, s = t.settings;
+
+ if (s.onclick) {
+ Event.add(t.id + '_action', 'click', function() {
+ if (!t.isDisabled())
+ s.onclick(t.value);
+ });
+ }
+
+ Event.add(t.id + '_open', 'click', t.showMenu, t);
+ Event.add(t.id + '_open', 'focus', function() {t._focused = 1;});
+ Event.add(t.id + '_open', 'blur', function() {t._focused = 0;});
+
+ // Old IE doesn't have hover on all elements
+ if (tinymce.isIE6 || !DOM.boxModel) {
+ Event.add(t.id, 'mouseover', function() {
+ if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
+ DOM.addClass(t.id, 'mceSplitButtonHover');
+ });
+
+ Event.add(t.id, 'mouseout', function() {
+ if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
+ DOM.removeClass(t.id, 'mceSplitButtonHover');
+ });
+ }
+ },
+
+ destroy : function() {
+ this.parent();
+
+ Event.clear(this.id + '_action');
+ Event.clear(this.id + '_open');
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each;
+
+ tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', {
+ ColorSplitButton : function(id, s) {
+ var t = this;
+
+ t.parent(id, s);
+
+ t.settings = s = tinymce.extend({
+ colors : '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',
+ grid_width : 8,
+ default_color : '#888888'
+ }, t.settings);
+
+ t.onShowMenu = new tinymce.util.Dispatcher(t);
+
+ t.onHideMenu = new tinymce.util.Dispatcher(t);
+
+ t.value = s.default_color;
+ },
+
+ showMenu : function() {
+ var t = this, r, p, e, p2;
+
+ if (t.isDisabled())
+ return;
+
+ if (!t.isMenuRendered) {
+ t.renderMenu();
+ t.isMenuRendered = true;
+ }
+
+ if (t.isMenuVisible)
+ return t.hideMenu();
+
+ e = DOM.get(t.id);
+ DOM.show(t.id + '_menu');
+ DOM.addClass(e, 'mceSplitButtonSelected');
+ p2 = DOM.getPos(e);
+ DOM.setStyles(t.id + '_menu', {
+ left : p2.x,
+ top : p2.y + e.clientHeight,
+ zIndex : 200000
+ });
+ e = 0;
+
+ Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
+ t.onShowMenu.dispatch(t);
+
+ if (t._focused) {
+ t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) {
+ if (e.keyCode == 27)
+ t.hideMenu();
+ });
+
+ DOM.select('a', t.id + '_menu')[0].focus(); // Select first link
+ }
+
+ t.isMenuVisible = 1;
+ },
+
+ hideMenu : function(e) {
+ var t = this;
+
+ // Prevent double toogles by canceling the mouse click event to the button
+ if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';}))
+ return;
+
+ if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) {
+ DOM.removeClass(t.id, 'mceSplitButtonSelected');
+ Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
+ Event.remove(t.id + '_menu', 'keydown', t._keyHandler);
+ DOM.hide(t.id + '_menu');
+ }
+
+ t.onHideMenu.dispatch(t);
+
+ t.isMenuVisible = 0;
+ },
+
+ renderMenu : function() {
+ var t = this, m, i = 0, s = t.settings, n, tb, tr, w;
+
+ w = DOM.add(s.menu_container, 'div', {id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
+ m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});
+ DOM.add(m, 'span', {'class' : 'mceMenuLine'});
+
+ n = DOM.add(m, 'table', {'class' : 'mceColorSplitMenu'});
+ tb = DOM.add(n, 'tbody');
+
+ // Generate color grid
+ i = 0;
+ each(is(s.colors, 'array') ? s.colors : s.colors.split(','), function(c) {
+ c = c.replace(/^#/, '');
+
+ if (!i--) {
+ tr = DOM.add(tb, 'tr');
+ i = s.grid_width - 1;
+ }
+
+ n = DOM.add(tr, 'td');
+
+ n = DOM.add(n, 'a', {
+ href : 'javascript:;',
+ style : {
+ backgroundColor : '#' + c
+ },
+ _mce_color : '#' + c
+ });
+ });
+
+ if (s.more_colors_func) {
+ n = DOM.add(tb, 'tr');
+ n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'});
+ n = DOM.add(n, 'a', {id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title);
+
+ Event.add(n, 'click', function(e) {
+ s.more_colors_func.call(s.more_colors_scope || this);
+ return Event.cancel(e); // Cancel to fix onbeforeunload problem
+ });
+ }
+
+ DOM.addClass(m, 'mceColorSplitMenu');
+
+ Event.add(t.id + '_menu', 'click', function(e) {
+ var c;
+
+ e = e.target;
+
+ if (e.nodeName == 'A' && (c = e.getAttribute('_mce_color')))
+ t.setColor(c);
+
+ return Event.cancel(e); // Prevent IE auto save warning
+ });
+
+ return w;
+ },
+
+ setColor : function(c) {
+ var t = this;
+
+ DOM.setStyle(t.id + '_preview', 'backgroundColor', c);
+
+ t.value = c;
+ t.hideMenu();
+ t.settings.onselect(c);
+ },
+
+ postRender : function() {
+ var t = this, id = t.id;
+
+ t.parent();
+ DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'});
+ DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value);
+ },
+
+ destroy : function() {
+ this.parent();
+
+ Event.clear(this.id + '_menu');
+ Event.clear(this.id + '_more');
+ DOM.remove(this.id + '_menu');
+ }
+ });
+})(tinymce);
+
+tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
+ renderHTML : function() {
+ var t = this, h = '', c, co, dom = tinymce.DOM, s = t.settings, i, pr, nx, cl;
+
+ cl = t.controls;
+ for (i=0; i<cl.length; i++) {
+ // Get current control, prev control, next control and if the control is a list box or not
+ co = cl[i];
+ pr = cl[i - 1];
+ nx = cl[i + 1];
+
+ // Add toolbar start
+ if (i === 0) {
+ c = 'mceToolbarStart';
+
+ if (co.Button)
+ c += ' mceToolbarStartButton';
+ else if (co.SplitButton)
+ c += ' mceToolbarStartSplitButton';
+ else if (co.ListBox)
+ c += ' mceToolbarStartListBox';
+
+ h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
+ }
+
+ // Add toolbar end before list box and after the previous button
+ // This is to fix the o2k7 editor skins
+ if (pr && co.ListBox) {
+ if (pr.Button || pr.SplitButton)
+ h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '<!-- IE -->'));
+ }
+
+ // Render control HTML
+
+ // IE 8 quick fix, needed to propertly generate a hit area for anchors
+ if (dom.stdMode)
+ h += '<td style="position: relative">' + co.renderHTML() + '</td>';
+ else
+ h += '<td>' + co.renderHTML() + '</td>';
+
+ // Add toolbar start after list box and before the next button
+ // This is to fix the o2k7 editor skins
+ if (nx && co.ListBox) {
+ if (nx.Button || nx.SplitButton)
+ h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '<!-- IE -->'));
+ }
+ }
+
+ c = 'mceToolbarEnd';
+
+ if (co.Button)
+ c += ' mceToolbarEndButton';
+ else if (co.SplitButton)
+ c += ' mceToolbarEndSplitButton';
+ else if (co.ListBox)
+ c += ' mceToolbarEndListBox';
+
+ h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
+
+ return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || ''}, '<tbody><tr>' + h + '</tr></tbody>');
+ }
+});
+
+(function(tinymce) {
+ var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
+
+ tinymce.create('tinymce.AddOnManager', {
+ items : [],
+ urls : {},
+ lookup : {},
+
+ onAdd : new Dispatcher(this),
+
+ get : function(n) {
+ return this.lookup[n];
+ },
+
+ requireLangPack : function(n) {
+ var s = tinymce.settings;
+
+ if (s && s.language)
+ tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js');
+ },
+
+ add : function(id, o) {
+ this.items.push(o);
+ this.lookup[id] = o;
+ this.onAdd.dispatch(this, id, o);
+
+ return o;
+ },
+
+ load : function(n, u, cb, s) {
+ var t = this;
+
+ if (t.urls[n])
+ return;
+
+ if (u.indexOf('/') != 0 && u.indexOf('://') == -1)
+ u = tinymce.baseURL + '/' + u;
+
+ t.urls[n] = u.substring(0, u.lastIndexOf('/'));
+ tinymce.ScriptLoader.add(u, cb, s);
+ }
+ });
+
+ // Create plugin and theme managers
+ tinymce.PluginManager = new tinymce.AddOnManager();
+ tinymce.ThemeManager = new tinymce.AddOnManager();
+}(tinymce));
+
+(function(tinymce) {
+ // Shorten names
+ var each = tinymce.each, extend = tinymce.extend,
+ DOM = tinymce.DOM, Event = tinymce.dom.Event,
+ ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
+ explode = tinymce.explode,
+ Dispatcher = tinymce.util.Dispatcher, undefined, instanceCounter = 0;
+
+ // Setup some URLs where the editor API is located and where the document is
+ tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+ if (!/[\/\\]$/.test(tinymce.documentBaseURL))
+ tinymce.documentBaseURL += '/';
+
+ tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
+
+ tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL);
+
+ // Add before unload listener
+ // This was required since IE was leaking memory if you added and removed beforeunload listeners
+ // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
+ tinymce.onBeforeUnload = new Dispatcher(tinymce);
+
+ // Must be on window or IE will leak if the editor is placed in frame or iframe
+ Event.add(window, 'beforeunload', function(e) {
+ tinymce.onBeforeUnload.dispatch(tinymce, e);
+ });
+
+ tinymce.onAddEditor = new Dispatcher(tinymce);
+
+ tinymce.onRemoveEditor = new Dispatcher(tinymce);
+
+ tinymce.EditorManager = extend(tinymce, {
+ editors : [],
+
+ i18n : {},
+
+ activeEditor : null,
+
+ init : function(s) {
+ var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed;
+
+ function execCallback(se, n, s) {
+ var f = se[n];
+
+ if (!f)
+ return;
+
+ if (tinymce.is(f, 'string')) {
+ s = f.replace(/\.\w+$/, '');
+ s = s ? tinymce.resolve(s) : 0;
+ f = tinymce.resolve(f);
+ }
+
+ return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
+ };
+
+ s = extend({
+ theme : "simple",
+ language : "en"
+ }, s);
+
+ t.settings = s;
+
+ // Legacy call
+ Event.add(document, 'init', function() {
+ var l, co;
+
+ execCallback(s, 'onpageload');
+
+ switch (s.mode) {
+ case "exact":
+ l = s.elements || '';
+
+ if(l.length > 0) {
+ each(explode(l), function(v) {
+ if (DOM.get(v)) {
+ ed = new tinymce.Editor(v, s);
+ el.push(ed);
+ ed.render(1);
+ } else {
+ each(document.forms, function(f) {
+ each(f.elements, function(e) {
+ if (e.name === v) {
+ v = 'mce_editor_' + instanceCounter++;
+ DOM.setAttrib(e, 'id', v);
+
+ ed = new tinymce.Editor(v, s);
+ el.push(ed);
+ ed.render(1);
+ }
+ });
+ });
+ }
+ });
+ }
+ break;
+
+ case "textareas":
+ case "specific_textareas":
+ function hasClass(n, c) {
+ return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
+ };
+
+ each(DOM.select('textarea'), function(v) {
+ if (s.editor_deselector && hasClass(v, s.editor_deselector))
+ return;
+
+ if (!s.editor_selector || hasClass(v, s.editor_selector)) {
+ // Can we use the name
+ e = DOM.get(v.name);
+ if (!v.id && !e)
+ v.id = v.name;
+
+ // Generate unique name if missing or already exists
+ if (!v.id || t.get(v.id))
+ v.id = DOM.uniqueId();
+
+ ed = new tinymce.Editor(v.id, s);
+ el.push(ed);
+ ed.render(1);
+ }
+ });
+ break;
+ }
+
+ // Call onInit when all editors are initialized
+ if (s.oninit) {
+ l = co = 0;
+
+ each(el, function(ed) {
+ co++;
+
+ if (!ed.initialized) {
+ // Wait for it
+ ed.onInit.add(function() {
+ l++;
+
+ // All done
+ if (l == co)
+ execCallback(s, 'oninit');
+ });
+ } else
+ l++;
+
+ // All done
+ if (l == co)
+ execCallback(s, 'oninit');
+ });
+ }
+ });
+ },
+
+ get : function(id) {
+ if (id === undefined)
+ return this.editors;
+
+ return this.editors[id];
+ },
+
+ getInstanceById : function(id) {
+ return this.get(id);
+ },
+
+ add : function(editor) {
+ var self = this, editors = self.editors;
+
+ // Add named and index editor instance
+ editors[editor.id] = editor;
+ editors.push(editor);
+
+ self._setActive(editor);
+ self.onAddEditor.dispatch(self, editor);
+
+
+ // Patch the tinymce.Editor instance with jQuery adapter logic
+ if (tinymce.adapter)
+ tinymce.adapter.patchEditor(editor);
+
+
+ return editor;
+ },
+
+ remove : function(editor) {
+ var t = this, i, editors = t.editors;
+
+ // Not in the collection
+ if (!editors[editor.id])
+ return null;
+
+ delete editors[editor.id];
+
+ for (i = 0; i < editors.length; i++) {
+ if (editors[i] == editor) {
+ editors.splice(i, 1);
+ break;
+ }
+ }
+
+ // Select another editor since the active one was removed
+ if (t.activeEditor == editor)
+ t._setActive(editors[0]);
+
+ editor.destroy();
+ t.onRemoveEditor.dispatch(t, editor);
+
+ return editor;
+ },
+
+ execCommand : function(c, u, v) {
+ var t = this, ed = t.get(v), w;
+
+ // Manager commands
+ switch (c) {
+ case "mceFocus":
+ ed.focus();
+ return true;
+
+ case "mceAddEditor":
+ case "mceAddControl":
+ if (!t.get(v))
+ new tinymce.Editor(v, t.settings).render();
+
+ return true;
+
+ case "mceAddFrameControl":
+ w = v.window;
+
+ // Add tinyMCE global instance and tinymce namespace to specified window
+ w.tinyMCE = tinyMCE;
+ w.tinymce = tinymce;
+
+ tinymce.DOM.doc = w.document;
+ tinymce.DOM.win = w;
+
+ ed = new tinymce.Editor(v.element_id, v);
+ ed.render();
+
+ // Fix IE memory leaks
+ if (tinymce.isIE) {
+ function clr() {
+ ed.destroy();
+ w.detachEvent('onunload', clr);
+ w = w.tinyMCE = w.tinymce = null; // IE leak
+ };
+
+ w.attachEvent('onunload', clr);
+ }
+
+ v.page_window = null;
+
+ return true;
+
+ case "mceRemoveEditor":
+ case "mceRemoveControl":
+ if (ed)
+ ed.remove();
+
+ return true;
+
+ case 'mceToggleEditor':
+ if (!ed) {
+ t.execCommand('mceAddControl', 0, v);
+ return true;
+ }
+
+ if (ed.isHidden())
+ ed.show();
+ else
+ ed.hide();
+
+ return true;
+ }
+
+ // Run command on active editor
+ if (t.activeEditor)
+ return t.activeEditor.execCommand(c, u, v);
+
+ return false;
+ },
+
+ execInstanceCommand : function(id, c, u, v) {
+ var ed = this.get(id);
+
+ if (ed)
+ return ed.execCommand(c, u, v);
+
+ return false;
+ },
+
+ triggerSave : function() {
+ each(this.editors, function(e) {
+ e.save();
+ });
+ },
+
+ addI18n : function(p, o) {
+ var lo, i18n = this.i18n;
+
+ if (!tinymce.is(p, 'string')) {
+ each(p, function(o, lc) {
+ each(o, function(o, g) {
+ each(o, function(o, k) {
+ if (g === 'common')
+ i18n[lc + '.' + k] = o;
+ else
+ i18n[lc + '.' + g + '.' + k] = o;
+ });
+ });
+ });
+ } else {
+ each(o, function(o, k) {
+ i18n[p + '.' + k] = o;
+ });
+ }
+ },
+
+ // Private methods
+
+ _setActive : function(editor) {
+ this.selectedInstance = this.activeEditor = editor;
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ // Shorten these names
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,
+ Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isGecko = tinymce.isGecko,
+ isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,
+ ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
+ inArray = tinymce.inArray, grep = tinymce.grep, explode = tinymce.explode;
+
+ tinymce.create('tinymce.Editor', {
+ Editor : function(id, s) {
+ var t = this;
+
+ t.id = t.editorId = id;
+
+ t.execCommands = {};
+ t.queryStateCommands = {};
+ t.queryValueCommands = {};
+
+ t.isNotDirty = false;
+
+ t.plugins = {};
+
+ // Add events to the editor
+ each([
+ 'onPreInit',
+
+ 'onBeforeRenderUI',
+
+ 'onPostRender',
+
+ 'onInit',
+
+ 'onRemove',
+
+ 'onActivate',
+
+ 'onDeactivate',
+
+ 'onClick',
+
+ 'onEvent',
+
+ 'onMouseUp',
+
+ 'onMouseDown',
+
+ 'onDblClick',
+
+ 'onKeyDown',
+
+ 'onKeyUp',
+
+ 'onKeyPress',
+
+ 'onContextMenu',
+
+ 'onSubmit',
+
+ 'onReset',
+
+ 'onPaste',
+
+ 'onPreProcess',
+
+ 'onPostProcess',
+
+ 'onBeforeSetContent',
+
+ 'onBeforeGetContent',
+
+ 'onSetContent',
+
+ 'onGetContent',
+
+ 'onLoadContent',
+
+ 'onSaveContent',
+
+ 'onNodeChange',
+
+ 'onChange',
+
+ 'onBeforeExecCommand',
+
+ 'onExecCommand',
+
+ 'onUndo',
+
+ 'onRedo',
+
+ 'onVisualAid',
+
+ 'onSetProgressState'
+ ], function(e) {
+ t[e] = new Dispatcher(t);
+ });
+
+ t.settings = s = extend({
+ id : id,
+ language : 'en',
+ docs_language : 'en',
+ theme : 'simple',
+ skin : 'default',
+ delta_width : 0,
+ delta_height : 0,
+ popup_css : '',
+ plugins : '',
+ document_base_url : tinymce.documentBaseURL,
+ add_form_submit_trigger : 1,
+ submit_patch : 1,
+ add_unload_trigger : 1,
+ convert_urls : 1,
+ relative_urls : 1,
+ remove_script_host : 1,
+ table_inline_editing : 0,
+ object_resizing : 1,
+ cleanup : 1,
+ accessibility_focus : 1,
+ custom_shortcuts : 1,
+ custom_undo_redo_keyboard_shortcuts : 1,
+ custom_undo_redo_restore_selection : 1,
+ custom_undo_redo : 1,
+ doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll
+ visual_table_class : 'mceItemTable',
+ visual : 1,
+ font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
+ apply_source_formatting : 1,
+ directionality : 'ltr',
+ forced_root_block : 'p',
+ valid_elements : '@[id|class|style|title|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur],strong/b,em/i,strike,u,#p,-ol[type|compact],-ul[type|compact],-li,br,img[longdesc|usemap|src|border|alt=|title|hspace|vspace|width|height|align],-sub,-sup,-blockquote[cite],-table[border|cellspacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|background|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|valign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|height|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,acronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|codebase|*],param[name|value],embed[type|width|height|src|*],script[src|type],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|char|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|width],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[accept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|tabindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled],option[disabled|label|selected|value],q[cite],samp,select[disabled|multiple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,big',
+ hidden_input : 1,
+ padd_empty_editor : 1,
+ render_ui : 1,
+ init_theme : 1,
+ force_p_newlines : 1,
+ indentation : '30px',
+ keep_styles : 1,
+ fix_table_elements : 1,
+ inline_styles : 1,
+ convert_fonts_to_spans : true
+ }, s);
+
+ t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, {
+ base_uri : tinyMCE.baseURI
+ });
+
+ t.baseURI = tinymce.baseURI;
+
+ // Call setup
+ t.execCallback('setup', t);
+ },
+
+ render : function(nst) {
+ var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
+
+ // Page is not loaded yet, wait for it
+ if (!Event.domLoaded) {
+ Event.add(document, 'init', function() {
+ t.render();
+ });
+ return;
+ }
+
+ tinyMCE.settings = s;
+
+ // Element not found, then skip initialization
+ if (!t.getElement())
+ return;
+
+ // Is a iPad/iPhone, then skip initialization. We need to sniff here since the
+ // browser says it has contentEditable support but there is no visible caret
+ // We will remove this check ones Apple implements full contentEditable support
+ if (tinymce.isIDevice)
+ return;
+
+ // Add hidden input for non input elements inside form elements
+ if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
+ DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
+
+ if (tinymce.WindowManager)
+ t.windowManager = new tinymce.WindowManager(t);
+
+ if (s.encoding == 'xml') {
+ t.onGetContent.add(function(ed, o) {
+ if (o.save)
+ o.content = DOM.encode(o.content);
+ });
+ }
+
+ if (s.add_form_submit_trigger) {
+ t.onSubmit.addToTop(function() {
+ if (t.initialized) {
+ t.save();
+ t.isNotDirty = 1;
+ }
+ });
+ }
+
+ if (s.add_unload_trigger) {
+ t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
+ if (t.initialized && !t.destroyed && !t.isHidden())
+ t.save({format : 'raw', no_events : true});
+ });
+ }
+
+ tinymce.addUnload(t.destroy, t);
+
+ if (s.submit_patch) {
+ t.onBeforeRenderUI.add(function() {
+ var n = t.getElement().form;
+
+ if (!n)
+ return;
+
+ // Already patched
+ if (n._mceOldSubmit)
+ return;
+
+ // Check page uses id="submit" or name="submit" for it's submit button
+ if (!n.submit.nodeType && !n.submit.length) {
+ t.formElement = n;
+ n._mceOldSubmit = n.submit;
+ n.submit = function() {
+ // Save all instances
+ tinymce.triggerSave();
+ t.isNotDirty = 1;
+
+ return t.formElement._mceOldSubmit(t.formElement);
+ };
+ }
+
+ n = null;
+ });
+ }
+
+ // Load scripts
+ function loadScripts() {
+ if (s.language)
+ sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
+
+ if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
+ ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
+
+ each(explode(s.plugins), function(p) {
+ if (p && p.charAt(0) != '-' && !PluginManager.urls[p]) {
+ // Skip safari plugin, since it is removed as of 3.3b1
+ if (p == 'safari')
+ return;
+
+ PluginManager.load(p, 'plugins/' + p + '/editor_plugin' + tinymce.suffix + '.js');
+ }
+ });
+
+ // Init when que is loaded
+ sl.loadQueue(function() {
+ if (!t.removed)
+ t.init();
+ });
+ };
+
+ loadScripts();
+ },
+
+ init : function() {
+ var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re;
+
+ tinymce.add(t);
+
+ if (s.theme) {
+ s.theme = s.theme.replace(/-/, '');
+ o = ThemeManager.get(s.theme);
+ t.theme = new o();
+
+ if (t.theme.init && s.init_theme)
+ t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
+ }
+
+ // Create all plugins
+ each(explode(s.plugins.replace(/\-/g, '')), function(p) {
+ var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
+
+ if (c) {
+ po = new c(t, u);
+
+ t.plugins[p] = po;
+
+ if (po.init)
+ po.init(t, u);
+ }
+ });
+
+ // Setup popup CSS path(s)
+ if (s.popup_css !== false) {
+ if (s.popup_css)
+ s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
+ else
+ s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
+ }
+
+ if (s.popup_css_add)
+ s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
+
+ t.controlManager = new tinymce.ControlManager(t);
+
+ if (s.custom_undo_redo) {
+ // Add initial undo level
+ t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) {
+ if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) {
+ if (!t.undoManager.hasUndo())
+ t.undoManager.add();
+ }
+ });
+
+ t.onExecCommand.add(function(ed, cmd, ui, val, a) {
+ if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo))
+ t.undoManager.add();
+ });
+ }
+
+ t.onExecCommand.add(function(ed, c) {
+ // Don't refresh the select lists until caret move
+ if (!/^(FontName|FontSize)$/.test(c))
+ t.nodeChanged();
+ });
+
+ // Remove ghost selections on images and tables in Gecko
+ if (isGecko) {
+ function repaint(a, o) {
+ if (!o || !o.initial)
+ t.execCommand('mceRepaint');
+ };
+
+ t.onUndo.add(repaint);
+ t.onRedo.add(repaint);
+ t.onSetContent.add(repaint);
+ }
+
+ // Enables users to override the control factory
+ t.onBeforeRenderUI.dispatch(t, t.controlManager);
+
+ // Measure box
+ if (s.render_ui) {
+ w = s.width || e.style.width || e.offsetWidth;
+ h = s.height || e.style.height || e.offsetHeight;
+ t.orgDisplay = e.style.display;
+ re = /^[0-9\.]+(|px)$/i;
+
+ if (re.test('' + w))
+ w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100);
+
+ if (re.test('' + h))
+ h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100);
+
+ // Render UI
+ o = t.theme.renderUI({
+ targetNode : e,
+ width : w,
+ height : h,
+ deltaWidth : s.delta_width,
+ deltaHeight : s.delta_height
+ });
+
+ t.editorContainer = o.editorContainer;
+ }
+
+
+ // User specified a document.domain value
+ if (document.domain && location.hostname != document.domain)
+ tinymce.relaxedDomain = document.domain;
+
+ // Resize editor
+ DOM.setStyles(o.sizeContainer || o.editorContainer, {
+ width : w,
+ height : h
+ });
+
+ h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
+ if (h < 100)
+ h = 100;
+
+ t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">';
+
+ // We only need to override paths if we have to
+ // IE has a bug where it remove site absolute urls to relative ones if this is specified
+ if (s.document_base_url != tinymce.documentBaseURL)
+ t.iframeHTML += '<base href="' + t.documentBaseURI.getURI() + '" />';
+
+ t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+
+ if (tinymce.relaxedDomain)
+ t.iframeHTML += '<script type="text/javascript">document.domain = "' + tinymce.relaxedDomain + '";</script>';
+
+ bi = s.body_id || 'tinymce';
+ if (bi.indexOf('=') != -1) {
+ bi = t.getParam('body_id', '', 'hash');
+ bi = bi[t.id] || bi;
+ }
+
+ bc = s.body_class || '';
+ if (bc.indexOf('=') != -1) {
+ bc = t.getParam('body_class', '', 'hash');
+ bc = bc[t.id] || '';
+ }
+
+ t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '"></body></html>';
+
+ // Domain relaxing enabled, then set document domain
+ if (tinymce.relaxedDomain) {
+ // We need to write the contents here in IE since multiple writes messes up refresh button and back button
+ if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5))
+ u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';
+ else if (tinymce.isOpera)
+ u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()';
+ }
+
+ // Create iframe
+ n = DOM.add(o.iframeContainer, 'iframe', {
+ id : t.id + "_ifr",
+ src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
+ frameBorder : '0',
+ style : {
+ width : '100%',
+ height : h
+ }
+ });
+
+ t.contentAreaContainer = o.iframeContainer;
+ DOM.get(o.editorContainer).style.display = t.orgDisplay;
+ DOM.get(t.id).style.display = 'none';
+
+ if (!isIE || !tinymce.relaxedDomain)
+ t.setupIframe();
+
+ e = n = o = null; // Cleanup
+ },
+
+ setupIframe : function() {
+ var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b;
+
+ // Setup iframe body
+ if (!isIE || !tinymce.relaxedDomain) {
+ d.open();
+ d.write(t.iframeHTML);
+ d.close();
+ }
+
+ // Design mode needs to be added here Ctrl+A will fail otherwise
+ if (!isIE) {
+ try {
+ if (!s.readonly)
+ d.designMode = 'On';
+ } catch (ex) {
+ // Will fail on Gecko if the editor is placed in an hidden container element
+ // The design mode will be set ones the editor is focused
+ }
+ }
+
+ // IE needs to use contentEditable or it will display non secure items for HTTPS
+ if (isIE) {
+ // It will not steal focus if we hide it while setting contentEditable
+ b = t.getBody();
+ DOM.hide(b);
+
+ if (!s.readonly)
+ b.contentEditable = true;
+
+ DOM.show(b);
+ }
+
+ t.dom = new tinymce.dom.DOMUtils(t.getDoc(), {
+ keep_values : true,
+ url_converter : t.convertURL,
+ url_converter_scope : t,
+ hex_colors : s.force_hex_style_colors,
+ class_filter : s.class_filter,
+ update_styles : 1,
+ fix_ie_paragraphs : 1,
+ valid_styles : s.valid_styles
+ });
+
+ t.schema = new tinymce.dom.Schema();
+
+ t.serializer = new tinymce.dom.Serializer(extend(s, {
+ valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements,
+ dom : t.dom,
+ schema : t.schema
+ }));
+
+ t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer);
+
+ t.formatter = new tinymce.Formatter(this);
+
+ // Register default formats
+ t.formatter.register({
+ alignleft : [
+ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}},
+ {selector : 'img,table', styles : {'float' : 'left'}}
+ ],
+
+ aligncenter : [
+ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}},
+ {selector : 'img', styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
+ {selector : 'table', styles : {marginLeft : 'auto', marginRight : 'auto'}}
+ ],
+
+ alignright : [
+ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}},
+ {selector : 'img,table', styles : {'float' : 'right'}}
+ ],
+
+ alignfull : [
+ {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}}
+ ],
+
+ bold : [
+ {inline : 'strong'},
+ {inline : 'span', styles : {fontWeight : 'bold'}},
+ {inline : 'b'}
+ ],
+
+ italic : [
+ {inline : 'em'},
+ {inline : 'span', styles : {fontStyle : 'italic'}},
+ {inline : 'i'}
+ ],
+
+ underline : [
+ {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
+ {inline : 'u'}
+ ],
+
+ strikethrough : [
+ {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
+ {inline : 'u'}
+ ],
+
+ forecolor : {inline : 'span', styles : {color : '%value'}},
+ hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}},
+ fontname : {inline : 'span', styles : {fontFamily : '%value'}},
+ fontsize : {inline : 'span', styles : {fontSize : '%value'}},
+ fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
+ blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
+
+ removeformat : [
+ {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
+ {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
+ {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
+ ]
+ });
+
+ // Register default block formats
+ each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
+ t.formatter.register(name, {block : name, remove : 'all'});
+ });
+
+ // Register user defined formats
+ t.formatter.register(t.settings.formats);
+
+ t.undoManager = new tinymce.UndoManager(t);
+
+ // Pass through
+ t.undoManager.onAdd.add(function(um, l) {
+ if (!l.initial)
+ return t.onChange.dispatch(t, l, um);
+ });
+
+ t.undoManager.onUndo.add(function(um, l) {
+ return t.onUndo.dispatch(t, l, um);
+ });
+
+ t.undoManager.onRedo.add(function(um, l) {
+ return t.onRedo.dispatch(t, l, um);
+ });
+
+ t.forceBlocks = new tinymce.ForceBlocks(t, {
+ forced_root_block : s.forced_root_block
+ });
+
+ t.editorCommands = new tinymce.EditorCommands(t);
+
+ // Pass through
+ t.serializer.onPreProcess.add(function(se, o) {
+ return t.onPreProcess.dispatch(t, o, se);
+ });
+
+ t.serializer.onPostProcess.add(function(se, o) {
+ return t.onPostProcess.dispatch(t, o, se);
+ });
+
+ t.onPreInit.dispatch(t);
+
+ if (!s.gecko_spellcheck)
+ t.getBody().spellcheck = 0;
+
+ if (!s.readonly)
+ t._addEvents();
+
+ t.controlManager.onPostRender.dispatch(t, t.controlManager);
+ t.onPostRender.dispatch(t);
+
+ if (s.directionality)
+ t.getBody().dir = s.directionality;
+
+ if (s.nowrap)
+ t.getBody().style.whiteSpace = "nowrap";
+
+ if (s.custom_elements) {
+ function handleCustom(ed, o) {
+ each(explode(s.custom_elements), function(v) {
+ var n;
+
+ if (v.indexOf('~') === 0) {
+ v = v.substring(1);
+ n = 'span';
+ } else
+ n = 'div';
+
+ o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' _mce_name="$1"$2>');
+ o.content = o.content.replace(new RegExp('</(' + v + ')>', 'g'), '</' + n + '>');
+ });
+ };
+
+ t.onBeforeSetContent.add(handleCustom);
+ t.onPostProcess.add(function(ed, o) {
+ if (o.set)
+ handleCustom(ed, o);
+ });
+ }
+
+ if (s.handle_node_change_callback) {
+ t.onNodeChange.add(function(ed, cm, n) {
+ t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed());
+ });
+ }
+
+ if (s.save_callback) {
+ t.onSaveContent.add(function(ed, o) {
+ var h = t.execCallback('save_callback', t.id, o.content, t.getBody());
+
+ if (h)
+ o.content = h;
+ });
+ }
+
+ if (s.onchange_callback) {
+ t.onChange.add(function(ed, l) {
+ t.execCallback('onchange_callback', t, l);
+ });
+ }
+
+ if (s.convert_newlines_to_brs) {
+ t.onBeforeSetContent.add(function(ed, o) {
+ if (o.initial)
+ o.content = o.content.replace(/\r?\n/g, '<br />');
+ });
+ }
+
+ if (s.fix_nesting && isIE) {
+ t.onBeforeSetContent.add(function(ed, o) {
+ o.content = t._fixNesting(o.content);
+ });
+ }
+
+ if (s.preformatted) {
+ t.onPostProcess.add(function(ed, o) {
+ o.content = o.content.replace(/^\s*<pre.*?>/, '');
+ o.content = o.content.replace(/<\/pre>\s*$/, '');
+
+ if (o.set)
+ o.content = '<pre class="mceItemHidden">' + o.content + '</pre>';
+ });
+ }
+
+ if (s.verify_css_classes) {
+ t.serializer.attribValueFilter = function(n, v) {
+ var s, cl;
+
+ if (n == 'class') {
+ // Build regexp for classes
+ if (!t.classesRE) {
+ cl = t.dom.getClasses();
+
+ if (cl.length > 0) {
+ s = '';
+
+ each (cl, function(o) {
+ s += (s ? '|' : '') + o['class'];
+ });
+
+ t.classesRE = new RegExp('(' + s + ')', 'gi');
+ }
+ }
+
+ return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : '';
+ }
+
+ return v;
+ };
+ }
+
+ if (s.cleanup_callback) {
+ t.onBeforeSetContent.add(function(ed, o) {
+ o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
+ });
+
+ t.onPreProcess.add(function(ed, o) {
+ if (o.set)
+ t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
+
+ if (o.get)
+ t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
+ });
+
+ t.onPostProcess.add(function(ed, o) {
+ if (o.set)
+ o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
+
+ if (o.get)
+ o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
+ });
+ }
+
+ if (s.save_callback) {
+ t.onGetContent.add(function(ed, o) {
+ if (o.save)
+ o.content = t.execCallback('save_callback', t.id, o.content, t.getBody());
+ });
+ }
+
+ if (s.handle_event_callback) {
+ t.onEvent.add(function(ed, e, o) {
+ if (t.execCallback('handle_event_callback', e, ed, o) === false)
+ Event.cancel(e);
+ });
+ }
+
+ // Add visual aids when new contents is added
+ t.onSetContent.add(function() {
+ t.addVisual(t.getBody());
+ });
+
+ // Remove empty contents
+ if (s.padd_empty_editor) {
+ t.onPostProcess.add(function(ed, o) {
+ o.content = o.content.replace(/^(<p[^>]*>( | |\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
+ });
+ }
+
+ if (isGecko) {
+ // Fix gecko link bug, when a link is placed at the end of block elements there is
+ // no way to move the caret behind the link. This fix adds a bogus br element after the link
+ function fixLinks(ed, o) {
+ each(ed.dom.select('a'), function(n) {
+ var pn = n.parentNode;
+
+ if (ed.dom.isBlock(pn) && pn.lastChild === n)
+ ed.dom.add(pn, 'br', {'_mce_bogus' : 1});
+ });
+ };
+
+ t.onExecCommand.add(function(ed, cmd) {
+ if (cmd === 'CreateLink')
+ fixLinks(ed);
+ });
+
+ t.onSetContent.add(t.selection.onSetContent.add(fixLinks));
+
+ if (!s.readonly) {
+ try {
+ // Design mode must be set here once again to fix a bug where
+ // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again
+ d.designMode = 'Off';
+ d.designMode = 'On';
+ } catch (ex) {
+ // Will fail on Gecko if the editor is placed in an hidden container element
+ // The design mode will be set ones the editor is focused
+ }
+ }
+ }
+
+ // A small timeout was needed since firefox will remove. Bug: #1838304
+ setTimeout(function () {
+ if (t.removed)
+ return;
+
+ t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')});
+ t.startContent = t.getContent({format : 'raw'});
+ t.initialized = true;
+
+ t.onInit.dispatch(t);
+ t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc());
+ t.execCallback('init_instance_callback', t);
+ t.focus(true);
+ t.nodeChanged({initial : 1});
+
+ // Load specified content CSS last
+ if (s.content_css) {
+ tinymce.each(explode(s.content_css), function(u) {
+ t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));
+ });
+ }
+
+ // Handle auto focus
+ if (s.auto_focus) {
+ setTimeout(function () {
+ var ed = tinymce.get(s.auto_focus);
+
+ ed.selection.select(ed.getBody(), 1);
+ ed.selection.collapse(1);
+ ed.getWin().focus();
+ }, 100);
+ }
+ }, 1);
+
+ e = null;
+ },
+
+
+ focus : function(sf) {
+ var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc();
+
+ if (!sf) {
+ // Get selected control element
+ ieRng = t.selection.getRng();
+ if (ieRng.item) {
+ controlElm = ieRng.item(0);
+ }
+
+ // Is not content editable
+ if (!ce)
+ t.getWin().focus();
+
+ // Restore selected control element
+ // This is needed when for example an image is selected within a
+ // layer a call to focus will then remove the control selection
+ if (controlElm && controlElm.ownerDocument == doc) {
+ ieRng = doc.body.createControlRange();
+ ieRng.addElement(controlElm);
+ ieRng.select();
+ }
+
+ }
+
+ if (tinymce.activeEditor != t) {
+ if ((oed = tinymce.activeEditor) != null)
+ oed.onDeactivate.dispatch(oed, t);
+
+ t.onActivate.dispatch(t, oed);
+ }
+
+ tinymce._setActive(t);
+ },
+
+ execCallback : function(n) {
+ var t = this, f = t.settings[n], s;
+
+ if (!f)
+ return;
+
+ // Look through lookup
+ if (t.callbackLookup && (s = t.callbackLookup[n])) {
+ f = s.func;
+ s = s.scope;
+ }
+
+ if (is(f, 'string')) {
+ s = f.replace(/\.\w+$/, '');
+ s = s ? tinymce.resolve(s) : 0;
+ f = tinymce.resolve(f);
+ t.callbackLookup = t.callbackLookup || {};
+ t.callbackLookup[n] = {func : f, scope : s};
+ }
+
+ return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
+ },
+
+ translate : function(s) {
+ var c = this.settings.language || 'en', i18n = tinymce.i18n;
+
+ if (!s)
+ return '';
+
+ return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) {
+ return i18n[c + '.' + b] || '{#' + b + '}';
+ });
+ },
+
+ getLang : function(n, dv) {
+ return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
+ },
+
+ getParam : function(n, dv, ty) {
+ var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
+
+ if (ty === 'hash') {
+ o = {};
+
+ if (is(v, 'string')) {
+ each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
+ v = v.split('=');
+
+ if (v.length > 1)
+ o[tr(v[0])] = tr(v[1]);
+ else
+ o[tr(v[0])] = tr(v);
+ });
+ } else
+ o = v;
+
+ return o;
+ }
+
+ return v;
+ },
+
+ nodeChanged : function(o) {
+ var t = this, s = t.selection, n = (isIE ? s.getNode() : s.getStart()) || t.getBody();
+
+ // Fix for bug #1896577 it seems that this can not be fired while the editor is loading
+ if (t.initialized) {
+ o = o || {};
+ n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state
+
+ // Get parents and add them to object
+ o.parents = [];
+ t.dom.getParent(n, function(node) {
+ if (node.nodeName == 'BODY')
+ return true;
+
+ o.parents.push(node);
+ });
+
+ t.onNodeChange.dispatch(
+ t,
+ o ? o.controlManager || t.controlManager : t.controlManager,
+ n,
+ s.isCollapsed(),
+ o
+ );
+ }
+ },
+
+ addButton : function(n, s) {
+ var t = this;
+
+ t.buttons = t.buttons || {};
+ t.buttons[n] = s;
+ },
+
+ addCommand : function(n, f, s) {
+ this.execCommands[n] = {func : f, scope : s || this};
+ },
+
+ addQueryStateHandler : function(n, f, s) {
+ this.queryStateCommands[n] = {func : f, scope : s || this};
+ },
+
+ addQueryValueHandler : function(n, f, s) {
+ this.queryValueCommands[n] = {func : f, scope : s || this};
+ },
+
+ addShortcut : function(pa, desc, cmd_func, sc) {
+ var t = this, c;
+
+ if (!t.settings.custom_shortcuts)
+ return false;
+
+ t.shortcuts = t.shortcuts || {};
+
+ if (is(cmd_func, 'string')) {
+ c = cmd_func;
+
+ cmd_func = function() {
+ t.execCommand(c, false, null);
+ };
+ }
+
+ if (is(cmd_func, 'object')) {
+ c = cmd_func;
+
+ cmd_func = function() {
+ t.execCommand(c[0], c[1], c[2]);
+ };
+ }
+
+ each(explode(pa), function(pa) {
+ var o = {
+ func : cmd_func,
+ scope : sc || this,
+ desc : desc,
+ alt : false,
+ ctrl : false,
+ shift : false
+ };
+
+ each(explode(pa, '+'), function(v) {
+ switch (v) {
+ case 'alt':
+ case 'ctrl':
+ case 'shift':
+ o[v] = true;
+ break;
+
+ default:
+ o.charCode = v.charCodeAt(0);
+ o.keyCode = v.toUpperCase().charCodeAt(0);
+ }
+ });
+
+ t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
+ });
+
+ return true;
+ },
+
+ execCommand : function(cmd, ui, val, a) {
+ var t = this, s = 0, o, st;
+
+ if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
+ t.focus();
+
+ o = {};
+ t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o);
+ if (o.terminate)
+ return false;
+
+ // Command callback
+ if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ return true;
+ }
+
+ // Registred commands
+ if (o = t.execCommands[cmd]) {
+ st = o.func.call(o.scope, ui, val);
+
+ // Fall through on true
+ if (st !== true) {
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ return st;
+ }
+ }
+
+ // Plugin commands
+ each(t.plugins, function(p) {
+ if (p.execCommand && p.execCommand(cmd, ui, val)) {
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ s = 1;
+ return false;
+ }
+ });
+
+ if (s)
+ return true;
+
+ // Theme commands
+ if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ return true;
+ }
+
+ // Execute global commands
+ if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) {
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ return true;
+ }
+
+ // Editor commands
+ if (t.editorCommands.execCommand(cmd, ui, val)) {
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ return true;
+ }
+
+ // Browser commands
+ t.getDoc().execCommand(cmd, ui, val);
+ t.onExecCommand.dispatch(t, cmd, ui, val, a);
+ },
+
+ queryCommandState : function(cmd) {
+ var t = this, o, s;
+
+ // Is hidden then return undefined
+ if (t._isHidden())
+ return;
+
+ // Registred commands
+ if (o = t.queryStateCommands[cmd]) {
+ s = o.func.call(o.scope);
+
+ // Fall though on true
+ if (s !== true)
+ return s;
+ }
+
+ // Registred commands
+ o = t.editorCommands.queryCommandState(cmd);
+ if (o !== -1)
+ return o;
+
+ // Browser commands
+ try {
+ return this.getDoc().queryCommandState(cmd);
+ } catch (ex) {
+ // Fails sometimes see bug: 1896577
+ }
+ },
+
+ queryCommandValue : function(c) {
+ var t = this, o, s;
+
+ // Is hidden then return undefined
+ if (t._isHidden())
+ return;
+
+ // Registred commands
+ if (o = t.queryValueCommands[c]) {
+ s = o.func.call(o.scope);
+
+ // Fall though on true
+ if (s !== true)
+ return s;
+ }
+
+ // Registred commands
+ o = t.editorCommands.queryCommandValue(c);
+ if (is(o))
+ return o;
+
+ // Browser commands
+ try {
+ return this.getDoc().queryCommandValue(c);
+ } catch (ex) {
+ // Fails sometimes see bug: 1896577
+ }
+ },
+
+ show : function() {
+ var t = this;
+
+ DOM.show(t.getContainer());
+ DOM.hide(t.id);
+ t.load();
+ },
+
+ hide : function() {
+ var t = this, d = t.getDoc();
+
+ // Fixed bug where IE has a blinking cursor left from the editor
+ if (isIE && d)
+ d.execCommand('SelectAll');
+
+ // We must save before we hide so Safari doesn't crash
+ t.save();
+ DOM.hide(t.getContainer());
+ DOM.setStyle(t.id, 'display', t.orgDisplay);
+ },
+
+ isHidden : function() {
+ return !DOM.isHidden(this.id);
+ },
+
+ setProgressState : function(b, ti, o) {
+ this.onSetProgressState.dispatch(this, b, ti, o);
+
+ return b;
+ },
+
+ load : function(o) {
+ var t = this, e = t.getElement(), h;
+
+ if (e) {
+ o = o || {};
+ o.load = true;
+
+ // Double encode existing entities in the value
+ h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
+ o.element = e;
+
+ if (!o.no_events)
+ t.onLoadContent.dispatch(t, o);
+
+ o.element = e = null;
+
+ return h;
+ }
+ },
+
+ save : function(o) {
+ var t = this, e = t.getElement(), h, f;
+
+ if (!e || !t.initialized)
+ return;
+
+ o = o || {};
+ o.save = true;
+
+ // Add undo level will trigger onchange event
+ if (!o.no_events) {
+ t.undoManager.typing = 0;
+ t.undoManager.add();
+ }
+
+ o.element = e;
+ h = o.content = t.getContent(o);
+
+ if (!o.no_events)
+ t.onSaveContent.dispatch(t, o);
+
+ h = o.content;
+
+ if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
+ e.innerHTML = h;
+
+ // Update hidden form element
+ if (f = DOM.getParent(t.id, 'form')) {
+ each(f.elements, function(e) {
+ if (e.name == t.id) {
+ e.value = h;
+ return false;
+ }
+ });
+ }
+ } else
+ e.value = h;
+
+ o.element = e = null;
+
+ return h;
+ },
+
+ setContent : function(h, o) {
+ var t = this;
+
+ o = o || {};
+ o.format = o.format || 'html';
+ o.set = true;
+ o.content = h;
+
+ if (!o.no_events)
+ t.onBeforeSetContent.dispatch(t, o);
+
+ // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
+ // It will also be impossible to place the caret in the editor unless there is a BR element present
+ if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) {
+ o.content = t.dom.setHTML(t.getBody(), '<br _mce_bogus="1" />');
+ o.format = 'raw';
+ }
+
+ o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content));
+
+ if (o.format != 'raw' && t.settings.cleanup) {
+ o.getInner = true;
+ o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o));
+ }
+
+ if (!o.no_events)
+ t.onSetContent.dispatch(t, o);
+
+ return o.content;
+ },
+
+ getContent : function(o) {
+ var t = this, h;
+
+ o = o || {};
+ o.format = o.format || 'html';
+ o.get = true;
+
+ if (!o.no_events)
+ t.onBeforeGetContent.dispatch(t, o);
+
+ if (o.format != 'raw' && t.settings.cleanup) {
+ o.getInner = true;
+ h = t.serializer.serialize(t.getBody(), o);
+ } else
+ h = t.getBody().innerHTML;
+
+ h = h.replace(/^\s*|\s*$/g, '');
+ o.content = h;
+
+ if (!o.no_events)
+ t.onGetContent.dispatch(t, o);
+
+ return o.content;
+ },
+
+ isDirty : function() {
+ var t = this;
+
+ return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty;
+ },
+
+ getContainer : function() {
+ var t = this;
+
+ if (!t.container)
+ t.container = DOM.get(t.editorContainer || t.id + '_parent');
+
+ return t.container;
+ },
+
+ getContentAreaContainer : function() {
+ return this.contentAreaContainer;
+ },
+
+ getElement : function() {
+ return DOM.get(this.settings.content_element || this.id);
+ },
+
+ getWin : function() {
+ var t = this, e;
+
+ if (!t.contentWindow) {
+ e = DOM.get(t.id + "_ifr");
+
+ if (e)
+ t.contentWindow = e.contentWindow;
+ }
+
+ return t.contentWindow;
+ },
+
+ getDoc : function() {
+ var t = this, w;
+
+ if (!t.contentDocument) {
+ w = t.getWin();
+
+ if (w)
+ t.contentDocument = w.document;
+ }
+
+ return t.contentDocument;
+ },
+
+ getBody : function() {
+ return this.bodyElement || this.getDoc().body;
+ },
+
+ convertURL : function(u, n, e) {
+ var t = this, s = t.settings;
+
+ // Use callback instead
+ if (s.urlconverter_callback)
+ return t.execCallback('urlconverter_callback', u, e, true, n);
+
+ // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
+ if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0)
+ return u;
+
+ // Convert to relative
+ if (s.relative_urls)
+ return t.documentBaseURI.toRelative(u);
+
+ // Convert to absolute
+ u = t.documentBaseURI.toAbsolute(u, s.remove_script_host);
+
+ return u;
+ },
+
+ addVisual : function(e) {
+ var t = this, s = t.settings;
+
+ e = e || t.getBody();
+
+ if (!is(t.hasVisual))
+ t.hasVisual = s.visual;
+
+ each(t.dom.select('table,a', e), function(e) {
+ var v;
+
+ switch (e.nodeName) {
+ case 'TABLE':
+ v = t.dom.getAttrib(e, 'border');
+
+ if (!v || v == '0') {
+ if (t.hasVisual)
+ t.dom.addClass(e, s.visual_table_class);
+ else
+ t.dom.removeClass(e, s.visual_table_class);
+ }
+
+ return;
+
+ case 'A':
+ v = t.dom.getAttrib(e, 'name');
+
+ if (v) {
+ if (t.hasVisual)
+ t.dom.addClass(e, 'mceItemAnchor');
+ else
+ t.dom.removeClass(e, 'mceItemAnchor');
+ }
+
+ return;
+ }
+ });
+
+ t.onVisualAid.dispatch(t, e, t.hasVisual);
+ },
+
+ remove : function() {
+ var t = this, e = t.getContainer();
+
+ t.removed = 1; // Cancels post remove event execution
+ t.hide();
+
+ t.execCallback('remove_instance_callback', t);
+ t.onRemove.dispatch(t);
+
+ // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
+ t.onExecCommand.listeners = [];
+
+ tinymce.remove(t);
+ DOM.remove(e);
+ },
+
+ destroy : function(s) {
+ var t = this;
+
+ // One time is enough
+ if (t.destroyed)
+ return;
+
+ if (!s) {
+ tinymce.removeUnload(t.destroy);
+ tinyMCE.onBeforeUnload.remove(t._beforeUnload);
+
+ // Manual destroy
+ if (t.theme && t.theme.destroy)
+ t.theme.destroy();
+
+ // Destroy controls, selection and dom
+ t.controlManager.destroy();
+ t.selection.destroy();
+ t.dom.destroy();
+
+ // Remove all events
+
+ // Don't clear the window or document if content editable
+ // is enabled since other instances might still be present
+ if (!t.settings.content_editable) {
+ Event.clear(t.getWin());
+ Event.clear(t.getDoc());
+ }
+
+ Event.clear(t.getBody());
+ Event.clear(t.formElement);
+ }
+
+ if (t.formElement) {
+ t.formElement.submit = t.formElement._mceOldSubmit;
+ t.formElement._mceOldSubmit = null;
+ }
+
+ t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
+
+ if (t.selection)
+ t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
+
+ t.destroyed = 1;
+ },
+
+ // Internal functions
+
+ _addEvents : function() {
+ // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
+ var t = this, i, s = t.settings, lo = {
+ mouseup : 'onMouseUp',
+ mousedown : 'onMouseDown',
+ click : 'onClick',
+ keyup : 'onKeyUp',
+ keydown : 'onKeyDown',
+ keypress : 'onKeyPress',
+ submit : 'onSubmit',
+ reset : 'onReset',
+ contextmenu : 'onContextMenu',
+ dblclick : 'onDblClick',
+ paste : 'onPaste' // Doesn't work in all browsers yet
+ };
+
+ function eventHandler(e, o) {
+ var ty = e.type;
+
+ // Don't fire events when it's removed
+ if (t.removed)
+ return;
+
+ // Generic event handler
+ if (t.onEvent.dispatch(t, e, o) !== false) {
+ // Specific event handler
+ t[lo[e.fakeType || e.type]].dispatch(t, e, o);
+ }
+ };
+
+ // Add DOM events
+ each(lo, function(v, k) {
+ switch (k) {
+ case 'contextmenu':
+ if (tinymce.isOpera) {
+ // Fake contextmenu on Opera
+ t.dom.bind(t.getBody(), 'mousedown', function(e) {
+ if (e.ctrlKey) {
+ e.fakeType = 'contextmenu';
+ eventHandler(e);
+ }
+ });
+ } else
+ t.dom.bind(t.getBody(), k, eventHandler);
+ break;
+
+ case 'paste':
+ t.dom.bind(t.getBody(), k, function(e) {
+ eventHandler(e);
+ });
+ break;
+
+ case 'submit':
+ case 'reset':
+ t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler);
+ break;
+
+ default:
+ t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler);
+ }
+ });
+
+ t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) {
+ t.focus(true);
+ });
+
+
+ // Fixes bug where a specified document_base_uri could result in broken images
+ // This will also fix drag drop of images in Gecko
+ if (tinymce.isGecko) {
+ // Convert all images to absolute URLs
+/* t.onSetContent.add(function(ed, o) {
+ each(ed.dom.select('img'), function(e) {
+ var v;
+
+ if (v = e.getAttribute('_mce_src'))
+ e.src = t.documentBaseURI.toAbsolute(v);
+ })
+ });*/
+
+ t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) {
+ var v;
+
+ e = e.target;
+
+ if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('_mce_src')))
+ e.src = t.documentBaseURI.toAbsolute(v);
+ });
+ }
+
+ // Set various midas options in Gecko
+ if (isGecko) {
+ function setOpts() {
+ var t = this, d = t.getDoc(), s = t.settings;
+
+ if (isGecko && !s.readonly) {
+ if (t._isHidden()) {
+ try {
+ if (!s.content_editable)
+ d.designMode = 'On';
+ } catch (ex) {
+ // Fails if it's hidden
+ }
+ }
+
+ try {
+ // Try new Gecko method
+ d.execCommand("styleWithCSS", 0, false);
+ } catch (ex) {
+ // Use old method
+ if (!t._isHidden())
+ try {d.execCommand("useCSS", 0, true);} catch (ex) {}
+ }
+
+ if (!s.table_inline_editing)
+ try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {}
+
+ if (!s.object_resizing)
+ try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {}
+ }
+ };
+
+ t.onBeforeExecCommand.add(setOpts);
+ t.onMouseDown.add(setOpts);
+ }
+
+ // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
+ // WebKit can't even do simple things like selecting an image
+ // This also fixes so it's possible to select mceItemAnchors
+ if (tinymce.isWebKit) {
+ t.onClick.add(function(ed, e) {
+ e = e.target;
+
+ // Needs tobe the setBaseAndExtend or it will fail to select floated images
+ if (e.nodeName == 'IMG' || (e.nodeName == 'A' && t.dom.hasClass(e, 'mceItemAnchor')))
+ t.selection.getSel().setBaseAndExtent(e, 0, e, 1);
+ });
+ }
+
+ // Add node change handlers
+ t.onMouseUp.add(t.nodeChanged);
+ //t.onClick.add(t.nodeChanged);
+ t.onKeyUp.add(function(ed, e) {
+ var c = e.keyCode;
+
+ if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey)
+ t.nodeChanged();
+ });
+
+ // Add reset handler
+ t.onReset.add(function() {
+ t.setContent(t.startContent, {format : 'raw'});
+ });
+
+ // Add shortcuts
+ if (s.custom_shortcuts) {
+ if (s.custom_undo_redo_keyboard_shortcuts) {
+ t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo');
+ t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo');
+ }
+
+ // Add default shortcuts for gecko
+ t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
+ t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
+ t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
+
+ // BlockFormat shortcuts keys
+ for (i=1; i<=6; i++)
+ t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
+
+ t.addShortcut('ctrl+7', '', ['FormatBlock', false, '<p>']);
+ t.addShortcut('ctrl+8', '', ['FormatBlock', false, '<div>']);
+ t.addShortcut('ctrl+9', '', ['FormatBlock', false, '<address>']);
+
+ function find(e) {
+ var v = null;
+
+ if (!e.altKey && !e.ctrlKey && !e.metaKey)
+ return v;
+
+ each(t.shortcuts, function(o) {
+ if (tinymce.isMac && o.ctrl != e.metaKey)
+ return;
+ else if (!tinymce.isMac && o.ctrl != e.ctrlKey)
+ return;
+
+ if (o.alt != e.altKey)
+ return;
+
+ if (o.shift != e.shiftKey)
+ return;
+
+ if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) {
+ v = o;
+ return false;
+ }
+ });
+
+ return v;
+ };
+
+ t.onKeyUp.add(function(ed, e) {
+ var o = find(e);
+
+ if (o)
+ return Event.cancel(e);
+ });
+
+ t.onKeyPress.add(function(ed, e) {
+ var o = find(e);
+
+ if (o)
+ return Event.cancel(e);
+ });
+
+ t.onKeyDown.add(function(ed, e) {
+ var o = find(e);
+
+ if (o) {
+ o.func.call(o.scope);
+ return Event.cancel(e);
+ }
+ });
+ }
+
+ if (tinymce.isIE) {
+ // Fix so resize will only update the width and height attributes not the styles of an image
+ // It will also block mceItemNoResize items
+ t.dom.bind(t.getDoc(), 'controlselect', function(e) {
+ var re = t.resizeInfo, cb;
+
+ e = e.target;
+
+ // Don't do this action for non image elements
+ if (e.nodeName !== 'IMG')
+ return;
+
+ if (re)
+ t.dom.unbind(re.node, re.ev, re.cb);
+
+ if (!t.dom.hasClass(e, 'mceItemNoResize')) {
+ ev = 'resizeend';
+ cb = t.dom.bind(e, ev, function(e) {
+ var v;
+
+ e = e.target;
+
+ if (v = t.dom.getStyle(e, 'width')) {
+ t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, ''));
+ t.dom.setStyle(e, 'width', '');
+ }
+
+ if (v = t.dom.getStyle(e, 'height')) {
+ t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, ''));
+ t.dom.setStyle(e, 'height', '');
+ }
+ });
+ } else {
+ ev = 'resizestart';
+ cb = t.dom.bind(e, 'resizestart', Event.cancel, Event);
+ }
+
+ re = t.resizeInfo = {
+ node : e,
+ ev : ev,
+ cb : cb
+ };
+ });
+
+ t.onKeyDown.add(function(ed, e) {
+ switch (e.keyCode) {
+ case 8:
+ // Fix IE control + backspace browser bug
+ if (t.selection.getRng().item) {
+ ed.dom.remove(t.selection.getRng().item(0));
+ return Event.cancel(e);
+ }
+ }
+ });
+
+ /*if (t.dom.boxModel) {
+ t.getBody().style.height = '100%';
+
+ Event.add(t.getWin(), 'resize', function(e) {
+ var docElm = t.getDoc().documentElement;
+
+ docElm.style.height = (docElm.offsetHeight - 10) + 'px';
+ });
+ }*/
+ }
+
+ if (tinymce.isOpera) {
+ t.onClick.add(function(ed, e) {
+ Event.prevent(e);
+ });
+ }
+
+ // Add custom undo/redo handlers
+ if (s.custom_undo_redo) {
+ function addUndo() {
+ t.undoManager.typing = 0;
+ t.undoManager.add();
+ };
+
+ t.dom.bind(t.getDoc(), 'focusout', function(e) {
+ if (!t.removed && t.undoManager.typing)
+ addUndo();
+ });
+
+ t.onKeyUp.add(function(ed, e) {
+ if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey)
+ addUndo();
+ });
+
+ t.onKeyDown.add(function(ed, e) {
+ var rng, parent, bookmark;
+
+ // IE has a really odd bug where the DOM might include an node that doesn't have
+ // a proper structure. If you try to access nodeValue it would throw an illegal value exception.
+ // This seems to only happen when you delete contents and it seems to be avoidable if you refresh the element
+ // after you delete contents from it. See: #3008923
+ if (isIE && e.keyCode == 46) {
+ rng = t.selection.getRng();
+
+ if (rng.parentElement) {
+ parent = rng.parentElement();
+
+ // Select next word when ctrl key is used in combo with delete
+ if (e.ctrlKey) {
+ rng.moveEnd('word', 1);
+ rng.select();
+ }
+
+ // Delete contents
+ t.selection.getSel().clear();
+
+ // Check if we are within the same parent
+ if (rng.parentElement() == parent) {
+ bookmark = t.selection.getBookmark();
+
+ try {
+ // Update the HTML and hopefully it will remove the artifacts
+ parent.innerHTML = parent.innerHTML;
+ } catch (ex) {
+ // And since it's IE it can sometimes produce an unknown runtime error
+ }
+
+ // Restore the caret position
+ t.selection.moveToBookmark(bookmark);
+ }
+
+ // Block the default delete behavior since it might be broken
+ e.preventDefault();
+ return;
+ }
+ }
+
+ // Is caracter positon keys
+ if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) {
+ if (t.undoManager.typing)
+ addUndo();
+
+ return;
+ }
+
+ if (!t.undoManager.typing) {
+ t.undoManager.add();
+ t.undoManager.typing = 1;
+ }
+ });
+
+ t.onMouseDown.add(function() {
+ if (t.undoManager.typing)
+ addUndo();
+ });
+ }
+ },
+
+ _isHidden : function() {
+ var s;
+
+ if (!isGecko)
+ return 0;
+
+ // Weird, wheres that cursor selection?
+ s = this.selection.getSel();
+ return (!s || !s.rangeCount || s.rangeCount == 0);
+ },
+
+ // Fix for bug #1867292
+ _fixNesting : function(s) {
+ var d = [], i;
+
+ s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) {
+ var e;
+
+ // Handle end element
+ if (b === '/') {
+ if (!d.length)
+ return '';
+
+ if (c !== d[d.length - 1].tag) {
+ for (i=d.length - 1; i>=0; i--) {
+ if (d[i].tag === c) {
+ d[i].close = 1;
+ break;
+ }
+ }
+
+ return '';
+ } else {
+ d.pop();
+
+ if (d.length && d[d.length - 1].close) {
+ a = a + '</' + d[d.length - 1].tag + '>';
+ d.pop();
+ }
+ }
+ } else {
+ // Ignore these
+ if (/^(br|hr|input|meta|img|link|param)$/i.test(c))
+ return a;
+
+ // Ignore closed ones
+ if (/\/>$/.test(a))
+ return a;
+
+ d.push({tag : c}); // Push start element
+ }
+
+ return a;
+ });
+
+ // End all open tags
+ for (i=d.length - 1; i>=0; i--)
+ s += '</' + d[i].tag + '>';
+
+ return s;
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ // Added for compression purposes
+ var each = tinymce.each, undefined, TRUE = true, FALSE = false;
+
+ tinymce.EditorCommands = function(editor) {
+ var dom = editor.dom,
+ selection = editor.selection,
+ commands = {state: {}, exec : {}, value : {}},
+ settings = editor.settings,
+ bookmark;
+
+ function execCommand(command, ui, value) {
+ var func;
+
+ command = command.toLowerCase();
+ if (func = commands.exec[command]) {
+ func(command, ui, value);
+ return TRUE;
+ }
+
+ return FALSE;
+ };
+
+ function queryCommandState(command) {
+ var func;
+
+ command = command.toLowerCase();
+ if (func = commands.state[command])
+ return func(command);
+
+ return -1;
+ };
+
+ function queryCommandValue(command) {
+ var func;
+
+ command = command.toLowerCase();
+ if (func = commands.value[command])
+ return func(command);
+
+ return FALSE;
+ };
+
+ function addCommands(command_list, type) {
+ type = type || 'exec';
+
+ each(command_list, function(callback, command) {
+ each(command.toLowerCase().split(','), function(command) {
+ commands[type][command] = callback;
+ });
+ });
+ };
+
+ // Expose public methods
+ tinymce.extend(this, {
+ execCommand : execCommand,
+ queryCommandState : queryCommandState,
+ queryCommandValue : queryCommandValue,
+ addCommands : addCommands
+ });
+
+ // Private methods
+
+ function execNativeCommand(command, ui, value) {
+ if (ui === undefined)
+ ui = FALSE;
+
+ if (value === undefined)
+ value = null;
+
+ return editor.getDoc().execCommand(command, ui, value);
+ };
+
+ function isFormatMatch(name) {
+ return editor.formatter.match(name);
+ };
+
+ function toggleFormat(name, value) {
+ editor.formatter.toggle(name, value ? {value : value} : undefined);
+ };
+
+ function storeSelection(type) {
+ bookmark = selection.getBookmark(type);
+ };
+
+ function restoreSelection() {
+ selection.moveToBookmark(bookmark);
+ };
+
+ // Add execCommand overrides
+ addCommands({
+ // Ignore these, added for compatibility
+ 'mceResetDesignMode,mceBeginUndoLevel' : function() {},
+
+ // Add undo manager logic
+ 'mceEndUndoLevel,mceAddUndoLevel' : function() {
+ editor.undoManager.add();
+ },
+
+ 'Cut,Copy,Paste' : function(command) {
+ var doc = editor.getDoc(), failed;
+
+ // Try executing the native command
+ try {
+ execNativeCommand(command);
+ } catch (ex) {
+ // Command failed
+ failed = TRUE;
+ }
+
+ // Present alert message about clipboard access not being available
+ if (failed || !doc.queryCommandSupported(command)) {
+ if (tinymce.isGecko) {
+ editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) {
+ if (state)
+ open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank');
+ });
+ } else
+ editor.windowManager.alert(editor.getLang('clipboard_no_support'));
+ }
+ },
+
+ // Override unlink command
+ unlink : function(command) {
+ if (selection.isCollapsed())
+ selection.select(selection.getNode());
+
+ execNativeCommand(command);
+ selection.collapse(FALSE);
+ },
+
+ // Override justify commands to use the text formatter engine
+ 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
+ var align = command.substring(7);
+
+ // Remove all other alignments first
+ each('left,center,right,full'.split(','), function(name) {
+ if (align != name)
+ editor.formatter.remove('align' + name);
+ });
+
+ toggleFormat('align' + align);
+ },
+
+ // Override list commands to fix WebKit bug
+ 'InsertUnorderedList,InsertOrderedList' : function(command) {
+ var listElm, listParent;
+
+ execNativeCommand(command);
+
+ // WebKit produces lists within block elements so we need to split them
+ // we will replace the native list creation logic to custom logic later on
+ // TODO: Remove this when the list creation logic is removed
+ listElm = dom.getParent(selection.getNode(), 'ol,ul');
+ if (listElm) {
+ listParent = listElm.parentNode;
+
+ // If list is within a text block then split that block
+ if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
+ storeSelection();
+ dom.split(listParent, listElm);
+ restoreSelection();
+ }
+ }
+ },
+
+ // Override commands to use the text formatter engine
+ 'Bold,Italic,Underline,Strikethrough' : function(command) {
+ toggleFormat(command);
+ },
+
+ // Override commands to use the text formatter engine
+ 'ForeColor,HiliteColor,FontName' : function(command, ui, value) {
+ toggleFormat(command, value);
+ },
+
+ FontSize : function(command, ui, value) {
+ var fontClasses, fontSizes;
+
+ // Convert font size 1-7 to styles
+ if (value >= 1 && value <= 7) {
+ fontSizes = tinymce.explode(settings.font_size_style_values);
+ fontClasses = tinymce.explode(settings.font_size_classes);
+
+ if (fontClasses)
+ value = fontClasses[value - 1] || value;
+ else
+ value = fontSizes[value - 1] || value;
+ }
+
+ toggleFormat(command, value);
+ },
+
+ RemoveFormat : function(command) {
+ editor.formatter.remove(command);
+ },
+
+ mceBlockQuote : function(command) {
+ toggleFormat('blockquote');
+ },
+
+ FormatBlock : function(command, ui, value) {
+ return toggleFormat(value || 'p');
+ },
+
+ mceCleanup : function() {
+ var bookmark = selection.getBookmark();
+
+ editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE});
+
+ selection.moveToBookmark(bookmark);
+ },
+
+ mceRemoveNode : function(command, ui, value) {
+ var node = value || selection.getNode();
+
+ // Make sure that the body node isn't removed
+ if (node != editor.getBody()) {
+ storeSelection();
+ editor.dom.remove(node, TRUE);
+ restoreSelection();
+ }
+ },
+
+ mceSelectNodeDepth : function(command, ui, value) {
+ var counter = 0;
+
+ dom.getParent(selection.getNode(), function(node) {
+ if (node.nodeType == 1 && counter++ == value) {
+ selection.select(node);
+ return FALSE;
+ }
+ }, editor.getBody());
+ },
+
+ mceSelectNode : function(command, ui, value) {
+ selection.select(value);
+ },
+
+ mceInsertContent : function(command, ui, value) {
+ selection.setContent(value);
+ },
+
+ mceInsertRawHTML : function(command, ui, value) {
+ selection.setContent('tiny_mce_marker');
+ editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, value));
+ },
+
+ mceSetContent : function(command, ui, value) {
+ editor.setContent(value);
+ },
+
+ 'Indent,Outdent' : function(command) {
+ var intentValue, indentUnit, value;
+
+ // Setup indent level
+ intentValue = settings.indentation;
+ indentUnit = /[a-z%]+$/i.exec(intentValue);
+ intentValue = parseInt(intentValue);
+
+ if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
+ each(selection.getSelectedBlocks(), function(element) {
+ if (command == 'outdent') {
+ value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue);
+ dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : '');
+ } else
+ dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit);
+ });
+ } else
+ execNativeCommand(command);
+ },
+
+ mceRepaint : function() {
+ var bookmark;
+
+ if (tinymce.isGecko) {
+ try {
+ storeSelection(TRUE);
+
+ if (selection.getSel())
+ selection.getSel().selectAllChildren(editor.getBody());
+
+ selection.collapse(TRUE);
+ restoreSelection();
+ } catch (ex) {
+ // Ignore
+ }
+ }
+ },
+
+ mceToggleFormat : function(command, ui, value) {
+ editor.formatter.toggle(value);
+ },
+
+ InsertHorizontalRule : function() {
+ selection.setContent('<hr />');
+ },
+
+ mceToggleVisualAid : function() {
+ editor.hasVisual = !editor.hasVisual;
+ editor.addVisual();
+ },
+
+ mceReplaceContent : function(command, ui, value) {
+ selection.setContent(value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'})));
+ },
+
+ mceInsertLink : function(command, ui, value) {
+ var link = dom.getParent(selection.getNode(), 'a');
+
+ if (tinymce.is(value, 'string'))
+ value = {href : value};
+
+ if (!link) {
+ execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);');
+ each(dom.select('a[href=javascript:mctmp(0);]'), function(link) {
+ dom.setAttribs(link, value);
+ });
+ } else {
+ if (value.href)
+ dom.setAttribs(link, value);
+ else
+ editor.dom.remove(link, TRUE);
+ }
+ },
+
+ selectAll : function() {
+ var root = dom.getRoot(), rng = dom.createRng();
+
+ rng.setStart(root, 0);
+ rng.setEnd(root, root.childNodes.length);
+
+ editor.selection.setRng(rng);
+ }
+ });
+
+ // Add queryCommandState overrides
+ addCommands({
+ // Override justify commands
+ 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
+ return isFormatMatch('align' + command.substring(7));
+ },
+
+ 'Bold,Italic,Underline,Strikethrough' : function(command) {
+ return isFormatMatch(command);
+ },
+
+ mceBlockQuote : function() {
+ return isFormatMatch('blockquote');
+ },
+
+ Outdent : function() {
+ var node;
+
+ if (settings.inline_styles) {
+ if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
+ return TRUE;
+
+ if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
+ return TRUE;
+ }
+
+ return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'));
+ },
+
+ 'InsertUnorderedList,InsertOrderedList' : function(command) {
+ return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL');
+ }
+ }, 'state');
+
+ // Add queryCommandValue overrides
+ addCommands({
+ 'FontSize,FontName' : function(command) {
+ var value = 0, parent;
+
+ if (parent = dom.getParent(selection.getNode(), 'span')) {
+ if (command == 'fontsize')
+ value = parent.style.fontSize;
+ else
+ value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
+ }
+
+ return value;
+ }
+ }, 'value');
+
+ // Add undo manager logic
+ if (settings.custom_undo_redo) {
+ addCommands({
+ Undo : function() {
+ editor.undoManager.undo();
+ },
+
+ Redo : function() {
+ editor.undoManager.redo();
+ }
+ });
+ }
+ };
+})(tinymce);
+(function(tinymce) {
+ var Dispatcher = tinymce.util.Dispatcher;
+
+ tinymce.UndoManager = function(editor) {
+ var self, index = 0, data = [];
+
+ function getContent() {
+ return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}));
+ };
+
+ return self = {
+ typing : 0,
+
+ onAdd : new Dispatcher(self),
+ onUndo : new Dispatcher(self),
+ onRedo : new Dispatcher(self),
+
+ add : function(level) {
+ var i, settings = editor.settings, lastLevel;
+
+ level = level || {};
+ level.content = getContent();
+
+ // Add undo level if needed
+ lastLevel = data[index];
+ if (lastLevel && lastLevel.content == level.content) {
+ if (index > 0 || data.length == 1)
+ return null;
+ }
+
+ // Time to compress
+ if (settings.custom_undo_redo_levels) {
+ if (data.length > settings.custom_undo_redo_levels) {
+ for (i = 0; i < data.length - 1; i++)
+ data[i] = data[i + 1];
+
+ data.length--;
+ index = data.length;
+ }
+ }
+
+ // Get a non intrusive normalized bookmark
+ level.bookmark = editor.selection.getBookmark(2, true);
+
+ // Crop array if needed
+ if (index < data.length - 1) {
+ // Treat first level as initial
+ if (index == 0)
+ data = [];
+ else
+ data.length = index + 1;
+ }
+
+ data.push(level);
+ index = data.length - 1;
+
+ self.onAdd.dispatch(self, level);
+ editor.isNotDirty = 0;
+
+ return level;
+ },
+
+ undo : function() {
+ var level, i;
+
+ if (self.typing) {
+ self.add();
+ self.typing = 0;
+ }
+
+ if (index > 0) {
+ level = data[--index];
+
+ editor.setContent(level.content, {format : 'raw'});
+ editor.selection.moveToBookmark(level.bookmark);
+
+ self.onUndo.dispatch(self, level);
+ }
+
+ return level;
+ },
+
+ redo : function() {
+ var level;
+
+ if (index < data.length - 1) {
+ level = data[++index];
+
+ editor.setContent(level.content, {format : 'raw'});
+ editor.selection.moveToBookmark(level.bookmark);
+
+ self.onRedo.dispatch(self, level);
+ }
+
+ return level;
+ },
+
+ clear : function() {
+ data = [];
+ index = self.typing = 0;
+ },
+
+ hasUndo : function() {
+ return index > 0 || self.typing;
+ },
+
+ hasRedo : function() {
+ return index < data.length - 1;
+ }
+ };
+ };
+})(tinymce);
+
+(function(tinymce) {
+ // Shorten names
+ var Event = tinymce.dom.Event,
+ isIE = tinymce.isIE,
+ isGecko = tinymce.isGecko,
+ isOpera = tinymce.isOpera,
+ each = tinymce.each,
+ extend = tinymce.extend,
+ TRUE = true,
+ FALSE = false;
+
+ function cloneFormats(node) {
+ var clone, temp, inner;
+
+ do {
+ if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
+ if (clone) {
+ temp = node.cloneNode(false);
+ temp.appendChild(clone);
+ clone = temp;
+ } else {
+ clone = inner = node.cloneNode(false);
+ }
+
+ clone.removeAttribute('id');
+ }
+ } while (node = node.parentNode);
+
+ if (clone)
+ return {wrapper : clone, inner : inner};
+ };
+
+ // Checks if the selection/caret is at the end of the specified block element
+ function isAtEnd(rng, par) {
+ var rng2 = par.ownerDocument.createRange();
+
+ rng2.setStart(rng.endContainer, rng.endOffset);
+ rng2.setEndAfter(par);
+
+ // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element
+ return rng2.cloneContents().textContent.length == 0;
+ };
+
+ function isEmpty(n) {
+ n = n.innerHTML;
+
+ n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars
+ n = n.replace(/<[^>]+>/g, ''); // Remove all tags
+
+ return n.replace(/[ \u00a0\t\r\n]+/g, '') == '';
+ };
+
+ function splitList(selection, dom, li) {
+ var listBlock, block;
+
+ if (isEmpty(li)) {
+ listBlock = dom.getParent(li, 'ul,ol');
+
+ if (!dom.getParent(listBlock.parentNode, 'ul,ol')) {
+ dom.split(listBlock, li);
+ block = dom.create('p', 0, '<br _mce_bogus="1" />');
+ dom.replace(block, li);
+ selection.select(block, 1);
+ }
+
+ return FALSE;
+ }
+
+ return TRUE;
+ };
+
+ tinymce.create('tinymce.ForceBlocks', {
+ ForceBlocks : function(ed) {
+ var t = this, s = ed.settings, elm;
+
+ t.editor = ed;
+ t.dom = ed.dom;
+ elm = (s.forced_root_block || 'p').toLowerCase();
+ s.element = elm.toUpperCase();
+
+ ed.onPreInit.add(t.setup, t);
+
+ t.reOpera = new RegExp('(\\u00a0| | )<\/' + elm + '>', 'gi');
+ t.rePadd = new RegExp('<p( )([^>]+)><\\\/p>|<p( )([^>]+)\\\/>|<p( )([^>]+)>\\s+<\\\/p>|<p><\\\/p>|<p\\\/>|<p>\\s+<\\\/p>'.replace(/p/g, elm), 'gi');
+ t.reNbsp2BR1 = new RegExp('<p( )([^>]+)>[\\s\\u00a0]+<\\\/p>|<p>[\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi');
+ t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%p>'.replace(/%p/g, elm), 'gi');
+ t.reBR2Nbsp = new RegExp('<p( )([^>]+)>\\s*<br \\\/>\\s*<\\\/p>|<p>\\s*<br \\\/>\\s*<\\\/p>'.replace(/p/g, elm), 'gi');
+
+ function padd(ed, o) {
+ if (isOpera)
+ o.content = o.content.replace(t.reOpera, '</' + elm + '>');
+
+ o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0</' + elm + '>');
+
+ if (!isIE && !isOpera && o.set) {
+ // Use instead of BR in padded paragraphs
+ o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2><br /></' + elm + '>');
+ o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2><br /></' + elm + '>');
+ } else
+ o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0</' + elm + '>');
+ };
+
+ ed.onBeforeSetContent.add(padd);
+ ed.onPostProcess.add(padd);
+
+ if (s.forced_root_block) {
+ ed.onInit.add(t.forceRoots, t);
+ ed.onSetContent.add(t.forceRoots, t);
+ ed.onBeforeGetContent.add(t.forceRoots, t);
+ }
+ },
+
+ setup : function() {
+ var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection;
+
+ // Force root blocks when typing and when getting output
+ if (s.forced_root_block) {
+ ed.onBeforeExecCommand.add(t.forceRoots, t);
+ ed.onKeyUp.add(t.forceRoots, t);
+ ed.onPreProcess.add(t.forceRoots, t);
+ }
+
+ if (s.force_br_newlines) {
+ // Force IE to produce BRs on enter
+ if (isIE) {
+ ed.onKeyPress.add(function(ed, e) {
+ var n;
+
+ if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') {
+ selection.setContent('<br id="__" /> ', {format : 'raw'});
+ n = dom.get('__');
+ n.removeAttribute('id');
+ selection.select(n);
+ selection.collapse();
+ return Event.cancel(e);
+ }
+ });
+ }
+ }
+
+ if (s.force_p_newlines) {
+ if (!isIE) {
+ ed.onKeyPress.add(function(ed, e) {
+ if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e))
+ Event.cancel(e);
+ });
+ } else {
+ // Ungly hack to for IE to preserve the formatting when you press
+ // enter at the end of a block element with formatted contents
+ // This logic overrides the browsers default logic with
+ // custom logic that enables us to control the output
+ tinymce.addUnload(function() {
+ t._previousFormats = 0; // Fix IE leak
+ });
+
+ ed.onKeyPress.add(function(ed, e) {
+ t._previousFormats = 0;
+
+ // Clone the current formats, this will later be applied to the new block contents
+ if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles)
+ t._previousFormats = cloneFormats(ed.selection.getStart());
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ // Let IE break the element and the wrap the new caret location in the previous formats
+ if (e.keyCode == 13 && !e.shiftKey) {
+ var parent = ed.selection.getStart(), fmt = t._previousFormats;
+
+ // Parent is an empty block
+ if (!parent.hasChildNodes()) {
+ parent = dom.getParent(parent, dom.isBlock);
+
+ if (parent) {
+ parent.innerHTML = '';
+
+ if (t._previousFormats) {
+ parent.appendChild(fmt.wrapper);
+ fmt.inner.innerHTML = '\uFEFF';
+ } else
+ parent.innerHTML = '\uFEFF';
+
+ selection.select(parent, 1);
+ ed.getDoc().execCommand('Delete', false, null);
+ }
+ }
+ }
+ });
+ }
+
+ if (isGecko) {
+ ed.onKeyDown.add(function(ed, e) {
+ if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey)
+ t.backspaceDelete(e, e.keyCode == 8);
+ });
+ }
+ }
+
+ // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973
+ if (tinymce.isWebKit) {
+ function insertBr(ed) {
+ var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h;
+
+ // Insert BR element
+ rng.insertNode(br = dom.create('br'));
+
+ // Place caret after BR
+ rng.setStartAfter(br);
+ rng.setEndAfter(br);
+ selection.setRng(rng);
+
+ // Could not place caret after BR then insert an nbsp entity and move the caret
+ if (selection.getSel().focusNode == br.previousSibling) {
+ selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br));
+ selection.collapse(TRUE);
+ }
+
+ // Create a temporary DIV after the BR and get the position as it
+ // seems like getPos() returns 0 for text nodes and BR elements.
+ dom.insertAfter(div, br);
+ divYPos = dom.getPos(div).y;
+ dom.remove(div);
+
+ // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117
+ if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port.
+ ed.getWin().scrollTo(0, divYPos);
+ };
+
+ ed.onKeyPress.add(function(ed, e) {
+ if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) {
+ insertBr(ed);
+ Event.cancel(e);
+ }
+ });
+ }
+
+ // Padd empty inline elements within block elements
+ // For example: <p><strong><em></em></strong></p> becomes <p><strong><em> </em></strong></p>
+ ed.onPreProcess.add(function(ed, o) {
+ each(dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) {
+ if (isEmpty(p)) {
+ each(dom.select('span,em,strong,b,i', o.node), function(n) {
+ if (!n.hasChildNodes()) {
+ n.appendChild(ed.getDoc().createTextNode('\u00a0'));
+ return FALSE; // Break the loop one padding is enough
+ }
+ });
+ }
+ });
+ });
+
+ // IE specific fixes
+ if (isIE) {
+ // Replaces IE:s auto generated paragraphs with the specified element name
+ if (s.element != 'P') {
+ ed.onKeyPress.add(function(ed, e) {
+ t.lastElm = selection.getNode().nodeName;
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ var bl, n = selection.getNode(), b = ed.getBody();
+
+ if (b.childNodes.length === 1 && n.nodeName == 'P') {
+ n = dom.rename(n, s.element);
+ selection.select(n);
+ selection.collapse();
+ ed.nodeChanged();
+ } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') {
+ bl = dom.getParent(n, 'p');
+
+ if (bl) {
+ dom.rename(bl, s.element);
+ ed.nodeChanged();
+ }
+ }
+ });
+ }
+ }
+ },
+
+ find : function(n, t, s) {
+ var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1;
+
+ while (n = w.nextNode()) {
+ c++;
+
+ // Index by node
+ if (t == 0 && n == s)
+ return c;
+
+ // Node by index
+ if (t == 1 && c == s)
+ return n;
+ }
+
+ return -1;
+ },
+
+ forceRoots : function(ed, e) {
+ var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF;
+ var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid;
+
+ // Fix for bug #1863847
+ //if (e && e.keyCode == 13)
+ // return TRUE;
+
+ // Wrap non blocks into blocks
+ for (i = nl.length - 1; i >= 0; i--) {
+ nx = nl[i];
+
+ // Ignore internal elements
+ if (nx.nodeType === 1 && nx.getAttribute('_mce_type')) {
+ bl = null;
+ continue;
+ }
+
+ // Is text or non block element
+ if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) {
+ if (!bl) {
+ // Create new block but ignore whitespace
+ if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) {
+ // Store selection
+ if (si == -2 && r) {
+ if (!isIE) {
+ // If selection is element then mark it
+ if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) {
+ // Save the id of the selected element
+ eid = n.getAttribute("id");
+ n.setAttribute("id", "__mce");
+ } else {
+ // If element is inside body, might not be the case in contentEdiable mode
+ if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) {
+ so = r.startOffset;
+ eo = r.endOffset;
+ si = t.find(b, 0, r.startContainer);
+ ei = t.find(b, 0, r.endContainer);
+ }
+ }
+ } else {
+ // Force control range into text range
+ if (r.item) {
+ tr = d.body.createTextRange();
+ tr.moveToElementText(r.item(0));
+ r = tr;
+ }
+
+ tr = d.body.createTextRange();
+ tr.moveToElementText(b);
+ tr.collapse(1);
+ bp = tr.move('character', c) * -1;
+
+ tr = r.duplicate();
+ tr.collapse(1);
+ sp = tr.move('character', c) * -1;
+
+ tr = r.duplicate();
+ tr.collapse(0);
+ le = (tr.move('character', c) * -1) - sp;
+
+ si = sp - bp;
+ ei = le;
+ }
+ }
+
+ // Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE
+ // See: http://support.microsoft.com/kb/829907
+ bl = ed.dom.create(ed.settings.forced_root_block);
+ nx.parentNode.replaceChild(bl, nx);
+ bl.appendChild(nx);
+ }
+ } else {
+ if (bl.hasChildNodes())
+ bl.insertBefore(nx, bl.firstChild);
+ else
+ bl.appendChild(nx);
+ }
+ } else
+ bl = null; // Time to create new block
+ }
+
+ // Restore selection
+ if (si != -2) {
+ if (!isIE) {
+ bl = b.getElementsByTagName(ed.settings.element)[0];
+ r = d.createRange();
+
+ // Select last location or generated block
+ if (si != -1)
+ r.setStart(t.find(b, 1, si), so);
+ else
+ r.setStart(bl, 0);
+
+ // Select last location or generated block
+ if (ei != -1)
+ r.setEnd(t.find(b, 1, ei), eo);
+ else
+ r.setEnd(bl, 0);
+
+ if (s) {
+ s.removeAllRanges();
+ s.addRange(r);
+ }
+ } else {
+ try {
+ r = s.createRange();
+ r.moveToElementText(b);
+ r.collapse(1);
+ r.moveStart('character', si);
+ r.moveEnd('character', ei);
+ r.select();
+ } catch (ex) {
+ // Ignore
+ }
+ }
+ } else if (!isIE && (n = ed.dom.get('__mce'))) {
+ // Restore the id of the selected element
+ if (eid)
+ n.setAttribute('id', eid);
+ else
+ n.removeAttribute('id');
+
+ // Move caret before selected element
+ r = d.createRange();
+ r.setStartBefore(n);
+ r.setEndBefore(n);
+ se.setRng(r);
+ }
+ },
+
+ getParentBlock : function(n) {
+ var d = this.dom;
+
+ return d.getParent(n, d.isBlock);
+ },
+
+ insertPara : function(e) {
+ var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body;
+ var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car;
+
+ // If root blocks are forced then use Operas default behavior since it's really good
+// Removed due to bug: #1853816
+// if (se.forced_root_block && isOpera)
+// return TRUE;
+
+ // Setup before range
+ rb = d.createRange();
+
+ // If is before the first block element and in body, then move it into first block element
+ rb.setStart(s.anchorNode, s.anchorOffset);
+ rb.collapse(TRUE);
+
+ // Setup after range
+ ra = d.createRange();
+
+ // If is before the first block element and in body, then move it into first block element
+ ra.setStart(s.focusNode, s.focusOffset);
+ ra.collapse(TRUE);
+
+ // Setup start/end points
+ dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0;
+ sn = dir ? s.anchorNode : s.focusNode;
+ so = dir ? s.anchorOffset : s.focusOffset;
+ en = dir ? s.focusNode : s.anchorNode;
+ eo = dir ? s.focusOffset : s.anchorOffset;
+
+ // If selection is in empty table cell
+ if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) {
+ if (sn.firstChild.nodeName == 'BR')
+ dom.remove(sn.firstChild); // Remove BR
+
+ // Create two new block elements
+ if (sn.childNodes.length == 0) {
+ ed.dom.add(sn, se.element, null, '<br />');
+ aft = ed.dom.add(sn, se.element, null, '<br />');
+ } else {
+ n = sn.innerHTML;
+ sn.innerHTML = '';
+ ed.dom.add(sn, se.element, null, n);
+ aft = ed.dom.add(sn, se.element, null, '<br />');
+ }
+
+ // Move caret into the last one
+ r = d.createRange();
+ r.selectNodeContents(aft);
+ r.collapse(1);
+ ed.selection.setRng(r);
+
+ return FALSE;
+ }
+
+ // If the caret is in an invalid location in FF we need to move it into the first block
+ if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) {
+ sn = en = sn.firstChild;
+ so = eo = 0;
+ rb = d.createRange();
+ rb.setStart(sn, 0);
+ ra = d.createRange();
+ ra.setStart(en, 0);
+ }
+
+ // Never use body as start or end node
+ sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
+ sn = sn.nodeName == "BODY" ? sn.firstChild : sn;
+ en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes
+ en = en.nodeName == "BODY" ? en.firstChild : en;
+
+ // Get start and end blocks
+ sb = t.getParentBlock(sn);
+ eb = t.getParentBlock(en);
+ bn = sb ? sb.nodeName : se.element; // Get block name to create
+
+ // Return inside list use default browser behavior
+ if (n = t.dom.getParent(sb, 'li,pre')) {
+ if (n.nodeName == 'LI')
+ return splitList(ed.selection, t.dom, n);
+
+ return TRUE;
+ }
+
+ // If caption or absolute layers then always generate new blocks within
+ if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
+ bn = se.element;
+ sb = null;
+ }
+
+ // If caption or absolute layers then always generate new blocks within
+ if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) {
+ bn = se.element;
+ eb = null;
+ }
+
+ // Use P instead
+ if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) {
+ bn = se.element;
+ sb = eb = null;
+ }
+
+ // Setup new before and after blocks
+ bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn);
+ aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn);
+
+ // Remove id from after clone
+ aft.removeAttribute('id');
+
+ // Is header and cursor is at the end, then force paragraph under
+ if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb))
+ aft = ed.dom.create(se.element);
+
+ // Find start chop node
+ n = sc = sn;
+ do {
+ if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
+ break;
+
+ sc = n;
+ } while ((n = n.previousSibling ? n.previousSibling : n.parentNode));
+
+ // Find end chop node
+ n = ec = en;
+ do {
+ if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName))
+ break;
+
+ ec = n;
+ } while ((n = n.nextSibling ? n.nextSibling : n.parentNode));
+
+ // Place first chop part into before block element
+ if (sc.nodeName == bn)
+ rb.setStart(sc, 0);
+ else
+ rb.setStartBefore(sc);
+
+ rb.setEnd(sn, so);
+ bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
+
+ // Place secnd chop part within new block element
+ try {
+ ra.setEndAfter(ec);
+ } catch(ex) {
+ //console.debug(s.focusNode, s.focusOffset);
+ }
+
+ ra.setStart(en, eo);
+ aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari
+
+ // Create range around everything
+ r = d.createRange();
+ if (!sc.previousSibling && sc.parentNode.nodeName == bn) {
+ r.setStartBefore(sc.parentNode);
+ } else {
+ if (rb.startContainer.nodeName == bn && rb.startOffset == 0)
+ r.setStartBefore(rb.startContainer);
+ else
+ r.setStart(rb.startContainer, rb.startOffset);
+ }
+
+ if (!ec.nextSibling && ec.parentNode.nodeName == bn)
+ r.setEndAfter(ec.parentNode);
+ else
+ r.setEnd(ra.endContainer, ra.endOffset);
+
+ // Delete and replace it with new block elements
+ r.deleteContents();
+
+ if (isOpera)
+ ed.getWin().scrollTo(0, vp.y);
+
+ // Never wrap blocks in blocks
+ if (bef.firstChild && bef.firstChild.nodeName == bn)
+ bef.innerHTML = bef.firstChild.innerHTML;
+
+ if (aft.firstChild && aft.firstChild.nodeName == bn)
+ aft.innerHTML = aft.firstChild.innerHTML;
+
+ // Padd empty blocks
+ if (isEmpty(bef))
+ bef.innerHTML = '<br />';
+
+ function appendStyles(e, en) {
+ var nl = [], nn, n, i;
+
+ e.innerHTML = '';
+
+ // Make clones of style elements
+ if (se.keep_styles) {
+ n = en;
+ do {
+ // We only want style specific elements
+ if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) {
+ nn = n.cloneNode(FALSE);
+ dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique
+ nl.push(nn);
+ }
+ } while (n = n.parentNode);
+ }
+
+ // Append style elements to aft
+ if (nl.length > 0) {
+ for (i = nl.length - 1, nn = e; i >= 0; i--)
+ nn = nn.appendChild(nl[i]);
+
+ // Padd most inner style element
+ nl[0].innerHTML = isOpera ? ' ' : '<br />'; // Extra space for Opera so that the caret can move there
+ return nl[0]; // Move caret to most inner element
+ } else
+ e.innerHTML = isOpera ? ' ' : '<br />'; // Extra space for Opera so that the caret can move there
+ };
+
+ // Fill empty afterblook with current style
+ if (isEmpty(aft))
+ car = appendStyles(aft, en);
+
+ // Opera needs this one backwards for older versions
+ if (isOpera && parseFloat(opera.version()) < 9.5) {
+ r.insertNode(bef);
+ r.insertNode(aft);
+ } else {
+ r.insertNode(aft);
+ r.insertNode(bef);
+ }
+
+ // Normalize
+ aft.normalize();
+ bef.normalize();
+
+ function first(n) {
+ return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n;
+ };
+
+ // Move cursor and scroll into view
+ r = d.createRange();
+ r.selectNodeContents(isGecko ? first(car || aft) : car || aft);
+ r.collapse(1);
+ s.removeAllRanges();
+ s.addRange(r);
+
+ // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
+ y = ed.dom.getPos(aft).y;
+ ch = aft.clientHeight;
+
+ // Is element within viewport
+ if (y < vp.y || y + ch > vp.y + vp.h) {
+ ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
+ //console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight));
+ }
+
+ return FALSE;
+ },
+
+ backspaceDelete : function(e, bs) {
+ var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker;
+
+ // Delete when caret is behind a element doesn't work correctly on Gecko see #3011651
+ if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) {
+ walker = new tinymce.dom.TreeWalker(sc.lastChild, sc);
+
+ // Walk the dom backwards until we find a text node
+ for (n = sc.lastChild; n; n = walker.prev()) {
+ if (n.nodeType == 3) {
+ r.setStart(n, n.nodeValue.length);
+ r.collapse(true);
+ se.setRng(r);
+ return;
+ }
+ }
+ }
+
+ // The caret sometimes gets stuck in Gecko if you delete empty paragraphs
+ // This workaround removes the element by hand and moves the caret to the previous element
+ if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) {
+ if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) {
+ // Find previous block element
+ n = sc;
+ while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ;
+
+ if (n) {
+ if (sc != b.firstChild) {
+ // Find last text node
+ w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE);
+ while (tn = w.nextNode())
+ n = tn;
+
+ // Place caret at the end of last text node
+ r = ed.getDoc().createRange();
+ r.setStart(n, n.nodeValue ? n.nodeValue.length : 0);
+ r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0);
+ se.setRng(r);
+
+ // Remove the target container
+ ed.dom.remove(sc);
+ }
+
+ return Event.cancel(e);
+ }
+ }
+ }
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ // Shorten names
+ var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
+
+ tinymce.create('tinymce.ControlManager', {
+ ControlManager : function(ed, s) {
+ var t = this, i;
+
+ s = s || {};
+ t.editor = ed;
+ t.controls = {};
+ t.onAdd = new tinymce.util.Dispatcher(t);
+ t.onPostRender = new tinymce.util.Dispatcher(t);
+ t.prefix = s.prefix || ed.id + '_';
+ t._cls = {};
+
+ t.onPostRender.add(function() {
+ each(t.controls, function(c) {
+ c.postRender();
+ });
+ });
+ },
+
+ get : function(id) {
+ return this.controls[this.prefix + id] || this.controls[id];
+ },
+
+ setActive : function(id, s) {
+ var c = null;
+
+ if (c = this.get(id))
+ c.setActive(s);
+
+ return c;
+ },
+
+ setDisabled : function(id, s) {
+ var c = null;
+
+ if (c = this.get(id))
+ c.setDisabled(s);
+
+ return c;
+ },
+
+ add : function(c) {
+ var t = this;
+
+ if (c) {
+ t.controls[c.id] = c;
+ t.onAdd.dispatch(c, t);
+ }
+
+ return c;
+ },
+
+ createControl : function(n) {
+ var c, t = this, ed = t.editor;
+
+ each(ed.plugins, function(p) {
+ if (p.createControl) {
+ c = p.createControl(n, t);
+
+ if (c)
+ return false;
+ }
+ });
+
+ switch (n) {
+ case "|":
+ case "separator":
+ return t.createSeparator();
+ }
+
+ if (!c && ed.buttons && (c = ed.buttons[n]))
+ return t.createButton(n, c);
+
+ return t.add(c);
+ },
+
+ createDropMenu : function(id, s, cc) {
+ var t = this, ed = t.editor, c, bm, v, cls;
+
+ s = extend({
+ 'class' : 'mceDropDown',
+ constrain : ed.settings.constrain_menus
+ }, s);
+
+ s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
+ if (v = ed.getParam('skin_variant'))
+ s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
+
+ id = t.prefix + id;
+ cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
+ c = t.controls[id] = new cls(id, s);
+ c.onAddItem.add(function(c, o) {
+ var s = o.settings;
+
+ s.title = ed.getLang(s.title, s.title);
+
+ if (!s.onclick) {
+ s.onclick = function(v) {
+ if (s.cmd)
+ ed.execCommand(s.cmd, s.ui || false, s.value);
+ };
+ }
+ });
+
+ ed.onRemove.add(function() {
+ c.destroy();
+ });
+
+ // Fix for bug #1897785, #1898007
+ if (tinymce.isIE) {
+ c.onShowMenu.add(function() {
+ // IE 8 needs focus in order to store away a range with the current collapsed caret location
+ ed.focus();
+
+ bm = ed.selection.getBookmark(1);
+ });
+
+ c.onHideMenu.add(function() {
+ if (bm) {
+ ed.selection.moveToBookmark(bm);
+ bm = 0;
+ }
+ });
+ }
+
+ return t.add(c);
+ },
+
+ createListBox : function(id, s, cc) {
+ var t = this, ed = t.editor, cmd, c, cls;
+
+ if (t.get(id))
+ return null;
+
+ s.title = ed.translate(s.title);
+ s.scope = s.scope || ed;
+
+ if (!s.onselect) {
+ s.onselect = function(v) {
+ ed.execCommand(s.cmd, s.ui || false, v || s.value);
+ };
+ }
+
+ s = extend({
+ title : s.title,
+ 'class' : 'mce_' + id,
+ scope : s.scope,
+ control_manager : t
+ }, s);
+
+ id = t.prefix + id;
+
+ if (ed.settings.use_native_selects)
+ c = new tinymce.ui.NativeListBox(id, s);
+ else {
+ cls = cc || t._cls.listbox || tinymce.ui.ListBox;
+ c = new cls(id, s);
+ }
+
+ t.controls[id] = c;
+
+ // Fix focus problem in Safari
+ if (tinymce.isWebKit) {
+ c.onPostRender.add(function(c, n) {
+ // Store bookmark on mousedown
+ Event.add(n, 'mousedown', function() {
+ ed.bookmark = ed.selection.getBookmark(1);
+ });
+
+ // Restore on focus, since it might be lost
+ Event.add(n, 'focus', function() {
+ ed.selection.moveToBookmark(ed.bookmark);
+ ed.bookmark = null;
+ });
+ });
+ }
+
+ if (c.hideMenu)
+ ed.onMouseDown.add(c.hideMenu, c);
+
+ return t.add(c);
+ },
+
+ createButton : function(id, s, cc) {
+ var t = this, ed = t.editor, o, c, cls;
+
+ if (t.get(id))
+ return null;
+
+ s.title = ed.translate(s.title);
+ s.label = ed.translate(s.label);
+ s.scope = s.scope || ed;
+
+ if (!s.onclick && !s.menu_button) {
+ s.onclick = function() {
+ ed.execCommand(s.cmd, s.ui || false, s.value);
+ };
+ }
+
+ s = extend({
+ title : s.title,
+ 'class' : 'mce_' + id,
+ unavailable_prefix : ed.getLang('unavailable', ''),
+ scope : s.scope,
+ control_manager : t
+ }, s);
+
+ id = t.prefix + id;
+
+ if (s.menu_button) {
+ cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
+ c = new cls(id, s);
+ ed.onMouseDown.add(c.hideMenu, c);
+ } else {
+ cls = t._cls.button || tinymce.ui.Button;
+ c = new cls(id, s);
+ }
+
+ return t.add(c);
+ },
+
+ createMenuButton : function(id, s, cc) {
+ s = s || {};
+ s.menu_button = 1;
+
+ return this.createButton(id, s, cc);
+ },
+
+ createSplitButton : function(id, s, cc) {
+ var t = this, ed = t.editor, cmd, c, cls;
+
+ if (t.get(id))
+ return null;
+
+ s.title = ed.translate(s.title);
+ s.scope = s.scope || ed;
+
+ if (!s.onclick) {
+ s.onclick = function(v) {
+ ed.execCommand(s.cmd, s.ui || false, v || s.value);
+ };
+ }
+
+ if (!s.onselect) {
+ s.onselect = function(v) {
+ ed.execCommand(s.cmd, s.ui || false, v || s.value);
+ };
+ }
+
+ s = extend({
+ title : s.title,
+ 'class' : 'mce_' + id,
+ scope : s.scope,
+ control_manager : t
+ }, s);
+
+ id = t.prefix + id;
+ cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
+ c = t.add(new cls(id, s));
+ ed.onMouseDown.add(c.hideMenu, c);
+
+ return c;
+ },
+
+ createColorSplitButton : function(id, s, cc) {
+ var t = this, ed = t.editor, cmd, c, cls, bm;
+
+ if (t.get(id))
+ return null;
+
+ s.title = ed.translate(s.title);
+ s.scope = s.scope || ed;
+
+ if (!s.onclick) {
+ s.onclick = function(v) {
+ if (tinymce.isIE)
+ bm = ed.selection.getBookmark(1);
+
+ ed.execCommand(s.cmd, s.ui || false, v || s.value);
+ };
+ }
+
+ if (!s.onselect) {
+ s.onselect = function(v) {
+ ed.execCommand(s.cmd, s.ui || false, v || s.value);
+ };
+ }
+
+ s = extend({
+ title : s.title,
+ 'class' : 'mce_' + id,
+ 'menu_class' : ed.getParam('skin') + 'Skin',
+ scope : s.scope,
+ more_colors_title : ed.getLang('more_colors')
+ }, s);
+
+ id = t.prefix + id;
+ cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
+ c = new cls(id, s);
+ ed.onMouseDown.add(c.hideMenu, c);
+
+ // Remove the menu element when the editor is removed
+ ed.onRemove.add(function() {
+ c.destroy();
+ });
+
+ // Fix for bug #1897785, #1898007
+ if (tinymce.isIE) {
+ c.onShowMenu.add(function() {
+ // IE 8 needs focus in order to store away a range with the current collapsed caret location
+ ed.focus();
+ bm = ed.selection.getBookmark(1);
+ });
+
+ c.onHideMenu.add(function() {
+ if (bm) {
+ ed.selection.moveToBookmark(bm);
+ bm = 0;
+ }
+ });
+ }
+
+ return t.add(c);
+ },
+
+ createToolbar : function(id, s, cc) {
+ var c, t = this, cls;
+
+ id = t.prefix + id;
+ cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
+ c = new cls(id, s);
+
+ if (t.get(id))
+ return null;
+
+ return t.add(c);
+ },
+
+ createSeparator : function(cc) {
+ var cls = cc || this._cls.separator || tinymce.ui.Separator;
+
+ return new cls();
+ },
+
+ setControlType : function(n, c) {
+ return this._cls[n.toLowerCase()] = c;
+ },
+
+ destroy : function() {
+ each(this.controls, function(c) {
+ c.destroy();
+ });
+
+ this.controls = null;
+ }
+ });
+})(tinymce);
+
+(function(tinymce) {
+ var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
+
+ tinymce.create('tinymce.WindowManager', {
+ WindowManager : function(ed) {
+ var t = this;
+
+ t.editor = ed;
+ t.onOpen = new Dispatcher(t);
+ t.onClose = new Dispatcher(t);
+ t.params = {};
+ t.features = {};
+ },
+
+ open : function(s, p) {
+ var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
+
+ // Default some options
+ s = s || {};
+ p = p || {};
+ sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
+ sh = isOpera ? vp.h : screen.height;
+ s.name = s.name || 'mc_' + new Date().getTime();
+ s.width = parseInt(s.width || 320);
+ s.height = parseInt(s.height || 240);
+ s.resizable = true;
+ s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
+ s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
+ p.inline = false;
+ p.mce_width = s.width;
+ p.mce_height = s.height;
+ p.mce_auto_focus = s.auto_focus;
+
+ if (mo) {
+ if (isIE) {
+ s.center = true;
+ s.help = false;
+ s.dialogWidth = s.width + 'px';
+ s.dialogHeight = s.height + 'px';
+ s.scroll = s.scrollbars || false;
+ }
+ }
+
+ // Build features string
+ each(s, function(v, k) {
+ if (tinymce.is(v, 'boolean'))
+ v = v ? 'yes' : 'no';
+
+ if (!/^(name|url)$/.test(k)) {
+ if (isIE && mo)
+ f += (f ? ';' : '') + k + ':' + v;
+ else
+ f += (f ? ',' : '') + k + '=' + v;
+ }
+ });
+
+ t.features = s;
+ t.params = p;
+ t.onOpen.dispatch(t, s, p);
+
+ u = s.url || s.file;
+ u = tinymce._addVer(u);
+
+ try {
+ if (isIE && mo) {
+ w = 1;
+ window.showModalDialog(u, window, f);
+ } else
+ w = window.open(u, s.name, f);
+ } catch (ex) {
+ // Ignore
+ }
+
+ if (!w)
+ alert(t.editor.getLang('popup_blocked'));
+ },
+
+ close : function(w) {
+ w.close();
+ this.onClose.dispatch(this);
+ },
+
+ createInstance : function(cl, a, b, c, d, e) {
+ var f = tinymce.resolve(cl);
+
+ return new f(a, b, c, d, e);
+ },
+
+ confirm : function(t, cb, s, w) {
+ w = w || window;
+
+ cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));
+ },
+
+ alert : function(tx, cb, s, w) {
+ var t = this;
+
+ w = w || window;
+ w.alert(t._decode(t.editor.getLang(tx, tx)));
+
+ if (cb)
+ cb.call(s || t);
+ },
+
+ resizeBy : function(dw, dh, win) {
+ win.resizeBy(dw, dh);
+ },
+
+ // Internal functions
+
+ _decode : function(s) {
+ return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
+ }
+ });
+}(tinymce));
+(function(tinymce) {
+ function CommandManager() {
+ var execCommands = {}, queryStateCommands = {}, queryValueCommands = {};
+
+ function add(collection, cmd, func, scope) {
+ if (typeof(cmd) == 'string')
+ cmd = [cmd];
+
+ tinymce.each(cmd, function(cmd) {
+ collection[cmd.toLowerCase()] = {func : func, scope : scope};
+ });
+ };
+
+ tinymce.extend(this, {
+ add : function(cmd, func, scope) {
+ add(execCommands, cmd, func, scope);
+ },
+
+ addQueryStateHandler : function(cmd, func, scope) {
+ add(queryStateCommands, cmd, func, scope);
+ },
+
+ addQueryValueHandler : function(cmd, func, scope) {
+ add(queryValueCommands, cmd, func, scope);
+ },
+
+ execCommand : function(scope, cmd, ui, value, args) {
+ if (cmd = execCommands[cmd.toLowerCase()]) {
+ if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false)
+ return true;
+ }
+ },
+
+ queryCommandValue : function() {
+ if (cmd = queryValueCommands[cmd.toLowerCase()])
+ return cmd.func.call(scope || cmd.scope, ui, value, args);
+ },
+
+ queryCommandState : function() {
+ if (cmd = queryStateCommands[cmd.toLowerCase()])
+ return cmd.func.call(scope || cmd.scope, ui, value, args);
+ }
+ });
+ };
+
+ tinymce.GlobalCommands = new CommandManager();
+})(tinymce);
+(function(tinymce) {
+ tinymce.Formatter = function(ed) {
+ var formats = {},
+ each = tinymce.each,
+ dom = ed.dom,
+ selection = ed.selection,
+ TreeWalker = tinymce.dom.TreeWalker,
+ rangeUtils = new tinymce.dom.RangeUtils(dom),
+ isValid = ed.schema.isValid,
+ isBlock = dom.isBlock,
+ forcedRootBlock = ed.settings.forced_root_block,
+ nodeIndex = dom.nodeIndex,
+ INVISIBLE_CHAR = '\uFEFF',
+ MCE_ATTR_RE = /^(src|href|style)$/,
+ FALSE = false,
+ TRUE = true,
+ undefined,
+ pendingFormats = {apply : [], remove : []};
+
+ function isArray(obj) {
+ return obj instanceof Array;
+ };
+
+ function getParents(node, selector) {
+ return dom.getParents(node, selector, dom.getRoot());
+ };
+
+ function isCaretNode(node) {
+ return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline');
+ };
+
+ // Public functions
+
+ function get(name) {
+ return name ? formats[name] : formats;
+ };
+
+ function register(name, format) {
+ if (name) {
+ if (typeof(name) !== 'string') {
+ each(name, function(format, name) {
+ register(name, format);
+ });
+ } else {
+ // Force format into array and add it to internal collection
+ format = format.length ? format : [format];
+
+ each(format, function(format) {
+ // Set deep to false by default on selector formats this to avoid removing
+ // alignment on images inside paragraphs when alignment is changed on paragraphs
+ if (format.deep === undefined)
+ format.deep = !format.selector;
+
+ // Default to true
+ if (format.split === undefined)
+ format.split = !format.selector || format.inline;
+
+ // Default to true
+ if (format.remove === undefined && format.selector && !format.inline)
+ format.remove = 'none';
+
+ // Mark format as a mixed format inline + block level
+ if (format.selector && format.inline) {
+ format.mixed = true;
+ format.block_expand = true;
+ }
+
+ // Split classes if needed
+ if (typeof(format.classes) === 'string')
+ format.classes = format.classes.split(/\s+/);
+ });
+
+ formats[name] = format;
+ }
+ }
+ };
+
+ function apply(name, vars, node) {
+ var formatList = get(name), format = formatList[0], bookmark, rng, i;
+
+ function moveStart(rng) {
+ var container = rng.startContainer,
+ offset = rng.startOffset,
+ walker, node;
+
+ // Move startContainer/startOffset in to a suitable node
+ if (container.nodeType == 1 || container.nodeValue === "") {
+ container = container.nodeType == 1 ? container.childNodes[offset] : container;
+
+ // Might fail if the offset is behind the last element in it's container
+ if (container) {
+ walker = new TreeWalker(container, container.parentNode);
+ for (node = walker.current(); node; node = walker.next()) {
+ if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
+ rng.setStart(node, 0);
+ break;
+ }
+ }
+ }
+ }
+
+ return rng;
+ };
+
+ function setElementFormat(elm, fmt) {
+ fmt = fmt || format;
+
+ if (elm) {
+ each(fmt.styles, function(value, name) {
+ dom.setStyle(elm, name, replaceVars(value, vars));
+ });
+
+ each(fmt.attributes, function(value, name) {
+ dom.setAttrib(elm, name, replaceVars(value, vars));
+ });
+
+ each(fmt.classes, function(value) {
+ value = replaceVars(value, vars);
+
+ if (!dom.hasClass(elm, value))
+ dom.addClass(elm, value);
+ });
+ }
+ };
+
+ function applyRngStyle(rng) {
+ var newWrappers = [], wrapName, wrapElm;
+
+ // Setup wrapper element
+ wrapName = format.inline || format.block;
+ wrapElm = dom.create(wrapName);
+ setElementFormat(wrapElm);
+
+ rangeUtils.walk(rng, function(nodes) {
+ var currentWrapElm;
+
+ function process(node) {
+ var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found;
+
+ // Stop wrapping on br elements
+ if (isEq(nodeName, 'br')) {
+ currentWrapElm = 0;
+
+ // Remove any br elements when we wrap things
+ if (format.block)
+ dom.remove(node);
+
+ return;
+ }
+
+ // If node is wrapper type
+ if (format.wrapper && matchNode(node, name, vars)) {
+ currentWrapElm = 0;
+ return;
+ }
+
+ // Can we rename the block
+ if (format.block && !format.wrapper && isTextBlock(nodeName)) {
+ node = dom.rename(node, wrapName);
+ setElementFormat(node);
+ newWrappers.push(node);
+ currentWrapElm = 0;
+ return;
+ }
+
+ // Handle selector patterns
+ if (format.selector) {
+ // Look for matching formats
+ each(formatList, function(format) {
+ if (dom.is(node, format.selector) && !isCaretNode(node)) {
+ setElementFormat(node, format);
+ found = true;
+ }
+ });
+
+ // Continue processing if a selector match wasn't found and a inline element is defined
+ if (!format.inline || found) {
+ currentWrapElm = 0;
+ return;
+ }
+ }
+
+ // Is it valid to wrap this item
+ if (isValid(wrapName, nodeName) && isValid(parentName, wrapName)) {
+ // Start wrapping
+ if (!currentWrapElm) {
+ // Wrap the node
+ currentWrapElm = wrapElm.cloneNode(FALSE);
+ node.parentNode.insertBefore(currentWrapElm, node);
+ newWrappers.push(currentWrapElm);
+ }
+
+ currentWrapElm.appendChild(node);
+ } else {
+ // Start a new wrapper for possible children
+ currentWrapElm = 0;
+
+ each(tinymce.grep(node.childNodes), process);
+
+ // End the last wrapper
+ currentWrapElm = 0;
+ }
+ };
+
+ // Process siblings from range
+ each(nodes, process);
+ });
+
+ // Cleanup
+ each(newWrappers, function(node) {
+ var childCount;
+
+ function getChildCount(node) {
+ var count = 0;
+
+ each(node.childNodes, function(node) {
+ if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))
+ count++;
+ });
+
+ return count;
+ };
+
+ function mergeStyles(node) {
+ var child, clone;
+
+ each(node.childNodes, function(node) {
+ if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
+ child = node;
+ return FALSE; // break loop
+ }
+ });
+
+ // If child was found and of the same type as the current node
+ if (child && matchName(child, format)) {
+ clone = child.cloneNode(FALSE);
+ setElementFormat(clone);
+
+ dom.replace(clone, node, TRUE);
+ dom.remove(child, 1);
+ }
+
+ return clone || node;
+ };
+
+ childCount = getChildCount(node);
+
+ // Remove empty nodes
+ if (childCount === 0) {
+ dom.remove(node, 1);
+ return;
+ }
+
+ if (format.inline || format.wrapper) {
+ // Merges the current node with it's children of similar type to reduce the number of elements
+ if (!format.exact && childCount === 1)
+ node = mergeStyles(node);
+
+ // Remove/merge children
+ each(formatList, function(format) {
+ // Merge all children of similar type will move styles from child to parent
+ // this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
+ // will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
+ each(dom.select(format.inline, node), function(child) {
+ removeFormat(format, vars, child, format.exact ? child : null);
+ });
+ });
+
+ // Remove child if direct parent is of same type
+ if (matchNode(node.parentNode, name, vars)) {
+ dom.remove(node, 1);
+ node = 0;
+ return TRUE;
+ }
+
+ // Look for parent with similar style format
+ if (format.merge_with_parents) {
+ dom.getParent(node.parentNode, function(parent) {
+ if (matchNode(parent, name, vars)) {
+ dom.remove(node, 1);
+ node = 0;
+ return TRUE;
+ }
+ });
+ }
+
+ // Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
+ if (node) {
+ node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
+ node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
+ }
+ }
+ });
+ };
+
+ if (format) {
+ if (node) {
+ rng = dom.createRng();
+
+ rng.setStartBefore(node);
+ rng.setEndAfter(node);
+
+ applyRngStyle(expandRng(rng, formatList));
+ } else {
+ if (!selection.isCollapsed() || !format.inline) {
+ // Apply formatting to selection
+ bookmark = selection.getBookmark();
+ applyRngStyle(expandRng(selection.getRng(TRUE), formatList));
+
+ selection.moveToBookmark(bookmark);
+ selection.setRng(moveStart(selection.getRng(TRUE)));
+ ed.nodeChanged();
+ } else
+ performCaretAction('apply', name, vars);
+ }
+ }
+ };
+
+ function remove(name, vars, node) {
+ var formatList = get(name), format = formatList[0], bookmark, i, rng;
+
+ function moveStart(rng) {
+ var container = rng.startContainer,
+ offset = rng.startOffset,
+ walker, node, nodes, tmpNode;
+
+ // Convert text node into index if possible
+ if (container.nodeType == 3 && offset >= container.nodeValue.length - 1) {
+ container = container.parentNode;
+ offset = nodeIndex(container) + 1;
+ }
+
+ // Move startContainer/startOffset in to a suitable node
+ if (container.nodeType == 1) {
+ nodes = container.childNodes;
+ container = nodes[Math.min(offset, nodes.length - 1)];
+ walker = new TreeWalker(container);
+
+ // If offset is at end of the parent node walk to the next one
+ if (offset > nodes.length - 1)
+ walker.next();
+
+ for (node = walker.current(); node; node = walker.next()) {
+ if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
+ // IE has a "neat" feature where it moves the start node into the closest element
+ // we can avoid this by inserting an element before it and then remove it after we set the selection
+ tmpNode = dom.create('a', null, INVISIBLE_CHAR);
+ node.parentNode.insertBefore(tmpNode, node);
+
+ // Set selection and remove tmpNode
+ rng.setStart(node, 0);
+ selection.setRng(rng);
+ dom.remove(tmpNode);
+
+ return;
+ }
+ }
+ }
+ };
+
+ // Merges the styles for each node
+ function process(node) {
+ var children, i, l;
+
+ // Grab the children first since the nodelist might be changed
+ children = tinymce.grep(node.childNodes);
+
+ // Process current node
+ for (i = 0, l = formatList.length; i < l; i++) {
+ if (removeFormat(formatList[i], vars, node, node))
+ break;
+ }
+
+ // Process the children
+ if (format.deep) {
+ for (i = 0, l = children.length; i < l; i++)
+ process(children[i]);
+ }
+ };
+
+ function findFormatRoot(container) {
+ var formatRoot;
+
+ // Find format root
+ each(getParents(container.parentNode).reverse(), function(parent) {
+ var format;
+
+ // Find format root element
+ if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
+ // Is the node matching the format we are looking for
+ format = matchNode(parent, name, vars);
+ if (format && format.split !== false)
+ formatRoot = parent;
+ }
+ });
+
+ return formatRoot;
+ };
+
+ function wrapAndSplit(format_root, container, target, split) {
+ var parent, clone, lastClone, firstClone, i, formatRootParent;
+
+ // Format root found then clone formats and split it
+ if (format_root) {
+ formatRootParent = format_root.parentNode;
+
+ for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
+ clone = parent.cloneNode(FALSE);
+
+ for (i = 0; i < formatList.length; i++) {
+ if (removeFormat(formatList[i], vars, clone, clone)) {
+ clone = 0;
+ break;
+ }
+ }
+
+ // Build wrapper node
+ if (clone) {
+ if (lastClone)
+ clone.appendChild(lastClone);
+
+ if (!firstClone)
+ firstClone = clone;
+
+ lastClone = clone;
+ }
+ }
+
+ // Never split block elements if the format is mixed
+ if (split && (!format.mixed || !isBlock(format_root)))
+ container = dom.split(format_root, container);
+
+ // Wrap container in cloned formats
+ if (lastClone) {
+ target.parentNode.insertBefore(lastClone, target);
+ firstClone.appendChild(target);
+ }
+ }
+
+ return container;
+ };
+
+ function splitToFormatRoot(container) {
+ return wrapAndSplit(findFormatRoot(container), container, container, true);
+ };
+
+ function unwrap(start) {
+ var node = dom.get(start ? '_start' : '_end'),
+ out = node[start ? 'firstChild' : 'lastChild'];
+
+ // If the end is placed within the start the result will be removed
+ // So this checks if the out node is a bookmark node if it is it
+ // checks for another more suitable node
+ if (isBookmarkNode(out))
+ out = out[start ? 'firstChild' : 'lastChild'];
+
+ dom.remove(node, true);
+
+ return out;
+ };
+
+ function removeRngStyle(rng) {
+ var startContainer, endContainer;
+
+ rng = expandRng(rng, formatList, TRUE);
+
+ if (format.split) {
+ startContainer = getContainer(rng, TRUE);
+ endContainer = getContainer(rng);
+
+ if (startContainer != endContainer) {
+ // Wrap start/end nodes in span element since these might be cloned/moved
+ startContainer = wrap(startContainer, 'span', {id : '_start', _mce_type : 'bookmark'});
+ endContainer = wrap(endContainer, 'span', {id : '_end', _mce_type : 'bookmark'});
+
+ // Split start/end
+ splitToFormatRoot(startContainer);
+ splitToFormatRoot(endContainer);
+
+ // Unwrap start/end to get real elements again
+ startContainer = unwrap(TRUE);
+ endContainer = unwrap();
+ } else
+ startContainer = endContainer = splitToFormatRoot(startContainer);
+
+ // Update range positions since they might have changed after the split operations
+ rng.startContainer = startContainer.parentNode;
+ rng.startOffset = nodeIndex(startContainer);
+ rng.endContainer = endContainer.parentNode;
+ rng.endOffset = nodeIndex(endContainer) + 1;
+ }
+
+ // Remove items between start/end
+ rangeUtils.walk(rng, function(nodes) {
+ each(nodes, function(node) {
+ process(node);
+ });
+ });
+ };
+
+ // Handle node
+ if (node) {
+ rng = dom.createRng();
+ rng.setStartBefore(node);
+ rng.setEndAfter(node);
+ removeRngStyle(rng);
+ return;
+ }
+
+ if (!selection.isCollapsed() || !format.inline) {
+ bookmark = selection.getBookmark();
+ removeRngStyle(selection.getRng(TRUE));
+ selection.moveToBookmark(bookmark);
+
+ // Check if start element still has formatting then we are at: "<b>text|</b>text" and need to move the start into the next text node
+ if (match(name, vars, selection.getStart())) {
+ moveStart(selection.getRng(true));
+ }
+
+ ed.nodeChanged();
+ } else
+ performCaretAction('remove', name, vars);
+ };
+
+ function toggle(name, vars, node) {
+ if (match(name, vars, node))
+ remove(name, vars, node);
+ else
+ apply(name, vars, node);
+ };
+
+ function matchNode(node, name, vars, similar) {
+ var formatList = get(name), format, i, classes;
+
+ function matchItems(node, format, item_name) {
+ var key, value, items = format[item_name], i;
+
+ // Check all items
+ if (items) {
+ // Non indexed object
+ if (items.length === undefined) {
+ for (key in items) {
+ if (items.hasOwnProperty(key)) {
+ if (item_name === 'attributes')
+ value = dom.getAttrib(node, key);
+ else
+ value = getStyle(node, key);
+
+ if (similar && !value && !format.exact)
+ return;
+
+ if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))
+ return;
+ }
+ }
+ } else {
+ // Only one match needed for indexed arrays
+ for (i = 0; i < items.length; i++) {
+ if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))
+ return format;
+ }
+ }
+ }
+
+ return format;
+ };
+
+ if (formatList && node) {
+ // Check each format in list
+ for (i = 0; i < formatList.length; i++) {
+ format = formatList[i];
+
+ // Name name, attributes, styles and classes
+ if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
+ // Match classes
+ if (classes = format.classes) {
+ for (i = 0; i < classes.length; i++) {
+ if (!dom.hasClass(node, classes[i]))
+ return;
+ }
+ }
+
+ return format;
+ }
+ }
+ }
+ };
+
+ function match(name, vars, node) {
+ var startNode, i;
+
+ function matchParents(node) {
+ // Find first node with similar format settings
+ node = dom.getParent(node, function(node) {
+ return !!matchNode(node, name, vars, true);
+ });
+
+ // Do an exact check on the similar format element
+ return matchNode(node, name, vars);
+ };
+
+ // Check specified node
+ if (node)
+ return matchParents(node);
+
+ // Check pending formats
+ if (selection.isCollapsed()) {
+ for (i = pendingFormats.apply.length - 1; i >= 0; i--) {
+ if (pendingFormats.apply[i].name == name)
+ return true;
+ }
+
+ for (i = pendingFormats.remove.length - 1; i >= 0; i--) {
+ if (pendingFormats.remove[i].name == name)
+ return false;
+ }
+
+ return matchParents(selection.getNode());
+ }
+
+ // Check selected node
+ node = selection.getNode();
+ if (matchParents(node))
+ return TRUE;
+
+ // Check start node if it's different
+ startNode = selection.getStart();
+ if (startNode != node) {
+ if (matchParents(startNode))
+ return TRUE;
+ }
+
+ return FALSE;
+ };
+
+ function matchAll(names, vars) {
+ var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;
+
+ // If the selection is collapsed then check pending formats
+ if (selection.isCollapsed()) {
+ for (ni = 0; ni < names.length; ni++) {
+ // If the name is to be removed, then stop it from being added
+ for (i = pendingFormats.remove.length - 1; i >= 0; i--) {
+ name = names[ni];
+
+ if (pendingFormats.remove[i].name == name) {
+ checkedMap[name] = true;
+ break;
+ }
+ }
+ }
+
+ // If the format is to be applied
+ for (i = pendingFormats.apply.length - 1; i >= 0; i--) {
+ for (ni = 0; ni < names.length; ni++) {
+ name = names[ni];
+
+ if (!checkedMap[name] && pendingFormats.apply[i].name == name) {
+ checkedMap[name] = true;
+ matchedFormatNames.push(name);
+ }
+ }
+ }
+ }
+
+ // Check start of selection for formats
+ startElement = selection.getStart();
+ dom.getParent(startElement, function(node) {
+ var i, name;
+
+ for (i = 0; i < names.length; i++) {
+ name = names[i];
+
+ if (!checkedMap[name] && matchNode(node, name, vars)) {
+ checkedMap[name] = true;
+ matchedFormatNames.push(name);
+ }
+ }
+ });
+
+ return matchedFormatNames;
+ };
+
+ function canApply(name) {
+ var formatList = get(name), startNode, parents, i, x, selector;
+
+ if (formatList) {
+ startNode = selection.getStart();
+ parents = getParents(startNode);
+
+ for (x = formatList.length - 1; x >= 0; x--) {
+ selector = formatList[x].selector;
+
+ // Format is not selector based, then always return TRUE
+ if (!selector)
+ return TRUE;
+
+ for (i = parents.length - 1; i >= 0; i--) {
+ if (dom.is(parents[i], selector))
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+ };
+
+ // Expose to public
+ tinymce.extend(this, {
+ get : get,
+ register : register,
+ apply : apply,
+ remove : remove,
+ toggle : toggle,
+ match : match,
+ matchAll : matchAll,
+ matchNode : matchNode,
+ canApply : canApply
+ });
+
+ // Private functions
+
+ function matchName(node, format) {
+ // Check for inline match
+ if (isEq(node, format.inline))
+ return TRUE;
+
+ // Check for block match
+ if (isEq(node, format.block))
+ return TRUE;
+
+ // Check for selector match
+ if (format.selector)
+ return dom.is(node, format.selector);
+ };
+
+ function isEq(str1, str2) {
+ str1 = str1 || '';
+ str2 = str2 || '';
+
+ str1 = '' + (str1.nodeName || str1);
+ str2 = '' + (str2.nodeName || str2);
+
+ return str1.toLowerCase() == str2.toLowerCase();
+ };
+
+ function getStyle(node, name) {
+ var styleVal = dom.getStyle(node, name);
+
+ // Force the format to hex
+ if (name == 'color' || name == 'backgroundColor')
+ styleVal = dom.toHex(styleVal);
+
+ // Opera will return bold as 700
+ if (name == 'fontWeight' && styleVal == 700)
+ styleVal = 'bold';
+
+ return '' + styleVal;
+ };
+
+ function replaceVars(value, vars) {
+ if (typeof(value) != "string")
+ value = value(vars);
+ else if (vars) {
+ value = value.replace(/%(\w+)/g, function(str, name) {
+ return vars[name] || str;
+ });
+ }
+
+ return value;
+ };
+
+ function isWhiteSpaceNode(node) {
+ return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue);
+ };
+
+ function wrap(node, name, attrs) {
+ var wrapper = dom.create(name, attrs);
+
+ node.parentNode.insertBefore(wrapper, node);
+ wrapper.appendChild(node);
+
+ return wrapper;
+ };
+
+ function expandRng(rng, format, remove) {
+ var startContainer = rng.startContainer,
+ startOffset = rng.startOffset,
+ endContainer = rng.endContainer,
+ endOffset = rng.endOffset, sibling, lastIdx;
+
+ // This function walks up the tree if there is no siblings before/after the node
+ function findParentContainer(container, child_name, sibling_name, root) {
+ var parent, child;
+
+ root = root || dom.getRoot();
+
+ for (;;) {
+ // Check if we can move up are we at root level or body level
+ parent = container.parentNode;
+
+ // Stop expanding on block elements or root depending on format
+ if (parent == root || (!format[0].block_expand && isBlock(parent)))
+ return container;
+
+ for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) {
+ if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
+ return container;
+
+ if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))
+ return container;
+ }
+
+ container = container.parentNode;
+ }
+
+ return container;
+ };
+
+ // If index based start position then resolve it
+ if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
+ lastIdx = startContainer.childNodes.length - 1;
+ startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
+
+ if (startContainer.nodeType == 3)
+ startOffset = 0;
+ }
+
+ // If index based end position then resolve it
+ if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
+ lastIdx = endContainer.childNodes.length - 1;
+ endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
+
+ if (endContainer.nodeType == 3)
+ endOffset = endContainer.nodeValue.length;
+ }
+
+ // Exclude bookmark nodes if possible
+ if (isBookmarkNode(startContainer.parentNode))
+ startContainer = startContainer.parentNode;
+
+ if (isBookmarkNode(startContainer))
+ startContainer = startContainer.nextSibling || startContainer;
+
+ if (isBookmarkNode(endContainer.parentNode))
+ endContainer = endContainer.parentNode;
+
+ if (isBookmarkNode(endContainer))
+ endContainer = endContainer.previousSibling || endContainer;
+
+ // Move start/end point up the tree if the leaves are sharp and if we are in different containers
+ // Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
+ // This will reduce the number of wrapper elements that needs to be created
+ // Move start point up the tree
+ if (format[0].inline || format[0].block_expand) {
+ startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');
+ endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');
+ }
+
+ // Expand start/end container to matching selector
+ if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
+ function findSelectorEndPoint(container, sibling_name) {
+ var parents, i, y;
+
+ if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name])
+ container = container[sibling_name];
+
+ parents = getParents(container);
+ for (i = 0; i < parents.length; i++) {
+ for (y = 0; y < format.length; y++) {
+ if (dom.is(parents[i], format[y].selector))
+ return parents[i];
+ }
+ }
+
+ return container;
+ };
+
+ // Find new startContainer/endContainer if there is better one
+ startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
+ endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
+ }
+
+ // Expand start/end container to matching block element or text node
+ if (format[0].block || format[0].selector) {
+ function findBlockEndPoint(container, sibling_name, sibling_name2) {
+ var node;
+
+ // Expand to block of similar type
+ if (!format[0].wrapper)
+ node = dom.getParent(container, format[0].block);
+
+ // Expand to first wrappable block element or any block element
+ if (!node)
+ node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
+
+ // Exclude inner lists from wrapping
+ if (node && format[0].wrapper)
+ node = getParents(node, 'ul,ol').reverse()[0] || node;
+
+ // Didn't find a block element look for first/last wrappable element
+ if (!node) {
+ node = container;
+
+ while (node[sibling_name] && !isBlock(node[sibling_name])) {
+ node = node[sibling_name];
+
+ // Break on BR but include it will be removed later on
+ // we can't remove it now since we need to check if it can be wrapped
+ if (isEq(node, 'br'))
+ break;
+ }
+ }
+
+ return node || container;
+ };
+
+ // Find new startContainer/endContainer if there is better one
+ startContainer = findBlockEndPoint(startContainer, 'previousSibling');
+ endContainer = findBlockEndPoint(endContainer, 'nextSibling');
+
+ // Non block element then try to expand up the leaf
+ if (format[0].block) {
+ if (!isBlock(startContainer))
+ startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling');
+
+ if (!isBlock(endContainer))
+ endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling');
+ }
+ }
+
+ // Setup index for startContainer
+ if (startContainer.nodeType == 1) {
+ startOffset = nodeIndex(startContainer);
+ startContainer = startContainer.parentNode;
+ }
+
+ // Setup index for endContainer
+ if (endContainer.nodeType == 1) {
+ endOffset = nodeIndex(endContainer) + 1;
+ endContainer = endContainer.parentNode;
+ }
+
+ // Return new range like object
+ return {
+ startContainer : startContainer,
+ startOffset : startOffset,
+ endContainer : endContainer,
+ endOffset : endOffset
+ };
+ }
+
+ function removeFormat(format, vars, node, compare_node) {
+ var i, attrs, stylesModified;
+
+ // Check if node matches format
+ if (!matchName(node, format))
+ return FALSE;
+
+ // Should we compare with format attribs and styles
+ if (format.remove != 'all') {
+ // Remove styles
+ each(format.styles, function(value, name) {
+ value = replaceVars(value, vars);
+
+ // Indexed array
+ if (typeof(name) === 'number') {
+ name = value;
+ compare_node = 0;
+ }
+
+ if (!compare_node || isEq(getStyle(compare_node, name), value))
+ dom.setStyle(node, name, '');
+
+ stylesModified = 1;
+ });
+
+ // Remove style attribute if it's empty
+ if (stylesModified && dom.getAttrib(node, 'style') == '') {
+ node.removeAttribute('style');
+ node.removeAttribute('_mce_style');
+ }
+
+ // Remove attributes
+ each(format.attributes, function(value, name) {
+ var valueOut;
+
+ value = replaceVars(value, vars);
+
+ // Indexed array
+ if (typeof(name) === 'number') {
+ name = value;
+ compare_node = 0;
+ }
+
+ if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
+ // Keep internal classes
+ if (name == 'class') {
+ value = dom.getAttrib(node, name);
+ if (value) {
+ // Build new class value where everything is removed except the internal prefixed classes
+ valueOut = '';
+ each(value.split(/\s+/), function(cls) {
+ if (/mce\w+/.test(cls))
+ valueOut += (valueOut ? ' ' : '') + cls;
+ });
+
+ // We got some internal classes left
+ if (valueOut) {
+ dom.setAttrib(node, name, valueOut);
+ return;
+ }
+ }
+ }
+
+ // IE6 has a bug where the attribute doesn't get removed correctly
+ if (name == "class")
+ node.removeAttribute('className');
+
+ // Remove mce prefixed attributes
+ if (MCE_ATTR_RE.test(name))
+ node.removeAttribute('_mce_' + name);
+
+ node.removeAttribute(name);
+ }
+ });
+
+ // Remove classes
+ each(format.classes, function(value) {
+ value = replaceVars(value, vars);
+
+ if (!compare_node || dom.hasClass(compare_node, value))
+ dom.removeClass(node, value);
+ });
+
+ // Check for non internal attributes
+ attrs = dom.getAttribs(node);
+ for (i = 0; i < attrs.length; i++) {
+ if (attrs[i].nodeName.indexOf('_') !== 0)
+ return FALSE;
+ }
+ }
+
+ // Remove the inline child if it's empty for example <b> or <span>
+ if (format.remove != 'none') {
+ removeNode(node, format);
+ return TRUE;
+ }
+ };
+
+ function removeNode(node, format) {
+ var parentNode = node.parentNode, rootBlockElm;
+
+ if (format.block) {
+ if (!forcedRootBlock) {
+ function find(node, next, inc) {
+ node = getNonWhiteSpaceSibling(node, next, inc);
+
+ return !node || (node.nodeName == 'BR' || isBlock(node));
+ };
+
+ // Append BR elements if needed before we remove the block
+ if (isBlock(node) && !isBlock(parentNode)) {
+ if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))
+ node.insertBefore(dom.create('br'), node.firstChild);
+
+ if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))
+ node.appendChild(dom.create('br'));
+ }
+ } else {
+ // Wrap the block in a forcedRootBlock if we are at the root of document
+ if (parentNode == dom.getRoot()) {
+ if (!format.list_block || !isEq(node, format.list_block)) {
+ each(tinymce.grep(node.childNodes), function(node) {
+ if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
+ if (!rootBlockElm)
+ rootBlockElm = wrap(node, forcedRootBlock);
+ else
+ rootBlockElm.appendChild(node);
+ } else
+ rootBlockElm = 0;
+ });
+ }
+ }
+ }
+ }
+
+ // Never remove nodes that isn't the specified inline element if a selector is specified too
+ if (format.selector && format.inline && !isEq(format.inline, node))
+ return;
+
+ dom.remove(node, 1);
+ };
+
+ function getNonWhiteSpaceSibling(node, next, inc) {
+ if (node) {
+ next = next ? 'nextSibling' : 'previousSibling';
+
+ for (node = inc ? node : node[next]; node; node = node[next]) {
+ if (node.nodeType == 1 || !isWhiteSpaceNode(node))
+ return node;
+ }
+ }
+ };
+
+ function isBookmarkNode(node) {
+ return node && node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark';
+ };
+
+ function mergeSiblings(prev, next) {
+ var marker, sibling, tmpSibling;
+
+ function compareElements(node1, node2) {
+ // Not the same name
+ if (node1.nodeName != node2.nodeName)
+ return FALSE;
+
+ function getAttribs(node) {
+ var attribs = {};
+
+ each(dom.getAttribs(node), function(attr) {
+ var name = attr.nodeName.toLowerCase();
+
+ // Don't compare internal attributes or style
+ if (name.indexOf('_') !== 0 && name !== 'style')
+ attribs[name] = dom.getAttrib(node, name);
+ });
+
+ return attribs;
+ };
+
+ function compareObjects(obj1, obj2) {
+ var value, name;
+
+ for (name in obj1) {
+ // Obj1 has item obj2 doesn't have
+ if (obj1.hasOwnProperty(name)) {
+ value = obj2[name];
+
+ // Obj2 doesn't have obj1 item
+ if (value === undefined)
+ return FALSE;
+
+ // Obj2 item has a different value
+ if (obj1[name] != value)
+ return FALSE;
+
+ // Delete similar value
+ delete obj2[name];
+ }
+ }
+
+ // Check if obj 2 has something obj 1 doesn't have
+ for (name in obj2) {
+ // Obj2 has item obj1 doesn't have
+ if (obj2.hasOwnProperty(name))
+ return FALSE;
+ }
+
+ return TRUE;
+ };
+
+ // Attribs are not the same
+ if (!compareObjects(getAttribs(node1), getAttribs(node2)))
+ return FALSE;
+
+ // Styles are not the same
+ if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))
+ return FALSE;
+
+ return TRUE;
+ };
+
+ // Check if next/prev exists and that they are elements
+ if (prev && next) {
+ function findElementSibling(node, sibling_name) {
+ for (sibling = node; sibling; sibling = sibling[sibling_name]) {
+ if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling))
+ return node;
+
+ if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
+ return sibling;
+ }
+
+ return node;
+ };
+
+ // If previous sibling is empty then jump over it
+ prev = findElementSibling(prev, 'previousSibling');
+ next = findElementSibling(next, 'nextSibling');
+
+ // Compare next and previous nodes
+ if (compareElements(prev, next)) {
+ // Append nodes between
+ for (sibling = prev.nextSibling; sibling && sibling != next;) {
+ tmpSibling = sibling;
+ sibling = sibling.nextSibling;
+ prev.appendChild(tmpSibling);
+ }
+
+ // Remove next node
+ dom.remove(next);
+
+ // Move children into prev node
+ each(tinymce.grep(next.childNodes), function(node) {
+ prev.appendChild(node);
+ });
+
+ return prev;
+ }
+ }
+
+ return next;
+ };
+
+ function isTextBlock(name) {
+ return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);
+ };
+
+ function getContainer(rng, start) {
+ var container, offset, lastIdx;
+
+ container = rng[start ? 'startContainer' : 'endContainer'];
+ offset = rng[start ? 'startOffset' : 'endOffset'];
+
+ if (container.nodeType == 1) {
+ lastIdx = container.childNodes.length - 1;
+
+ if (!start && offset)
+ offset--;
+
+ container = container.childNodes[offset > lastIdx ? lastIdx : offset];
+ }
+
+ return container;
+ };
+
+ function performCaretAction(type, name, vars) {
+ var i, currentPendingFormats = pendingFormats[type],
+ otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply'];
+
+ function hasPending() {
+ return pendingFormats.apply.length || pendingFormats.remove.length;
+ };
+
+ function resetPending() {
+ pendingFormats.apply = [];
+ pendingFormats.remove = [];
+ };
+
+ function perform(caret_node) {
+ // Apply pending formats
+ each(pendingFormats.apply.reverse(), function(item) {
+ apply(item.name, item.vars, caret_node);
+ });
+
+ // Remove pending formats
+ each(pendingFormats.remove.reverse(), function(item) {
+ remove(item.name, item.vars, caret_node);
+ });
+
+ dom.remove(caret_node, 1);
+ resetPending();
+ };
+
+ // Check if it already exists then ignore it
+ for (i = currentPendingFormats.length - 1; i >= 0; i--) {
+ if (currentPendingFormats[i].name == name)
+ return;
+ }
+
+ currentPendingFormats.push({name : name, vars : vars});
+
+ // Check if it's in the other type, then remove it
+ for (i = otherPendingFormats.length - 1; i >= 0; i--) {
+ if (otherPendingFormats[i].name == name)
+ otherPendingFormats.splice(i, 1);
+ }
+
+ // Pending apply or remove formats
+ if (hasPending()) {
+ ed.getDoc().execCommand('FontName', false, 'mceinline');
+ pendingFormats.lastRng = selection.getRng();
+
+ // IE will convert the current word
+ each(dom.select('font,span'), function(node) {
+ var bookmark;
+
+ if (isCaretNode(node)) {
+ bookmark = selection.getBookmark();
+ perform(node);
+ selection.moveToBookmark(bookmark);
+ ed.nodeChanged();
+ }
+ });
+
+ // Only register listeners once if we need to
+ if (!pendingFormats.isListening && hasPending()) {
+ pendingFormats.isListening = true;
+
+ each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) {
+ ed[event].addToTop(function(ed, e) {
+ // Do we have pending formats and is the selection moved has moved
+ if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) {
+ each(dom.select('font,span'), function(node) {
+ var textNode, rng;
+
+ // Look for marker
+ if (isCaretNode(node)) {
+ textNode = node.firstChild;
+
+ if (textNode) {
+ perform(node);
+
+ rng = dom.createRng();
+ rng.setStart(textNode, textNode.nodeValue.length);
+ rng.setEnd(textNode, textNode.nodeValue.length);
+ selection.setRng(rng);
+ ed.nodeChanged();
+ } else
+ dom.remove(node);
+ }
+ });
+
+ // Always unbind and clear pending styles on keyup
+ if (e.type == 'keyup' || e.type == 'mouseup')
+ resetPending();
+ }
+ });
+ });
+ }
+ }
+ };
+ };
+})(tinymce);
+
+tinymce.onAddEditor.add(function(tinymce, ed) {
+ var filters, fontSizes, dom, settings = ed.settings;
+
+ if (settings.inline_styles) {
+ fontSizes = tinymce.explode(settings.font_size_style_values);
+
+ function replaceWithSpan(node, styles) {
+ dom.replace(dom.create('span', {
+ style : styles
+ }), node, 1);
+ };
+
+ filters = {
+ font : function(dom, node) {
+ replaceWithSpan(node, {
+ backgroundColor : node.style.backgroundColor,
+ color : node.color,
+ fontFamily : node.face,
+ fontSize : fontSizes[parseInt(node.size) - 1]
+ });
+ },
+
+ u : function(dom, node) {
+ replaceWithSpan(node, {
+ textDecoration : 'underline'
+ });
+ },
+
+ strike : function(dom, node) {
+ replaceWithSpan(node, {
+ textDecoration : 'line-through'
+ });
+ }
+ };
+
+ function convert(editor, params) {
+ dom = editor.dom;
+
+ if (settings.convert_fonts_to_spans) {
+ tinymce.each(dom.select('font,u,strike', params.node), function(node) {
+ filters[node.nodeName.toLowerCase()](ed.dom, node);
+ });
+ }
+ };
+
+ ed.onPreProcess.add(convert);
+
+ ed.onInit.add(function() {
+ ed.selection.onSetContent.add(convert);
+ });
+ }
+});
+
diff --git a/plugins/TinyMCE/js/utils/editable_selects.js b/plugins/TinyMCE/js/utils/editable_selects.js new file mode 100644 index 000000000..fd943c0f8 --- /dev/null +++ b/plugins/TinyMCE/js/utils/editable_selects.js @@ -0,0 +1,70 @@ +/**
+ * editable_selects.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+var TinyMCE_EditableSelects = {
+ editSelectElm : null,
+
+ init : function() {
+ var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+ o = new Option('(value)', '__mce_add_custom__');
+
+ o.className = 'mceAddSelectValue';
+
+ nl[i].options[nl[i].options.length] = o;
+ nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
+ }
+ }
+ },
+
+ onChangeEditableSelect : function(e) {
+ var d = document, ne, se = window.event ? window.event.srcElement : e.target;
+
+ if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+ ne = d.createElement("input");
+ ne.id = se.id + "_custom";
+ ne.name = se.name + "_custom";
+ ne.type = "text";
+
+ ne.style.width = se.offsetWidth + 'px';
+ se.parentNode.insertBefore(ne, se);
+ se.style.display = 'none';
+ ne.focus();
+ ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+ ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
+ TinyMCE_EditableSelects.editSelectElm = se;
+ }
+ },
+
+ onBlurEditableSelectInput : function() {
+ var se = TinyMCE_EditableSelects.editSelectElm;
+
+ if (se) {
+ if (se.previousSibling.value != '') {
+ addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
+ selectByValue(document.forms[0], se.id, se.previousSibling.value);
+ } else
+ selectByValue(document.forms[0], se.id, '');
+
+ se.style.display = 'inline';
+ se.parentNode.removeChild(se.previousSibling);
+ TinyMCE_EditableSelects.editSelectElm = null;
+ }
+ },
+
+ onKeyDown : function(e) {
+ e = e || window.event;
+
+ if (e.keyCode == 13)
+ TinyMCE_EditableSelects.onBlurEditableSelectInput();
+ }
+};
diff --git a/plugins/TinyMCE/js/utils/form_utils.js b/plugins/TinyMCE/js/utils/form_utils.js new file mode 100644 index 000000000..2617a26ed --- /dev/null +++ b/plugins/TinyMCE/js/utils/form_utils.js @@ -0,0 +1,200 @@ +/**
+ * form_utils.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
+
+function getColorPickerHTML(id, target_form_element) {
+ var h = "";
+
+ h += '<a id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
+ h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"> </span></a>';
+
+ return h;
+}
+
+function updateColor(img_id, form_element_id) {
+ document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
+}
+
+function setBrowserDisabled(id, state) {
+ var img = document.getElementById(id);
+ var lnk = document.getElementById(id + "_link");
+
+ if (lnk) {
+ if (state) {
+ lnk.setAttribute("realhref", lnk.getAttribute("href"));
+ lnk.removeAttribute("href");
+ tinyMCEPopup.dom.addClass(img, 'disabled');
+ } else {
+ if (lnk.getAttribute("realhref"))
+ lnk.setAttribute("href", lnk.getAttribute("realhref"));
+
+ tinyMCEPopup.dom.removeClass(img, 'disabled');
+ }
+ }
+}
+
+function getBrowserHTML(id, target_form_element, type, prefix) {
+ var option = prefix + "_" + type + "_browser_callback", cb, html;
+
+ cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
+
+ if (!cb)
+ return "";
+
+ html = "";
+ html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
+ html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '"> </span></a>';
+
+ return html;
+}
+
+function openBrowser(img_id, target_form_element, type, option) {
+ var img = document.getElementById(img_id);
+
+ if (img.className != "mceButtonDisabled")
+ tinyMCEPopup.openBrowser(target_form_element, type, option);
+}
+
+function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
+ if (!form_obj || !form_obj.elements[field_name])
+ return;
+
+ var sel = form_obj.elements[field_name];
+
+ var found = false;
+ for (var i=0; i<sel.options.length; i++) {
+ var option = sel.options[i];
+
+ if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
+ option.selected = true;
+ found = true;
+ } else
+ option.selected = false;
+ }
+
+ if (!found && add_custom && value != '') {
+ var option = new Option(value, value);
+ option.selected = true;
+ sel.options[sel.options.length] = option;
+ sel.selectedIndex = sel.options.length - 1;
+ }
+
+ return found;
+}
+
+function getSelectValue(form_obj, field_name) {
+ var elm = form_obj.elements[field_name];
+
+ if (elm == null || elm.options == null || elm.selectedIndex === -1)
+ return "";
+
+ return elm.options[elm.selectedIndex].value;
+}
+
+function addSelectValue(form_obj, field_name, name, value) {
+ var s = form_obj.elements[field_name];
+ var o = new Option(name, value);
+ s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+ // Setup class droplist
+ var styleSelectElm = document.getElementById(list_id);
+ var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
+ styles = tinyMCEPopup.getParam(specific_option, styles);
+
+ if (styles) {
+ var stylesAr = styles.split(';');
+
+ for (var i=0; i<stylesAr.length; i++) {
+ if (stylesAr != "") {
+ var key, value;
+
+ key = stylesAr[i].split('=')[0];
+ value = stylesAr[i].split('=')[1];
+
+ styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+ }
+ }
+ } else {
+ tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
+ styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
+ });
+ }
+}
+
+function isVisible(element_id) {
+ var elm = document.getElementById(element_id);
+
+ return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+ var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
+
+ var rgb = col.replace(re, "$1,$2,$3").split(',');
+ if (rgb.length == 3) {
+ r = parseInt(rgb[0]).toString(16);
+ g = parseInt(rgb[1]).toString(16);
+ b = parseInt(rgb[2]).toString(16);
+
+ r = r.length == 1 ? '0' + r : r;
+ g = g.length == 1 ? '0' + g : g;
+ b = b.length == 1 ? '0' + b : b;
+
+ return "#" + r + g + b;
+ }
+
+ return col;
+}
+
+function convertHexToRGB(col) {
+ if (col.indexOf('#') != -1) {
+ col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+
+ r = parseInt(col.substring(0, 2), 16);
+ g = parseInt(col.substring(2, 4), 16);
+ b = parseInt(col.substring(4, 6), 16);
+
+ return "rgb(" + r + "," + g + "," + b + ")";
+ }
+
+ return col;
+}
+
+function trimSize(size) {
+ return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2');
+}
+
+function getCSSSize(size) {
+ size = trimSize(size);
+
+ if (size == "")
+ return "";
+
+ // Add px
+ if (/^[0-9]+$/.test(size))
+ size += 'px';
+
+ return size;
+}
+
+function getStyle(elm, attrib, style) {
+ var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
+
+ if (val != '')
+ return '' + val;
+
+ if (typeof(style) == 'undefined')
+ style = attrib;
+
+ return tinyMCEPopup.dom.getStyle(elm, style);
+}
diff --git a/plugins/TinyMCE/js/utils/mctabs.js b/plugins/TinyMCE/js/utils/mctabs.js new file mode 100644 index 000000000..825d4c143 --- /dev/null +++ b/plugins/TinyMCE/js/utils/mctabs.js @@ -0,0 +1,77 @@ +/**
+ * mctabs.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+function MCTabs() {
+ this.settings = [];
+};
+
+MCTabs.prototype.init = function(settings) {
+ this.settings = settings;
+};
+
+MCTabs.prototype.getParam = function(name, default_value) {
+ var value = null;
+
+ value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
+
+ // Fix bool values
+ if (value == "true" || value == "false")
+ return (value == "true");
+
+ return value;
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id) {
+ var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i;
+
+ panelElm= document.getElementById(panel_id);
+ panelContainerElm = panelElm ? panelElm.parentNode : null;
+ tabElm = document.getElementById(tab_id);
+ tabContainerElm = tabElm ? tabElm.parentNode : null;
+ selectionClass = this.getParam('selection_class', 'current');
+
+ if (tabElm && tabContainerElm) {
+ nodes = tabContainerElm.childNodes;
+
+ // Hide all other tabs
+ for (i = 0; i < nodes.length; i++) {
+ if (nodes[i].nodeName == "LI")
+ nodes[i].className = '';
+ }
+
+ // Show selected tab
+ tabElm.className = 'current';
+ }
+
+ if (panelElm && panelContainerElm) {
+ nodes = panelContainerElm.childNodes;
+
+ // Hide all other panels
+ for (i = 0; i < nodes.length; i++) {
+ if (nodes[i].nodeName == "DIV")
+ nodes[i].className = 'panel';
+ }
+
+ // Show selected panel
+ panelElm.className = 'current';
+ }
+};
+
+MCTabs.prototype.getAnchor = function() {
+ var pos, url = document.location.href;
+
+ if ((pos = url.lastIndexOf('#')) != -1)
+ return url.substring(pos + 1);
+
+ return "";
+};
+
+// Global instance
+var mcTabs = new MCTabs();
diff --git a/plugins/TinyMCE/js/utils/validate.js b/plugins/TinyMCE/js/utils/validate.js new file mode 100644 index 000000000..a6fcf9701 --- /dev/null +++ b/plugins/TinyMCE/js/utils/validate.js @@ -0,0 +1,220 @@ +/**
+ * validate.js
+ *
+ * Copyright 2009, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://tinymce.moxiecode.com/license
+ * Contributing: http://tinymce.moxiecode.com/contributing
+ */
+
+/**
+ // String validation:
+
+ if (!Validator.isEmail('myemail'))
+ alert('Invalid email.');
+
+ // Form validation:
+
+ var f = document.forms['myform'];
+
+ if (!Validator.isEmail(f.myemail))
+ alert('Invalid email.');
+*/
+
+var Validator = {
+ isEmail : function(s) {
+ return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+ },
+
+ isAbsUrl : function(s) {
+ return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+ },
+
+ isSize : function(s) {
+ return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
+ },
+
+ isId : function(s) {
+ return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+ },
+
+ isEmpty : function(s) {
+ var nl, i;
+
+ if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+ return true;
+
+ if (s.type == 'checkbox' && !s.checked)
+ return true;
+
+ if (s.type == 'radio') {
+ for (i=0, nl = s.form.elements; i<nl.length; i++) {
+ if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
+ return false;
+ }
+
+ return true;
+ }
+
+ return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+ },
+
+ isNumber : function(s, d) {
+ return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
+ },
+
+ test : function(s, p) {
+ s = s.nodeType == 1 ? s.value : s;
+
+ return s == '' || new RegExp(p).test(s);
+ }
+};
+
+var AutoValidator = {
+ settings : {
+ id_cls : 'id',
+ int_cls : 'int',
+ url_cls : 'url',
+ number_cls : 'number',
+ email_cls : 'email',
+ size_cls : 'size',
+ required_cls : 'required',
+ invalid_cls : 'invalid',
+ min_cls : 'min',
+ max_cls : 'max'
+ },
+
+ init : function(s) {
+ var n;
+
+ for (n in s)
+ this.settings[n] = s[n];
+ },
+
+ validate : function(f) {
+ var i, nl, s = this.settings, c = 0;
+
+ nl = this.tags(f, 'label');
+ for (i=0; i<nl.length; i++)
+ this.removeClass(nl[i], s.invalid_cls);
+
+ c += this.validateElms(f, 'input');
+ c += this.validateElms(f, 'select');
+ c += this.validateElms(f, 'textarea');
+
+ return c == 3;
+ },
+
+ invalidate : function(n) {
+ this.mark(n.form, n);
+ },
+
+ reset : function(e) {
+ var t = ['label', 'input', 'select', 'textarea'];
+ var i, j, nl, s = this.settings;
+
+ if (e == null)
+ return;
+
+ for (i=0; i<t.length; i++) {
+ nl = this.tags(e.form ? e.form : e, t[i]);
+ for (j=0; j<nl.length; j++)
+ this.removeClass(nl[j], s.invalid_cls);
+ }
+ },
+
+ validateElms : function(f, e) {
+ var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+ nl = this.tags(f, e);
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+
+ this.removeClass(n, s.invalid_cls);
+
+ if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.id_cls) && !va.isId(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.min_cls, true)) {
+ v = this.getNum(n, s.min_cls);
+
+ if (isNaN(v) || parseInt(n.value) < parseInt(v))
+ st = this.mark(f, n);
+ }
+
+ if (this.hasClass(n, s.max_cls, true)) {
+ v = this.getNum(n, s.max_cls);
+
+ if (isNaN(v) || parseInt(n.value) > parseInt(v))
+ st = this.mark(f, n);
+ }
+ }
+
+ return st;
+ },
+
+ hasClass : function(n, c, d) {
+ return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
+ },
+
+ getNum : function(n, c) {
+ c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
+ c = c.replace(/[^0-9]/g, '');
+
+ return c;
+ },
+
+ addClass : function(n, c, b) {
+ var o = this.removeClass(n, c);
+ n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
+ },
+
+ removeClass : function(n, c) {
+ c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
+ return n.className = c != ' ' ? c : '';
+ },
+
+ tags : function(f, s) {
+ return f.getElementsByTagName(s);
+ },
+
+ mark : function(f, n) {
+ var s = this.settings;
+
+ this.addClass(n, s.invalid_cls);
+ this.markLabels(f, n, s.invalid_cls);
+
+ return false;
+ },
+
+ markLabels : function(f, n, ic) {
+ var nl, i;
+
+ nl = this.tags(f, "label");
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+ this.addClass(nl[i], ic);
+ }
+
+ return null;
+ }
+};
diff --git a/plugins/TinyMCE/locale/Sample.po b/plugins/TinyMCE/locale/Sample.po new file mode 100644 index 000000000..a52c4ec01 --- /dev/null +++ b/plugins/TinyMCE/locale/Sample.po @@ -0,0 +1,56 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: hello.php:115 SamplePlugin.php:266 +msgid "Hello" +msgstr "" + +#: hello.php:117 hello.php:141 +#, php-format +msgid "Hello, %s" +msgstr "" + +#: hello.php:138 +msgid "Hello, stranger!" +msgstr "" + +#: hello.php:143 +#, php-format +msgid "I have greeted you %d time." +msgid_plural "I have greeted you %d times." +msgstr[0] "" +msgstr[1] "" + +#: SamplePlugin.php:266 +msgid "A warm greeting" +msgstr "" + +#: SamplePlugin.php:277 +msgid "A sample plugin to show basics of development for new hackers." +msgstr "" + +#: User_greeting_count.php:163 +#, php-format +msgid "Could not save new greeting count for %d" +msgstr "" + +#: User_greeting_count.php:176 +#, php-format +msgid "Could not increment greeting count for %d" +msgstr "" diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index 1a0a69682..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. @@ -221,7 +222,7 @@ class TwitterBridgePlugin extends Plugin */ function onStartEnqueueNotice($notice, &$transports) { - if (self::hasKeys()) { + if (self::hasKeys() && $notice->isLocal()) { // Avoid a possible loop if ($notice->source != 'twitter') { array_push($transports, 'twitter'); @@ -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/plugins/UrlShortener/UrlShortenerPlugin.php b/plugins/UrlShortener/UrlShortenerPlugin.php index 027624b7a..41f64bb26 100644 --- a/plugins/UrlShortener/UrlShortenerPlugin.php +++ b/plugins/UrlShortener/UrlShortenerPlugin.php @@ -22,6 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews <candrews@integralblue.com> + * @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/ */ diff --git a/plugins/WikiHowProfile/README b/plugins/WikiHowProfile/README new file mode 100644 index 000000000..ee6096c9f --- /dev/null +++ b/plugins/WikiHowProfile/README @@ -0,0 +1,6 @@ +This is an additional plugin which piggybacks on OpenID authentication to pull +profile information from WikiHow user pages when creating or updating accounts. + +WikiHow runs a customized MediaWiki setup, with locally-built extensions to add +profile features such as an avatar. As this additional info isn't yet exposed +through OpenID, we need to pull it separately. diff --git a/plugins/WikiHowProfile/WikiHowProfilePlugin.php b/plugins/WikiHowProfile/WikiHowProfilePlugin.php new file mode 100644 index 000000000..b72bd55d6 --- /dev/null +++ b/plugins/WikiHowProfile/WikiHowProfilePlugin.php @@ -0,0 +1,196 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * Plugin to pull WikiHow-style user avatars at OpenID setup time. + * These are not currently exposed via OpenID. + * + * PHP version 5 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugins + * @package StatusNet + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +if (!defined('STATUSNET')) { + // This check helps protect against security problems; + // your code file can't be executed directly from the web. + exit(1); +} + +/** + * Sample plugin main class + * + * Each plugin requires a main class to interact with the StatusNet system. + * + * @category Plugins + * @package WikiHowProfilePlugin + * @author Brion Vibber <brion@status.net> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class WikiHowProfilePlugin extends Plugin +{ + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'WikiHow avatar fetcher', + 'version' => STATUSNET_VERSION, + 'author' => 'Brion Vibber', + 'homepage' => 'http://status.net/wiki/Plugin:Sample', + 'rawdescription' => + _m('Fetches avatar and other profile info for WikiHow users when setting up an account via OpenID.')); + return true; + } + + /** + * Hook for OpenID user creation; we'll pull the avatar. + * + * @param User $user + * @param string $canonical OpenID provider URL + * @param array $sreg query data from provider + */ + function onEndOpenIDCreateNewUser($user, $canonical, $sreg) + { + $this->updateProfile($user, $canonical); + return true; + } + + /** + * Hook for OpenID profile updating; we'll pull the avatar. + * + * @param User $user + * @param string $canonical OpenID provider URL (wiki profile page) + * @param array $sreg query data from provider + */ + function onEndOpenIDUpdateUser($user, $canonical, $sreg) + { + $this->updateProfile($user, $canonical); + return true; + } + + /** + * @param User $user + * @param string $canonical OpenID provider URL (wiki profile page) + */ + private function updateProfile($user, $canonical) + { + $prefix = 'http://www.wikihow.com/User:'; + + if (substr($canonical, 0, strlen($prefix)) == $prefix) { + // Yes, it's a WikiHow user! + $profile = $this->fetchProfile($canonical); + + if (!empty($profile['avatar'])) { + $this->saveAvatar($user, $profile['avatar']); + } + } + } + + /** + * Given a user's WikiHow profile URL, find their avatar. + * + * @param string $profileUrl user page on the wiki + * + * @return array of data; possible members: + * 'avatar' => full URL to avatar image + * + * @throws Exception on various low-level failures + * + * @todo pull location, web site, and about sections -- they aren't currently marked up cleanly. + */ + private function fetchProfile($profileUrl) + { + $client = HTTPClient::start(); + $response = $client->get($profileUrl); + if (!$response->isOk()) { + throw new Exception("WikiHow profile page fetch failed."); + // HTTP error response already logged. + return false; + } + + // Suppress warnings during HTML parsing; non-well-formed bits will + // spew horrible warning everywhere even though it works fine. + $old = error_reporting(); + error_reporting($old & ~E_WARNING); + + $dom = new DOMDocument(); + $ok = $dom->loadHTML($response->getBody()); + + error_reporting($old); + + if (!$ok) { + throw new Exception("HTML parse failure during check for WikiHow avatar."); + return false; + } + + $data = array(); + + $avatar = $dom->getElementById('avatarULimg'); + if ($avatar) { + $src = $avatar->getAttribute('src'); + + $base = new Net_URL2($profileUrl); + $absolute = $base->resolve($src); + $avatarUrl = strval($absolute); + + common_log(LOG_DEBUG, "WikiHow avatar found for $profileUrl - $avatarUrl"); + $data['avatar'] = $avatarUrl; + } + + return $data; + } + + /** + * Actually save the avatar we found locally. + * + * @param User $user + * @param string $url to avatar URL + * @todo merge wrapper funcs for this into common place for 1.0 core + */ + private function saveAvatar($user, $url) + { + if (!common_valid_http_url($url)) { + throw new ServerException(sprintf(_m("Invalid avatar URL %s"), $url)); + } + + // @fixme this should be better encapsulated + // ripped from OStatus via oauthstore.php (for old OMB client) + $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar'); + if (!copy($url, $temp_filename)) { + throw new ServerException(sprintf(_m("Unable to fetch avatar from %s"), $url)); + } + + $profile = $user->getProfile(); + $id = $profile->id; + // @fixme should we be using different ids? + + $imagefile = new ImageFile($id, $temp_filename); + $filename = Avatar::filename($id, + image_type_to_extension($imagefile->type), + null, + common_timestamp()); + rename($temp_filename, Avatar::path($filename)); + $profile->setOriginal($filename); + } + +} + 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/scripts/update_po_templates.php b/scripts/update_po_templates.php index af9ed8d20..f10f20842 100755 --- a/scripts/update_po_templates.php +++ b/scripts/update_po_templates.php @@ -94,15 +94,15 @@ function do_translatewiki_plugin($basedir, $plugin) BASIC: id: out-statusnet-{$pluginlc} label: StatusNet - {$plugin} - description: "{{int:bw-desc-statusnet-plugin-{$pluginlc}}}" namespace: NS_STATUSNET + description: "{{int:bw-desc-statusnet-plugin}}" + class: FileBasedMessageGroup display: out/statusnet/{$pluginlc} - class: GettextMessageGroup FILES: class: GettextFFS - sourcePattern: %GROUPROOT%/plugins/{$plugin}/locale/%CODE%/LC_MESSAGES/{$plugin}.po - targetPattern: plugins/{$plugin}/locale/%CODE%/LC_MESSAGES/{$plugin}.po + sourcePattern: %GROUPROOT%/statusnet/plugins/{$plugin}/locale/{$plugin}.pot + targetPattern: statusnet/plugins/{$plugin}/locale/%CODE%/LC_MESSAGES/{$plugin}.po codeMap: en-gb: en_GB no: nb 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/tests/MediaFileTest.php b/tests/MediaFileTest.php new file mode 100644 index 000000000..a76a4f45e --- /dev/null +++ b/tests/MediaFileTest.php @@ -0,0 +1,96 @@ +<?php + +if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { + print "This script must be run from the command line\n"; + exit(); +} + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); +define('STATUSNET', true); +define('LACONICA', true); + +require_once INSTALLDIR . '/lib/common.php'; + +class MediaFileTest extends PHPUnit_Framework_TestCase +{ + + public function setup() + { + $this->old_attachments_supported = common_config('attachments', 'supported'); + $GLOBALS['config']['attachments']['supported'] = true; + } + + public function tearDown() + { + $GLOBALS['config']['attachments']['supported'] = $this->old_attachments_supported; + } + + /** + * @dataProvider fileTypeCases + * + */ + public function testFileType($filename, $expectedType) + { + if (!file_exists($filename)) { + throw new Exception("WTF? $filename test file missing"); + } + + $type = MediaFile::getUploadedFileType($filename, basename($filename)); + $this->assertEquals($expectedType, $type); + } + + /** + * @dataProvider fileTypeCases + * + */ + public function testUploadedFileType($filename, $expectedType) + { + if (!file_exists($filename)) { + throw new Exception("WTF? $filename test file missing"); + } + $tmp = tmpfile(); + fwrite($tmp, file_get_contents($filename)); + + $type = MediaFile::getUploadedFileType($tmp, basename($filename)); + $this->assertEquals($expectedType, $type); + } + + static public function fileTypeCases() + { + $base = dirname(__FILE__); + $dir = "$base/sample-uploads"; + $files = array( + "image.png" => "image/png", + "image.gif" => "image/gif", + "image.jpg" => "image/jpeg", + "image.jpeg" => "image/jpeg", + + "office.pdf" => "application/pdf", + + "wordproc.odt" => "application/vnd.oasis.opendocument.text", + "wordproc.ott" => "application/vnd.oasis.opendocument.text-template", + "wordproc.doc" => "application/msword", + "wordproc.docx" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "wordproc.rtf" => "text/rtf", + + "spreadsheet.ods" => "application/vnd.oasis.opendocument.spreadsheet", + "spreadsheet.ots" => "application/vnd.oasis.opendocument.spreadsheet-template", + "spreadsheet.xls" => "application/vnd.ms-excel", + "spreadsheet.xlt" => "application/vnd.ms-excel", + "spreadsheet.xlsx" => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + + "presentation.odp" => "application/vnd.oasis.opendocument.presentation", + "presentation.otp" => "application/vnd.oasis.opendocument.presentation-template", + "presentation.ppt" => "application/vnd.ms-powerpoint", + "presentation.pptx" => "application/vnd.openxmlformats-officedocument.presentationml.presentation", + ); + + $dataset = array(); + foreach ($files as $file => $type) { + $dataset[] = array("$dir/$file", $type); + } + return $dataset; + } + +} + diff --git a/tests/sample-uploads/image.gif b/tests/sample-uploads/image.gif Binary files differnew file mode 100644 index 000000000..b636f4b8d --- /dev/null +++ b/tests/sample-uploads/image.gif diff --git a/tests/sample-uploads/image.jpeg b/tests/sample-uploads/image.jpeg Binary files differnew file mode 100644 index 000000000..21fcb5aef --- /dev/null +++ b/tests/sample-uploads/image.jpeg diff --git a/tests/sample-uploads/image.jpg b/tests/sample-uploads/image.jpg Binary files differnew file mode 100644 index 000000000..21fcb5aef --- /dev/null +++ b/tests/sample-uploads/image.jpg diff --git a/tests/sample-uploads/image.png b/tests/sample-uploads/image.png Binary files differnew file mode 100644 index 000000000..60cbcfd17 --- /dev/null +++ b/tests/sample-uploads/image.png diff --git a/tests/sample-uploads/office.pdf b/tests/sample-uploads/office.pdf Binary files differnew file mode 100644 index 000000000..670bc2343 --- /dev/null +++ b/tests/sample-uploads/office.pdf diff --git a/tests/sample-uploads/presentation.odp b/tests/sample-uploads/presentation.odp Binary files differnew file mode 100644 index 000000000..8dd3a428b --- /dev/null +++ b/tests/sample-uploads/presentation.odp diff --git a/tests/sample-uploads/presentation.otp b/tests/sample-uploads/presentation.otp Binary files differnew file mode 100644 index 000000000..1927ee79d --- /dev/null +++ b/tests/sample-uploads/presentation.otp diff --git a/tests/sample-uploads/presentation.pot b/tests/sample-uploads/presentation.pot Binary files differnew file mode 100644 index 000000000..f5124ffa2 --- /dev/null +++ b/tests/sample-uploads/presentation.pot diff --git a/tests/sample-uploads/presentation.potm b/tests/sample-uploads/presentation.potm Binary files differnew file mode 100644 index 000000000..ade1bcb10 --- /dev/null +++ b/tests/sample-uploads/presentation.potm diff --git a/tests/sample-uploads/presentation.ppt b/tests/sample-uploads/presentation.ppt Binary files differnew file mode 100644 index 000000000..f5124ffa2 --- /dev/null +++ b/tests/sample-uploads/presentation.ppt diff --git a/tests/sample-uploads/presentation.pptx b/tests/sample-uploads/presentation.pptx Binary files differnew file mode 100644 index 000000000..21ea61a15 --- /dev/null +++ b/tests/sample-uploads/presentation.pptx diff --git a/tests/sample-uploads/spreadsheet.ods b/tests/sample-uploads/spreadsheet.ods Binary files differnew file mode 100644 index 000000000..7b43e7507 --- /dev/null +++ b/tests/sample-uploads/spreadsheet.ods diff --git a/tests/sample-uploads/spreadsheet.ots b/tests/sample-uploads/spreadsheet.ots Binary files differnew file mode 100644 index 000000000..5f830e6de --- /dev/null +++ b/tests/sample-uploads/spreadsheet.ots diff --git a/tests/sample-uploads/spreadsheet.xls b/tests/sample-uploads/spreadsheet.xls Binary files differnew file mode 100644 index 000000000..2d470e687 --- /dev/null +++ b/tests/sample-uploads/spreadsheet.xls diff --git a/tests/sample-uploads/spreadsheet.xlsx b/tests/sample-uploads/spreadsheet.xlsx Binary files differnew file mode 100644 index 000000000..b97a551f8 --- /dev/null +++ b/tests/sample-uploads/spreadsheet.xlsx diff --git a/tests/sample-uploads/spreadsheet.xlt b/tests/sample-uploads/spreadsheet.xlt Binary files differnew file mode 100644 index 000000000..980423b20 --- /dev/null +++ b/tests/sample-uploads/spreadsheet.xlt diff --git a/tests/sample-uploads/wordproc.doc b/tests/sample-uploads/wordproc.doc Binary files differnew file mode 100644 index 000000000..81c5e34c6 --- /dev/null +++ b/tests/sample-uploads/wordproc.doc diff --git a/tests/sample-uploads/wordproc.docx b/tests/sample-uploads/wordproc.docx Binary files differnew file mode 100644 index 000000000..04ea3c3ec --- /dev/null +++ b/tests/sample-uploads/wordproc.docx diff --git a/tests/sample-uploads/wordproc.odt b/tests/sample-uploads/wordproc.odt Binary files differnew file mode 100644 index 000000000..fa6fe5e9f --- /dev/null +++ b/tests/sample-uploads/wordproc.odt diff --git a/tests/sample-uploads/wordproc.ott b/tests/sample-uploads/wordproc.ott Binary files differnew file mode 100644 index 000000000..99ca8c068 --- /dev/null +++ b/tests/sample-uploads/wordproc.ott diff --git a/tests/sample-uploads/wordproc.rtf b/tests/sample-uploads/wordproc.rtf new file mode 100644 index 000000000..aad2c4605 --- /dev/null +++ b/tests/sample-uploads/wordproc.rtf @@ -0,0 +1,16 @@ +{\rtf1\ansi\deff0\adeflang1025 +{\fonttbl{\f0\froman\fprq2\fcharset128 Times New Roman;}{\f1\froman\fprq2\fcharset128 Times New Roman;}{\f2\fswiss\fprq2\fcharset128 Arial;}{\f3\fnil\fprq2\fcharset128 DejaVu Sans;}} +{\colortbl;\red0\green0\blue0;\red128\green128\blue128;} +{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1081\ltrch\dbch\af3\langfe2052\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\snext1 Normal;} +{\s2\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\afs28\lang1081\ltrch\dbch\langfe2052\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon1\snext3 Heading;} +{\s3\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1081\ltrch\dbch\af3\langfe2052\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon1\snext3 Body Text;} +{\s4\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1081\ltrch\dbch\af3\langfe2052\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon3\snext4 List;} +{\s5\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1081\ai\ltrch\dbch\af3\langfe2052\hich\f0\fs24\lang1033\i\loch\f0\fs24\lang1033\i\sbasedon1\snext5 caption;} +{\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1081\ltrch\dbch\af3\langfe2052\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033\sbasedon1\snext6 Index;} +} +{\info{\author Brion }{\creatim\yr2010\mo5\dy10\hr15\min2}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment StarWriter}{\vern3200}}\deftab709 +{\*\pgdsctbl +{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Standard;}} +\paperh15840\paperw12240\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc +\pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af3\afs24\lang1081\ltrch\dbch\af3\langfe2052\hich\f0\fs24\lang1033\loch\f0\fs24\lang1033 +\par }
\ No newline at end of file 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 { |