diff --git a/EVENTS.txt b/EVENTS.txt index 0a1565752a..789c985ae3 100644 --- a/EVENTS.txt +++ b/EVENTS.txt @@ -551,6 +551,12 @@ EndPublicXRDS: End XRDS output (right before the closing XRDS tag) - $action: the current action - &$xrdsoutputter - XRDSOutputter object to write to +StartHostMetaLinks: Start /.well-known/host-meta links +- &links: array containing the links elements to be written + +EndHostMetaLinks: End /.well-known/host-meta links +- &links: array containing the links elements to be written + StartCheckPassword: Check a username/password - $nickname: The nickname to check - $password: The password to check @@ -836,3 +842,271 @@ EndDeleteUser: handling the post for deleting a user - $action: action being shown - $user: user being deleted +StartActivityStart: starting the output for a notice activity +- &$notice: notice being output +- &$xs: XMLStringer for output +- &$attrs: attributes (mostly namespace declarations, if any) + +EndActivityStart: end the opening tag for an activity +- &$notice: notice being output +- &$xs: XMLStringer for output +- $attrs: attributes (mostly namespace declarations, if any) + +StartActivitySource: before outputting the element for a notice activity +- &$notice: notice being output +- &$xs: XMLStringer for output + +EndActivitySource: after outputting the 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 in a notice activity entry (last chance for data!) +- &$notice: notice being output +- &$xs: XMLStringer for output + +EndActivityEnd: after the closing 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 + +StartShowHeadTitle: when beginning to show the element +- $action: action being shown + +EndShowHeadTitle: when done showing the <title> +- $action: action being shown + +StartShowPageTitle: when beginning to show the page title <h1> +- $action: action being shown + +EndShowPageTitle: when done showing the page title <h1> +- $action: action being shown + +StartDeleteOwnNotice: when a user starts to delete their own notice +- $user: the user doing the delete +- $notice: the notice being deleted + +EndDeleteOwnNotice: when a user has deleted their own notice +- $user: the user doing the delete +- $notice: the notice being deleted diff --git a/README b/README index dcf305ea6f..934fb94fc9 100644 --- a/README +++ b/README @@ -2,8 +2,8 @@ README ------ -StatusNet 0.9.1 ("Everybody Hurts") -28 Mar 2010 +StatusNet 0.9.5 "What's The Frequency, Kenneth?" +10 September 2010 This is the README file for StatusNet, the Open Source microblogging platform. It includes installation instructions, descriptions of @@ -38,11 +38,16 @@ more, please see the Open Software Service Definition 1.1: http://www.opendefinition.org/ossd StatusNet, Inc. <http://status.net/> also offers this software as a -Web service, requiring no installation on your part. The software run +Web service, requiring no installation on your part. See +<http://status.net/signup> for details. The software run 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 ======= @@ -68,6 +73,20 @@ License along with this program, in the file "COPYING". If not, see of using the software, and if you do not wish to share your modifications, *YOU MAY NOT INSTALL STATUSNET*. +Documentation in the /doc-src/ directory is available under the +Creative Commons Attribution 3.0 Unported license, with attribution to +"StatusNet". See http://creativecommons.org/licenses/by/3.0/ for details. + +CSS and images in the /theme/ directory are available under the +Creative Commons Attribution 3.0 Unported license, with attribution to +"StatusNet". See http://creativecommons.org/licenses/by/3.0/ for details. + +Our understanding and intention is that if you add your own theme that +uses only CSS and images, those files are not subject to the copyleft +requirements of the Affero General Public License 3.0. See +http://wordpress.org/news/2009/07/themes-are-gpl-too/ . This is not +legal advice; consult your lawyer. + Additional library software has been made available in the 'extlib' directory. All of it is Free Software and can be distributed under liberal terms, but those terms may differ in detail from the AGPL's @@ -77,34 +96,33 @@ for additional terms. New this version ================ -This is a minor bug and feature release since version 0.9.0 released 4 -March 2010. +This is a security, bug and feature release since version 0.9.4 released on +16 August 2010. -Because of fixes to OStatus bugs, it is highly recommended that all -public sites upgrade to the new version immediately. +For best compatibility with client software and site federation, and a lot of +bug fixes, it is highly recommended that all public sites upgrade to the new +version. Notable changes this version: -- Twitter bridge truncates and links back to original for long - notices. -- Changed "Home" link in main menu to "Personal". -- A new memcached plugin (using pecl/memcached versus pecl/memcache) -- Opt-in subscription to update@status.net -- Script to run commands on behalf of a user. -- Better Web UI for long notices. -- A plugin to open external links in their own window or tab -- Fixes to Salmon protocol for compatibility with other systems. -- Updates to latest ActivityStreams definition. -- Twitpic-compatible API for image upload. -- Background deletion of user accounts. -- Better support for HTTP basic authentication with CGI/FastCGI -- Better discovery on OStatus -- Support for PuSH-enabled RSS 2.0 feeds -- OpenID-only mode -- OpenID blacklist/whitelist -- OStatus unit tests +- Change of license for default themes and documentation from + AGPLv3 to CC-By 3.0 Unported. +- An experimental TinyMCE plugin to do in-browser rich editing of + status updates. Does not support StatusNet syntax like @-replies or + #hashtags very well. +- An experimental plugin to add titles to notices. +- A plugin to support the Echo <http://aboutecho.com/> commenting + system. +- A plugin to support the Disqus <http://disqus.com/> commenting system. +- Changes to OStatus support to make StatusNet work for the Social Web + Acid Test Level 0 <http://federatedsocialweb.net/wiki/SWAT0>. +- Themes now support a theme.ini file for theme configuration, including + defining a "base" theme. +- Improved two-way Twitter integration, including support for + repeats and retweets, replies, and faves going both ways across the + bridge, as well as better parsing of Twitter statuses. -A full changelog is available at http://status.net/wiki/StatusNet_0.9.1. +A full changelog is available at http://status.net/wiki/StatusNet_0.9.5. Prerequisites ============= @@ -115,8 +133,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 @@ -132,7 +150,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: @@ -147,6 +164,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 @@ -216,9 +235,9 @@ 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.1.tar.gz + tar zxf statusnet-0.9.5.tar.gz - ...which will make a statusnet-0.9.1 subdirectory in your current + ...which will make a statusnet-0.9.5 subdirectory in your current directory. (If you don't have shell access on your Web server, you may have to unpack the tarball on your local computer and FTP the files to the server.) @@ -226,7 +245,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.1 /var/www/statusnet + mv statusnet-0.9.5 /var/www/statusnet This will make your StatusNet instance available in the statusnet path of your server, like "http://example.net/statusnet". "microblog" or @@ -641,7 +660,7 @@ with this situation. If you've been using StatusNet 0.7, 0.6, 0.5 or lower, or if you've been tracking the "git" version of the software, you will probably want to upgrade and keep your existing data. There is no automated -upgrade procedure in StatusNet 0.9.1. Try these step-by-step +upgrade procedure in StatusNet 0.9.5. Try these step-by-step instructions; read to the end first before trying them. 0. Download StatusNet and set up all the prerequisites as if you were @@ -662,7 +681,7 @@ instructions; read to the end first before trying them. 5. Once all writing processes to your site are turned off, make a final backup of the Web directory and database. 6. Move your StatusNet directory to a backup spot, like "statusnet.bak". -7. Unpack your StatusNet 0.9.1 tarball and move it to "statusnet" or +7. Unpack your StatusNet 0.9.5 tarball and move it to "statusnet" or wherever your code used to be. 8. Copy the config.php file and avatar directory from your old directory to your new directory. @@ -1539,7 +1558,7 @@ repository (see below), and you get a compilation error ("unexpected T_STRING") in the browser, check to see that you don't have any conflicts in your code. -If you upgraded to StatusNet 0.9.1 without reading the "Notice +If you upgraded to StatusNet 0.9.5 without reading the "Notice inboxes" section above, and all your users' 'Personal' tabs are empty, read the "Notice inboxes" section above. diff --git a/actions/all.php b/actions/all.php index a977fce954..6c14d2f139 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 f19e315bf8..e2dff2db94 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 d42d25a618..e25b9a954d 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 3cac829749..c666f9d759 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 ea61a32059..79416e9b26 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 c26485f591..b355cd1c7e 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 666f308f4c..7ea201677e 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 53da9e0c68..7a0f46274c 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/apidirectmessagenew.php b/actions/apidirectmessagenew.php index b9ac92d77b..65d065648f 100644 --- a/actions/apidirectmessagenew.php +++ b/actions/apidirectmessagenew.php @@ -52,7 +52,6 @@ require_once INSTALLDIR . '/lib/apiauth.php'; class ApiDirectMessageNewAction extends ApiAuthAction { - var $source = null; var $other = null; var $content = null; @@ -76,13 +75,6 @@ class ApiDirectMessageNewAction extends ApiAuthAction return; } - $this->source = $this->trimmed('source'); // Not supported by Twitter. - - $reserved_sources = array('web', 'omb', 'mail', 'xmpp', 'api'); - if (empty($this->source) || in_array($this->source, $reserved_sources)) { - $source = 'api'; - } - $this->content = $this->trimmed('text'); $this->user = $this->auth_user; diff --git a/actions/apifavoritecreate.php b/actions/apifavoritecreate.php index 00b6349b0a..0447a92ba2 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 c4daf480e6..9f2efdd003 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 1de2cc32e0..a7ec5b28a4 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 d48a577562..551d016823 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 ca62b5f514..725178fd42 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 3eb3ae5fcc..d216c15cd4 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 f51c747dfb..eaa4769f3e 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 28df72fa9a..5265ec629e 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 f6e52b26e8..8c100d58a8 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 3ea2c30cbb..148c802f43 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 bd05fa3ea8..a8317608d7 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 c97b27fac4..ffd5c7c7d5 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/apigroupprofileupdate.php b/actions/apigroupprofileupdate.php new file mode 100644 index 0000000000..6ac4b5a4b5 --- /dev/null +++ b/actions/apigroupprofileupdate.php @@ -0,0 +1,367 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Update a group's profile + * + * 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 API + * @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); +} + +require_once INSTALLDIR . '/lib/apiauth.php'; + +/** + * API analog to the group edit page + * + * @category API + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class ApiGroupProfileUpdateAction extends ApiAuthAction +{ + + /** + * Take arguments for running + * + * @param array $args $_REQUEST args + * + * @return boolean success flag + * + */ + + function prepare($args) + { + parent::prepare($args); + + $this->nickname = common_canonical_nickname($this->trimmed('nickname')); + + $this->fullname = $this->trimmed('fullname'); + $this->homepage = $this->trimmed('homepage'); + $this->description = $this->trimmed('description'); + $this->location = $this->trimmed('location'); + $this->aliasstring = $this->trimmed('aliases'); + + $this->user = $this->auth_user; + $this->group = $this->getTargetGroup($this->arg('id')); + + return true; + } + + /** + * Handle the request + * + * See which request params have been set, and update the profile + * + * @param array $args $_REQUEST data (unused) + * + * @return void + */ + + function handle($args) + { + parent::handle($args); + + if ($_SERVER['REQUEST_METHOD'] != 'POST') { + $this->clientError( + _('This method requires a POST.'), + 400, $this->format + ); + return; + } + + if (!in_array($this->format, array('xml', 'json'))) { + $this->clientError( + _('API method not found.'), + 404, + $this->format + ); + return; + } + + if (empty($this->user)) { + $this->clientError(_('No such user.'), 404, $this->format); + return; + } + + if (empty($this->group)) { + $this->clientError(_('Group not found.'), 404, $this->format); + return false; + } + + if (!$this->user->isAdmin($this->group)) { + $this->clientError(_('You must be an admin to edit the group.'), 403); + return false; + } + + $this->group->query('BEGIN'); + + $orig = clone($this->group); + + try { + + if (!empty($this->nickname)) { + if ($this->validateNickname()) { + $this->group->nickname = $this->nickname; + $this->group->mainpage = common_local_url( + 'showgroup', + array('nickname' => $this->nickname) + ); + } + } + + if (!empty($this->fullname)) { + $this->validateFullname(); + $this->group->fullname = $this->fullname; + } + + if (!empty($this->homepage)) { + $this->validateHomepage(); + $this->group->homepage = $this->hompage; + } + + if (!empty($this->description)) { + $this->validateDescription(); + $this->group->description = $this->decription; + } + + if (!empty($this->location)) { + $this->validateLocation(); + $this->group->location = $this->location; + } + + } catch (ApiValidationException $ave) { + $this->clientError( + $ave->getMessage(), + 403, + $this->format + ); + return; + } + + $result = $this->group->update($orig); + + if (!$result) { + common_log_db_error($this->group, 'UPDATE', __FILE__); + $this->serverError(_('Could not update group.')); + } + + $aliases = array(); + + try { + + if (!empty($this->aliasstring)) { + $aliases = $this->validateAliases(); + } + + } catch (ApiValidationException $ave) { + $this->clientError( + $ave->getMessage(), + 403, + $this->format + ); + return; + } + + $result = $this->group->setAliases($aliases); + + if (!$result) { + $this->serverError(_('Could not create aliases.')); + } + + if (!empty($this->nickname) && ($this->nickname != $orig->nickname)) { + common_log(LOG_INFO, "Saving local group info."); + $local = Local_group::staticGet('group_id', $this->group->id); + $local->setNickname($this->nickname); + } + + $this->group->query('COMMIT'); + + switch($this->format) { + case 'xml': + $this->showSingleXmlGroup($this->group); + break; + case 'json': + $this->showSingleJsonGroup($this->group); + break; + default: + $this->clientError(_('API method not found.'), 404, $this->format); + break; + } + } + + function nicknameExists($nickname) + { + $group = Local_group::staticGet('nickname', $nickname); + + if (!empty($group) && + $group->group_id != $this->group->id) { + return true; + } + + $alias = Group_alias::staticGet('alias', $nickname); + + if (!empty($alias) && + $alias->group_id != $this->group->id) { + return true; + } + + return false; + } + + function validateNickname() + { + if (!Validate::string( + $this->nickname, array( + 'min_length' => 1, + 'max_length' => 64, + 'format' => NICKNAME_FMT + ) + ) + ) { + throw new ApiValidationException( + _( + 'Nickname must have only lowercase letters ' . + 'and numbers and no spaces.' + ) + ); + } else if ($this->nicknameExists($this->nickname)) { + throw new ApiValidationException( + _('Nickname already in use. Try another one.') + ); + } else if (!User_group::allowedNickname($this->nickname)) { + throw new ApiValidationException( + _('Not a valid nickname.') + ); + } + + return true; + } + + function validateHomepage() + { + if (!is_null($this->homepage) + && (strlen($this->homepage) > 0) + && !Validate::uri( + $this->homepage, + array('allowed_schemes' => array('http', 'https') + ) + ) + ) { + throw new ApiValidationException( + _('Homepage is not a valid URL.') + ); + } + } + + function validateFullname() + { + if (!is_null($this->fullname) && mb_strlen($this->fullname) > 255) { + throw new ApiValidationException( + _('Full name is too long (max 255 chars).') + ); + } + } + + function validateDescription() + { + if (User_group::descriptionTooLong($this->description)) { + throw new ApiValidationException( + sprintf( + _('description is too long (max %d chars).'), + User_group::maxDescription() + ) + ); + } + } + + function validateLocation() + { + if (!is_null($this->location) && mb_strlen($this->location) > 255) { + throw new ApiValidationException( + _('Location is too long (max 255 chars).') + ); + } + } + + function validateAliases() + { + $aliases = array_map( + 'common_canonical_nickname', + array_unique( + preg_split('/[\s,]+/', + $this->aliasstring + ) + ) + ); + + if (count($aliases) > common_config('group', 'maxaliases')) { + throw new ApiValidationException( + sprintf( + _('Too many aliases! Maximum %d.'), + common_config('group', 'maxaliases') + ) + ); + } + + foreach ($aliases as $alias) { + if (!Validate::string( + $alias, array( + 'min_length' => 1, + 'max_length' => 64, + 'format' => NICKNAME_FMT) + ) + ) { + throw new ApiValidationException( + sprintf( + _('Invalid alias: "%s"'), + $alias + ) + ); + } + + if ($this->nicknameExists($alias)) { + throw new ApiValidationException( + sprintf( + _('Alias "%s" already in use. Try another one.'), + $alias) + ); + } + + // XXX assumes alphanum nicknames + if (strcmp($alias, $this->nickname) == 0) { + throw new ApiValidationException( + _('Alias can\'t be the same as nickname.') + ); + } + } + + return $aliases; + } + +} \ No newline at end of file diff --git a/actions/apigroupshow.php b/actions/apigroupshow.php index 8e471689a8..2998e505e2 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 ec316edc8d..7aa88c186b 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 similarity index 92% rename from actions/twitapisearchatom.php rename to actions/apisearchatom.php index 24aa619bd7..60bb8b0408 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(); } @@ -342,10 +348,24 @@ class TwitapisearchatomAction extends ApiAction 'rel' => 'related', 'href' => $profile->avatarUrl())); - // TODO: Here is where we'd put in a link to an atom feed for threads + // @todo: Here is where we'd put in a link to an atom feed for threads - $this->element("twitter:source", null, - htmlentities($this->sourceLink($notice->source))); + $source = null; + + $ns = $notice->getSource(); + if ($ns) { + if (!empty($ns->name) && !empty($ns->url)) { + $source = '<a href="' + . htmlspecialchars($ns->url) + . '" rel="nofollow">' + . htmlspecialchars($ns->name) + . '</a>'; + } else { + $source = $ns->code; + } + } + + $this->element("twitter:source", null, $source); $this->elementStart('author'); diff --git a/actions/twitapisearchjson.php b/actions/apisearchjson.php similarity index 94% rename from actions/twitapisearchjson.php rename to actions/apisearchjson.php index b5c006aa7b..e44634684d 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 f7d52f0208..485eae66ea 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 (!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 (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 ($this->user->id == $this->notice->profile_id) { + if (Event::handle('StartDeleteOwnNotice', array($this->user, $this->notice))) { + $this->notice->delete(); + Event::handle('EndDeleteOwnNotice', array($this->user, $this->notice)); + } + $this->showNotice(); + } else { + $this->clientError( + _('You may not delete another user\'s status.'), + 403, + $this->format + ); + } } /** diff --git a/actions/apistatusesretweet.php b/actions/apistatusesretweet.php index 128c881e25..9aa3374854 100644 --- a/actions/apistatusesretweet.php +++ b/actions/apistatusesretweet.php @@ -79,7 +79,7 @@ class ApiStatusesRetweetAction extends ApiAuthAction $this->user = $this->auth_user; - if ($this->user->id == $notice->profile_id) { + if ($this->user->id == $this->original->profile_id) { $this->clientError(_('Cannot repeat your own notice.'), 400, $this->format); return false; diff --git a/actions/apistatusesshow.php b/actions/apistatusesshow.php index 0315d2953e..476820a43d 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 d4ef6b550d..fa3f611c0a 100644 --- a/actions/apistatusesupdate.php +++ b/actions/apistatusesupdate.php @@ -29,10 +29,102 @@ * @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/ */ +/* External API usage documentation. Please update when you change how this method works. */ + +/*! @page statusesupdate statuses/update + + @section Description + Updates the authenticating user's status. Requires the status parameter specified below. + Request must be a POST. + + @par URL pattern + /api/statuses/update.:format + + @par Formats (:format) + xml, json + + @par HTTP Method(s) + POST + + @par Requires Authentication + Yes + + @param status (Required) The URL-encoded text of the status update. + @param source (Optional) The source of the status. + @param in_reply_to_status_id (Optional) The ID of an existing status that the update is in reply to. + @param lat (Optional) The latitude the status refers to. + @param long (Optional) The longitude the status refers to. + @param media (Optional) a media upload, such as an image or movie file. + + @sa @ref authentication + @sa @ref apiroot + + @subsection usagenotes Usage notes + + @li The URL pattern is relative to the @ref apiroot. + @li If the @e source parameter is not supplied the source of the status will default to 'api'. + @li The XML response uses <a href="http://georss.org/Main_Page">GeoRSS</a> + to encode the latitude and longitude (see example response below <georss:point>). + @li Data uploaded via the @e media parameter should be multipart/form-data encoded. + + @subsection exampleusage Example usage + + @verbatim + curl -u username:password http://example.com/api/statuses/update.xml -d status='Howdy!' -d lat='30.468' -d long='-94.743' + @endverbatim + + @subsection exampleresponse Example response + + @verbatim + <?xml version="1.0" encoding="UTF-8"?> + <status> + <text>Howdy!</text> + <truncated>false</truncated> + <created_at>Tue Mar 30 23:28:05 +0000 2010</created_at> + <in_reply_to_status_id/> + <source>api</source> + <id>26668724</id> + <in_reply_to_user_id/> + <in_reply_to_screen_name/> + <geo xmlns:georss="http://www.georss.org/georss"> + <georss:point>30.468 -94.743</georss:point> + </geo> + <favorited>false</favorited> + <user> + <id>25803</id> + <name>Jed Sanders</name> + <screen_name>jedsanders</screen_name> + <location>Hoop and Holler, Texas</location> + <description>I like to think of myself as America's Favorite.</description> + <profile_image_url>http://avatar.example.com/25803-48-20080924200604.png</profile_image_url> + <url>http://jedsanders.net</url> + <protected>false</protected> + <followers_count>5</followers_count> + <profile_background_color/> + <profile_text_color/> + <profile_link_color/> + <profile_sidebar_fill_color/> + <profile_sidebar_border_color/> + <friends_count>2</friends_count> + <created_at>Wed Sep 24 20:04:00 +0000 2008</created_at> + <favourites_count>0</favourites_count> + <utc_offset>0</utc_offset> + <time_zone>UTC</time_zone> + <profile_background_image_url/> + <profile_background_tile>false</profile_background_tile> + <statuses_count>70</statuses_count> + <following>true</following> + <notifications>true</notifications> + </user> + </status> + @endverbatim +*/ + if (!defined('STATUSNET')) { exit(1); } @@ -64,8 +156,6 @@ class ApiStatusesUpdateAction extends ApiAuthAction var $lat = null; var $lon = null; - static $reserved_sources = array('web', 'omb', 'mail', 'xmpp', 'api'); - /** * Take arguments for running * @@ -80,19 +170,9 @@ class ApiStatusesUpdateAction extends ApiAuthAction parent::prepare($args); $this->status = $this->trimmed('status'); - $this->source = $this->trimmed('source'); $this->lat = $this->trimmed('lat'); $this->lon = $this->trimmed('long'); - // try to set the source attr from OAuth app - if (empty($this->source)) { - $this->source = $this->oauth_source; - } - - if (empty($this->source) || in_array($this->source, self::$reserved_sources)) { - $this->source = 'api'; - } - $this->in_reply_to_status_id = intval($this->trimmed('in_reply_to_status_id')); @@ -116,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; } @@ -137,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 ); @@ -211,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; } @@ -225,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 + ); } } @@ -252,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 0ba324057e..63d65f2893 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 8cb2e808de..7228960c0b 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); @@ -185,17 +186,23 @@ class ApiTimelineFavoritesAction extends ApiBareAuthAction { $notices = array(); + common_debug("since id = " . $this->since_id . " max id = " . $this->max_id); + if (!empty($this->auth_user) && $this->auth_user->id == $this->user->id) { $notice = $this->user->favoriteNotices( + true, ($this->page-1) * $this->count, $this->count, - true + $this->since_id, + $this->max_id ); } else { $notice = $this->user->favoriteNotices( + false, ($this->page-1) * $this->count, $this->count, - false + $this->since_id, + $this->max_id ); } diff --git a/actions/apitimelinefriends.php b/actions/apitimelinefriends.php index 7f80f252e7..40ce35979b 100644 --- a/actions/apitimelinefriends.php +++ b/actions/apitimelinefriends.php @@ -28,11 +28,107 @@ * @author Mike Cochrane <mikec@mikenz.geek.nz> * @author Robin Millette <robin@millette.info> * @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/ */ +/* External API usage documentation. Please update when you change how this method works. */ + +/*! @page friendstimeline statuses/friends_timeline + + @section Description + Returns the 20 most recent statuses posted by the authenticating + user and that user's friends. This is the equivalent of "You and + friends" page in the web interface. + + @par URL patterns + @li /api/statuses/friends_timeline.:format + @li /api/statuses/friends_timeline/:id.:format + + @par Formats (:format) + xml, json, rss, atom + + @par ID (:id) + username, user id + + @par HTTP Method(s) + GET + + @par Requires Authentication + Sometimes (see: @ref authentication) + + @param user_id (Optional) Specifies a user by ID + @param screen_name (Optional) Specifies a user by screename (nickname) + @param since_id (Optional) Returns only statuses with an ID greater + than (that is, more recent than) the specified ID. + @param max_id (Optional) Returns only statuses with an ID less than + (that is, older than) or equal to the specified ID. + @param count (Optional) Specifies the number of statuses to retrieve. + @param page (Optional) Specifies the page of results to retrieve. + + @sa @ref authentication + @sa @ref apiroot + + @subsection usagenotes Usage notes + @li The URL pattern is relative to the @ref apiroot. + @li The XML response uses <a href="http://georss.org/Main_Page">GeoRSS</a> + to encode the latitude and longitude (see example response below <georss:point>). + + @subsection exampleusage Example usage + + @verbatim + curl http://identi.ca/api/statuses/friends_timeline/evan.xml?count=1&page=2 + @endverbatim + + @subsection exampleresponse Example response + + @verbatim + <?xml version="1.0"?> + <statuses type="array"> + <status> + <text>back from the !yul !drupal meet with Evolving Web folk, @anarcat, @webchick and others, and an interesting refresher on SQL indexing</text> + <truncated>false</truncated> + <created_at>Wed Mar 31 01:33:02 +0000 2010</created_at> + <in_reply_to_status_id/> + <source><a href="http://code.google.com/p/microblog-purple/">mbpidgin</a></source> + <id>26674201</id> + <in_reply_to_user_id/> + <in_reply_to_screen_name/> + <geo/> + <favorited>false</favorited> + <user> + <id>246</id> + <name>Mark</name> + <screen_name>lambic</screen_name> + <location>Montreal, Canada</location> + <description>Geek</description> + <profile_image_url>http://avatar.identi.ca/246-48-20080702141545.png</profile_image_url> + <url>http://lambic.co.uk</url> + <protected>false</protected> + <followers_count>73</followers_count> + <profile_background_color>#F0F2F5</profile_background_color> + <profile_text_color/> + <profile_link_color>#002E6E</profile_link_color> + <profile_sidebar_fill_color>#CEE1E9</profile_sidebar_fill_color> + <profile_sidebar_border_color/> + <friends_count>58</friends_count> + <created_at>Wed Jul 02 14:12:15 +0000 2008</created_at> + <favourites_count>2</favourites_count> + <utc_offset>-14400</utc_offset> + <time_zone>US/Eastern</time_zone> + <profile_background_image_url/> + <profile_background_tile>false</profile_background_tile> + <statuses_count>933</statuses_count> + <following>false</following> + <notifications>false</notifications> + </user> + </status> + </statuses> + @endverbatim +*/ + if (!defined('STATUSNET')) { exit(1); } @@ -153,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 56d1de094c..7a40fd8084 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 43a13dcda9..27eb741691 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 c3aec7c5af..ed1ad20e32 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 9034614253..f901642882 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/ */ @@ -55,6 +56,95 @@ require_once INSTALLDIR . '/lib/apiprivateauth.php'; * @link http://status.net/ */ +/* External API usage documentation. Please update when you change how this method works. */ + +/*! @page publictimeline statuses/public_timeline + + @section Description + Returns the 20 most recent notices from users throughout the system who have + uploaded their own avatars. Depending on configuration, it may or may not + not include notices from automatic posting services. + + @par URL patterns + @li /api/statuses/public_timeline.:format + + @par Formats (:format) + xml, json, rss, atom + + @par HTTP Method(s) + GET + + @par Requires Authentication + No + + @param since_id (Optional) Returns only statuses with an ID greater + than (that is, more recent than) the specified ID. + @param max_id (Optional) Returns only statuses with an ID less than + (that is, older than) or equal to the specified ID. + @param count (Optional) Specifies the number of statuses to retrieve. + @param page (Optional) Specifies the page of results to retrieve. + + @sa @ref apiroot + + @subsection usagenotes Usage notes + @li The URL pattern is relative to the @ref apiroot. + @li The XML response uses <a href="http://georss.org/Main_Page">GeoRSS</a> + to encode the latitude and longitude (see example response below <georss:point>). + + @subsection exampleusage Example usage + + @verbatim + curl http://identi.ca/api/statuses/friends_timeline/evan.xml?count=1&page=2 + @endverbatim + + @subsection exampleresponse Example response + + @verbatim + <?xml version="1.0" encoding="UTF-8"?> + <statuses type="array"> + <status> + <text>@skwashd oh, commbank reenabled me super quick both times. but disconcerting when you don't expect it though</text> + <truncated>false</truncated> + <created_at>Sat Apr 17 00:49:12 +0000 2010</created_at> + <in_reply_to_status_id>28838393</in_reply_to_status_id> + <source>xmpp</source> + <id>28838456</id> + <in_reply_to_user_id>39303</in_reply_to_user_id> + <in_reply_to_screen_name>skwashd</in_reply_to_screen_name> + <geo></geo> + <favorited>false</favorited> + <user> + <id>44517</id> + <name>joshua may</name> + <screen_name>notjosh</screen_name> + <location></location> + <description></description> + <profile_image_url>http://avatar.identi.ca/44517-48-20090321004106.jpeg</profile_image_url> + <url></url> + <protected>false</protected> + <followers_count>17</followers_count> + <profile_background_color></profile_background_color> + <profile_text_color></profile_text_color> + <profile_link_color></profile_link_color> + <profile_sidebar_fill_color></profile_sidebar_fill_color> + <profile_sidebar_border_color></profile_sidebar_border_color> + <friends_count>20</friends_count> + <created_at>Sat Mar 21 00:40:25 +0000 2009</created_at> + <favourites_count>0</favourites_count> + <utc_offset>0</utc_offset> + <time_zone>UTC</time_zone> + <profile_background_image_url></profile_background_image_url> + <profile_background_tile>false</profile_background_tile> + <statuses_count>100</statuses_count> + <following>false</following> + <notifications>false</notifications> + </user> + </status> + [....] + </statuses> +@endverbatim +*/ + class ApiTimelinePublicAction extends ApiPrivateAuthAction { @@ -130,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 c77912fd0f..ea922fc427 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 fed1437ea8..c7ec172aeb 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 11431a82ca..17a2836639 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 similarity index 93% rename from actions/twitapitrends.php rename to actions/apitrends.php index 5a04569a22..5b74636c69 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 6c8fad49ba..28993102c0 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/block.php b/actions/block.php index 11565e20c5..93f8ec9370 100644 --- a/actions/block.php +++ b/actions/block.php @@ -87,13 +87,15 @@ class BlockAction extends ProfileFormAction { if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($this->arg('no')) { - $this->returnToArgs(); + $this->returnToPrevious(); } elseif ($this->arg('yes')) { $this->handlePost(); - $this->returnToArgs(); + $this->returnToPrevious(); } else { $this->showPage(); } + } else { + $this->showPage(); } } @@ -118,6 +120,12 @@ class BlockAction extends ProfileFormAction */ function areYouSureForm() { + // @fixme if we ajaxify the confirmation form, skip the preview on ajax hits + $profile = new ArrayWrapper(array($this->profile)); + $preview = new ProfileList($profile, $this); + $preview->show(); + + $id = $this->profile->id; $this->elementStart('form', array('id' => 'block-' . $id, 'method' => 'post', @@ -187,4 +195,38 @@ class BlockAction extends ProfileFormAction $this->autofocus('form_action-yes'); } + /** + * Override for form session token checks; on our first hit we're just + * requesting confirmation, which doesn't need a token. We need to be + * able to take regular GET requests from email! + * + * @throws ClientException if token is bad on POST request or if we have + * confirmation parameters which could trigger something. + */ + function checkSessionToken() + { + if ($_SERVER['REQUEST_METHOD'] == 'POST' || + $this->arg('yes') || + $this->arg('no')) { + + return parent::checkSessionToken(); + } + } + + /** + * If we reached this form without returnto arguments, return to the + * current user's subscription list. + * + * @return string URL + */ + function defaultReturnTo() + { + $user = common_current_user(); + if ($user) { + return common_local_url('subscribers', + array('nickname' => $user->nickname)); + } else { + return common_local_url('public'); + } + } } diff --git a/actions/deletenotice.php b/actions/deletenotice.php index f8010a814a..68c43040b0 100644 --- a/actions/deletenotice.php +++ b/actions/deletenotice.php @@ -172,7 +172,10 @@ class DeletenoticeAction extends Action } if ($this->arg('yes')) { - $this->notice->delete(); + if (Event::handle('StartDeleteOwnNotice', array($this->user, $this->notice))) { + $this->notice->delete(); + Event::handle('EndDeleteOwnNotice', array($this->user, $this->notice)); + } } $url = common_get_returnto(); diff --git a/actions/deleteuser.php b/actions/deleteuser.php index 1c1f19b0e6..02ded68b31 100644 --- a/actions/deleteuser.php +++ b/actions/deleteuser.php @@ -92,10 +92,10 @@ class DeleteuserAction extends ProfileFormAction { if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($this->arg('no')) { - $this->returnToArgs(); + $this->returnToPrevious(); } elseif ($this->arg('yes')) { $this->handlePost(); - $this->returnToArgs(); + $this->returnToPrevious(); } else { $this->showPage(); } diff --git a/actions/designadminpanel.php b/actions/designadminpanel.php index 8c08581b5d..763737175b 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'); } @@ -263,6 +278,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 * @@ -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 475912fd0b..01976a38f5 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/favoritesrss.php b/actions/favoritesrss.php index 62f06e841b..51c92af933 100644 --- a/actions/favoritesrss.php +++ b/actions/favoritesrss.php @@ -89,7 +89,7 @@ class FavoritesrssAction extends Rss10Action function getNotices($limit=0) { $user = $this->user; - $notice = $user->favoriteNotices(0, $limit); + $notice = $user->favoriteNotices(false, 0, $limit); $notices = array(); while ($notice->fetch()) { $notices[] = clone($notice); diff --git a/actions/finishremotesubscribe.php b/actions/finishremotesubscribe.php index ac51ddec3f..0325f6adbb 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 9cb65a8856..09af7b5026 100644 --- a/actions/foaf.php +++ b/actions/foaf.php @@ -95,7 +95,9 @@ class FoafAction extends Action // Would be nice to tell if they were a Person or not (e.g. a #person usertag?) $this->elementStart('Agent', array('rdf:about' => $this->user->uri)); - $this->element('mbox_sha1sum', null, sha1('mailto:' . $this->user->email)); + if ($this->user->email) { + $this->element('mbox_sha1sum', null, sha1('mailto:' . $this->user->email)); + } if ($this->profile->fullname) { $this->element('name', null, $this->profile->fullname); } @@ -152,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 @@ -207,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)); } @@ -232,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) { @@ -254,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; @@ -281,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 e883c6ce41..d934930608 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/getfile.php b/actions/getfile.php index 9cbe8e1d99..a45506ce2a 100644 --- a/actions/getfile.php +++ b/actions/getfile.php @@ -129,9 +129,9 @@ class GetfileAction extends Action return null; } - $cache = common_memcache(); + $cache = Cache::instance(); if($cache) { - $key = common_cache_key('attachments:etag:' . $this->path); + $key = Cache::key('attachments:etag:' . $this->path); $etag = $cache->get($key); if($etag === false) { $etag = crc32(file_get_contents($this->path)); diff --git a/actions/groupblock.php b/actions/groupblock.php index e52db6e111..39f783397a 100644 --- a/actions/groupblock.php +++ b/actions/groupblock.php @@ -117,7 +117,7 @@ class GroupblockAction extends RedirectingAction parent::handle($args); if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($this->arg('no')) { - $this->returnToArgs(); + $this->returnToPrevious(); } elseif ($this->arg('yes')) { $this->blockProfile(); } elseif ($this->arg('blockto')) { @@ -207,7 +207,7 @@ class GroupblockAction extends RedirectingAction return false; } - $this->returnToArgs(); + $this->returnToPrevious(); } /** diff --git a/plugins/OStatus/actions/hostmeta.php b/actions/hostmeta.php similarity index 72% rename from plugins/OStatus/actions/hostmeta.php rename to actions/hostmeta.php index 6d35ada6c6..be73665f29 100644 --- a/plugins/OStatus/actions/hostmeta.php +++ b/actions/hostmeta.php @@ -18,8 +18,10 @@ */ /** - * @package OStatusPlugin + * @category Action + * @package StatusNet * @maintainer James Walker <james@status.net> + * @author Craig Andrews <candrews@integralblue.com> */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } @@ -27,22 +29,30 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } class HostMetaAction extends Action { + /** + * Is read only? + * + * @return boolean true + */ + function isReadOnly() + { + return true; + } + function handle() { parent::handle(); $domain = common_config('site', 'server'); - $url = common_local_url('userxrd'); - $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')); + if(Event::handle('StartHostMetaLinks', array(&$xrd->links))) { + Event::handle('EndHostMetaLinks', array(&$xrd->links)); + } + + header('Content-type: application/xrd+xml'); print $xrd->toXML(); } } diff --git a/actions/imsettings.php b/actions/imsettings.php index 2c2606b76c..1b1bc0dc0d 100644 --- a/actions/imsettings.php +++ b/actions/imsettings.php @@ -133,8 +133,7 @@ class ImsettingsAction extends ConnectSettingsAction 'message with further instructions. '. '(Did you add %s to your buddy list?)'), $transport_info['display'], - $transport_info['daemon_screenname'], - jabber_daemon_address())); + $transport_info['daemonScreenname'])); $this->hidden('screenname', $confirm->address); // TRANS: Button label to cancel an IM address confirmation procedure. $this->submit('cancel', _m('BUTTON','Cancel')); @@ -163,12 +162,11 @@ class ImsettingsAction extends ConnectSettingsAction 'action' => common_local_url('imsettings'))); $this->elementStart('fieldset', array('id' => 'settings_im_preferences')); - $this->element('legend', null, _('Preferences')); + // TRANS: Header for IM preferences form. + $this->element('legend', null, _('IM Preferences')); $this->hidden('token', common_session_token()); $this->elementStart('table'); $this->elementStart('tr'); - // TRANS: Header for IM preferences form. - $this->element('th', null, _('IM Preferences')); foreach($user_im_prefs_by_transport as $transport=>$user_im_prefs) { $this->element('th', null, $transports[$transport]['display']); @@ -278,19 +276,20 @@ class ImsettingsAction extends ConnectSettingsAction $user = common_current_user(); $user_im_prefs = new User_im_prefs(); + $user_im_prefs->query('BEGIN'); $user_im_prefs->user_id = $user->id; if($user_im_prefs->find() && $user_im_prefs->fetch()) { $preferences = array('notify', 'updatefrompresence', 'replies', 'microid'); - $user_im_prefs->query('BEGIN'); do { $original = clone($user_im_prefs); + $new = clone($user_im_prefs); foreach($preferences as $preference) { - $user_im_prefs->$preference = $this->boolean($user_im_prefs->transport . '_' . $preference); + $new->$preference = $this->boolean($new->transport . '_' . $preference); } - $result = $user_im_prefs->update($original); + $result = $new->update($original); if ($result === false) { common_log_db_error($user, 'UPDATE', __FILE__); @@ -299,8 +298,8 @@ class ImsettingsAction extends ConnectSettingsAction return; } }while($user_im_prefs->fetch()); - $user_im_prefs->query('COMMIT'); } + $user_im_prefs->query('COMMIT'); // TRANS: Confirmation message for successful IM preferences save. $this->showForm(_('Preferences saved.'), true); } diff --git a/actions/login.php b/actions/login.php index 8ea3c800b7..07c601a4db 100644 --- a/actions/login.php +++ b/actions/login.php @@ -62,6 +62,28 @@ class LoginAction extends Action return false; } + /** + * Prepare page to run + * + * + * @param $args + * @return string title + */ + + function prepare($args) + { + parent::prepare($args); + + // @todo this check should really be in index.php for all sensitive actions + $ssl = common_config('site', 'ssl'); + if (empty($_SERVER['HTTPS']) && ($ssl == 'always' || $ssl == 'sometimes')) { + common_redirect(common_local_url('login')); + // exit + } + + return true; + } + /** * Handle input, produce output * @@ -96,27 +118,10 @@ class LoginAction extends Action * @return void */ - function checkLogin($user_id=null, $token=null) + function checkLogin($user_id=null) { // XXX: login throttle - // CSRF protection - token set in NoticeForm - $token = $this->trimmed('token'); - if (!$token || $token != common_session_token()) { - $st = common_session_token(); - if (empty($token)) { - common_log(LOG_WARNING, 'No token provided by client.'); - } else if (empty($st)) { - common_log(LOG_WARNING, 'No session token stored.'); - } else { - common_log(LOG_WARNING, 'Token = ' . $token . ' and session token = ' . $st); - } - - $this->clientError(_('There was a problem with your session token. '. - 'Try again, please.')); - return; - } - $nickname = $this->trimmed('nickname'); $password = $this->arg('password'); @@ -239,7 +244,6 @@ class LoginAction extends Action $this->elementEnd('li'); $this->elementEnd('ul'); $this->submit('submit', _('Login')); - $this->hidden('token', common_session_token()); $this->elementEnd('fieldset'); $this->elementEnd('form'); $this->elementStart('p'); @@ -267,9 +271,13 @@ class LoginAction extends Action 'user name and password ' . 'before changing your settings.'); } else { - return _('Login with your username and password. ' . - 'Don\'t have a username yet? ' . - '[Register](%%action.register%%) a new account.'); + $prompt = _('Login with your username and password.'); + if (!common_config('site', 'closed') && !common_config('site', 'inviteonly')) { + $prompt .= ' '; + $prompt .= _('Don\'t have a username yet? ' . + '[Register](%%action.register%%) a new account.'); + } + return $prompt; } } diff --git a/actions/newnotice.php b/actions/newnotice.php index 748d104ff9..ea832cf4e1 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 cf5f773e71..32ae8587cc 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 1503aa9c2b..e25e4cb259 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 5fd4eead7d..8f0337e4f7 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/register.php b/actions/register.php index d1bc381fbc..7307bc689b 100644 --- a/actions/register.php +++ b/actions/register.php @@ -74,6 +74,13 @@ class RegisterAction extends Action parent::prepare($args); $this->code = $this->trimmed('code'); + // @todo this check should really be in index.php for all sensitive actions + $ssl = common_config('site', 'ssl'); + if (empty($_SERVER['HTTPS']) && ($ssl == 'always' || $ssl == 'sometimes')) { + common_redirect(common_local_url('register')); + // exit + } + if (empty($this->code)) { common_ensure_session(); if (array_key_exists('invitecode', $_SESSION)) { @@ -491,6 +498,45 @@ class RegisterAction extends Action $this->elementStart('li'); $this->element('input', $attrs); $this->elementStart('label', array('class' => 'checkbox', 'for' => 'license')); + $this->raw($this->licenseCheckbox()); + $this->elementEnd('label'); + $this->elementEnd('li'); + } + $this->elementEnd('ul'); + $this->submit('submit', _('Register')); + $this->elementEnd('fieldset'); + $this->elementEnd('form'); + } + + function licenseCheckbox() + { + $out = ''; + switch (common_config('license', 'type')) { + case 'private': + // TRANS: Copyright checkbox label in registration dialog, for private sites. + $out .= htmlspecialchars(sprintf( + _('I understand that content and data of %1$s are private and confidential.'), + common_config('site', 'name'))); + // fall through + case 'allrightsreserved': + if ($out != '') { + $out .= ' '; + } + if (common_config('license', 'owner')) { + // TRANS: Copyright checkbox label in registration dialog, for all rights reserved with a specified copyright owner. + $out .= htmlspecialchars(sprintf( + _('My text and files are copyright by %1$s.'), + common_config('license', 'owner'))); + } else { + // TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors. + $out .= htmlspecialchars(_('My text and files remain under my own copyright.')); + } + // TRANS: Copyright checkbox label in registration dialog, for all rights reserved. + $out .= ' ' . _('All rights reserved.'); + break; + case 'cc': // fall through + default: + // TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses. $message = _('My text and files are available under %s ' . 'except this private data: password, ' . 'email address, IM address, and phone number.'); @@ -499,14 +545,9 @@ class RegisterAction extends Action '">' . htmlspecialchars(common_config('license', 'title')) . '</a>'; - $this->raw(sprintf(htmlspecialchars($message), $link)); - $this->elementEnd('label'); - $this->elementEnd('li'); + $out .= sprintf(htmlspecialchars($message), $link); } - $this->elementEnd('ul'); - $this->submit('submit', _('Register')); - $this->elementEnd('fieldset'); - $this->elementEnd('form'); + return $out; } /** diff --git a/actions/replies.php b/actions/replies.php index 608f71d6e0..8f2fc6c7f3 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 4d776ef04c..d8042e91c7 100644 --- a/actions/showfavorites.php +++ b/actions/showfavorites.php @@ -119,13 +119,13 @@ 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(($this->page-1)*NOTICES_PER_PAGE, - NOTICES_PER_PAGE + 1, true); + $this->notice = $this->user->favoriteNotices(true, ($this->page-1)*NOTICES_PER_PAGE, + NOTICES_PER_PAGE + 1); } else { - $this->notice = $this->user->favoriteNotices(($this->page-1)*NOTICES_PER_PAGE, - NOTICES_PER_PAGE + 1, false); + $this->notice = $this->user->favoriteNotices(false, ($this->page-1)*NOTICES_PER_PAGE, + NOTICES_PER_PAGE + 1); } if (empty($this->notice)) { @@ -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 3d369e9ebf..17c37e4d79 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 5a9add36ce..744b6906eb 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -198,11 +198,11 @@ class ShowstreamAction extends ProfileAction if ($this->user->id === $current_user->id) { $message .= _('Seen anything interesting recently? You haven\'t posted any notices yet, now would be a good time to start :)'); } else { - $message .= sprintf(_('You can try to nudge %1$s or [post something to his or her attention](%%%%action.newnotice%%%%?status_textarea=%2$s).'), $this->user->nickname, '@' . $this->user->nickname); + $message .= sprintf(_('You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%%?status_textarea=%2$s).'), $this->user->nickname, '@' . $this->user->nickname); } } else { - $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to his or her attention.'), $this->user->nickname); + $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname); } $this->elementStart('div', 'guide'); diff --git a/actions/subscriptions.php b/actions/subscriptions.php index 7b10b3425b..da563a218f 100644 --- a/actions/subscriptions.php +++ b/actions/subscriptions.php @@ -185,7 +185,9 @@ class SubscriptionsListItem extends SubscriptionListItem return; } - if (!common_config('xmpp', 'enabled') && !common_config('sms', 'enabled')) { + $transports = array(); + Event::handle('GetImTransports', array(&$transports)); + if (!$transports && !common_config('sms', 'enabled')) { return; } @@ -195,7 +197,7 @@ class SubscriptionsListItem extends SubscriptionListItem 'action' => common_local_url('subedit'))); $this->out->hidden('token', common_session_token()); $this->out->hidden('profile', $this->profile->id); - if (common_config('xmpp', 'enabled')) { + if ($transports) { $attrs = array('name' => 'jabber', 'type' => 'checkbox', 'class' => 'checkbox', @@ -205,7 +207,7 @@ class SubscriptionsListItem extends SubscriptionListItem } $this->out->element('input', $attrs); - $this->out->element('label', array('for' => 'jabber-'.$this->profile->id), _('Jabber')); + $this->out->element('label', array('for' => 'jabber-'.$this->profile->id), _('IM')); } else { $this->out->hidden('jabber', $sub->jabber); } diff --git a/actions/version.php b/actions/version.php index b6593e5edb..9e4e836d24 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/avatar/.gitignore b/avatar/.gitignore old mode 100644 new mode 100755 diff --git a/classes/Config.php b/classes/Config.php index 43b99587fa..e14730438e 100644 --- a/classes/Config.php +++ b/classes/Config.php @@ -58,7 +58,7 @@ class Config extends Memcached_DataObject $c = self::memcache(); if (!empty($c)) { - $settings = $c->get(common_cache_key(self::settingsKey)); + $settings = $c->get(Cache::key(self::settingsKey)); if ($settings !== false) { return $settings; } @@ -77,7 +77,7 @@ class Config extends Memcached_DataObject $config->free(); if (!empty($c)) { - $c->set(common_cache_key(self::settingsKey), $settings); + $c->set(Cache::key(self::settingsKey), $settings); } return $settings; @@ -154,7 +154,7 @@ class Config extends Memcached_DataObject $c = self::memcache(); if (!empty($c)) { - $c->delete(common_cache_key(self::settingsKey)); + $c->delete(Cache::key(self::settingsKey)); } } } diff --git a/classes/Fave.php b/classes/Fave.php index 7ca9ade7f0..ed4f56aeef 100644 --- a/classes/Fave.php +++ b/classes/Fave.php @@ -75,13 +75,13 @@ class Fave extends Memcached_DataObject return Memcached_DataObject::pkeyGet('Fave', $kv); } - function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false) + function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false, $since_id=0, $max_id=0) { $ids = Notice::stream(array('Fave', '_streamDirect'), array($user_id, $own), ($own) ? 'fave:ids_by_user_own:'.$user_id : 'fave:ids_by_user:'.$user_id, - $offset, $limit); + $offset, $limit, $since_id, $max_id); return $ids; } diff --git a/classes/File.php b/classes/File.php index c9477f5f1e..407fd32114 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 00ec75309a..6a86197d93 100644 --- a/classes/File_redirection.php +++ b/classes/File_redirection.php @@ -240,6 +240,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 0dd94ffb99..e98a16064a 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 7b1760f767..2239461beb 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 2533210b73..430419ba5e 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 42312ec63c..ccd0125cf4 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 51dc61262e..20d5d9dbce 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 85273a9b7a..6feb59c341 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -124,16 +124,17 @@ class Memcached_DataObject extends Safe_DataObject } static function memcache() { - return common_memcache(); + return Cache::instance(); } 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 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 { @@ -299,8 +302,8 @@ class Memcached_DataObject extends Safe_DataObject $inst->query($qry); return $inst; } - $key_part = common_keyize($cls).':'.md5($qry); - $ckey = common_cache_key($key_part); + $key_part = Cache::keyize($cls).':'.md5($qry); + $ckey = Cache::key($key_part); $stored = $c->get($ckey); if ($stored !== false) { @@ -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; @@ -546,7 +550,7 @@ class Memcached_DataObject extends Safe_DataObject $keyPart = vsprintf($format, $args); - $cacheKey = common_cache_key($keyPart); + $cacheKey = Cache::key($keyPart); return $c->delete($cacheKey); } @@ -576,6 +580,7 @@ class Memcached_DataObject extends Safe_DataObject if ($message instanceof PEAR_Error) { $message = $message->getMessage(); } + // Low level exception. No need for i18n as discussed with Brion. throw new ServerException("[$id] DB_DataObject error [$type]: $message"); } @@ -587,12 +592,12 @@ class Memcached_DataObject extends Safe_DataObject return false; } - $cacheKey = common_cache_key($keyPart); + $cacheKey = Cache::key($keyPart); return $c->get($cacheKey); } - static function cacheSet($keyPart, $value) + static function cacheSet($keyPart, $value, $flag=null, $expiry=null) { $c = self::memcache(); @@ -600,9 +605,36 @@ class Memcached_DataObject extends Safe_DataObject return false; } - $cacheKey = common_cache_key($keyPart); + $cacheKey = 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 16d0c60b30..fa0c5b3181 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 d65f0da9a9..4c6efd3eb7 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(); + } - // Clear related records + if (Event::handle('NoticeDeleteRelated', array($this))) { - $this->clearReplies(); - $this->clearRepeats(); - $this->clearFaves(); - $this->clearTags(); - $this->clearGroupInboxes(); + // Clear related records - // NOTE: we don't clear inboxes - // NOTE: we don't clear queue items + $this->clearReplies(); + $this->clearRepeats(); + $this->clearFaves(); + $this->clearTags(); + $this->clearGroupInboxes(); + + // 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); } } @@ -556,7 +583,9 @@ class Notice extends Memcached_DataObject if ($f2p->find()) { while ($f2p->fetch()) { $f = File::staticGet($f2p->file_id); - $att[] = clone($f); + if ($f) { + $att[] = clone($f); + } } } return $att; @@ -564,7 +593,7 @@ class Notice extends Memcached_DataObject function getStreamByIds($ids) { - $cache = common_memcache(); + $cache = Cache::instance(); if (!empty($cache)) { $notices = array(); @@ -704,7 +733,7 @@ class Notice extends Memcached_DataObject /** * Is this notice part of an active conversation? - * + * * @return boolean true if other messages exist in the same * conversation, false if this is the only one */ @@ -732,7 +761,7 @@ class Notice extends Memcached_DataObject $c = self::memcache(); if (!empty($c)) { - $ni = $c->get(common_cache_key('notice:who_gets:'.$this->id)); + $ni = $c->get(Cache::key('notice:who_gets:'.$this->id)); if ($ni !== false) { return $ni; } @@ -784,7 +813,7 @@ class Notice extends Memcached_DataObject if (!empty($c)) { // XXX: pack this data better - $c->set(common_cache_key('notice:who_gets:'.$this->id), $ni); + $c->set(Cache::key('notice:who_gets:'.$this->id), $ni); } return $ni; @@ -866,11 +895,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 +994,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.')); } @@ -981,8 +1012,7 @@ class Notice extends Memcached_DataObject * messages, we won't deliver to any remote targets as that's the * source service's responsibility. * - * @fixme Unlike saveReplies() there's no mail notification here. - * Move that to distrib queue handler? + * Mail notifications etc will be handled later. * * @param array of unique identifier URIs for recipients */ @@ -991,26 +1021,31 @@ class Notice extends Memcached_DataObject if (empty($uris)) { return; } + $sender = Profile::staticGet($this->profile_id); - foreach ($uris as $uri) { + foreach (array_unique($uris) as $uri) { - $user = User::staticGet('uri', $uri); + $profile = Profile::fromURI($uri); - if (!empty($user)) { - if ($user->hasBlocked($sender)) { - continue; - } - - $reply = new Reply(); - - $reply->notice_id = $this->id; - $reply->profile_id = $user->id; - - $id = $reply->insert(); - - self::blow('reply:stream:%d', $user->id); + if (empty($profile)) { + common_log(LOG_WARNING, "Unable to determine profile for URI '$uri'"); + continue; } + + if ($profile->hasBlocked($sender)) { + common_log(LOG_INFO, "Not saving reply to profile {$profile->id} ($uri) from sender {$sender->id} because of a block."); + continue; + } + + $reply = new Reply(); + + $reply->notice_id = $this->id; + $reply->profile_id = $profile->id; + + common_log(LOG_INFO, __METHOD__ . ": saving reply: notice $this->id to profile $profile->id"); + + $id = $reply->insert(); } return; @@ -1021,8 +1056,7 @@ class Notice extends Memcached_DataObject * and save reply records indicating that this message needs to be * delivered to those users. * - * Side effect: local recipients get e-mail notifications here. - * @fixme move mail notifications to distrib? + * Mail notifications to local profiles will be sent later. * * @return array of integer profile IDs */ @@ -1073,26 +1107,26 @@ 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); } } } $recipientIds = array_keys($replied); - foreach ($recipientIds as $recipientId) { - $user = User::staticGet('id', $recipientId); - if (!empty($user)) { - self::blow('reply:stream:%d', $reply->profile_id); - mail_notify_attn($user, $this); - } - } - return $recipientIds; } + /** + * Pull the complete list of @-reply targets for this notice. + * + * @return array of integer profile ids + */ function getReplies() { // XXX: cache me @@ -1115,6 +1149,30 @@ class Notice extends Memcached_DataObject return $ids; } + /** + * Send e-mail notifications to local @-reply targets. + * + * Replies must already have been saved; this is expected to be run + * from the distrib queue handler. + */ + function sendReplyNotifications() + { + // Don't send reply notifications for repeats + + if (!empty($this->repeat_of)) { + return array(); + } + + $recipientIds = $this->getReplies(); + + foreach ($recipientIds as $recipientId) { + $user = User::staticGet('id', $recipientId); + if (!empty($user)) { + mail_notify_attn($user, $this); + } + } + } + /** * Pull list of groups this notice needs to be delivered to, * as previously recorded by saveGroups() or saveKnownGroups(). @@ -1154,7 +1212,10 @@ class Notice extends Memcached_DataObject return $groups; } - function asAtomEntry($namespace=false, $source=false, $author=true) + // 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(); @@ -1167,149 +1228,332 @@ class Notice extends Memcached_DataObject 'xmlns:activity' => 'http://activitystrea.ms/spec/1.0/', 'xmlns:media' => 'http://purl.org/syndication/atommedia', 'xmlns:poco' => 'http://portablecontacts.net/spec/1.0', - 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0'); + 'xmlns:ostatus' => 'http://ostatus.org/schema/1.0', + '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'); + } } - - $xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE)); - $xs->element('updated', null, common_date_w3dtf($this->created)); + Event::handle('EndActivitySource', array(&$this, &$xs)); } - if ($source) { - $xs->elementEnd('source'); + $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)); } - $xs->element('title', null, common_xml_safe_str($this->content)); + $atomAuthor = ''; if ($author) { - $xs->raw($profile->asAtomAuthor()); - $xs->raw($profile->asActivityActor()); + $atomAuthor = $profile->asAtomAuthor($cur); } - $xs->element('link', array('rel' => 'alternate', - 'type' => 'text/html', - 'href' => $this->bestUrl())); + if (Event::handle('StartActivityAuthor', array(&$this, &$xs, &$atomAuthor))) { + if (!empty($atomAuthor)) { + $xs->raw($atomAuthor); + Event::handle('EndActivityAuthor', array(&$this, &$xs, &$atomAuthor)); + } + } - $xs->element('id', null, $this->uri); + $actor = ''; - $xs->element('published', null, common_date_w3dtf($this->created)); - $xs->element('updated', null, common_date_w3dtf($this->created)); + if ($author) { + $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)); + } + + // Since we usually use the entry itself as an object, we don't have an explicit + // object. Some extensions may want to add them (for photo, event, music, etc.). + + $objects = array(); + + if (Event::handle('StartActivityObjects', array(&$this, &$xs, &$objects))) { + foreach ($objects as $object) { + $xs->raw($object->asString()); + } + Event::handle('EndActivityObjects', array(&$this, &$xs, $objects)); + } + + $noticeInfoAttr = array('local_id' => $this->id); // local notice ID (useful to clients for ordering) + + $ns = $this->getSource(); + + 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['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; + } + + 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)); } } + $conv = null; + if (!empty($this->conversation)) { - $conv = Conversation::staticGet('id', $this->conversation); - - if (!empty($conv)) { - $xs->element( - 'link', array( - 'rel' => 'ostatus:conversation', - 'href' => $conv->uri - ) - ); - } } + if (Event::handle('StartActivityConversation', array(&$this, &$xs, &$conv))) { + if (!empty($conv)) { + $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 (!empty($this->lat) && !empty($this->lon)) { - $xs->element('georss:point', null, $this->lat . ' ' . $this->lon); + 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)); } - $xs->elementEnd('entry'); + $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)); + } + + if (Event::handle('StartActivityEnd', array(&$this, &$xs))) { + $xs->elementEnd('entry'); + Event::handle('EndActivityEnd', array(&$this, &$xs)); + } return $xs->getString(); } @@ -1343,7 +1587,7 @@ class Notice extends Memcached_DataObject function stream($fn, $args, $cachekey, $offset=0, $limit=20, $since_id=0, $max_id=0) { - $cache = common_memcache(); + $cache = Cache::instance(); if (empty($cache) || $since_id != 0 || $max_id != 0 || @@ -1353,7 +1597,7 @@ class Notice extends Memcached_DataObject $max_id))); } - $idkey = common_cache_key($cachekey); + $idkey = Cache::key($cachekey); $idstr = $cache->get($idkey); @@ -1535,17 +1779,17 @@ class Notice extends Memcached_DataObject function repeatStream($limit=100) { - $cache = common_memcache(); + $cache = Cache::instance(); if (empty($cache)) { $ids = $this->_repeatStreamDirect($limit); } else { - $idstr = $cache->get(common_cache_key('notice:repeats:'.$this->id)); + $idstr = $cache->get(Cache::key('notice:repeats:'.$this->id)); if ($idstr !== false) { $ids = explode(',', $idstr); } else { $ids = $this->_repeatStreamDirect(100); - $cache->set(common_cache_key('notice:repeats:'.$this->id), implode(',', $ids)); + $cache->set(Cache::key('notice:repeats:'.$this->id), implode(',', $ids)); } if ($limit < 100) { // We do a max of 100, so slice down to limit @@ -1699,10 +1943,10 @@ class Notice extends Memcached_DataObject if ($tag->find()) { while ($tag->fetch()) { - self::blow('profile:notice_ids_tagged:%d:%s', $this->profile_id, common_keyize($tag->tag)); - self::blow('profile:notice_ids_tagged:%d:%s;last', $this->profile_id, common_keyize($tag->tag)); - self::blow('notice_tag:notice_ids:%s', common_keyize($tag->tag)); - self::blow('notice_tag:notice_ids:%s;last', common_keyize($tag->tag)); + self::blow('profile:notice_ids_tagged:%d:%s', $this->profile_id, Cache::keyize($tag->tag)); + self::blow('profile:notice_ids_tagged:%d:%s;last', $this->profile_id, Cache::keyize($tag->tag)); + self::blow('notice_tag:notice_ids:%s', Cache::keyize($tag->tag)); + self::blow('notice_tag:notice_ids:%s;last', Cache::keyize($tag->tag)); $tag->delete(); } } @@ -1781,4 +2025,73 @@ class Notice extends Memcached_DataObject return $result; } + + /** + * Get the source of the notice + * + * @return Notice_source $ns A notice source object. 'code' is the only attribute + * guaranteed to be populated. + */ + function getSource() + { + $ns = new Notice_source(); + if (!empty($this->source)) { + switch ($this->source) { + case 'web': + case 'xmpp': + case 'mail': + case 'omb': + case 'system': + case 'api': + $ns->code = $this->source; + break; + default: + $ns = Notice_source::staticGet($this->source); + if (!$ns) { + $ns = new Notice_source(); + $ns->code = $this->source; + $app = Oauth_application::staticGet('name', $this->source); + if ($app) { + $ns->name = $app->name; + $ns->url = $app->source_url; + } + } + break; + } + } + 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/Notice_tag.php b/classes/Notice_tag.php index a5d0716a71..9ade36c34a 100644 --- a/classes/Notice_tag.php +++ b/classes/Notice_tag.php @@ -40,7 +40,7 @@ class Notice_tag extends Memcached_DataObject $ids = Notice::stream(array('Notice_tag', '_streamDirect'), array($tag), - 'notice_tag:notice_ids:' . common_keyize($tag), + 'notice_tag:notice_ids:' . Cache::keyize($tag), $offset, $limit); return Notice::getStreamByIds($ids); @@ -82,9 +82,9 @@ class Notice_tag extends Memcached_DataObject function blowCache($blowLast=false) { - self::blow('notice_tag:notice_ids:%s', common_keyize($this->tag)); + self::blow('notice_tag:notice_ids:%s', Cache::keyize($this->tag)); if ($blowLast) { - self::blow('notice_tag:notice_ids:%s;last', common_keyize($this->tag)); + self::blow('notice_tag:notice_ids:%s;last', Cache::keyize($this->tag)); } } diff --git a/classes/Profile.php b/classes/Profile.php index 54f557ea7c..230b3aa3a0 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) @@ -430,10 +429,10 @@ class Profile extends Memcached_DataObject function subscriptionCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cnt = $c->get(common_cache_key('profile:subscription_count:'.$this->id)); + $cnt = $c->get(Cache::key('profile:subscription_count:'.$this->id)); if (is_integer($cnt)) { return (int) $cnt; } @@ -447,7 +446,7 @@ class Profile extends Memcached_DataObject $cnt = ($cnt > 0) ? $cnt - 1 : $cnt; if (!empty($c)) { - $c->set(common_cache_key('profile:subscription_count:'.$this->id), $cnt); + $c->set(Cache::key('profile:subscription_count:'.$this->id), $cnt); } return $cnt; @@ -455,9 +454,9 @@ class Profile extends Memcached_DataObject function subscriberCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cnt = $c->get(common_cache_key('profile:subscriber_count:'.$this->id)); + $cnt = $c->get(Cache::key('profile:subscriber_count:'.$this->id)); if (is_integer($cnt)) { return (int) $cnt; } @@ -465,13 +464,11 @@ 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); + $c->set(Cache::key('profile:subscriber_count:'.$this->id), $cnt); } return $cnt; @@ -479,9 +476,9 @@ class Profile extends Memcached_DataObject function faveCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cnt = $c->get(common_cache_key('profile:fave_count:'.$this->id)); + $cnt = $c->get(Cache::key('profile:fave_count:'.$this->id)); if (is_integer($cnt)) { return (int) $cnt; } @@ -492,7 +489,7 @@ class Profile extends Memcached_DataObject $cnt = (int) $faves->count('distinct notice_id'); if (!empty($c)) { - $c->set(common_cache_key('profile:fave_count:'.$this->id), $cnt); + $c->set(Cache::key('profile:fave_count:'.$this->id), $cnt); } return $cnt; @@ -500,10 +497,10 @@ class Profile extends Memcached_DataObject function noticeCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cnt = $c->get(common_cache_key('profile:notice_count:'.$this->id)); + $cnt = $c->get(Cache::key('profile:notice_count:'.$this->id)); if (is_integer($cnt)) { return (int) $cnt; } @@ -514,7 +511,7 @@ class Profile extends Memcached_DataObject $cnt = (int) $notices->count('distinct id'); if (!empty($c)) { - $c->set(common_cache_key('profile:notice_count:'.$this->id), $cnt); + $c->set(Cache::key('profile:notice_count:'.$this->id), $cnt); } return $cnt; @@ -522,33 +519,33 @@ class Profile extends Memcached_DataObject function blowSubscriberCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $c->delete(common_cache_key('profile:subscriber_count:'.$this->id)); + $c->delete(Cache::key('profile:subscriber_count:'.$this->id)); } } function blowSubscriptionCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $c->delete(common_cache_key('profile:subscription_count:'.$this->id)); + $c->delete(Cache::key('profile:subscription_count:'.$this->id)); } } function blowFaveCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $c->delete(common_cache_key('profile:fave_count:'.$this->id)); + $c->delete(Cache::key('profile:fave_count:'.$this->id)); } } function blowNoticeCount() { - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $c->delete(common_cache_key('profile:notice_count:'.$this->id)); + $c->delete(Cache::key('profile:notice_count:'.$this->id)); } } @@ -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,41 @@ 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; + } + + static function fromURI($uri) + { + $profile = null; + + if (Event::handle('StartGetProfileFromURI', array($uri, &$profile))) { + // Get a local user or remote (OMB 0.1) profile + $user = User::staticGet('uri', $uri); + if (!empty($user)) { + $profile = $user->getProfile(); + } else { + $remote_profile = Remote_profile::staticGet('uri', $uri); + if (!empty($remote_profile)) { + $profile = Profile::staticGet('id', $remote_profile->profile_id); + } + } + Event::handle('EndGetProfileFromURI', array($uri, $profile)); + } + + return $profile; + } } diff --git a/classes/Queue_item.php b/classes/Queue_item.php index f83c2cef18..c7e17be6e8 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 0a1676a6a9..77bfbcd99c 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/Reply.php b/classes/Reply.php index 659e04c925..dc6296bda3 100644 --- a/classes/Reply.php +++ b/classes/Reply.php @@ -22,6 +22,20 @@ class Reply extends Memcached_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE + /** + * Wrapper for record insertion to update related caches + */ + function insert() + { + $result = parent::insert(); + + if ($result) { + self::blow('reply:stream:%d', $this->profile_id); + } + + return $result; + } + function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0) { $ids = Notice::stream(array('Reply', '_streamDirect'), diff --git a/classes/Safe_DataObject.php b/classes/Safe_DataObject.php index e926cb0d58..f0ea6b136f 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 a452c32ce0..c4f37ce1c6 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,9 +308,56 @@ class Status_network extends Safe_DataObject */ function getTags() { - return array_filter(explode("|", strval($this->tags))); + $result = Status_network_tag::getTags($this->site_id); + + // XXX : for backwards compatibility + if (empty($result)) { + return explode('|', $this->tags); + } + + return $result; } + /** + * Save a given set of tags + * @param array tags + * @fixme only add/remove differentials + */ + 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 diff --git a/classes/Status_network_tag.php b/classes/Status_network_tag.php new file mode 100644 index 0000000000..7dab232897 --- /dev/null +++ b/classes/Status_network_tag.php @@ -0,0 +1,133 @@ +<?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); + } + + /** + * Fetch the (possibly cached) tag entries for the given site id. + * Uses status_network's cache settings. + * + * @param string $site_id + * @return array of strings + */ + static function getTags($site_id) + { + $key = 'status_network_tags:' . $site_id; + if (Status_network::$cache) { + $packed = Status_network::$cache->get($key); + if (is_string($packed)) { + if ($packed == '') { + return array(); + } else { + return explode('|', $packed); + } + } + } + + $result = array(); + + $tags = new Status_network_tag(); + $tags->site_id = $site_id; + if ($tags->find()) { + while ($tags->fetch()) { + $result[] = $tags->tag; + } + } + + if (Status_network::$cache) { + $packed = implode('|', $result); + Status_network::$cache->set($key, $packed, 3600); + } + + return $result; + } + + /** + * Drop the cached tag entries for this site. + * Needed after inserting/deleting a tag entry. + */ + function decache() + { + $key = 'status_network_tags:' . $this->site_id; + if (Status_network::$cache) { + Status_network::$cache->delete($key); + } + } + + function insert() + { + $ret = parent::insert(); + $this->decache(); + return $ret; + } + + function delete() + { + $ret = parent::delete(); + $this->decache(); + return $ret; + } +} diff --git a/classes/Subscription.php b/classes/Subscription.php index 0679c09250..0225ed4df9 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 4626a7ca1e..c15ddc9dc5 100644 --- a/classes/User.php +++ b/classes/User.php @@ -355,11 +355,12 @@ class User extends Memcached_DataObject __FILE__); } else { $notice = Notice::saveNew($welcomeuser->id, + // TRANS: Notice given on user registration. + // TRANS: %1$s is the sitename, $2$s is the registering user's nickname. sprintf(_('Welcome to %1$s, @%2$s!'), common_config('site', 'name'), $user->nickname), 'system'); - } } @@ -370,7 +371,6 @@ class User extends Memcached_DataObject } // Things we do when the email changes - function emailChanged() { @@ -388,7 +388,7 @@ class User extends Memcached_DataObject function hasFave($notice) { - $cache = common_memcache(); + $cache = Cache::instance(); // XXX: Kind of a hack. @@ -459,9 +459,9 @@ class User extends Memcached_DataObject return $profile->getNotices($offset, $limit, $since_id, $before_id); } - function favoriteNotices($offset=0, $limit=NOTICES_PER_PAGE, $own=false) + function favoriteNotices($own=false, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0) { - $ids = Fave::stream($this->id, $offset, $limit, $own); + $ids = Fave::stream($this->id, $offset, $limit, $own, $since_id, $max_id); return Notice::getStreamByIds($ids); } @@ -487,14 +487,14 @@ class User extends Memcached_DataObject function blowFavesCache() { - $cache = common_memcache(); + $cache = Cache::instance(); if ($cache) { // Faves don't happen chronologically, so we need to blow // ;last cache, too - $cache->delete(common_cache_key('fave:ids_by_user:'.$this->id)); - $cache->delete(common_cache_key('fave:ids_by_user:'.$this->id.';last')); - $cache->delete(common_cache_key('fave:ids_by_user_own:'.$this->id)); - $cache->delete(common_cache_key('fave:ids_by_user_own:'.$this->id.';last')); + $cache->delete(Cache::key('fave:ids_by_user:'.$this->id)); + $cache->delete(Cache::key('fave:ids_by_user:'.$this->id.';last')); + $cache->delete(Cache::key('fave:ids_by_user_own:'.$this->id)); + $cache->delete(Cache::key('fave:ids_by_user_own:'.$this->id.';last')); } $profile = $this->getProfile(); $profile->blowFaveCount(); @@ -519,7 +519,7 @@ class User extends Memcached_DataObject if ($this->id == $other->id) { common_log(LOG_WARNING, sprintf( - "Profile ID %d (%s) tried to block his or herself.", + "Profile ID %d (%s) tried to block themself.", $this->id, $this->nickname ) diff --git a/classes/User_group.php b/classes/User_group.php index 110f083012..0b83cfd47d 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/User_im_prefs.php b/classes/User_im_prefs.php index 8ecdfe9fab..75be8969e0 100644 --- a/classes/User_im_prefs.php +++ b/classes/User_im_prefs.php @@ -68,4 +68,27 @@ class User_im_prefs extends Memcached_DataObject { return array(false,false); } + + /** + * We have two compound keys with unique constraints: + * (transport, user_id) which is our primary key, and + * (transport, screenname) which is an additional constraint. + * + * Currently there's not a way to represent that second key + * in the general keys list, so we're adding it here to the + * list of keys to use for caching, ensuring that it gets + * cleared as well when we change. + * + * @return array of cache keys + */ + function _allCacheKeys() + { + $ukeys = 'transport,screenname'; + $uvals = $this->transport . ',' . $this->screenname; + + $ckeys = parent::_allCacheKeys(); + $ckeys[] = $this->cacheKey($this->tableName(), $ukeys, $uvals); + return $ckeys; + } + } diff --git a/classes/status_network.ini b/classes/status_network.ini index adb71cba77..b298daae46 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/classes/statusnet.ini b/classes/statusnet.ini index d13fdfa526..b57d862263 100644 --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -647,8 +647,10 @@ modified = 384 [user_im_prefs__keys] user_id = K transport = K -transport = U -screenname = U +; There's another unique index on (transport, screenname) +; but we have no way to represent a compound index other than +; the primary key in here. To ensure proper cache purging, +; we need to tweak the class. [user_urlshortener_prefs] user_id = 129 diff --git a/config.php.sample b/config.php.sample index 20de7ffedf..5481ca539e 100644 --- a/config.php.sample +++ b/config.php.sample @@ -45,7 +45,7 @@ $config['site']['path'] = 'statusnet'; // lighttpd, nginx), you can enable X-Sendfile support for better // performance. Presently, only attachment serving when the site is // in private mode will use X-Sendfile. -// $config['site']['X-Sendfile'] = false; +// $config['site']['use_x_sendfile'] = false; // You may also need to enable X-Sendfile support for your web server and // allow it to access files outside of the web root. For Apache with // mod_xsendfile, you can add these to your .htaccess or server config: diff --git a/db/08to09_pg.sql b/db/08to09_pg.sql index 2eac5dadf3..d3eb644437 100644 --- a/db/08to09_pg.sql +++ b/db/08to09_pg.sql @@ -81,3 +81,60 @@ ALTER TABLE profile ADD COLUMN lon decimal(10,7) /*comment 'longitude'*/; ALTER TABLE profile ADD COLUMN location_id integer /* comment 'location id if possible'*/; ALTER TABLE profile ADD COLUMN location_ns integer /* comment 'namespace for location'*/; +ALTER TABLE consumer add COLUMN consumer_secret varchar(255) not null ; /*comment 'secret value'*/ + +ALTER TABLE token ADD COLUMN verifier varchar(255); /* comment 'verifier string for OAuth 1.0a',*/ +ALTER TABLE token ADD COLUMN verified_callback varchar(255); /* comment 'verified callback URL for OAuth 1.0a',*/ + +create table queue_item_new ( + id serial /* comment 'unique identifier'*/, + frame bytea not null /* comment 'data: object reference or opaque string'*/, + transport varchar(8) not null /*comment 'queue for what? "email", "jabber", "sms", "irc", ...'*/, + created timestamp not null default CURRENT_TIMESTAMP /*comment 'date this record was created'*/, + claimed timestamp /*comment 'date this item was claimed'*/, + PRIMARY KEY (id) +); + +insert into queue_item_new (frame,transport,created,claimed) + select ('0x' || notice_id::text)::bytea,transport,created,claimed from queue_item; +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), + 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) + +); + diff --git a/db/notice_source.sql b/db/notice_source.sql index 50660e9480..6bfd5c5f15 100644 --- a/db/notice_source.sql +++ b/db/notice_source.sql @@ -9,13 +9,16 @@ 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()), - ('eventbox','EventBox','http://thecosmicmachine.com/eventbox/ ', now()), + ('eventbox','EventBox','http://thecosmicmachine.com/eventbox/', now()), + ('identica-mode','Emacs Identica-mode','http://nongnu.org/identica-mode/', now()), ('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()), @@ -48,11 +51,13 @@ 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()), ('triklepost', 'Tricklepost', 'http://github.com/zcopley/tricklepost/tree/master', now()), ('tweenky','Tweenky','http://beta.tweenky.com/', now()), + ('TweetDeck', 'TweetDeck', 'http://www.tweetdeck.com/', now()), ('twhirl','Twhirl','http://www.twhirl.org/', now()), ('twibble','twibble','http://www.twibble.de/', now()), ('Twidge','Twidge','http://software.complete.org/twidge', now()), diff --git a/db/site.sql b/db/site.sql index 791303bd54..f87995b943 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 0000000000..30cea31dfa --- /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 998cc71e94..fe0758de89 100644 --- a/db/statusnet_pg.sql +++ b/db/statusnet_pg.sql @@ -8,6 +8,10 @@ create table profile ( homepage varchar(255) /* comment 'identifying URL' */, bio varchar(140) /* comment 'descriptive biography' */, location varchar(255) /* comment 'physical location' */, + lat decimal(10,7) /* comment 'latitude'*/ , + lon decimal(10,7) /* comment 'longitude'*/ , + location_id integer /* comment 'location id if possible'*/ , + location_ns integer /* comment 'namespace for location'*/ , created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */, modified timestamp /* comment 'date this record was modified' */, @@ -182,6 +186,7 @@ create index fave_modified_idx on fave using btree(modified); create table consumer ( consumer_key varchar(255) primary key /* comment 'unique identifier, root URL' */, + consumer_secret varchar(255) not null /* comment 'secret value', */, seed char(32) not null /* comment 'seed for new tokens by this consumer' */, created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */, @@ -195,6 +200,9 @@ create table token ( type integer not null default 0 /* comment 'request or access' */, state integer default 0 /* comment 'for requests 0 = initial, 1 = authorized, 2 = used' */, + verifier varchar(255) /*comment 'verifier string for OAuth 1.0a'*/, + verified_callback varchar(255) /*comment 'verified callback URL for OAuth 1.0a'*/, + created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */, modified timestamp /* comment 'date this record was modified' */, @@ -213,17 +221,33 @@ create table nonce ( primary key (consumer_key, ts, nonce) ); -/* One-to-many relationship of user to openid_url */ - -create table user_openid ( - canonical varchar(255) primary key /* comment 'Canonical true URL' */, - display varchar(255) not null unique /* comment 'URL for viewing, may be different from canonical' */, - user_id integer not null /* comment 'user owning this URL' */ references "user" (id) , +create sequence oauth_application_seq; +create table oauth_application ( + id bigint default nextval('oauth_application_seq') primary key /* comment 'unique identifier' */, + owner integer not null /* comment 'owner of the application' */ references profile (id), + consumer_key varchar(255) not null /* comment 'application consumer key' */ references consumer (consumer_key), + name varchar(255) unique not null /* comment 'name of the application' */, + description varchar(255) /* comment 'description of the application' */, + icon varchar(255) not null /* comment 'application icon' */, + source_url varchar(255) /* comment 'application homepage - used for source link' */, + organization varchar(255) /* comment 'name of the organization running the application' */, + homepage varchar(255) /* comment 'homepage for the organization' */, + callback_url varchar(255) /* comment 'url to redirect to after authentication' */, + "type" integer default 0 /* comment 'type of app, 1 = browser, 2 = desktop' */, + access_type integer default 0 /* comment 'default access type, bit 1 = read, bit 2 = write' */, created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */, modified timestamp /* comment 'date this record was modified' */ - ); -create index user_openid_user_id_idx on user_openid using btree(user_id); + +create table oauth_application_user ( + profile_id integer not null /* 'user of the application' */ references profile (id), + application_id integer not null /* 'id of the application' */ references oauth_application (id), + access_type integer default 0 /* 'access type, bit 1 = read, bit 2 = write' */, + token varchar(255) /* 'request or access token' */, + created timestamp not null default CURRENT_TIMESTAMP /* 'date this record was created' */, + modified timestamp /* 'date this record was modified' */, + primary key (profile_id, application_id) +); /* These are used by JanRain OpenID library */ @@ -251,7 +275,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' */ ); @@ -262,14 +286,12 @@ create table remember_me ( ); create table queue_item ( - - notice_id integer not null /* comment 'notice queued' */ references notice (id) , - transport varchar(8) not null /* comment 'queue for what? "email", "jabber", "sms", "irc", ...' */, - created timestamp not null default CURRENT_TIMESTAMP /* comment 'date this record was created' */, - claimed timestamp /* comment 'date this item was claimed' */, - - primary key (notice_id, transport) - + id serial /* comment 'unique identifier'*/, + frame bytea not null /* comment 'data: object reference or opaque string'*/, + transport varchar(8) not null /*comment 'queue for what? "email", "jabber", "sms", "irc", ...'*/, + created timestamp not null default CURRENT_TIMESTAMP /*comment 'date this record was created'*/, + claimed timestamp /*comment 'date this item was claimed'*/, + PRIMARY KEY (id) ); create index queue_item_created_idx on queue_item using btree(created); @@ -589,3 +611,39 @@ create table login_token ( primary key (user_id) ); +create table user_location_prefs ( + user_id integer not null /* comment 'user who has the preference' */ references "user" (id), + share_location integer default 1 /* comment 'Whether to share location data' */, + created timestamp not null DEFAULT CURRENT_TIMESTAMP /* 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 sequence conversation_seq; +create table conversation ( + id bigint default nextval('conversation_seq') primary key /* comment 'unique identifier' */, + uri varchar(225) unique /* comment 'URI of the conversation' */, + created timestamp not null DEFAULT CURRENT_TIMESTAMP /* comment 'date this record was created' */, + modified timestamp /* comment 'date this record was modified' */ +); + +create table local_group ( + + group_id integer primary key /* comment 'group represented' */ references user_group (id), + nickname varchar(64) unique /* comment 'group represented' */, + + created timestamp not null DEFAULT CURRENT_TIMESTAMP /* comment 'date this record was created' */, + modified timestamp /* comment 'date this record was modified' */ + +); + diff --git a/doc-src/about b/doc-src/about index 6a68e41cf0..5645c2cebe 100644 --- a/doc-src/about +++ b/doc-src/about @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + %%site.name%% is a [micro-blogging](http://en.wikipedia.org/wiki/Micro-blogging) service based on the Free Software [StatusNet](http://status.net/) tool. diff --git a/doc-src/badge b/doc-src/badge index 5499e334ca..98cdcfce27 100644 --- a/doc-src/badge +++ b/doc-src/badge @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + Install the %%site.name%% badge on your blog or web site to show the latest updates from you and your friends! diff --git a/doc-src/bookmarklet b/doc-src/bookmarklet index ae359d2dbe..0b77bf45a7 100644 --- a/doc-src/bookmarklet +++ b/doc-src/bookmarklet @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + A bookmarklet is a small piece of javascript code used as a bookmark. This one will let you post to %%site.name%% simply by selecting some text on a page and pressing the bookmarklet. Drag-and-drop the following link to your bookmarks bar or right-click it and add it to your browser favorites to keep it handy. diff --git a/doc-src/contact b/doc-src/contact index c63fcd01ad..75c3aa8364 100644 --- a/doc-src/contact +++ b/doc-src/contact @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + There are a number of options for getting in contact with responsible people for %%site.name%%. diff --git a/doc-src/faq b/doc-src/faq index 8e394806fb..589b18b8d8 100644 --- a/doc-src/faq +++ b/doc-src/faq @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + These are some *Frequently Asked Questions* about this service, with some answers. diff --git a/doc-src/groups b/doc-src/groups index 772ca98334..5ff09600ef 100644 --- a/doc-src/groups +++ b/doc-src/groups @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + Users on %%site.name%% can create *groups* that other users can join. Groups can be a great way to share information and entertainment with a group of people who have a common interest or background. diff --git a/doc-src/help b/doc-src/help index 37a8d11f72..024d473780 100644 --- a/doc-src/help +++ b/doc-src/help @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + %%site.name%% is a **microblogging service**. Users post short (%%site.textlimit%% character) notices which are broadcast to their friends and fans using the Web, RSS, or instant messages. diff --git a/doc-src/im b/doc-src/im index eda4f6fc57..896c121879 100644 --- a/doc-src/im +++ b/doc-src/im @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + You can post messages to %%site.name%% using a [Jabber](http://jabber.org/) client on your computer, mobile phone, or other platform. ([GTalk](http://talk.google.com/), Google's Jabber program, will also work.) This can be a convenient way to keep diff --git a/doc-src/openmublog b/doc-src/openmublog index aec532b797..267ad6e7c4 100644 --- a/doc-src/openmublog +++ b/doc-src/openmublog @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + [OpenMicroBlogging](http://openmicroblogging.org/) is a protocol that lets users of one [microblogging](http://en.wikipedia.org/wiki/microblogging) service subscribe to notices by users of another service. The protocol, based on diff --git a/doc-src/privacy b/doc-src/privacy index 90c7b3c7fb..d6e71c92dc 100644 --- a/doc-src/privacy +++ b/doc-src/privacy @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + This document outlines this service's respect for your personal privacy as a user of the service. diff --git a/doc-src/sms b/doc-src/sms index 1a3064318f..0e63da9e6b 100644 --- a/doc-src/sms +++ b/doc-src/sms @@ -1,4 +1,8 @@ -You can post messages to %%site.name%% using a many kinds of cell +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + +You can post messages to %%site.name%% using many kinds of cell phones that support SMS messaging. This site does not support SMS directly; rather, it uses your carrier's email gateway to send and receive messages. diff --git a/doc-src/source b/doc-src/source index 3ddd6203ec..670071b224 100644 --- a/doc-src/source +++ b/doc-src/source @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + This service uses a Free microblogging tool called **StatusNet**. StatusNet is available under the [GNU Affero General Public License Version 3.0](http://www.fsf.org/licensing/licenses/agpl-3.0.html), a diff --git a/doc-src/tags b/doc-src/tags index 2ed352e701..091b147ad3 100644 --- a/doc-src/tags +++ b/doc-src/tags @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + %%site.name%% supports [tags](http://en.wikipedia.org/wiki/Tag_(metadata)) to help you organize your activities here. You can use tags for people and for diff --git a/doc-src/tos b/doc-src/tos index bcfc319814..8d5bac57fc 100644 --- a/doc-src/tos +++ b/doc-src/tos @@ -1,3 +1,7 @@ +<!-- Copyright 2008-2010 StatusNet Inc. and contributors. --> +<!-- Document licensed under Creative Commons Attribution 3.0 Unported. See --> +<!-- http://creativecommons.org/licenses/by/3.0/ for details. --> + The gist -------- diff --git a/extlib/Auth/OpenID.php b/extlib/Auth/OpenID.php index db6164256f..c9d9779624 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 4a617ae30c..7370715e3a 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 37ce0cbf45..7fdf399a3c 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 45104947d6..7fca2dc43e 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 500890b656..021c038988 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 aacc3cd397..a926267779 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 9db6e0eb3f..0c7d08f916 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 f4ded7eba5..3e25b7dbbb 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 62aeb1d2bc..7b0c640c58 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 @@ -171,15 +197,34 @@ class Auth_OpenID_ServiceEndpoint { } } + /* + * 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 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. */ - function fromXRDS($uri, $xrds_text) + static function fromXRDS($uri, $xrds_text) { - $xrds =& Auth_Yadis_XRDS::parseXRDS($xrds_text); + $xrds = Auth_Yadis_XRDS::parseXRDS($xrds_text); if ($xrds) { $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 22fd2d3661..e8f29ace55 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 f362a4b389..c4e38c0380 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 29d8d20e76..074421a0bb 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 ec42db8dfc..e9779bd4e0 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 f4c6062f8c..eca6b9c50f 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 fb342a0013..dd02661d88 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 d357c6b11d..fc10800b1c 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 5ab115a86e..9aa1fa4684 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 eb08af0162..810f059f1d 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 effecac385..b83c5911f8 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 62cba8a912..f08ca8bd0b 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 546f34f6be..6c2e721691 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 69d95e7b8d..d90e43e00d 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 da93c6aa25..c04059732c 100644 --- a/extlib/Auth/OpenID/SQLStore.php +++ b/extlib/Auth/OpenID/SQLStore.php @@ -13,16 +13,6 @@ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache */ -/** - * 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 */ @@ -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 ec2bf58e46..4558fa1c33 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 63280769fd..5ece707243 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 f1db4d8725..cc8ba961c2 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 33a8556cea..69222a5e04 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 4919a60651..000440b588 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 f821d836a9..c051b550aa 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 963b9a49a4..148cde1b2e 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 d50cf7ad65..ee6f68bcb6 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 1134a4ff4b..a5afa8e9a8 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 6a418260ee..4da7c94c0d 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 297ccbd2c3..6f0f8b7e28 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 3e0ca2bb0c..26890539aa 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 81b2ce2210..cf1f5c41b2 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 f14a7948e1..1f5af96fb2 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 4e34623176..0143a692e0 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 4e8e8d0372..5e11587352 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 d89f77c6d7..9ea2db7f91 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/Mail.php b/extlib/Mail.php old mode 100644 new mode 100755 index 3a0c1a9cb8..75132ac2a6 --- a/extlib/Mail.php +++ b/extlib/Mail.php @@ -1,22 +1,47 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: Mail.php,v 1.17 2006/09/15 03:41:18 jon Exp $ +/** + * PEAR's Mail:: interface. + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2002-2007, Richard Heyes + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. + * + * @category Mail + * @package Mail + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 1997-2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: Mail.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ require_once 'PEAR.php'; @@ -26,7 +51,7 @@ require_once 'PEAR.php'; * useful in multiple mailer backends. * * @access public - * @version $Revision: 1.17 $ + * @version $Revision: 294747 $ * @package Mail */ class Mail @@ -82,12 +107,20 @@ class Mail * @return mixed Returns true on success, or a PEAR_Error * containing a descriptive error message on * failure. + * * @access public * @deprecated use Mail_mail::send instead */ function send($recipients, $headers, $body) { - $this->_sanitizeHeaders($headers); + if (!is_array($headers)) { + return PEAR::raiseError('$headers must be an array'); + } + + $result = $this->_sanitizeHeaders($headers); + if (is_a($result, 'PEAR_Error')) { + return $result; + } // if we're passed an array of recipients, implode it. if (is_array($recipients)) { @@ -103,10 +136,9 @@ class Mail } // flatten the headers out. - list(,$text_headers) = Mail::prepareHeaders($headers); + list(, $text_headers) = Mail::prepareHeaders($headers); return mail($recipients, $subject, $body, $text_headers); - } /** @@ -151,9 +183,9 @@ class Mail foreach ($headers as $key => $value) { if (strcasecmp($key, 'From') === 0) { include_once 'Mail/RFC822.php'; - $parser = &new Mail_RFC822(); + $parser = new Mail_RFC822(); $addresses = $parser->parseAddressList($value, 'localhost', false); - if (PEAR::isError($addresses)) { + if (is_a($addresses, 'PEAR_Error')) { return $addresses; } @@ -221,7 +253,7 @@ class Mail $addresses = Mail_RFC822::parseAddressList($recipients, 'localhost', false); // If parseAddressList() returned a PEAR_Error object, just return it. - if (PEAR::isError($addresses)) { + if (is_a($addresses, 'PEAR_Error')) { return $addresses; } diff --git a/extlib/Mail/RFC822.php b/extlib/Mail/RFC822.php old mode 100644 new mode 100755 index 8714df2e29..58d36465cb --- a/extlib/Mail/RFC822.php +++ b/extlib/Mail/RFC822.php @@ -1,37 +1,48 @@ <?php -// +-----------------------------------------------------------------------+ -// | Copyright (c) 2001-2002, Richard Heyes | -// | All rights reserved. | -// | | -// | Redistribution and use in source and binary forms, with or without | -// | modification, are permitted provided that the following conditions | -// | are met: | -// | | -// | o Redistributions of source code must retain the above copyright | -// | notice, this list of conditions and the following disclaimer. | -// | o 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.| -// | o The names of the authors may not 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. | -// | | -// +-----------------------------------------------------------------------+ -// | Authors: Richard Heyes <richard@phpguru.org> | -// | Chuck Hagenbuch <chuck@horde.org> | -// +-----------------------------------------------------------------------+ +/** + * RFC 822 Email address list validation Utility + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2001-2010, Richard Heyes + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. + * + * @category Mail + * @package Mail + * @author Richard Heyes <richard@phpguru.org> + * @author Chuck Hagenbuch <chuck@horde.org + * @copyright 2001-2010 Richard Heyes + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: RFC822.php 294749 2010-02-08 08:22:25Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * RFC 822 Email address list validation Utility @@ -52,7 +63,7 @@ * * @author Richard Heyes <richard@phpguru.org> * @author Chuck Hagenbuch <chuck@horde.org> - * @version $Revision: 1.24 $ + * @version $Revision: 294749 $ * @license BSD * @package Mail */ @@ -635,8 +646,8 @@ class Mail_RFC822 { $comment = $this->_splitCheck($parts, ')'); $comments[] = $comment; - // +1 is for the trailing ) - $_mailbox = substr($_mailbox, strpos($_mailbox, $comment)+strlen($comment)+1); + // +2 is for the brackets + $_mailbox = substr($_mailbox, strpos($_mailbox, '('.$comment)+strlen($comment)+2); } else { break; } diff --git a/extlib/Mail/mail.php b/extlib/Mail/mail.php old mode 100644 new mode 100755 index b13d695656..a8b4b5dbee --- a/extlib/Mail/mail.php +++ b/extlib/Mail/mail.php @@ -1,27 +1,52 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: mail.php,v 1.20 2007/10/06 17:00:00 chagenbu Exp $ +/** + * internal PHP-mail() implementation of the PEAR Mail:: interface. + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010 Chuck Hagenbuch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. + * + * @category Mail + * @package Mail + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: mail.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * internal PHP-mail() implementation of the PEAR Mail:: interface. * @package Mail - * @version $Revision: 1.20 $ + * @version $Revision: 294747 $ */ class Mail_mail extends Mail { diff --git a/extlib/Mail/mock.php b/extlib/Mail/mock.php old mode 100644 new mode 100755 index 971dae6a0e..61570ba408 --- a/extlib/Mail/mock.php +++ b/extlib/Mail/mock.php @@ -1,29 +1,53 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: mock.php,v 1.1 2007/12/08 17:57:54 chagenbu Exp $ -// +/** + * Mock implementation + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010 Chuck Hagenbuch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. + * + * @category Mail + * @package Mail + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: mock.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * Mock implementation of the PEAR Mail:: interface for testing. * @access public * @package Mail - * @version $Revision: 1.1 $ + * @version $Revision: 294747 $ */ class Mail_mock extends Mail { diff --git a/extlib/Mail/null.php b/extlib/Mail/null.php old mode 100644 new mode 100755 index 982bfa45b6..f8d58272ee --- a/extlib/Mail/null.php +++ b/extlib/Mail/null.php @@ -1,29 +1,53 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Phil Kernick <philk@rotfl.com.au> | -// +----------------------------------------------------------------------+ -// -// $Id: null.php,v 1.2 2004/04/06 05:19:03 jon Exp $ -// +/** + * Null implementation of the PEAR Mail interface + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010 Phil Kernick + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. + * + * @category Mail + * @package Mail + * @author Phil Kernick <philk@rotfl.com.au> + * @copyright 2010 Phil Kernick + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: null.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** * Null implementation of the PEAR Mail:: interface. * @access public * @package Mail - * @version $Revision: 1.2 $ + * @version $Revision: 294747 $ */ class Mail_null extends Mail { diff --git a/extlib/Mail/sendmail.php b/extlib/Mail/sendmail.php old mode 100644 new mode 100755 index cd248e61d2..b056575e99 --- a/extlib/Mail/sendmail.php +++ b/extlib/Mail/sendmail.php @@ -20,7 +20,7 @@ * Sendmail implementation of the PEAR Mail:: interface. * @access public * @package Mail - * @version $Revision: 1.19 $ + * @version $Revision: 294744 $ */ class Mail_sendmail extends Mail { @@ -117,7 +117,7 @@ class Mail_sendmail extends Mail { if (is_a($recipients, 'PEAR_Error')) { return $recipients; } - $recipients = escapeShellCmd(implode(' ', $recipients)); + $recipients = implode(' ', array_map('escapeshellarg', $recipients)); $headerElements = $this->prepareHeaders($headers); if (is_a($headerElements, 'PEAR_Error')) { @@ -141,7 +141,8 @@ class Mail_sendmail extends Mail { return PEAR::raiseError('From address specified with dangerous characters.'); } - $from = escapeShellCmd($from); + $from = escapeshellarg($from); // Security bug #16200 + $mail = @popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w'); if (!$mail) { return PEAR::raiseError('Failed to open sendmail [' . $this->sendmail_path . '] for execution.'); diff --git a/extlib/Mail/smtp.php b/extlib/Mail/smtp.php old mode 100644 new mode 100755 index baf3a962ba..52ea602086 --- a/extlib/Mail/smtp.php +++ b/extlib/Mail/smtp.php @@ -1,21 +1,48 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Chuck Hagenbuch <chuck@horde.org> | -// | Jon Parise <jon@php.net> | -// +----------------------------------------------------------------------+ +/** + * SMTP implementation of the PEAR Mail interface. Requires the Net_SMTP class. + * + * PHP versions 4 and 5 + * + * LICENSE: + * + * Copyright (c) 2010, Chuck Hagenbuch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. + * + * @category HTTP + * @package HTTP_Request + * @author Jon Parise <jon@php.net> + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 2010 Chuck Hagenbuch + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: smtp.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ + */ /** Error: Failed to create a Net_SMTP object */ define('PEAR_MAIL_SMTP_ERROR_CREATE', 10000); @@ -42,7 +69,7 @@ define('PEAR_MAIL_SMTP_ERROR_DATA', 10006); * SMTP implementation of the PEAR Mail interface. Requires the Net_SMTP class. * @access public * @package Mail - * @version $Revision: 1.33 $ + * @version $Revision: 294747 $ */ class Mail_smtp extends Mail { @@ -278,6 +305,16 @@ class Mail_smtp extends Mail { /* Send the message's headers and the body as SMTP data. */ $res = $this->_smtp->data($textHeaders . "\r\n\r\n" . $body); + list(,$args) = $this->_smtp->getResponse(); + + if (preg_match("/Ok: queued as (.*)/", $args, $queued)) { + $this->queued_as = $queued[1]; + } + + /* we need the greeting; from it we can extract the authorative name of the mail server we've really connected to. + * ideal if we're connecting to a round-robin of relay servers and need to track which exact one took the email */ + $this->greeting = $this->_smtp->getGreeting(); + if (is_a($res, 'PEAR_Error')) { $error = $this->_error('Failed to send data', $res); $this->_smtp->rset(); diff --git a/extlib/Mail/smtpmx.php b/extlib/Mail/smtpmx.php old mode 100644 new mode 100755 index 9d2dccfb13..f0b6940868 --- a/extlib/Mail/smtpmx.php +++ b/extlib/Mail/smtpmx.php @@ -8,19 +8,43 @@ * * PHP versions 4 and 5 * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. + * LICENSE: + * + * Copyright (c) 2010, gERD Schaufelberger + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * o Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * o 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. + * o The names of the authors may not 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. * * @category Mail * @package Mail_smtpmx * @author gERD Schaufelberger <gerd@php-tools.net> - * @copyright 1997-2005 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: smtpmx.php,v 1.2 2007/10/06 17:00:00 chagenbu Exp $ - * @see Mail + * @copyright 2010 gERD Schaufelberger + * @license http://opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id: smtpmx.php 294747 2010-02-08 08:18:33Z clockwerx $ + * @link http://pear.php.net/package/Mail/ */ require_once 'Net/SMTP.php'; @@ -32,7 +56,7 @@ require_once 'Net/SMTP.php'; * @access public * @author gERD Schaufelberger <gerd@php-tools.net> * @package Mail - * @version $Revision: 1.2 $ + * @version $Revision: 294747 $ */ class Mail_smtpmx extends Mail { diff --git a/extlib/Net/SMTP.php b/extlib/Net/SMTP.php index d632258d63..ea4b55e8d2 100644 --- a/extlib/Net/SMTP.php +++ b/extlib/Net/SMTP.php @@ -18,7 +18,7 @@ // | Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar> | // +----------------------------------------------------------------------+ // -// $Id: SMTP.php,v 1.63 2008/06/10 05:39:12 jon Exp $ +// $Id: SMTP.php 293948 2010-01-24 21:46:00Z jon $ require_once 'PEAR.php'; require_once 'Net/Socket.php'; @@ -91,6 +91,13 @@ class Net_SMTP */ var $_debug = false; + /** + * Debug output handler. + * @var callback + * @access private + */ + var $_debug_handler = null; + /** * The socket resource being used to connect to the SMTP server. * @var resource @@ -112,6 +119,13 @@ class Net_SMTP */ var $_arguments = array(); + /** + * Stores the SMTP server's greeting string. + * @var string + * @access private + */ + var $_greeting = null; + /** * Stores detected features of the SMTP server. * @var array @@ -172,9 +186,30 @@ class Net_SMTP * @access public * @since 1.1.0 */ - function setDebug($debug) + function setDebug($debug, $handler = null) { $this->_debug = $debug; + $this->_debug_handler = $handler; + } + + /** + * Write the given debug text to the current debug output handler. + * + * @param string $message Debug mesage text. + * + * @access private + * @since 1.3.3 + */ + function _debug($message) + { + if ($this->_debug) { + if ($this->_debug_handler) { + call_user_func_array($this->_debug_handler, + array(&$this, $message)); + } else { + echo "DEBUG: $message\n"; + } + } } /** @@ -189,13 +224,12 @@ class Net_SMTP */ function _send($data) { - if ($this->_debug) { - echo "DEBUG: Send: $data\n"; - } + $this->_debug("Send: $data"); - if (PEAR::isError($error = $this->_socket->write($data))) { - return PEAR::raiseError('Failed to write to socket: ' . - $error->getMessage()); + $error = $this->_socket->write($data); + if ($error === false || PEAR::isError($error)) { + $msg = ($error) ? $error->getMessage() : "unknown error"; + return PEAR::raiseError("Failed to write to socket: $msg"); } return true; @@ -262,9 +296,7 @@ class Net_SMTP for ($i = 0; $i <= $this->_pipelined_commands; $i++) { while ($line = $this->_socket->readLine()) { - if ($this->_debug) { - echo "DEBUG: Recv: $line\n"; - } + $this->_debug("Recv: $line"); /* If we receive an empty line, the connection has been closed. */ if (empty($line)) { @@ -319,6 +351,20 @@ class Net_SMTP return array($this->_code, join("\n", $this->_arguments)); } + /** + * Return the SMTP server's greeting string. + * + * @return string A string containing the greeting string, or null if a + * greeting has not been received. + * + * @access public + * @since 1.3.3 + */ + function getGreeting() + { + return $this->_greeting; + } + /** * Attempt to connect to the SMTP server. * @@ -334,6 +380,7 @@ class Net_SMTP */ function connect($timeout = null, $persistent = false) { + $this->_greeting = null; $result = $this->_socket->connect($this->host, $this->port, $persistent, $timeout); if (PEAR::isError($result)) { @@ -344,6 +391,10 @@ class Net_SMTP if (PEAR::isError($error = $this->_parseResponse(220))) { return $error; } + + /* Extract and store a copy of the server's greeting string. */ + list(, $this->_greeting) = $this->getResponse(); + if (PEAR::isError($error = $this->_negotiate())) { return $error; } @@ -452,40 +503,43 @@ class Net_SMTP * @param string The password to authenticate with. * @param string The requested authentication method. If none is * specified, the best supported method will be used. + * @param bool Flag indicating whether or not TLS should be attempted. * * @return mixed Returns a PEAR_Error with an error message on any * kind of failure, or true on success. * @access public * @since 1.0 */ - function auth($uid, $pwd , $method = '') + function auth($uid, $pwd , $method = '', $tls = true) { - if (empty($this->_esmtp['AUTH'])) { - if (version_compare(PHP_VERSION, '5.1.0', '>=')) { - if (!isset($this->_esmtp['STARTTLS'])) { - return PEAR::raiseError('SMTP server does not support authentication'); - } - if (PEAR::isError($result = $this->_put('STARTTLS'))) { - return $result; - } - if (PEAR::isError($result = $this->_parseResponse(220))) { - return $result; - } - if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) { - return $result; - } elseif ($result !== true) { - return PEAR::raiseError('STARTTLS failed'); - } - - /* Send EHLO again to recieve the AUTH string from the - * SMTP server. */ - $this->_negotiate(); - if (empty($this->_esmtp['AUTH'])) { - return PEAR::raiseError('SMTP server does not support authentication'); - } - } else { - return PEAR::raiseError('SMTP server does not support authentication'); + /* We can only attempt a TLS connection if one has been requested, + * we're running PHP 5.1.0 or later, have access to the OpenSSL + * extension, are connected to an SMTP server which supports the + * STARTTLS extension, and aren't already connected over a secure + * (SSL) socket connection. */ + if ($tls && version_compare(PHP_VERSION, '5.1.0', '>=') && + extension_loaded('openssl') && isset($this->_esmtp['STARTTLS']) && + strncasecmp($this->host, 'ssl://', 6) !== 0) { + /* Start the TLS connection attempt. */ + if (PEAR::isError($result = $this->_put('STARTTLS'))) { + return $result; } + if (PEAR::isError($result = $this->_parseResponse(220))) { + return $result; + } + if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) { + return $result; + } elseif ($result !== true) { + return PEAR::raiseError('STARTTLS failed'); + } + + /* Send EHLO again to recieve the AUTH string from the + * SMTP server. */ + $this->_negotiate(); + } + + if (empty($this->_esmtp['AUTH'])) { + return PEAR::raiseError('SMTP server does not support authentication'); } /* If no method has been specified, get the name of the best @@ -844,30 +898,51 @@ class Net_SMTP /** * Send the DATA command. * - * @param string $data The message body to send. + * @param mixed $data The message data, either as a string or an open + * file resource. + * @param string $headers The message headers. If $headers is provided, + * $data is assumed to contain only body data. * * @return mixed Returns a PEAR_Error with an error message on any * kind of failure, or true on success. * @access public * @since 1.0 */ - function data($data) + function data($data, $headers = null) { + /* Verify that $data is a supported type. */ + if (!is_string($data) && !is_resource($data)) { + return PEAR::raiseError('Expected a string or file resource'); + } + /* RFC 1870, section 3, subsection 3 states "a value of zero * indicates that no fixed maximum message size is in force". * Furthermore, it says that if "the parameter is omitted no * information is conveyed about the server's fixed maximum * message size". */ if (isset($this->_esmtp['SIZE']) && ($this->_esmtp['SIZE'] > 0)) { - if (strlen($data) >= $this->_esmtp['SIZE']) { + /* Start by considering the size of the optional headers string. + * We also account for the addition 4 character "\r\n\r\n" + * separator sequence. */ + $size = (is_null($headers)) ? 0 : strlen($headers) + 4; + + if (is_resource($data)) { + $stat = fstat($data); + if ($stat === false) { + return PEAR::raiseError('Failed to get file size'); + } + $size += $stat['size']; + } else { + $size += strlen($data); + } + + if ($size >= $this->_esmtp['SIZE']) { $this->disconnect(); - return PEAR::raiseError('Message size excedes the server limit'); + return PEAR::raiseError('Message size exceeds server limit'); } } - /* Quote the data based on the SMTP standards. */ - $this->quotedata($data); - + /* Initiate the DATA command. */ if (PEAR::isError($error = $this->_put('DATA'))) { return $error; } @@ -875,9 +950,40 @@ class Net_SMTP return $error; } - if (PEAR::isError($result = $this->_send($data . "\r\n.\r\n"))) { - return $result; + /* If we have a separate headers string, send it first. */ + if (!is_null($headers)) { + $this->quotedata($headers); + if (PEAR::isError($result = $this->_send($headers . "\r\n\r\n"))) { + return $result; + } } + + /* Now we can send the message body data. */ + if (is_resource($data)) { + /* Stream the contents of the file resource out over our socket + * connection, line by line. Each line must be run through the + * quoting routine. */ + while ($line = fgets($data, 1024)) { + $this->quotedata($line); + if (PEAR::isError($result = $this->_send($line))) { + return $result; + } + } + + /* Finally, send the DATA terminator sequence. */ + if (PEAR::isError($result = $this->_send("\r\n.\r\n"))) { + return $result; + } + } else { + /* Just send the entire quoted string followed by the DATA + * terminator. */ + $this->quotedata($data); + if (PEAR::isError($result = $this->_send($data . "\r\n.\r\n"))) { + return $result; + } + } + + /* Verify that the data was successfully received by the server. */ if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { return $error; } diff --git a/extlib/OAuth.php b/extlib/OAuth.php index 648627b576..04984d5fa0 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 6454595835..d45d6d69f9 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 a097443acc..2f8c0e514d 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 ab52de547b..d67aafcc56 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 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(); + } - /** - * 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(); - } + /** + * 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 a1f21f2680..08e6e7ab44 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; - } - 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); + /** + * 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')); + } + + /** + * 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 163e1dd4cc..d95c7022cb 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 797b7b95bd..dc61a13ad4 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 9ac36640a2..4963597b2e 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 - **/ + * @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_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. */ +require_once 'invalidparameterexception.php'; +require_once 'Validate.php'; +require_once 'helper.php'; - /* The notice as OMB param array. Cached and rebuild on usage. - false while outdated. */ - protected $param_array; +/** + * 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. */ - /** - * 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; + /* The notice as OMB param array. Cached and rebuild on usage. + false while outdated. */ + protected $param_array; - if (!Validate::uri($uri)) { - throw new OMB_InvalidParameterException($uri, 'notice', 'omb_notice'); - } - $this->uri = $uri; + /** + * 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; - $this->param_array = false; - } + if (!Validate::uri($uri)) { + throw new OMB_InvalidParameterException($uri, 'notice', 'omb_notice'); + } + $this->uri = $uri; - /** - * 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; + $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; + } - if (!is_null($this->url)) - $this->param_array['omb_notice_url'] = $this->url; + $this->param_array = array( + 'omb_notice' => $this->uri, + 'omb_notice_content' => $this->content); - if (!is_null($this->license_url)) - $this->param_array['omb_notice_license'] = $this->license_url; + if (!is_null($this->url)) + $this->param_array['omb_notice_url'] = $this->url; - if (!is_null($this->seealso_url)) { - $this->param_array['omb_seealso'] = $this->seealso_url; + if (!is_null($this->license_url)) + $this->param_array['omb_notice_license'] = $this->license_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'] = + 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->seealso_mediatype)) + $this->param_array['omb_seealso_mediatype'] = + $this->seealso_mediatype; - if (!is_null($this->seealso_license_url)) - $this->param_array['omb_seealso_license'] = $this->seealso_license_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']); + if (!is_null($this->seealso_license_url)) + $this->param_array['omb_seealso_license'] = + $this->seealso_license_url; + } + return $this->param_array; } - if (isset($parameters['omb_notice_license'])) { - $notice->setLicenseURL($parameters['omb_notice_license']); + /** + * 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 (isset($parameters['omb_seealso'])) { - $notice->setSeealsoURL($parameters['omb_seealso']); + public function getAuthor() + { + return $this->author; } - if (isset($parameters['omb_seealso_disposition'])) { - $notice->setSeealsoDisposition($parameters['omb_seealso_disposition']); + public function getIdentifierURI() + { + return $this->uri; } - if (isset($parameters['omb_seealso_mediatype'])) { - $notice->setSeealsoMediatype($parameters['omb_seealso_mediatype']); + public function getContent() + { + return $this->content; } - if (isset($parameters['omb_seealso_license'])) { - $notice->setSeealsoLicenseURL($parameters['omb_seealso_license']); + public function getURL() + { + return $this->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 getLicenseURL() + { + return $this->license_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 getSeealsoURL() + { + return $this->seealso_url; } - $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'); + public function getSeealsoDisposition() + { + return $this->seealso_disposition; } - $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 getSeealsoMediatype() + { + return $this->seealso_mediatype; } - $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 getSeealsoLicenseURL() + { + return $this->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'); + public function setURL($url) + { + $this->setVal('notice_url', $url, 'OMB_Helper::validateURL', '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'); + } + + public function setSeealsoDisposition($seealso_disposition) + { + $this->setVal('seealso_disposition', $seealso_disposition, + 'OMB_Notice::validateDisposition'); + } + + protected static function validateDisposition($str) + { + return in_array($str, array('link', 'inline')); + } + + public function setSeealsoMediatype($seealso_mediatype) + { + $this->setVal('seealso_mediatype', $seealso_mediatype, + 'OMB_Helper::validateMediaType'); + } + + public function setSeealsoLicenseURL($seealso_license_url) + { + $this->setVal('seealso_license', $seealso_license_url, + 'OMB_Helper::validateURL', 'seealso_license_url'); + } + + /** + * 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 89921203b0..a05477c103 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 - **/ + * @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_Yadis_XRDS extends Auth_Yadis_XRDS { +require_once 'Auth/Yadis/Yadis.php'; +require_once 'unsupportedserviceexception.php'; +require_once 'invalidyadisexception.php'; - protected $fetcher; +/** + * 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 +{ - /** - * 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); + 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; } - /* 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); + /** + * 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]; } - $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 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.'); + } - /** - * 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 - **/ + if ($nexthash > 0) { + $cururi = substr($uri, 0, $nexthash); + $nexturi = substr($uri, $nexthash); + return OMB_Yadis_XRDS::fromYadisURL($cururi, $this->fetcher) + ->getXRD($nexturi); + } - public function &parseXRDS($xml_string, $extra_ns_map = null) { - $_null = null; - - if (!$xml_string) { - return $_null; + $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); } - $parser = Auth_Yadis_getXMLParser(); + /** + * 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; - $ns_map = Auth_Yadis_getNSMap(); + if (!$xml_string) { + return $_null; + } - if ($extra_ns_map && is_array($extra_ns_map)) { - $ns_map = array_merge($ns_map, $extra_ns_map); + $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; } - - 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; - } } diff --git a/extlib/libomb/plain_xrds_writer.php b/extlib/libomb/plain_xrds_writer.php index b4a6e990bc..ba1027b611 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 + */ -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); +require_once 'xrds_writer.php'; - $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( +/** + * 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( 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(); - } + )))); + $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); - } + /** + * 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(); } - if (is_array($content)) { - foreach ($content as $values) { - OMB_Plain_XRDS_Writer::writeFullElement($xw, $values[0], $values[1], $values[2]); - } - } else { - $xw->text($content); - } - $xw->fullEndElement(); - } } ?> diff --git a/extlib/libomb/profile.php b/extlib/libomb/profile.php index 13314d3e80..d732e10d7d 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 - **/ + * @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_Profile { - protected $identifier_uri; - protected $profile_url; - protected $nickname; - protected $license_url; - protected $fullname; - protected $homepage; - protected $bio; - protected $location; - protected $avatar_url; +require_once 'invalidparameterexception.php'; +require_once 'Validate.php'; +require_once 'helper.php'; - /* The profile as OMB param array. Cached and rebuild on usage. - false while outdated. */ - protected $param_array; +/** + * 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; - /** - * 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', + /* 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; - } - - /** - * 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); + } + $this->identifier_uri = $identifier_uri; + $this->param_array = false; } - $profile = new OMB_Profile($parameters[$prefix]); - $profile->updateFromParameters($parameters, $prefix); - return $profile; - } + /** + * 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); - /** - * 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 ($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; } - if (isset($parameters[$prefix.'_license'])) { - $this->setLicenseURL($parameters[$prefix.'_license']); + /** + * 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.'_nickname'])) { - $this->setNickname($parameters[$prefix.'_nickname']); + /** + * 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.'_fullname'])) { - $this->setFullname($parameters[$prefix.'_fullname']); + public function getIdentifierURI() + { + return $this->identifier_uri; } - if (isset($parameters[$prefix.'_homepage'])) { - $this->setHomepage($parameters[$prefix.'_homepage']); + public function getProfileURL() + { + return $this->profile_url; } - if (isset($parameters[$prefix.'_bio'])) { - $this->setBio($parameters[$prefix.'_bio']); + public function getHomepage() + { + return $this->homepage; } - if (isset($parameters[$prefix.'_location'])) { - $this->setLocation($parameters[$prefix.'_location']); + public function getNickname() + { + return $this->nickname; } - if (isset($parameters[$prefix.'_avatar'])) { - $this->setAvatarURL($parameters[$prefix.'_avatar']); - } - } - - 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 getFullname() { - return $this->fullname; - } - - public function getBio() { - return $this->bio; - } - - public function getLocation() { - return $this->location; - } - - public function getAvatarURL() { - return $this->avatar_url; - } - - 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'); - } - $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 getLicenseURL() + { + return $this->license_url; } - $this->nickname = $nickname; - $this->param_array = false; - } - - 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 getFullname() + { + return $this->fullname; } - $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 getBio() + { + return $this->bio; } - $this->fullname = $fullname; - $this->param_array = false; - } - public function setHomepage($homepage) { - if ($homepage === '') { - $homepage = null; + public function getLocation() + { + return $this->location; } - $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'); + public function getAvatarURL() + { + return $this->avatar_url; } - $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'); + public function setProfileURL($profile_url) + { + $this->setVal('profile', $profile_url, 'OMB_Helper::validateURL', + 'profile_url'); } - $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'); + public function setNickname($nickname) + { + $this->setVal('nickname', $nickname, 'OMB_Profile::validateNickname', + 'nickname', true); } - $this->avatar_url = $avatar_url; - $this->param_array = false; - } + public function setLicenseURL($license_url) + { + $this->setVal('license', $license_url, 'OMB_Helper::validateURL', + 'license_url'); + } + + public function setFullname($fullname) + { + $this->setVal('fullname', $fullname, 'OMB_Profile::validate255'); + } + + public function setHomepage($homepage) + { + $this->setVal('homepage', $homepage, 'OMB_Helper::validateURL'); + } + + public function setBio($bio) + { + $this->setVal('bio', $bio, 'OMB_Profile::validate140'); + } + + public function setLocation($location) + { + $this->setVal('location', $location, 'OMB_Profile::validate255'); + } + + public function setAvatarURL($avatar_url) + { + $this->setVal('avatar', $avatar_url, 'OMB_Helper::validateURL', + 'avatar_url'); + } + + protected static function validate255($str) + { + return Validate::string($str, array('max_length' => 255)); + } + + protected static function validate140($str) + { + return Validate::string($str, array('max_length' => 140)); + } + + protected static function validateNickname($str) + { + return Validate::string($str, + array('min_length' => 1, + 'max_length' => 64, + 'format' => VALIDATE_NUM . VALIDATE_ALPHA)); + } + + /** + * 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 374d15973b..f8341e82b6 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; - } - return new OMB_RemoteServiceException($request_uri . ': ' . $err); - } + * @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 + */ - public static function forRequest($action_uri, $failure) { - return new OMB_RemoteServiceException("Handler for $action_uri: " . $failure); - } +/** + * 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); + } + + /** + * 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 273fd052ec..33ebccc654 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 - **/ + * @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_Service_Consumer { - protected $url; /* The service URL */ - protected $services; /* An array of strings mapping service URI to - service URL */ +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'; - protected $token; /* An OAuthToken */ +/** + * 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 $listener_uri; /* The URI identifying the listener, i. e. the - remote user. */ + protected $token; /* An OAuthToken */ - protected $listenee_uri; /* The URI identifying the listenee, i. e. the - local user during an auth request. */ + protected $listener_uri; /* The URI identifying the listener, i. e. the + remote user. */ - /** - * 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; + protected $listenee_uri; /* The URI identifying the listenee, i. e. the + local user during an auth request. */ - /* Helper stuff we are going to need. */ - protected $fetcher; - protected $oauth_consumer; - protected $datastore; + /** + * 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; - /** - * 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, ''); + /* Helper stuff we are going to need. */ + protected $fetcher; + protected $oauth_consumer; + protected $datastore; - $xrds = OMB_Yadis_XRDS::fromYadisURL($service_url, $this->fetcher); + /** + * 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, ''); - /* Detect our services. This performs a validation as well, since - getService und getXRD throw exceptions on failure. */ - $this->services = array(); + $xrds = OMB_Yadis_XRDS::fromYadisURL($service_url, $this->fetcher); - 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]); + /* 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); - } - 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; - } - - /** - * - * 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) . '&'; - } } - $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.'); + /** + * 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]; } - if ($req->get_parameter('omb_version') != OMB_VERSION) { - throw new OMB_RemoteServiceException('The remote service uses an ' . - 'unsupported OMB version'); + /** + * 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; } - /* 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; - - require_once 'profile.php'; - $listener = OMB_Profile::fromParameters($params, 'omb_listener'); - - /* 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'); + /** + * 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; } - parse_str($result->body, $return); - if (!isset($return['oauth_token']) || !isset($return['oauth_token_secret'])) { - throw new OAuthException('Could not get access 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; } - $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. */ + /** + * 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; - $this->datastore->saveProfile($listener); - $this->datastore->saveSubscription($this->listener_uri, - $this->listenee_uri, - $this->token); - } + $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); - /** - * 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 = array_merge($profile->asParameters('omb_listenee', false), + $params); - /** - * 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()); - } + /* 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) . '&'; + } + } - /** - * 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']); - } + $this->listenee_uri = $profile->getIdentifierURI(); - /** - * 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); + 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.'); + } + + 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'); + + /* 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; + } + + /** + * 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 – 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 a1c69e86ff..9a1a488a6b 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 - **/ + * @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_Service_Provider { - protected $user; /* An OMB_Profile representing the user */ - protected $datastore; /* AN OMB_Datastore */ +require_once 'constants.php'; +require_once 'helper.php'; +require_once 'notice.php'; +require_once 'remoteserviceexception.php'; - protected $remote_user; /* An OMB_Profile representing the remote user during - the authorization process */ +/** + * 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 $oauth_server; /* An OAuthServer; should only be accessed via - getOAuthServer. */ + protected $remote_user; /* An OMB_Profile representing the remote user + during the authorization process */ - /** - * 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; - } + protected $oauth_server; /* An OAuthServer; should only be accessed via + getOAuthServer. */ - 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.'); + /** + * 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. */ - - if ($_GET['omb_version'] !== OMB_VERSION) { - throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE, - 'Wrong OMB version ' . $_GET['omb_version']); + /** + * 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_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'); - } - } - $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) . '&'; + /** + * 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); } - 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 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.'); + } + + /* 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'); + } + } + $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; + + } 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); + } + + /** + * 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); + } + + $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 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; + } - /** - * 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( + /** + * 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; - } - - /** - * 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(); + } + return $this->oauth_server; } - require_once 'service_consumer.php'; + /** + * 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(); - $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; - } + /* $notice is passed by reference and may change. */ + $this->datastore->saveNotice($notice); + $subscribers = $this->datastore->getSubscriptions($uri); - /** - * 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(); + /* No one to post to. */ + if (is_null($subscribers)) { + return array(); + } - $this->datastore->saveProfile($this->user); - $subscribers = $this->datastore->getSubscriptions($uri); + require_once 'service_consumer.php'; - /* No one to post to. */ - if (is_null($subscribers)) { - return array(); + $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'; + /** + * 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(); - $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; - } + $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 4dab63ebee..be30a1f69b 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 7552154e55..8fbe65249c 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 31b451b9ce..c7939d60ad 100755 --- a/extlib/libomb/xrds_writer.php +++ b/extlib/libomb/xrds_writer.php @@ -1,10 +1,6 @@ <?php /** - * Write OMB-specific XRDS - * - * This interface specifies classes which write the XRDS file announcing - * the OMB server. An instance of an implementing class should be passed to - * OMB_Service_Provider->writeXRDS. + * This file is part of libomb * * PHP version 5 * @@ -21,13 +17,30 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * - * @package OMB - * @author Adrian Lang <mail@adrianlang.de> - * @copyright 2009 Adrian Lang - * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 - **/ + * @package OMB + * @author Adrian Lang <mail@adrianlang.de> + * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0 + * @version 0.1a-20090828 + * @link http://adrianlang.de/libomb + */ -interface OMB_XRDS_Writer { - public function writeXRDS($user, $mapper); +/** + * Write OMB-specific XRDS + * + * This interface specifies classes which write the XRDS file announcing + * the OMB server. An instance of an implementing class should be passed to + * OMB_Service_Provider->writeXRDS. + */ +interface OMB_XRDS_Writer +{ + /** + * Write XRDS + * + * Outputs a XRDS document specifying an OMB service. + * + * @param OMB_profile $user The target user for the OMB service + * @param OMB_XRDS_Mapper $mapper An OMB_XRDS_Mapper providing endpoint URLs + */ + public function writeXRDS($user, $mapper); } ?> diff --git a/index.php b/index.php index 66a9838d65..21e222e3b8 100644 --- a/index.php +++ b/index.php @@ -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/ */ @@ -200,7 +204,7 @@ function checkMirror($action_obj, $args) function isLoginAction($action) { - static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp', 'opensearch'); + static $loginActions = array('login', 'recoverpassword', 'api', 'doc', 'register', 'publicxrds', 'otp', 'opensearch', 'rsd', 'hostmeta'); $login = null; @@ -221,12 +225,12 @@ function main() if ($_lighty_url['path'] != '/index.php' && $_lighty_url['path'] != '/') { $_lighty_path = preg_replace('/^'.preg_quote(common_config('site', 'path')).'\//', '', substr($_lighty_url['path'], 1)); $_SERVER['QUERY_STRING'] = 'p='.$_lighty_path; - if ($_lighty_url['query']) { + if (isset($_lighty_url['query']) && $_lighty_url['query'] != '') { $_SERVER['QUERY_STRING'] .= '&'.$_lighty_url['query']; - } - parse_str($_lighty_url['query'], $_lighty_query); - foreach ($_lighty_query as $key => $val) { - $_GET[$key] = $_REQUEST[$key] = $val; + parse_str($_lighty_url['query'], $_lighty_query); + foreach ($_lighty_query as $key => $val) { + $_GET[$key] = $_REQUEST[$key] = $val; + } } $_GET['p'] = $_REQUEST['p'] = $_lighty_path; } diff --git a/install.php b/install.php index 08555d19b9..158d51fa33 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/geometa.js b/js/geometa.js deleted file mode 100644 index bba59b4486..0000000000 --- a/js/geometa.js +++ /dev/null @@ -1,217 +0,0 @@ -// A shim to implement the W3C Geolocation API Specification using Gears or the Ajax API -if (typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) { (function(){ - -// -- BEGIN GEARS_INIT -(function() { - // We are already defined. Hooray! - if (window.google && google.gears) { - return; - } - - var factory = null; - - // Firefox - if (typeof GearsFactory != 'undefined') { - factory = new GearsFactory(); - } else { - // IE - try { - factory = new ActiveXObject('Gears.Factory'); - // privateSetGlobalObject is only required and supported on WinCE. - if (factory.getBuildInfo().indexOf('ie_mobile') != -1) { - factory.privateSetGlobalObject(this); - } - } catch (e) { - // Safari - if ((typeof navigator.mimeTypes != 'undefined') && navigator.mimeTypes["application/x-googlegears"]) { - factory = document.createElement("object"); - factory.style.display = "none"; - factory.width = 0; - factory.height = 0; - factory.type = "application/x-googlegears"; - document.documentElement.appendChild(factory); - } - } - } - - // *Do not* define any objects if Gears is not installed. This mimics the - // behavior of Gears defining the objects in the future. - if (!factory) { - return; - } - - // Now set up the objects, being careful not to overwrite anything. - // - // Note: In Internet Explorer for Windows Mobile, you can't add properties to - // the window object. However, global objects are automatically added as - // properties of the window object in all browsers. - if (!window.google) { - google = {}; - } - - if (!google.gears) { - google.gears = {factory: factory}; - } -})(); -// -- END GEARS_INIT - -var GearsGeoLocation = (function() { - // -- PRIVATE - var geo = google.gears.factory.create('beta.geolocation'); - - var wrapSuccess = function(callback, self) { // wrap it for lastPosition love - return function(position) { - callback(position); - self.lastPosition = position; - }; - }; - - // -- PUBLIC - return { - shim: true, - - type: "Gears", - - lastPosition: null, - - getCurrentPosition: function(successCallback, errorCallback, options) { - var self = this; - var sc = wrapSuccess(successCallback, self); - geo.getCurrentPosition(sc, errorCallback, options); - }, - - watchPosition: function(successCallback, errorCallback, options) { - geo.watchPosition(successCallback, errorCallback, options); - }, - - clearWatch: function(watchId) { - geo.clearWatch(watchId); - }, - - getPermission: function(siteName, imageUrl, extraMessage) { - geo.getPermission(siteName, imageUrl, extraMessage); - } - - }; -}); - -var AjaxGeoLocation = (function() { - // -- PRIVATE - var loading = false; - var loadGoogleLoader = function() { - if (!hasGoogleLoader() && !loading) { - loading = true; - var s = document.createElement('script'); - s.src = (document.location.protocol == "https:"?"https://":"http://") + 'www.google.com/jsapi?callback=_google_loader_apiLoaded'; - s.type = "text/javascript"; - document.getElementsByTagName('body')[0].appendChild(s); - } - }; - - var queue = []; - var addLocationQueue = function(callback) { - queue.push(callback); - }; - - var runLocationQueue = function() { - if (hasGoogleLoader()) { - while (queue.length > 0) { - var call = queue.pop(); - call(); - } - } - }; - - window['_google_loader_apiLoaded'] = function() { - runLocationQueue(); - }; - - var hasGoogleLoader = function() { - return (window['google'] && google['loader']); - }; - - var checkGoogleLoader = function(callback) { - if (hasGoogleLoader()) { return true; } - - addLocationQueue(callback); - - loadGoogleLoader(); - - return false; - }; - - loadGoogleLoader(); // start to load as soon as possible just in case - - // -- PUBLIC - return { - shim: true, - - type: "ClientLocation", - - lastPosition: null, - - getCurrentPosition: function(successCallback, errorCallback, options) { - var self = this; - if (!checkGoogleLoader(function() { - self.getCurrentPosition(successCallback, errorCallback, options); - })) { return; } - - if (google.loader.ClientLocation) { - var cl = google.loader.ClientLocation; - - var position = { - coords: { - latitude: cl.latitude, - longitude: cl.longitude, - altitude: null, - accuracy: 43000, // same as Gears accuracy over wifi? - altitudeAccuracy: null, - heading: null, - speed: null - }, - // extra info that is outside of the bounds of the core API - address: { - city: cl.address.city, - country: cl.address.country, - country_code: cl.address.country_code, - region: cl.address.region - }, - timestamp: new Date() - }; - - successCallback(position); - - this.lastPosition = position; - } else if (errorCallback === "function") { - errorCallback({ code: 3, message: "Using the Google ClientLocation API and it is not able to calculate a location."}); - } - }, - - watchPosition: function(successCallback, errorCallback, options) { - this.getCurrentPosition(successCallback, errorCallback, options); - - var self = this; - var watchId = setInterval(function() { - self.getCurrentPosition(successCallback, errorCallback, options); - }, 10000); - - return watchId; - }, - - clearWatch: function(watchId) { - clearInterval(watchId); - }, - - getPermission: function(siteName, imageUrl, extraMessage) { - // for now just say yes :) - return true; - } - - }; -}); - -// If you have Gears installed use that, else use Ajax ClientLocation -navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation() : AjaxGeoLocation(); - -})(); -} diff --git a/js/util.js b/js/util.js index 1320d11b4b..1989e92c09 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; } }, @@ -777,3 +816,269 @@ $(document).ready(function(){ } }); +// Formerly in xbImportNode.js + +/* is this stuff defined? */ +if (!document.ELEMENT_NODE) { + document.ELEMENT_NODE = 1; + document.ATTRIBUTE_NODE = 2; + document.TEXT_NODE = 3; + document.CDATA_SECTION_NODE = 4; + document.ENTITY_REFERENCE_NODE = 5; + document.ENTITY_NODE = 6; + document.PROCESSING_INSTRUCTION_NODE = 7; + document.COMMENT_NODE = 8; + document.DOCUMENT_NODE = 9; + document.DOCUMENT_TYPE_NODE = 10; + document.DOCUMENT_FRAGMENT_NODE = 11; + document.NOTATION_NODE = 12; +} + +document._importNode = function(node, allChildren) { + /* find the node type to import */ + switch (node.nodeType) { + case document.ELEMENT_NODE: + /* create a new element */ + var newNode = document.createElement(node.nodeName); + /* does the node have any attributes to add? */ + if (node.attributes && node.attributes.length > 0) + /* add all of the attributes */ + for (var i = 0, il = node.attributes.length; i < il;) { + if (node.attributes[i].nodeName == 'class') { + newNode.className = node.getAttribute(node.attributes[i++].nodeName); + } else { + newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName)); + } + } + /* are we going after children too, and does the node have any? */ + if (allChildren && node.childNodes && node.childNodes.length > 0) + /* recursively get all of the child nodes */ + for (var i = 0, il = node.childNodes.length; i < il;) + newNode.appendChild(document._importNode(node.childNodes[i++], allChildren)); + return newNode; + break; + case document.TEXT_NODE: + case document.CDATA_SECTION_NODE: + case document.COMMENT_NODE: + return document.createTextNode(node.nodeValue); + break; + } +}; + +// A shim to implement the W3C Geolocation API Specification using Gears or the Ajax API +if (typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) { (function(){ + +// -- BEGIN GEARS_INIT +(function() { + // We are already defined. Hooray! + if (window.google && google.gears) { + return; + } + + var factory = null; + + // Firefox + if (typeof GearsFactory != 'undefined') { + factory = new GearsFactory(); + } else { + // IE + try { + factory = new ActiveXObject('Gears.Factory'); + // privateSetGlobalObject is only required and supported on WinCE. + if (factory.getBuildInfo().indexOf('ie_mobile') != -1) { + factory.privateSetGlobalObject(this); + } + } catch (e) { + // Safari + if ((typeof navigator.mimeTypes != 'undefined') && navigator.mimeTypes["application/x-googlegears"]) { + factory = document.createElement("object"); + factory.style.display = "none"; + factory.width = 0; + factory.height = 0; + factory.type = "application/x-googlegears"; + document.documentElement.appendChild(factory); + } + } + } + + // *Do not* define any objects if Gears is not installed. This mimics the + // behavior of Gears defining the objects in the future. + if (!factory) { + return; + } + + // Now set up the objects, being careful not to overwrite anything. + // + // Note: In Internet Explorer for Windows Mobile, you can't add properties to + // the window object. However, global objects are automatically added as + // properties of the window object in all browsers. + if (!window.google) { + google = {}; + } + + if (!google.gears) { + google.gears = {factory: factory}; + } +})(); +// -- END GEARS_INIT + +var GearsGeoLocation = (function() { + // -- PRIVATE + var geo = google.gears.factory.create('beta.geolocation'); + + var wrapSuccess = function(callback, self) { // wrap it for lastPosition love + return function(position) { + callback(position); + self.lastPosition = position; + }; + }; + + // -- PUBLIC + return { + shim: true, + + type: "Gears", + + lastPosition: null, + + getCurrentPosition: function(successCallback, errorCallback, options) { + var self = this; + var sc = wrapSuccess(successCallback, self); + geo.getCurrentPosition(sc, errorCallback, options); + }, + + watchPosition: function(successCallback, errorCallback, options) { + geo.watchPosition(successCallback, errorCallback, options); + }, + + clearWatch: function(watchId) { + geo.clearWatch(watchId); + }, + + getPermission: function(siteName, imageUrl, extraMessage) { + geo.getPermission(siteName, imageUrl, extraMessage); + } + + }; +}); + +var AjaxGeoLocation = (function() { + // -- PRIVATE + var loading = false; + var loadGoogleLoader = function() { + if (!hasGoogleLoader() && !loading) { + loading = true; + var s = document.createElement('script'); + s.src = (document.location.protocol == "https:"?"https://":"http://") + 'www.google.com/jsapi?callback=_google_loader_apiLoaded'; + s.type = "text/javascript"; + document.getElementsByTagName('body')[0].appendChild(s); + } + }; + + var queue = []; + var addLocationQueue = function(callback) { + queue.push(callback); + }; + + var runLocationQueue = function() { + if (hasGoogleLoader()) { + while (queue.length > 0) { + var call = queue.pop(); + call(); + } + } + }; + + window['_google_loader_apiLoaded'] = function() { + runLocationQueue(); + }; + + var hasGoogleLoader = function() { + return (window['google'] && google['loader']); + }; + + var checkGoogleLoader = function(callback) { + if (hasGoogleLoader()) { return true; } + + addLocationQueue(callback); + + loadGoogleLoader(); + + return false; + }; + + loadGoogleLoader(); // start to load as soon as possible just in case + + // -- PUBLIC + return { + shim: true, + + type: "ClientLocation", + + lastPosition: null, + + getCurrentPosition: function(successCallback, errorCallback, options) { + var self = this; + if (!checkGoogleLoader(function() { + self.getCurrentPosition(successCallback, errorCallback, options); + })) { return; } + + if (google.loader.ClientLocation) { + var cl = google.loader.ClientLocation; + + var position = { + coords: { + latitude: cl.latitude, + longitude: cl.longitude, + altitude: null, + accuracy: 43000, // same as Gears accuracy over wifi? + altitudeAccuracy: null, + heading: null, + speed: null + }, + // extra info that is outside of the bounds of the core API + address: { + city: cl.address.city, + country: cl.address.country, + country_code: cl.address.country_code, + region: cl.address.region + }, + timestamp: new Date() + }; + + successCallback(position); + + this.lastPosition = position; + } else if (errorCallback === "function") { + errorCallback({ code: 3, message: "Using the Google ClientLocation API and it is not able to calculate a location."}); + } + }, + + watchPosition: function(successCallback, errorCallback, options) { + this.getCurrentPosition(successCallback, errorCallback, options); + + var self = this; + var watchId = setInterval(function() { + self.getCurrentPosition(successCallback, errorCallback, options); + }, 10000); + + return watchId; + }, + + clearWatch: function(watchId) { + clearInterval(watchId); + }, + + getPermission: function(siteName, imageUrl, extraMessage) { + // for now just say yes :) + return true; + } + + }; +}); + +// If you have Gears installed use that, else use Ajax ClientLocation +navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation() : AjaxGeoLocation(); + +})(); +} diff --git a/js/xbImportNode.js b/js/xbImportNode.js deleted file mode 100644 index f600a4789e..0000000000 --- a/js/xbImportNode.js +++ /dev/null @@ -1,47 +0,0 @@ -/* is this stuff defined? */ -if (!document.ELEMENT_NODE) { - document.ELEMENT_NODE = 1; - document.ATTRIBUTE_NODE = 2; - document.TEXT_NODE = 3; - document.CDATA_SECTION_NODE = 4; - document.ENTITY_REFERENCE_NODE = 5; - document.ENTITY_NODE = 6; - document.PROCESSING_INSTRUCTION_NODE = 7; - document.COMMENT_NODE = 8; - document.DOCUMENT_NODE = 9; - document.DOCUMENT_TYPE_NODE = 10; - document.DOCUMENT_FRAGMENT_NODE = 11; - document.NOTATION_NODE = 12; -} - -document._importNode = function(node, allChildren) { - /* find the node type to import */ - switch (node.nodeType) { - case document.ELEMENT_NODE: - /* create a new element */ - var newNode = document.createElement(node.nodeName); - /* does the node have any attributes to add? */ - if (node.attributes && node.attributes.length > 0) - /* add all of the attributes */ - for (var i = 0, il = node.attributes.length; i < il;) { - if (node.attributes[i].nodeName == 'class') { - newNode.className = node.getAttribute(node.attributes[i++].nodeName); - } else { - newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName)); - } - } - /* are we going after children too, and does the node have any? */ - if (allChildren && node.childNodes && node.childNodes.length > 0) - /* recursively get all of the child nodes */ - for (var i = 0, il = node.childNodes.length; i < il;) - newNode.appendChild(document._importNode(node.childNodes[i++], allChildren)); - return newNode; - break; - case document.TEXT_NODE: - case document.CDATA_SECTION_NODE: - case document.COMMENT_NODE: - return document.createTextNode(node.nodeValue); - break; - } -}; - diff --git a/lib/action.php b/lib/action.php index 4296ae7dea..e503975147 100644 --- a/lib/action.php +++ b/lib/action.php @@ -121,7 +121,10 @@ class Action extends HTMLOutputter // lawsuit // XXX: attributes (profile?) $this->elementStart('head'); if (Event::handle('StartShowHeadElements', array($this))) { - $this->showTitle(); + if (Event::handle('StartShowHeadTitle', array($this))) { + $this->showTitle(); + Event::handle('EndShowHeadTitle', array($this)); + } $this->showShortcutIcon(); $this->showStylesheets(); $this->showOpenSearch(); @@ -200,7 +203,7 @@ class Action extends HTMLOutputter // lawsuit if (Event::handle('StartShowStatusNetStyles', array($this)) && Event::handle('StartShowLaconicaStyles', array($this))) { - $this->cssLink('css/display.css',null, 'screen, projection, tv, print'); + $this->primaryCssLink(null, 'screen, projection, tv, print'); Event::handle('EndShowStatusNetStyles', array($this)); Event::handle('EndShowLaconicaStyles', array($this)); } @@ -235,9 +238,31 @@ 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)); + } + } } } + function primaryCssLink($mainTheme=null, $media=null) + { + // If the currently-selected theme has dependencies on other themes, + // we'll need to load their display.css files as well in order. + $theme = new Theme($mainTheme); + $baseThemes = $theme->getDeps(); + foreach ($baseThemes as $baseTheme) { + $this->cssLink('css/display.css', $baseTheme, $media); + } + $this->cssLink('css/display.css', $mainTheme, $media); + } + /** * Show javascript headers * @@ -256,9 +281,7 @@ class Action extends HTMLOutputter // lawsuit } if (Event::handle('StartShowStatusNetScripts', array($this)) && Event::handle('StartShowLaconicaScripts', array($this))) { - $this->script('xbImportNode.js'); $this->script('util.js'); - $this->script('geometa.js'); // Frame-busting code to avoid clickjacking attacks. $this->inlineScript('if (window.top !== window.self) { window.top.location.href = window.self.location.href; }'); Event::handle('EndShowStatusNetScripts', array($this)); @@ -467,7 +490,7 @@ class Action extends HTMLOutputter // lawsuit _m('MENU', 'Logout'), $tooltip, false, 'nav_logout'); } else { - if (!common_config('site', 'closed')) { + if (!common_config('site', 'closed') && !common_config('site', 'inviteonly')) { // TRANS: Tooltip for main menu option "Register" $tooltip = _m('TOOLTIP', 'Create an account'); $this->menuItem(common_local_url('register'), @@ -606,7 +629,10 @@ class Action extends HTMLOutputter // lawsuit function showContentBlock() { $this->elementStart('div', array('id' => 'content')); - $this->showPageTitle(); + if (Event::handle('StartShowPageTitle', array($this))) { + $this->showPageTitle(); + Event::handle('EndShowPageTitle', array($this)); + } $this->showPageNoticeBlock(); $this->elementStart('div', array('id' => 'content_inner')); // show the actual content (forms, lists, whatever) @@ -968,29 +994,57 @@ class Action extends HTMLOutputter // lawsuit function handle($argarray=null) { header('Vary: Accept-Encoding,Cookie'); + $lm = $this->lastModified(); $etag = $this->etag(); + if ($etag) { header('ETag: ' . $etag); } + if ($lm) { header('Last-Modified: ' . date(DATE_RFC1123, $lm)); - if (array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) { - $if_modified_since = $_SERVER['HTTP_IF_MODIFIED_SINCE']; - $ims = strtotime($if_modified_since); - if ($lm <= $ims) { - $if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ? - $_SERVER['HTTP_IF_NONE_MATCH'] : null; - if (!$if_none_match || - !$etag || - $this->_hasEtag($etag, $if_none_match)) { - header('HTTP/1.1 304 Not Modified'); - // Better way to do this? - exit(0); - } - } + if ($this->isCacheable()) { + header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' ); + header( "Cache-Control: private, must-revalidate, max-age=0" ); + header( "Pragma:"); } } + + if ($etag) { + $if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ? + $_SERVER['HTTP_IF_NONE_MATCH'] : null; + if ($if_none_match && $this->_hasEtag($etag, $if_none_match)) { + header('HTTP/1.1 304 Not Modified'); + // Better way to do this? + exit(0); + } + } + + if ($lm && array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) { + $if_modified_since = $_SERVER['HTTP_IF_MODIFIED_SINCE']; + $ims = strtotime($if_modified_since); + if ($lm <= $ims) { + header('HTTP/1.1 304 Not Modified'); + // Better way to do this? + exit(0); + } + } + } + + /** + * Is this action cacheable? + * + * If the action returns a last-modified + * + * @param array $argarray is ignored since it's now passed in in prepare() + * + * @return boolean is read only action? + */ + + function isCacheable() + { + return true; } /** diff --git a/lib/activity.php b/lib/activity.php index 365bb6258e..8e2da99bb3 100644 --- a/lib/activity.php +++ b/lib/activity.php @@ -83,6 +83,7 @@ class Activity const CREATOR = 'creator'; const CONTENTNS = 'http://purl.org/rss/1.0/modules/content/'; + const ENCODED = 'encoded'; public $actor; // an ActivityObject public $verb; // a string (the URL) @@ -269,14 +270,21 @@ class Activity $this->title = ActivityUtils::childContent($item, ActivityObject::TITLE, self::RSS); - $contentEl = ActivityUtils::child($item, ActivityUtils::CONTENT, self::CONTENTNS); + $contentEl = ActivityUtils::child($item, self::ENCODED, self::CONTENTNS); if (!empty($contentEl)) { - $this->content = htmlspecialchars_decode($contentEl->textContent, ENT_QUOTES); + // <content:encoded> XML node's text content is HTML; no further processing needed. + $this->content = $contentEl->textContent; } else { $descriptionEl = ActivityUtils::child($item, self::DESCRIPTION, self::RSS); if (!empty($descriptionEl)) { - $this->content = htmlspecialchars_decode($descriptionEl->textContent, ENT_QUOTES); + // Per spec, <description> must be plaintext. + // In practice, often there's HTML... but these days good + // feeds are using <content:encoded> which is explicitly + // real HTML. + // We'll treat this following spec, and do HTML escaping + // to convert from plaintext to HTML. + $this->content = htmlspecialchars($descriptionEl->textContent); } } diff --git a/lib/activitycontext.php b/lib/activitycontext.php index 2df7613f7d..09a4579249 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 a7e99fb11e..dd38d4e142 100644 --- a/lib/activityutils.php +++ b/lib/activityutils.php @@ -213,11 +213,19 @@ class ActivityUtils // slavishly following http://atompub.org/rfc4287.html#rfc.section.4.1.3.3 if (empty($type) || $type == 'text') { - return $el->textContent; + // We have plaintext saved as the XML text content. + // Since we want HTML, we need to escape any special chars. + return htmlspecialchars($el->textContent); } else if ($type == 'html') { + // We have HTML saved as the XML text content. + // No additional processing required once we've got it. $text = $el->textContent; - return htmlspecialchars_decode($text, ENT_QUOTES); + return $text; } else if ($type == 'xhtml') { + // Per spec, the <content type="xhtml"> contains a single + // HTML <div> with XHTML namespace on it as a child node. + // We need to pull all of that <div>'s child nodes and + // serialize them back to an (X)HTML source fragment. $divEl = ActivityUtils::child($el, 'div', 'http://www.w3.org/1999/xhtml'); if (empty($divEl)) { return null; @@ -249,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 6c9947608c..9e0b2d041b 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 d5580abd3a..b4252db95a 100644 --- a/lib/apiaction.php +++ b/lib/apiaction.php @@ -27,15 +27,79 @@ * @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/ */ +/* External API usage documentation. Please update when you change how the API works. */ + +/*! @mainpage StatusNet REST API + + @section Introduction + + Some explanatory text about the API would be nice. + + @section API Methods + + @subsection timelinesmethods_sec Timeline Methods + + @li @ref publictimeline + @li @ref friendstimeline + + @subsection statusmethods_sec Status Methods + + @li @ref statusesupdate + + @subsection usermethods_sec User Methods + + @subsection directmessagemethods_sec Direct Message Methods + + @subsection friendshipmethods_sec Friendship Methods + + @subsection socialgraphmethods_sec Social Graph Methods + + @subsection accountmethods_sec Account Methods + + @subsection favoritesmethods_sec Favorites Methods + + @subsection blockmethods_sec Block Methods + + @subsection oauthmethods_sec OAuth Methods + + @subsection helpmethods_sec Help Methods + + @subsection groupmethods_sec Group Methods + + @page apiroot API Root + + The URLs for methods referred to in this API documentation are + relative to the StatusNet API root. The API root is determined by the + site's @b server and @b path variables, which are generally specified + in config.php. For example: + + @code + $config['site']['server'] = 'example.org'; + $config['site']['path'] = 'statusnet' + @endcode + + The pattern for a site's API root is: @c protocol://server/path/api E.g: + + @c http://example.org/statusnet/api + + The @b path can be empty. In that case the API root would simply be: + + @c http://example.org/api + +*/ + if (!defined('STATUSNET')) { exit(1); } +class ApiValidationException extends Exception { } + /** * Contains most of the Twitter-compatible API output functions. * @@ -63,9 +127,13 @@ class ApiAction extends Action var $count = null; var $max_id = null; var $since_id = null; + var $source = null; + var $callback = null; var $access = self::READ_ONLY; // read (default) or read-write + static $reserved_sources = array('web', 'omb', 'ostatus', 'mail', 'xmpp', 'api'); + /** * Initialization. * @@ -80,6 +148,7 @@ class ApiAction extends Action parent::prepare($args); $this->format = $this->arg('format'); + $this->callback = $this->arg('callback'); $this->page = (int)$this->arg('page', 1); $this->count = (int)$this->arg('count', 20); $this->max_id = (int)$this->arg('max_id', 0); @@ -89,6 +158,12 @@ class ApiAction extends Action header('X-StatusNet-Warning: since parameter is disabled; use since_id'); } + $this->source = $this->trimmed('source'); + + if (empty($this->source) || in_array($this->source, self::$reserved_sources)) { + $this->source = 'api'; + } + return true; } @@ -200,11 +275,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' => @@ -224,6 +301,10 @@ class ApiAction extends Action } } + // StatusNet-specific + + $twitter_user['statusnet_profile_url'] = $profile->profileurl; + return $twitter_user; } @@ -252,7 +333,23 @@ class ApiAction extends Action $twitter_status['created_at'] = $this->dateTwitter($notice->created); $twitter_status['in_reply_to_status_id'] = ($notice->reply_to) ? intval($notice->reply_to) : null; - $twitter_status['source'] = $this->sourceLink($notice->source); + + $source = null; + + $ns = $notice->getSource(); + if ($ns) { + if (!empty($ns->name) && !empty($ns->url)) { + $source = '<a href="' + . htmlspecialchars($ns->url) + . '" rel="nofollow">' + . htmlspecialchars($ns->name) + . '</a>'; + } else { + $source = $ns->code; + } + } + + $twitter_status['source'] = $source; $twitter_status['id'] = intval($notice->id); $replier_profile = null; @@ -309,25 +406,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; } @@ -351,65 +464,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(); + $taguribase = TagURI::base(); + $entry['id'] = "tag:$taguribase:$entry[link]"; - 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; + $entry['updated'] = $entry['published']; + $entry['author'] = $profile->getBestName(); + + // 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; + } } - } - if (!empty($enclosures)) { - $entry['enclosures'] = $enclosures; - } - - // Tags/Categories - $tag = new Notice_tag(); - $tag->notice_id = $notice->id; - if ($tag->find()) { - $entry['tags']=array(); - while ($tag->fetch()) { - $entry['tags'][]=$tag->tag; + if (!empty($enclosures)) { + $entry['enclosures'] = $enclosures; } - } - $tag->free(); - // RSS Item specific - $entry['description'] = $entry['content']; - $entry['pubDate'] = common_date_rfc2822($notice->created); - $entry['guid'] = $entry['link']; + // 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(); - 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; + // 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; @@ -476,9 +595,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': @@ -497,7 +620,11 @@ class ApiAction extends Action $this->showTwitterXmlStatus($value, 'retweeted_status'); break; default: - $this->element($element, null, $value); + if (strncmp($element, 'statusnet_', 10) == 0) { + $this->element('statusnet:'.substr($element, 10), null, $value); + } else { + $this->element($element, null, $value); + } } } $this->elementEnd($tag); @@ -512,12 +639,18 @@ 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']); + } else if (strncmp($element, 'statusnet_', 10) == 0) { + $this->element('statusnet:'.substr($element, 10), null, $value); } else { $this->element($element, null, $value); } @@ -596,7 +729,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'); } @@ -612,17 +745,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; } } @@ -670,14 +806,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 } } @@ -713,12 +851,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; } } @@ -779,9 +920,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': @@ -858,7 +1003,7 @@ class ApiAction extends Action { $this->initDocument('xml'); $dmsg = $this->directMessageArray($message); - $this->showXmlDirectMessage($dmsg); + $this->showXmlDirectMessage($dmsg, true); $this->endDocument('xml'); } @@ -909,14 +1054,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; } } @@ -975,7 +1122,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) { @@ -1052,9 +1200,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': @@ -1083,8 +1230,7 @@ class ApiAction extends Action case 'json': // Check for JSONP callback - $callback = $this->arg('callback'); - if ($callback) { + if (isset($this->callback)) { print ')'; } break; @@ -1114,7 +1260,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'); @@ -1147,7 +1296,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'); @@ -1251,6 +1403,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)) { @@ -1293,43 +1473,6 @@ class ApiAction extends Action } } - function sourceLink($source) - { - $source_name = _($source); - switch ($source) { - case 'web': - case 'xmpp': - case 'mail': - case 'omb': - case 'api': - break; - default: - - $name = null; - $url = null; - - $ns = Notice_source::staticGet($source); - - if ($ns) { - $name = $ns->name; - $url = $ns->url; - } else { - $app = Oauth_application::staticGet('name', $source); - if ($app) { - $name = $app->name; - $url = $app->source_url; - } - } - - if (!empty($name) && !empty($url)) { - $source_name = '<a href="' . $url . '">' . $name . '</a>'; - } - - break; - } - return $source_name; - } - /** * Returns query argument or default value if not found. Certain * parameters used throughout the API are lightly scrubbed and diff --git a/lib/apiauth.php b/lib/apiauth.php index d6ad7e0211..cf7a2692ca 100644 --- a/lib/apiauth.php +++ b/lib/apiauth.php @@ -30,10 +30,29 @@ * @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/ */ +/* External API usage documentation. Please update when you change how this method works. */ + +/*! @page authentication Authentication + + StatusNet supports HTTP Basic Authentication and OAuth for API calls. + + @warning Currently, users who have created accounts without setting a + password via OpenID, Facebook Connect, etc., cannot use the API until + they set a password with their account settings panel. + + @section HTTP Basic Auth + + + + @section OAuth + +*/ + if (!defined('STATUSNET')) { exit(1); } @@ -54,7 +73,6 @@ class ApiAuthAction extends ApiAction { var $auth_user_nickname = null; var $auth_user_password = null; - var $oauth_source = null; /** * Take arguments for running, looks for an OAuth request, @@ -163,7 +181,7 @@ class ApiAuthAction extends ApiAction // set the source attr - $this->oauth_source = $app->name; + $this->source = $app->name; $appUser = Oauth_application_user::staticGet('token', $access_token); @@ -209,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; } } @@ -247,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 { @@ -280,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; } } @@ -327,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 2d29c1ddd6..da7af12614 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 5d00330053..5e78c65a19 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 b4810d04a0..39a1fd456e 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 e4df731fe0..b882172918 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( @@ -79,6 +92,11 @@ class AtomNoticeFeed extends Atom10Feed 'ostatus', 'http://ostatus.org/schema/1.0' ); + + $this->addNamespace( + 'statusnet', + 'http://status.net/schema/api/1/' + ); } /** @@ -107,10 +125,17 @@ class AtomNoticeFeed extends Atom10Feed */ function addEntryFromNotice($notice) { - $source = $this->showSource(); - $author = $this->showAuthor(); + try { + $source = $this->showSource(); + $author = $this->showAuthor(); - $this->addEntryRaw($notice->asAtomEntry(false, $source, $author)); + $cur = empty($this->cur) ? common_current_user() : $this->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 acfcbd75fb..785db4915b 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 0a3763e2e4..dbdf206298 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 3790bccf4b..d71f772435 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 e67799e2eb..7d4256d6e1 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/cache.php b/lib/cache.php index c09a1dd9f2..17cc5f0472 100644 --- a/lib/cache.php +++ b/lib/cache.php @@ -83,7 +83,7 @@ class Cache $base_key = common_config('cache', 'base'); if (empty($base_key)) { - $base_key = common_keyize(common_config('site', 'name')); + $base_key = self::keyize(common_config('site', 'name')); } return 'statusnet:' . $base_key . ':' . $extra; diff --git a/lib/channel.php b/lib/channel.php index e83960ac54..5b38a4b6ae 100644 --- a/lib/channel.php +++ b/lib/channel.php @@ -155,12 +155,12 @@ class MailChannel extends Channel function on($user) { - return $this->set_notify($user, 1); + return $this->setNotify($user, 1); } function off($user) { - return $this->set_notify($user, 0); + return $this->setNotify($user, 0); } function output($user, $text) @@ -185,7 +185,7 @@ class MailChannel extends Channel return mail_send(array($this->addr), $headers, $text); } - function set_notify($user, $value) + function setNotify($user, $value) { $orig = clone($user); $user->smsnotify = $value; diff --git a/lib/command.php b/lib/command.php index 30db9d0691..90a321ad32 100644 --- a/lib/command.php +++ b/lib/command.php @@ -49,7 +49,7 @@ class Command } } - + /** * Override this with the meat! * @@ -80,15 +80,16 @@ class Command $notice = Notice::staticGet(substr($arg,1)); if (!$notice) { - throw new CommandException(_('Notice with that id does not exist')); + // TRANS: Command exception text shown when a notice ID is requested that does not exist. + throw new CommandException(_('Notice with that id does not exist.')); } } - + if (Validate::uri($this->other)) { // A specific notice by URI lookup $notice = Notice::staticGet('uri', $arg); } - + if (!$notice) { // Local or remote profile name to get their last notice. // May throw an exception and report 'no such user' @@ -96,13 +97,15 @@ class Command $notice = $recipient->getCurrentNotice(); if (!$notice) { - throw new CommandException(_('User has no last notice')); + // TRANS: Command exception text shown when a last user notice is requested and it does not exist. + throw new CommandException(_('User has no last notice.')); } } } Event::handle('EndCommandGetNotice', array($this, $arg, &$notice)); if (!$notice) { - throw new CommandException(_('Notice with that id does not exist')); + // TRANS: Command exception text shown when a notice ID is requested that does not exist. + throw new CommandException(_('Notice with that id does not exist.')); } return $notice; } @@ -124,7 +127,7 @@ class Command if (!$profile) { // 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. - throw new CommandException(sprintf(_('Could not find a user with nickname %s'), $arg)); + throw new CommandException(sprintf(_('Could not find a user with nickname %s.'), $arg)); } return $profile; } @@ -144,7 +147,7 @@ class Command if (!$user){ // TRANS: Message given getting a non-existing user. // TRANS: %s is the nickname of the user that could not be found. - throw new CommandException(sprintf(_('Could not find a local user with nickname %s'), + throw new CommandException(sprintf(_('Could not find a local user with nickname %s.'), $arg)); } return $user; @@ -163,6 +166,7 @@ class Command } Event::handle('EndCommandGetGroup', array($this, $arg, &$group)); if (!$group) { + // TRANS: Command exception text shown when a group is requested that does not exist. throw new CommandException(_('No such group.')); } return $group; @@ -177,6 +181,7 @@ class UnimplementedCommand extends Command { function handle($channel) { + // TRANS: Error text shown when an unimplemented command is given. $channel->error($this->user, _("Sorry, this command is not yet implemented.")); } } @@ -222,6 +227,7 @@ class NudgeCommand extends Command { $recipient = $this->getUser($this->other); if ($recipient->id == $this->user->id) { + // TRANS: Command exception text shown when a user tries to nudge themselves. throw new CommandException(_('It does not make a lot of sense to nudge yourself!')); } else { if ($recipient->email && $recipient->emailnotifynudge) { @@ -231,7 +237,7 @@ class NudgeCommand extends Command // XXX: notify by SMS // TRANS: Message given having nudged another user. // TRANS: %s is the nickname of the user that was nudged. - $channel->output($this->user, sprintf(_('Nudge sent to %s'), + $channel->output($this->user, sprintf(_('Nudge sent to %s.'), $recipient->nickname)); } } @@ -257,6 +263,10 @@ class StatsCommand extends Command $subbed_count = $profile->subscriberCount(); $notice_count = $profile->noticeCount(); + // TRANS: User statistics text. + // TRANS: %1$s is the number of other user the user is subscribed to. + // TRANS: %2$s is the number of users that are subscribed to the user. + // TRANS: %3$s is the number of notices the user has sent. $channel->output($this->user, sprintf(_("Subscriptions: %1\$s\n". "Subscribers: %2\$s\n". "Notices: %3\$s"), @@ -282,6 +292,7 @@ class FavCommand extends Command $fave = Fave::addNew($this->user->getProfile(), $notice); if (!$fave) { + // TRANS: Error message text shown when a favorite could not be set. $channel->error($this->user, _('Could not create favorite.')); return; } @@ -299,6 +310,7 @@ class FavCommand extends Command $this->user->blowFavesCache(); + // TRANS: Text shown when a notice has been marked as favourite successfully. $channel->output($this->user, _('Notice marked as fave.')); } @@ -320,10 +332,12 @@ class JoinCommand extends Command $cur = $this->user; if ($cur->isMember($group)) { - $channel->error($cur, _('You are already a member of that group')); + // TRANS: Error text shown a user tries to join a group they already are a member of. + $channel->error($cur, _('You are already a member of that group.')); return; } if (Group_block::isBlocked($group, $cur->getProfile())) { + // TRANS: Error text shown when a user tries to join a group they are blocked from joining. $channel->error($cur, _('You have been blocked from that group by the admin.')); return; } @@ -336,14 +350,14 @@ class JoinCommand extends Command } catch (Exception $e) { // 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. - $channel->error($cur, sprintf(_('Could not join user %1$s to group %2$s'), + $channel->error($cur, sprintf(_('Could not join user %1$s to group %2$s.'), $cur->nickname, $group->nickname)); return; } // 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. - $channel->output($cur, sprintf(_('%1$s joined group %2$s'), + $channel->output($cur, sprintf(_('%1$s joined group %2$s.'), $cur->nickname, $group->nickname)); } @@ -365,11 +379,13 @@ class DropCommand extends Command $cur = $this->user; if (!$group) { + // TRANS: Error text shown when trying to leave a group that does not exist. $channel->error($cur, _('No such group.')); return; } if (!$cur->isMember($group)) { + // TRANS: Error text shown when trying to leave an existing group the user is not a member of. $channel->error($cur, _('You are not a member of that group.')); return; } @@ -382,14 +398,14 @@ class DropCommand extends Command } catch (Exception $e) { // 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. - $channel->error($cur, sprintf(_('Could not remove user %1$s from group %2$s'), + $channel->error($cur, sprintf(_('Could not remove user %1$s from group %2$s.'), $cur->nickname, $group->nickname)); return; } // 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. - $channel->output($cur, sprintf(_('%1$s left group %2$s'), + $channel->output($cur, sprintf(_('%1$s left group %2$s.'), $cur->nickname, $group->nickname)); } @@ -454,12 +470,14 @@ class MessageCommand extends Command } catch (CommandException $f) { throw $e; } + // TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). throw new CommandException(sprintf(_('%s is a remote profile; you can only send direct messages to users on the same server.'), $this->other)); } $len = mb_strlen($this->text); if ($len == 0) { + // TRANS: Command exception text shown when trying to send a direct message to another user without content. $channel->error($this->user, _('No content!')); return; } @@ -467,20 +485,24 @@ class MessageCommand extends Command $this->text = common_shorten_links($this->text); if (Message::contentTooLong($this->text)) { + // XXX: i18n. Needs plural support. // 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. - $channel->error($this->user, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d'), + $channel->error($this->user, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'), Message::maxContent(), mb_strlen($this->text))); return; } if (!$other) { + // TRANS: Error text shown when trying to send a direct message to a user that does not exist. $channel->error($this->user, _('No such user.')); return; } else if (!$this->user->mutuallySubscribed($other)) { + // TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). $channel->error($this->user, _('You can\'t send a message to this user.')); return; } else if ($this->user->id == $other->id) { + // TRANS: Error text shown when trying to send a direct message to self. $channel->error($this->user, _('Don\'t send a message to yourself; just say it to yourself quietly instead.')); return; } @@ -489,8 +511,9 @@ class MessageCommand extends Command $message->notify(); // TRANS: Message given have sent a direct message to another user. // TRANS: %s is the name of the other user. - $channel->output($this->user, sprintf(_('Direct message to %s sent'), $this->other)); + $channel->output($this->user, sprintf(_('Direct message to %s sent.'), $this->other)); } else { + // TRANS: Error text shown sending a direct message fails with an unknown reason. $channel->error($this->user, _('Error sending direct message.')); } } @@ -511,12 +534,14 @@ class RepeatCommand extends Command if($this->user->id == $notice->profile_id) { - $channel->error($this->user, _('Cannot repeat your own notice')); + // TRANS: Error text shown when trying to repeat an own notice. + $channel->error($this->user, _('Cannot repeat your own notice.')); return; } if ($this->user->getProfile()->hasRepeated($notice->id)) { - $channel->error($this->user, _('Already repeated that notice')); + // TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. + $channel->error($this->user, _('Already repeated that notice.')); return; } @@ -526,8 +551,9 @@ class RepeatCommand extends Command // TRANS: Message given having repeated a notice from another user. // TRANS: %s is the name of the user for which the notice was repeated. - $channel->output($this->user, sprintf(_('Notice from %s repeated'), $recipient->nickname)); + $channel->output($this->user, sprintf(_('Notice from %s repeated.'), $recipient->nickname)); } else { + // TRANS: Error text shown when repeating a notice fails with an unknown reason. $channel->error($this->user, _('Error repeating notice.')); } } @@ -552,6 +578,7 @@ class ReplyCommand extends Command $len = mb_strlen($this->text); if ($len == 0) { + // TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. $channel->error($this->user, _('No content!')); return; } @@ -559,7 +586,10 @@ class ReplyCommand extends Command $this->text = common_shorten_links($this->text); if (Notice::contentTooLong($this->text)) { - $channel->error($this->user, sprintf(_('Notice too long - maximum is %d characters, you sent %d'), + // XXX: i18n. Needs plural support. + // TRANS: Message given if content of a notice for a reply is too long. + // TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. + $channel->error($this->user, sprintf(_('Notice too long - maximum is %1$d characters, you sent %2$d.'), Notice::maxContent(), mb_strlen($this->text))); return; } @@ -568,8 +598,11 @@ class ReplyCommand extends Command array('reply_to' => $notice->id)); if ($notice) { - $channel->output($this->user, sprintf(_('Reply to %s sent'), $recipient->nickname)); + // TRANS: Text shown having sent a reply to a notice successfully. + // TRANS: %s is the nickname of the user of the notice the reply was sent to. + $channel->output($this->user, sprintf(_('Reply to %s sent.'), $recipient->nickname)); } else { + // TRANS: Error text shown when a reply to a notice fails with an unknown reason. $channel->error($this->user, _('Error saving notice.')); } @@ -593,7 +626,8 @@ class GetCommand extends Command $notice = $target->getCurrentNotice(); if (!$notice) { - $channel->error($this->user, _('User has no last notice')); + // TRANS: Error text shown when a last user notice is requested and it does not exist. + $channel->error($this->user, _('User has no last notice.')); return; } $notice_content = $notice->content; @@ -617,7 +651,8 @@ class SubCommand extends Command { if (!$this->other) { - $channel->error($this->user, _('Specify the name of the user to subscribe to')); + // TRANS: Error text shown when no username was provided when issuing a subscribe command. + $channel->error($this->user, _('Specify the name of the user to subscribe to.')); return; } @@ -625,13 +660,16 @@ class SubCommand extends Command $remote = Remote_profile::staticGet('id', $target->id); if ($remote) { + // TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. throw new CommandException(_("Can't subscribe to OMB profiles by command.")); } try { Subscription::start($this->user->getProfile(), $target); - $channel->output($this->user, sprintf(_('Subscribed to %s'), $this->other)); + // TRANS: Text shown after having subscribed to another user successfully. + // TRANS: %s is the name of the user the subscription was requested for. + $channel->output($this->user, sprintf(_('Subscribed to %s.'), $this->other)); } catch (Exception $e) { $channel->error($this->user, $e->getMessage()); } @@ -652,7 +690,8 @@ class UnsubCommand extends Command function handle($channel) { if(!$this->other) { - $channel->error($this->user, _('Specify the name of the user to unsubscribe from')); + // TRANS: Error text shown when no username was provided when issuing an unsubscribe command. + $channel->error($this->user, _('Specify the name of the user to unsubscribe from.')); return; } @@ -661,7 +700,9 @@ class UnsubCommand extends Command try { Subscription::cancel($this->user->getProfile(), $target); - $channel->output($this->user, sprintf(_('Unsubscribed from %s'), $this->other)); + // TRANS: Text shown after having unsubscribed from another user successfully. + // TRANS: %s is the name of the user the unsubscription was requested for. + $channel->output($this->user, sprintf(_('Unsubscribed from %s.'), $this->other)); } catch (Exception $e) { $channel->error($this->user, $e->getMessage()); } @@ -679,11 +720,14 @@ class OffCommand extends Command function handle($channel) { if ($this->other) { + // TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. $channel->error($this->user, _("Command not yet implemented.")); } else { if ($channel->off($this->user)) { + // TRANS: Text shown when issuing the command "off" successfully. $channel->output($this->user, _('Notification off.')); } else { + // TRANS: Error text shown when the command "off" fails for an unknown reason. $channel->error($this->user, _('Can\'t turn off notification.')); } } @@ -702,11 +746,14 @@ class OnCommand extends Command function handle($channel) { if ($this->other) { + // TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. $channel->error($this->user, _("Command not yet implemented.")); } else { if ($channel->on($this->user)) { + // TRANS: Text shown when issuing the command "on" successfully. $channel->output($this->user, _('Notification on.')); } else { + // TRANS: Error text shown when the command "on" fails for an unknown reason. $channel->error($this->user, _('Can\'t turn on notification.')); } } @@ -720,7 +767,8 @@ class LoginCommand extends Command $disabled = common_config('logincommand','disabled'); $disabled = isset($disabled) && $disabled; if($disabled) { - $channel->error($this->user, _('Login command is disabled')); + // TRANS: Error text shown when issuing the login command while login is disabled. + $channel->error($this->user, _('Login command is disabled.')); return; } @@ -731,7 +779,9 @@ class LoginCommand extends Command } $channel->output($this->user, - sprintf(_('This link is useable only once, and is good for only 2 minutes: %s'), + // TRANS: Text shown after issuing the login command successfully. + // TRANS: %s is a logon link.. + sprintf(_('This link is useable only once and is valid for only 2 minutes: %s.'), common_local_url('otp', array('user_id' => $login_token->user_id, 'token' => $login_token->token)))); } @@ -739,7 +789,6 @@ class LoginCommand extends Command class LoseCommand extends Command { - var $other = null; function __construct($user, $other) @@ -751,14 +800,17 @@ class LoseCommand extends Command function execute($channel) { if(!$this->other) { - $channel->error($this->user, _('Specify the name of the user to unsubscribe from')); + // TRANS: Error text shown when no username was provided when issuing the command. + $channel->error($this->user, _('Specify the name of the user to unsubscribe from.')); return; } $result = Subscription::cancel($this->getProfile($this->other), $this->user->getProfile()); if ($result) { - $channel->output($this->user, sprintf(_('Unsubscribed %s'), $this->other)); + // TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). + // TRANS: %s is the name of the user the unsubscription was requested for. + $channel->output($this->user, sprintf(_('Unsubscribed %s.'), $this->other)); } else { $channel->error($this->user, $result); } @@ -775,8 +827,12 @@ class SubscriptionsCommand extends Command $nicknames[]=$profile->nickname; } if(count($nicknames)==0){ + // TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. $out=_('You are not subscribed to anyone.'); }else{ + // TRANS: Text shown after requesting other users a user is subscribed to. + // TRANS: This message support plural forms. This message is followed by a + // TRANS: hard coded space and a comma separated list of subscribed users. $out = ngettext('You are subscribed to this person:', 'You are subscribed to these people:', count($nicknames)); @@ -797,8 +853,13 @@ class SubscribersCommand extends Command $nicknames[]=$profile->nickname; } if(count($nicknames)==0){ + // TRANS: Text shown after requesting other users that are subscribed to a user + // TRANS: (followers) without having any subscribers. $out=_('No one is subscribed to you.'); }else{ + // TRANS: Text shown after requesting other users that are subscribed to a user (followers). + // TRANS: This message support plural forms. This message is followed by a + // TRANS: hard coded space and a comma separated list of subscribing users. $out = ngettext('This person is subscribed to you:', 'These people are subscribed to you:', count($nicknames)); @@ -819,8 +880,13 @@ class GroupsCommand extends Command $groups[]=$group->nickname; } if(count($groups)==0){ + // TRANS: Text shown after requesting groups a user is subscribed to without having + // TRANS: any group subscriptions. $out=_('You are not a member of any groups.'); }else{ + // TRANS: Text shown after requesting groups a user is subscribed to. + // TRANS: This message support plural forms. This message is followed by a + // TRANS: hard coded space and a comma separated list of subscribed groups. $out = ngettext('You are a member of this group:', 'You are a member of these groups:', count($nicknames)); @@ -834,6 +900,7 @@ class HelpCommand extends Command { function handle($channel) { + // TRANS: Help text for commands. $channel->output($this->user, _("Commands:\n". "on - turn on notifications\n". diff --git a/lib/common.php b/lib/common.php index 45946c216a..0a0f5c6317 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.1'); +define('STATUSNET_VERSION', '0.9.5'); define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility -define('STATUSNET_CODENAME', 'Everybody Hurts'); +define('STATUSNET_CODENAME', 'What\'s The Frequency, Kenneth?'); define('AVATAR_PROFILE_SIZE', 96); define('AVATAR_STREAM_SIZE', 48); @@ -132,6 +132,12 @@ require_once INSTALLDIR.'/lib/serverexception.php'; //set PEAR error handling to use regular PHP exceptions function PEAR_ErrorToPEAR_Exception($err) { + //DB_DataObject throws error when an empty set would be returned + //That behavior is weird, and not how the rest of StatusNet works. + //So just ignore those errors. + if ($err->getCode() == DB_DATAOBJECT_ERROR_NODATA) { + return; + } if ($err->getCode()) { throw new PEAR_Exception($err->getMessage(), $err->getCode()); } diff --git a/lib/connectsettingsaction.php b/lib/connectsettingsaction.php index b9c14799e0..5d62fc56b3 100644 --- a/lib/connectsettingsaction.php +++ b/lib/connectsettingsaction.php @@ -105,7 +105,9 @@ class ConnectSettingsNav extends Widget # action => array('prompt', 'title') $menu = array(); - if (common_config('xmpp', 'enabled')) { + $transports = array(); + Event::handle('GetImTransports', array(&$transports)); + if ($transports) { $menu['imsettings'] = array(_('IM'), _('Updates by instant messenger (IM)')); diff --git a/lib/dbqueuemanager.php b/lib/dbqueuemanager.php index 3032e4ec7a..3dda9fd1ac 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 dec08fc066..76e4e44cf2 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 @@ -188,7 +195,8 @@ $default = 'cache' => array('base' => null), 'ping' => - array('notify' => array()), + array('notify' => array(), + 'timeout' => 2), 'inboxes' => array('enabled' => true), # ignored after 0.9.x 'newuser' => @@ -259,6 +267,9 @@ $default = 'linkcolor' => null, 'backgroundimage' => null, 'disposition' => null), + 'custom_css' => + array('enabled' => true, + 'css' => ''), 'notice' => array('contentlimit' => null), 'message' => @@ -286,6 +297,7 @@ $default = 'OStatus' => null, 'WikiHashtags' => null, 'RSSCloud' => null, + 'ClientSideShorten' => null, 'OpenID' => null), ), 'pluginlist' => array(), @@ -307,5 +319,9 @@ $default = 'url' => array('shortener' => 'ur1.ca', 'maxlength' => 25, - 'maxnoticelength' => -1) + 'maxnoticelength' => -1), + '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') + 'curl' => false, // Use CURL backend for HTTP fetches if available. (If not, PHP's socket streams will be used.) + ), ); diff --git a/lib/distribqueuehandler.php b/lib/distribqueuehandler.php index d2be7a92c7..8f4b72d5c3 100644 --- a/lib/distribqueuehandler.php +++ b/lib/distribqueuehandler.php @@ -49,25 +49,34 @@ class DistribQueueHandler } /** - * Here's the meat of your queue handler -- you're handed a Notice - * object, which you may do as you will with. + * Handle distribution of a notice after we've saved it: + * @li add to local recipient inboxes + * @li send email notifications to local @-reply targets + * @li run final EndNoticeSave plugin events + * @li put any remaining post-processing into the queues * * If this function indicates failure, a warning will be logged * and the item is placed back in the queue to be re-run. * + * @fixme addToInboxes is known to fail sometimes with large recipient sets + * * @param Notice $notice * @return boolean true on success, false on failure */ function handle($notice) { - // XXX: do we need to change this for remote users? - try { $notice->addToInboxes(); } catch (Exception $e) { $this->logit($notice, $e); } + try { + $notice->sendReplyNotifications(); + } catch (Exception $e) { + $this->logit($notice, $e); + } + try { Event::handle('EndNoticeSave', array($notice)); // Enqueue for other handlers diff --git a/lib/httpclient.php b/lib/httpclient.php index 384626ae06..514a5afeb2 100644 --- a/lib/httpclient.php +++ b/lib/httpclient.php @@ -132,7 +132,23 @@ class HTTPClient extends HTTP_Request2 // ought to be investigated to see if we can handle // it gracefully in that case as well. $this->config['protocol_version'] = '1.0'; - + + // Default state of OpenSSL seems to have no trusted + // SSL certificate authorities, which breaks hostname + // verification and means we have a hard time communicating + // with other sites' HTTPS interfaces. + // + // Turn off verification unless we've configured a CA bundle. + if (common_config('http', 'ssl_cafile')) { + $this->config['ssl_cafile'] = common_config('http', 'ssl_cafile'); + } else { + $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()); } @@ -192,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/imchannel.php b/lib/imchannel.php index 12354ce4b0..61355a429c 100644 --- a/lib/imchannel.php +++ b/lib/imchannel.php @@ -36,27 +36,27 @@ class IMChannel extends Channel function on($user) { - return $this->set_notify($user, 1); + return $this->setNotify($user, 1); } function off($user) { - return $this->set_notify($user, 0); + return $this->setNotify($user, 0); } function output($user, $text) { $text = '['.common_config('site', 'name') . '] ' . $text; - $this->imPlugin->send_message($this->imPlugin->get_screenname($user), $text); + $this->imPlugin->sendMessage($this->imPlugin->getScreenname($user), $text); } function error($user, $text) { $text = '['.common_config('site', 'name') . '] ' . $text; - $screenname = $this->imPlugin->get_screenname($user); + $screenname = $this->imPlugin->getScreenname($user); if($screenname){ - $this->imPlugin->send_message($screenname, $text); + $this->imPlugin->sendMessage($screenname, $text); return true; }else{ common_log(LOG_ERR, @@ -66,7 +66,7 @@ class IMChannel extends Channel } } - function set_notify($user, $notify) + function setNotify($user, $notify) { $user_im_prefs = new User_im_prefs(); $user_im_prefs->transport = $this->imPlugin->transport; diff --git a/lib/immanager.php b/lib/immanager.php index da80b74b7f..9563a53262 100644 --- a/lib/immanager.php +++ b/lib/immanager.php @@ -31,7 +31,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } * 2) override handleInput() with what to do when data is waiting on * one of the sockets * 3) override idle($timeout) to do keepalives (if necessary) - * 4) implement send_raw_message() to send raw data that ImPlugin::enqueue_outgoing_raw + * 4) implement send_raw_message() to send raw data that ImPlugin::enqueueOutgoingRaw * enqueued */ diff --git a/lib/implugin.php b/lib/implugin.php index 7302859a47..2811e7d644 100644 --- a/lib/implugin.php +++ b/lib/implugin.php @@ -59,7 +59,6 @@ abstract class ImPlugin extends Plugin */ abstract function normalize($screenname); - /** * validate (ensure the validity of) a screenname * @@ -79,47 +78,52 @@ abstract class ImPlugin extends Plugin /** * send a single notice to a given screenname * The implementation should put raw data, ready to send, into the outgoing - * queue using enqueue_outgoing_raw() + * queue using enqueueOutgoingRaw() * * @param string $screenname screenname to send to * @param Notice $notice notice to send * * @return boolean success value */ - function send_notice($screenname, $notice) + function sendNotice($screenname, $notice) { - return $this->send_message($screenname, $this->format_notice($notice)); + return $this->sendMessage($screenname, $this->formatNotice($notice)); } /** * send a message (text) to a given screenname * The implementation should put raw data, ready to send, into the outgoing - * queue using enqueue_outgoing_raw() + * queue using enqueueOutgoingRaw() * * @param string $screenname screenname to send to * @param Notice $body text to send * * @return boolean success value */ - abstract function send_message($screenname, $body); + abstract function sendMessage($screenname, $body); /** * receive a raw message * Raw IM data is taken from the incoming queue, and passed to this function. - * It should parse the raw message and call handle_incoming() + * It should parse the raw message and call handleIncoming() + * + * Returning false may CAUSE REPROCESSING OF THE QUEUE ITEM, and should + * be used for temporary failures only. For permanent failures such as + * unrecognized addresses, return true to indicate your processing has + * completed. * * @param object $data raw IM data * - * @return boolean success value + * @return boolean true if processing completed, false for temporary failures */ - abstract function receive_raw_message($data); + abstract function receiveRawMessage($data); /** * get the screenname of the daemon that sends and receives message for this service * * @return string screenname of this plugin */ - abstract function daemon_screenname(); + abstract function daemonScreenname(); /** * get the microid uri of a given screenname @@ -130,7 +134,7 @@ abstract class ImPlugin extends Plugin */ function microiduri($screenname) { - return $this->transport . ':' . $screenname; + return $this->transport . ':' . $screenname; } //========================UTILITY FUNCTIONS USEFUL TO IMPLEMENTATIONS - MISC ========================\ @@ -139,7 +143,7 @@ abstract class ImPlugin extends Plugin * * @param object $data */ - function enqueue_outgoing_raw($data) + function enqueueOutgoingRaw($data) { $qm = QueueManager::get(); $qm->enqueue($data, $this->transport . '-out'); @@ -150,7 +154,7 @@ abstract class ImPlugin extends Plugin * * @param object $data */ - function enqueue_incoming_raw($data) + function enqueueIncomingRaw($data) { $qm = QueueManager::get(); $qm->enqueue($data, $this->transport . '-in'); @@ -163,9 +167,9 @@ abstract class ImPlugin extends Plugin * * @return User user */ - function get_user($screenname) + function getUser($screenname) { - $user_im_prefs = $this->get_user_im_prefs_from_screenname($screenname); + $user_im_prefs = $this->getUserImPrefsFromScreenname($screenname); if($user_im_prefs){ $user = User::staticGet('id', $user_im_prefs->user_id); $user_im_prefs->free(); @@ -175,7 +179,6 @@ abstract class ImPlugin extends Plugin } } - /** * given a screenname, get the User_im_prefs object for this transport * @@ -183,16 +186,18 @@ abstract class ImPlugin extends Plugin * * @return User_im_prefs user_im_prefs */ - function get_user_im_prefs_from_screenname($screenname) + function getUserImPrefsFromScreenname($screenname) { - if($user_im_prefs = User_im_prefs::pkeyGet( array('transport' => $this->transport, 'screenname' => $screenname) )){ + $user_im_prefs = User_im_prefs::pkeyGet( + array('transport' => $this->transport, + 'screenname' => $this->normalize($screenname))); + if ($user_im_prefs) { return $user_im_prefs; - }else{ + } else { return false; } } - /** * given a User, get their screenname * @@ -200,17 +205,16 @@ abstract class ImPlugin extends Plugin * * @return string screenname of that user */ - function get_screenname($user) + function getScreenname($user) { - $user_im_prefs = $this->get_user_im_prefs_from_user($user); - if($user_im_prefs){ + $user_im_prefs = $this->getUserImPrefsFromUser($user); + if ($user_im_prefs) { return $user_im_prefs->screenname; - }else{ + } else { return false; } } - /** * given a User, get their User_im_prefs * @@ -218,11 +222,14 @@ abstract class ImPlugin extends Plugin * * @return User_im_prefs user_im_prefs of that user */ - function get_user_im_prefs_from_user($user) + function getUserImPrefsFromUser($user) { - if($user_im_prefs = User_im_prefs::pkeyGet( array('transport' => $this->transport, 'user_id' => $user->id) )){ + $user_im_prefs = User_im_prefs::pkeyGet( + array('transport' => $this->transport, + 'user_id' => $user->id)); + if ($user_im_prefs){ return $user_im_prefs; - }else{ + } else { return false; } } @@ -235,10 +242,10 @@ abstract class ImPlugin extends Plugin * * @param boolean success */ - protected function send_from_site($screenname, $msg) + protected function sendFromSite($screenname, $msg) { $text = '['.common_config('site', 'name') . '] ' . $msg; - $this->send_message($screenname, $text); + $this->sendMessage($screenname, $text); } /** @@ -250,7 +257,7 @@ abstract class ImPlugin extends Plugin * * @return boolean success value */ - function send_confirmation_code($screenname, $code, $user) + function sendConfirmationCode($screenname, $code, $user) { $body = sprintf(_('User "%s" on %s has said that your %s screenname belongs to them. ' . 'If that\'s true, you can confirm by clicking on this URL: ' . @@ -260,7 +267,7 @@ abstract class ImPlugin extends Plugin 'or if you didn\'t request this confirmation, just ignore this message.'), $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', array('code' => $code))); - return $this->send_message($screenname, $body); + return $this->sendMessage($screenname, $body); } /** @@ -274,7 +281,7 @@ abstract class ImPlugin extends Plugin * @return boolean success flag */ - function public_notice($notice) + function publicNotice($notice) { // Now, users who want everything @@ -287,7 +294,7 @@ abstract class ImPlugin extends Plugin 'Sending notice ' . $notice->id . ' to public listener ' . $screenname, __FILE__); - $this->send_notice($screenname, $notice); + $this->sendNotice($screenname, $notice); } return true; @@ -307,7 +314,7 @@ abstract class ImPlugin extends Plugin * @return boolean success flag */ - function broadcast_notice($notice) + function broadcastNotice($notice) { $ni = $notice->whoGets(); @@ -318,7 +325,7 @@ abstract class ImPlugin extends Plugin // either not a local user, or just not found continue; } - $user_im_prefs = $this->get_user_im_prefs_from_user($user); + $user_im_prefs = $this->getUserImPrefsFromUser($user); if(!$user_im_prefs || !$user_im_prefs->notify){ continue; } @@ -345,7 +352,7 @@ abstract class ImPlugin extends Plugin common_log(LOG_INFO, 'Sending notice ' . $notice->id . ' to ' . $user_im_prefs->screenname, __FILE__); - $this->send_notice($user_im_prefs->screenname, $notice); + $this->sendNotice($user_im_prefs->screenname, $notice); $user_im_prefs->free(); } @@ -360,7 +367,7 @@ abstract class ImPlugin extends Plugin * @return string plain-text version of the notice, with user nickname prefixed */ - function format_notice($notice) + function formatNotice($notice) { $profile = $notice->getProfile(); return $profile->nickname . ': ' . $notice->content . ' [' . $notice->id . ']'; @@ -373,7 +380,7 @@ abstract class ImPlugin extends Plugin * @param string $body message text * @return boolean true if the message was a command and was executed, false if it was not a command */ - protected function handle_command($user, $body) + protected function handleCommand($user, $body) { $inter = new CommandInterpreter(); $cmd = $inter->handle_command($user, $body); @@ -391,7 +398,7 @@ abstract class ImPlugin extends Plugin * @param string $txt message text * @return boolean true if autoreply */ - protected function is_autoreply($txt) + protected function isAutoreply($txt) { if (preg_match('/[\[\(]?[Aa]uto[-\s]?[Rr]e(ply|sponse)[\]\)]/', $txt)) { return true; @@ -407,7 +414,7 @@ abstract class ImPlugin extends Plugin * @param string $txt message text * @return boolean true if OTR */ - protected function is_otr($txt) + protected function isOtr($txt) { if (preg_match('/^\?OTR/', $txt)) { return true; @@ -425,34 +432,34 @@ abstract class ImPlugin extends Plugin * * @param boolean success */ - protected function handle_incoming($from, $notice_text) + protected function handleIncoming($from, $notice_text) { - $user = $this->get_user($from); + $user = $this->getUser($from); // For common_current_user to work global $_cur; $_cur = $user; if (!$user) { - $this->send_from_site($from, 'Unknown user; go to ' . + $this->sendFromSite($from, 'Unknown user; go to ' . common_local_url('imsettings') . ' to add your address to your account'); common_log(LOG_WARNING, 'Message from unknown user ' . $from); return; } - if ($this->handle_command($user, $notice_text)) { + if ($this->handleCommand($user, $notice_text)) { common_log(LOG_INFO, "Command message by $from handled."); return; - } else if ($this->is_autoreply($notice_text)) { + } else if ($this->isAutoreply($notice_text)) { common_log(LOG_INFO, 'Ignoring auto reply from ' . $from); return; - } else if ($this->is_otr($notice_text)) { + } else if ($this->isOtr($notice_text)) { common_log(LOG_INFO, 'Ignoring OTR from ' . $from); return; } else { common_log(LOG_INFO, 'Posting a notice from ' . $user->nickname); - $this->add_notice($from, $user, $notice_text); + $this->addNotice($from, $user, $notice_text); } $user->free(); @@ -470,12 +477,12 @@ abstract class ImPlugin extends Plugin * * @param boolean success */ - protected function add_notice($screenname, $user, $body) + protected function addNotice($screenname, $user, $body) { $body = trim(strip_tags($body)); $content_shortened = common_shorten_links($body); if (Notice::contentTooLong($content_shortened)) { - $this->send_from_site($screenname, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'), + $this->sendFromSite($screenname, sprintf(_('Message too long - maximum is %1$d characters, you sent %2$d.'), Notice::maxContent(), mb_strlen($content_shortened))); return; @@ -485,11 +492,10 @@ abstract class ImPlugin extends Plugin $notice = Notice::saveNew($user->id, $content_shortened, $this->transport); } catch (Exception $e) { common_log(LOG_ERR, $e->getMessage()); - $this->send_from_site($from, $e->getMessage()); + $this->sendFromSite($from, $e->getMessage()); return; } - common_broadcast_notice($notice); common_log(LOG_INFO, 'Added notice ' . $notice->id . ' from user ' . $user->nickname); $notice->free(); @@ -497,7 +503,7 @@ abstract class ImPlugin extends Plugin } //========================EVENT HANDLERS========================\ - + /** * Register notice queue handler * @@ -588,14 +594,14 @@ abstract class ImPlugin extends Plugin { $transports[$this->transport] = array( 'display' => $this->getDisplayName(), - 'daemon_screenname' => $this->daemon_screenname()); + 'daemonScreenname' => $this->daemonScreenname()); } function onSendImConfirmationCode($transport, $screenname, $code, $user) { if($transport == $this->transport) { - $this->send_confirmation_code($screenname, $code, $user); + $this->sendConfirmationCode($screenname, $code, $user); return false; } } @@ -608,8 +614,13 @@ abstract class ImPlugin extends Plugin function initialize() { + if( ! common_config('queue', 'enabled')) + { + throw new ServerException("Queueing must be enabled to use IM plugins"); + } + if(is_null($this->transport)){ - throw new Exception('transport cannot be null'); + throw new ServerException('transport cannot be null'); } } } diff --git a/lib/imqueuehandler.php b/lib/imqueuehandler.php index b42d8e7c0b..9c35890c62 100644 --- a/lib/imqueuehandler.php +++ b/lib/imqueuehandler.php @@ -37,10 +37,10 @@ class ImQueueHandler extends QueueHandler */ function handle($notice) { - $this->plugin->broadcast_notice($notice); + $this->plugin->broadcastNotice($notice); if ($notice->is_local == Notice::LOCAL_PUBLIC || $notice->is_local == Notice::LOCAL_NONPUBLIC) { - $this->plugin->public_notice($notice); + $this->plugin->publicNotice($notice); } return true; } diff --git a/lib/imreceiverqueuehandler.php b/lib/imreceiverqueuehandler.php index 269c7db918..aa4a663b7a 100644 --- a/lib/imreceiverqueuehandler.php +++ b/lib/imreceiverqueuehandler.php @@ -37,6 +37,6 @@ class ImReceiverQueueHandler extends QueueHandler */ function handle($data) { - return $this->plugin->receive_raw_message($data); + return $this->plugin->receiveRawMessage($data); } } diff --git a/lib/installer.php b/lib/installer.php index d0e46f95c8..2eff2d85ac 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 @@ -51,7 +52,7 @@ abstract class Installer public static $dbModules = array( 'mysql' => array( 'name' => 'MySQL', - 'check_module' => 'mysql', // mysqli? + 'check_module' => 'mysqli', 'installer' => 'mysql_db_installer', ), 'pgsql' => array( @@ -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; } @@ -128,6 +132,7 @@ abstract class Installer $pass = false; } + // @fixme this check seems to be insufficient with Windows ACLs if (!is_writable(INSTALLDIR)) { $this->warning(sprintf('Cannot write config file to: <code>%s</code></p>', INSTALLDIR), sprintf('On your server, try this command: <code>chmod a+w %s</code>', INSTALLDIR)); @@ -314,7 +319,7 @@ abstract class Installer $this->updateStatus(sprintf("Adding %s data to database...", $name)); $res = $this->runDbScript($scr.'.sql', $conn, 'pgsql'); if ($res === false) { - $this->updateStatus(sprintf("Can't run %d script.", $name), true); + $this->updateStatus(sprintf("Can't run %s script.", $name), true); return false; } } @@ -341,7 +346,6 @@ abstract class Installer * @param string $password * @return mixed array of database connection params on success, false on failure * - * @fixme be consistent about using mysqli vs mysql! * @fixme escape things in the connection string in case we have a funny pass etc */ function Mysql_Db_installer($host, $database, $username, $password) @@ -349,14 +353,13 @@ abstract class Installer $this->updateStatus("Starting installation..."); $this->updateStatus("Checking database..."); - $conn = mysql_connect($host, $username, $password); - if (!$conn) { + $conn = mysqli_init(); + if (!$conn->real_connect($host, $username, $password)) { $this->updateStatus("Can't connect to server '$host' as '$username'.", true); return false; } $this->updateStatus("Changing to database..."); - $res = mysql_select_db($database, $conn); - if (!$res) { + if (!$conn->select_db($database)) { $this->updateStatus("Can't change to database.", true); return false; } @@ -411,6 +414,10 @@ abstract class Installer "\$config['db']['database'] = '{$this->db['database']}';\n\n". ($this->db['type'] == 'pgsql' ? "\$config['db']['quote_identifiers'] = true;\n\n":''). "\$config['db']['type'] = '{$this->db['type']}';\n\n"; + + // Normalize line endings for Windows servers + $cfg = str_replace("\n", PHP_EOL, $cfg); + // write configuration file out to install directory $res = file_put_contents(INSTALLDIR.'/config.php', $cfg); @@ -438,9 +445,9 @@ abstract class Installer // FIXME: use PEAR::DB or PDO instead of our own switch switch ($type) { case 'mysqli': - $res = mysql_query($stmt, $conn); + $res = $conn->query($stmt); if ($res === false) { - $error = mysql_error(); + $error = $conn->error; } break; case 'pgsql': diff --git a/lib/language.php b/lib/language.php index 8009adc9b7..12b56be9ae 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'), @@ -313,6 +326,7 @@ function get_all_languages() { 'is' => array('q' => 0.1, 'lang' => 'is', 'name' => 'Icelandic', 'direction' => 'ltr'), 'it' => array('q' => 1, 'lang' => 'it', 'name' => 'Italian', 'direction' => 'ltr'), 'jp' => array('q' => 0.5, 'lang' => 'ja', 'name' => 'Japanese', 'direction' => 'ltr'), + 'ka' => array('q' => 0.8, 'lang' => 'ka', 'name' => 'Georgian', 'direction' => 'ltr'), 'ko' => array('q' => 0.9, 'lang' => 'ko', 'name' => 'Korean', 'direction' => 'ltr'), 'mk' => array('q' => 0.5, 'lang' => 'mk', 'name' => 'Macedonian', 'direction' => 'ltr'), 'nb' => array('q' => 0.1, 'lang' => 'nb', 'name' => 'Norwegian (BokmÃ¥l)', 'direction' => 'ltr'), diff --git a/lib/liberalstomp.php b/lib/liberalstomp.php index 3d38953fd2..70c22c17e6 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/mail.php b/lib/mail.php index c38d9f2f50..ab5742e33d 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -224,9 +224,6 @@ function mail_subscribe_notify_profile($listenee, $other) if ($other->hasRight(Right::EMAILONSUBSCRIBE) && $listenee->email && $listenee->emailnotifysub) { - // use the recipient's localization - common_init_locale($listenee->language); - $profile = $listenee->getProfile(); $name = $profile->getBestName(); @@ -236,6 +233,9 @@ function mail_subscribe_notify_profile($listenee, $other) $recipients = $listenee->email; + // use the recipient's localization + common_switch_locale($listenee->language); + $headers = _mail_prepare_headers('subscribe', $listenee->nickname, $other->nickname); $headers['From'] = mail_notify_from(); $headers['To'] = $name . ' <' . $listenee->email . '>'; @@ -245,6 +245,11 @@ function mail_subscribe_notify_profile($listenee, $other) $other->getBestName(), common_config('site', 'name')); + $blocklink = sprintf(_("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"), + common_local_url('block', array('profileid' => $other->id))); + // TRANS: Main body of new-subscriber notification e-mail $body = sprintf(_('%1$s is now listening to your notices on %2$s.'."\n\n". "\t".'%3$s'."\n\n". @@ -264,14 +269,15 @@ function mail_subscribe_notify_profile($listenee, $other) ($other->homepage) ? // TRANS: Profile info line in new-subscriber notification e-mail sprintf(_("Homepage: %s"), $other->homepage) . "\n" : '', - ($other->bio) ? + (($other->bio) ? // TRANS: Profile info line in new-subscriber notification e-mail - sprintf(_("Bio: %s"), $other->bio) . "\n\n" : '', + sprintf(_("Bio: %s"), $other->bio) . "\n" : '') . + "\n\n" . $blocklink . "\n", common_config('site', 'name'), common_local_url('emailsettings')); // reset localization - common_init_locale(); + common_switch_locale(); mail_send($recipients, $headers, $body); } } @@ -473,7 +479,7 @@ function mail_confirm_sms($code, $nickname, $address) function mail_notify_nudge($from, $to) { - common_init_locale($to->language); + common_switch_locale($to->language); // TRANS: Subject for 'nudge' notification email $subject = sprintf(_('You\'ve been nudged by %s'), $from->nickname); @@ -491,7 +497,7 @@ function mail_notify_nudge($from, $to) $from->nickname, common_local_url('all', array('nickname' => $to->nickname)), common_config('site', 'name')); - common_init_locale(); + common_switch_locale(); $headers = _mail_prepare_headers('nudge', $to->nickname, $from->nickname); @@ -525,7 +531,7 @@ function mail_notify_message($message, $from=null, $to=null) return true; } - common_init_locale($to->language); + common_switch_locale($to->language); // TRANS: Subject for direct-message notification email $subject = sprintf(_('New private message from %s'), $from->nickname); @@ -549,7 +555,7 @@ function mail_notify_message($message, $from=null, $to=null) $headers = _mail_prepare_headers('message', $to->nickname, $from->nickname); - common_init_locale(); + common_switch_locale(); return mail_to_user($to, $subject, $body, $headers); } @@ -577,7 +583,7 @@ function mail_notify_fave($other, $user, $notice) $bestname = $profile->getBestName(); - common_init_locale($other->language); + common_switch_locale($other->language); // TRANS: Subject for favorite notification email $subject = sprintf(_('%s (@%s) added your notice as a favorite'), $bestname, $user->nickname); @@ -605,7 +611,7 @@ function mail_notify_fave($other, $user, $notice) $headers = _mail_prepare_headers('fave', $other->nickname, $user->nickname); - common_init_locale(); + common_switch_locale(); mail_to_user($other, $subject, $body, $headers); } @@ -636,7 +642,7 @@ function mail_notify_attn($user, $notice) $bestname = $sender->getBestName(); - common_init_locale($user->language); + common_switch_locale($user->language); if ($notice->hasConversation()) { $conversationUrl = common_local_url('conversation', @@ -679,7 +685,7 @@ function mail_notify_attn($user, $notice) $headers = _mail_prepare_headers('mention', $user->nickname, $sender->nickname); - common_init_locale(); + common_switch_locale(); mail_to_user($user, $subject, $body, $headers); } diff --git a/lib/mailbox.php b/lib/mailbox.php index 90a58b4c48..2b00f5ffde 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/mailhandler.php b/lib/mailhandler.php index 890f6d5b49..e9ba418399 100644 --- a/lib/mailhandler.php +++ b/lib/mailhandler.php @@ -265,6 +265,10 @@ class MailHandler if (preg_match('/^\s*Begin\s+forward/', $line)) { break; } + // skip everything after a blank line if we already have content + if ($output !== '' && $line === '') { + break; + } $output .= ' ' . $line; } diff --git a/lib/mediafile.php b/lib/mediafile.php index 1c96c42d7a..c96c78ab5d 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 4556953667..f9552c1dcd 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 84c20a5b3f..5140663569 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 5265326b27..529d6a3f90 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); @@ -488,54 +496,47 @@ class NoticeListItem extends Widget function showNoticeSource() { - if ($this->notice->source) { + $ns = $this->notice->getSource(); + + if ($ns) { + $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')); - $source_name = _($this->notice->source); $this->out->text(' '); - switch ($this->notice->source) { - case 'web': - case 'xmpp': - case 'mail': - case 'omb': - case 'system': - case 'api': - $this->out->element('span', 'device', $source_name); - break; - default: + $name = $source_name; + $url = $ns->url; + $title = null; + + if (Event::handle('StartNoticeSourceLink', array($this->notice, &$name, &$url, &$title))) { $name = $source_name; - $url = null; - - if (Event::handle('StartNoticeSourceLink', array($this->notice, &$name, &$url, &$title))) { - $ns = Notice_source::staticGet($this->notice->source); - - if ($ns) { - $name = $ns->name; - $url = $ns->url; - } else { - $app = Oauth_application::staticGet('name', $this->notice->source); - if ($app) { - $name = $app->name; - $url = $app->source_url; - } - } - } - Event::handle('EndNoticeSourceLink', array($this->notice, &$name, &$url, &$title)); - - if (!empty($name) && !empty($url)) { - $this->out->elementStart('span', 'device'); - $this->out->element('a', array('href' => $url, - 'rel' => 'external', - 'title' => $title), - $name); - $this->out->elementEnd('span'); - } else { - $this->out->element('span', 'device', $name); - } - break; + $url = $ns->url; } + Event::handle('EndNoticeSourceLink', array($this->notice, &$name, &$url, &$title)); + + // if $ns->name and $ns->url are populated we have + // configured a source attr somewhere + if (!empty($name) && !empty($url)) { + + $this->out->elementStart('span', 'device'); + + $attrs = array( + 'href' => $url, + 'rel' => 'external' + ); + + if (!empty($title)) { + $attrs['title'] = $title; + } + + $this->out->element('a', $attrs, $name); + $this->out->elementEnd('span'); + } else { + $this->out->element('span', 'device', $name); + } + $this->out->elementEnd('span'); } } diff --git a/lib/pgsqlschema.php b/lib/pgsqlschema.php index 715065d774..272f7eff68 100644 --- a/lib/pgsqlschema.php +++ b/lib/pgsqlschema.php @@ -41,6 +41,7 @@ if (!defined('STATUSNET')) { * @category Database * @package StatusNet * @author Evan Prodromou <evan@status.net> + * @author Brenda Wallace <shiny@cpan.org> * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ @@ -79,7 +80,6 @@ class PgsqlSchema extends Schema $row = array(); while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) { -// var_dump($row); $cd = new ColumnDef(); $cd->name = $row['field']; @@ -143,6 +143,7 @@ class PgsqlSchema extends Schema $uniques = array(); $primary = array(); $indices = array(); + $onupdate = array(); $sql = "CREATE TABLE $name (\n"; @@ -155,7 +156,6 @@ class PgsqlSchema extends Schema } $sql .= $this->_columnSql($cd); - switch ($cd->key) { case 'UNI': $uniques[] = $cd->name; @@ -170,13 +170,7 @@ class PgsqlSchema extends Schema } if (count($primary) > 0) { // it really should be... - $sql .= ",\n primary key (" . implode(',', $primary) . ")"; - } - - - - foreach ($indices as $i) { - $sql .= ",\nindex {$name}_{$i}_idx ($i)"; + $sql .= ",\n PRIMARY KEY (" . implode(',', $primary) . ")"; } $sql .= "); "; @@ -185,10 +179,14 @@ class PgsqlSchema extends Schema foreach ($uniques as $u) { $sql .= "\n CREATE index {$name}_{$u}_idx ON {$name} ($u); "; } + + foreach ($indices as $i) { + $sql .= "CREATE index {$name}_{$i}_idx ON {$name} ($i)"; + } $res = $this->conn->query($sql); if (PEAR::isError($res)) { - throw new Exception($res->getMessage()); + throw new Exception($res->getMessage(). ' SQL was '. $sql); } return true; @@ -223,7 +221,7 @@ class PgsqlSchema extends Schema */ private function _columnTypeTranslation($type) { $map = array( - 'datetime' => 'timestamp' + 'datetime' => 'timestamp', ); if(!empty($map[$type])) { return $map[$type]; @@ -324,7 +322,7 @@ class PgsqlSchema extends Schema public function modifyColumn($table, $columndef) { - $sql = "ALTER TABLE $table MODIFY COLUMN " . + $sql = "ALTER TABLE $table ALTER COLUMN TYPE " . $this->_columnSql($columndef); $res = $this->conn->query($sql); @@ -397,16 +395,17 @@ class PgsqlSchema extends Schema $todrop = array_diff($cur, $new); $same = array_intersect($new, $cur); $tomod = array(); - foreach ($same as $m) { $curCol = $this->_byName($td->columns, $m); $newCol = $this->_byName($columns, $m); + if (!$newCol->equals($curCol)) { - $tomod[] = $newCol->name; + // BIG GIANT TODO! + // stop it detecting different types and trying to modify on every page request +// $tomod[] = $newCol->name; } } - if (count($toadd) + count($todrop) + count($tomod) == 0) { // nothing to do return true; @@ -430,11 +429,12 @@ class PgsqlSchema extends Schema foreach ($tomod as $columnName) { $cd = $this->_byName($columns, $columnName); - $phrase[] = 'MODIFY COLUMN ' . $this->_columnSql($cd); + /* brute force */ + $phrase[] = 'DROP COLUMN ' . $columnName; + $phrase[] = 'ADD COLUMN ' . $this->_columnSql($cd); } $sql = 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $phrase); - $res = $this->conn->query($sql); if (PEAR::isError($res)) { @@ -496,12 +496,21 @@ class PgsqlSchema extends Schema * * @return string correct SQL for that column */ - private function _columnSql($cd) { $sql = "{$cd->name} "; $type = $this->_columnTypeTranslation($cd->type); + //handle those mysql enum fields that postgres doesn't support + if (preg_match('!^enum!', $type)) { + $allowed_values = preg_replace('!^enum!', '', $type); + $sql .= " text check ({$cd->name} in $allowed_values)"; + return $sql; + } + if (!empty($cd->auto_increment)) { + $type = "bigserial"; // FIXME: creates the wrong name for the sequence for some internal sequence-lookup function, so better fix this to do the real 'create sequence' dance. + } + if (!empty($cd->size)) { $sql .= "{$type}({$cd->size}) "; } else { @@ -513,14 +522,10 @@ class PgsqlSchema extends Schema } else { $sql .= ($cd->nullable) ? "null " : "not null "; } - - if (!empty($cd->auto_increment)) { - $sql .= " auto_increment "; - } - if (!empty($cd->extra)) { - $sql .= "{$cd->extra} "; - } +// if (!empty($cd->extra)) { +// $sql .= "{$cd->extra} "; +// } return $sql; } diff --git a/lib/ping.php b/lib/ping.php index 735af9ef13..be2933ae34 100644 --- a/lib/ping.php +++ b/lib/ping.php @@ -45,7 +45,15 @@ function ping_broadcast_notice($notice) { $tags)); $request = HTTPClient::start(); - $httpResponse = $request->post($notify_url, array('Content-Type: text/xml'), $req); + $request->setConfig('connect_timeout', common_config('ping', 'timeout')); + $request->setConfig('timeout', common_config('ping', 'timeout')); + try { + $httpResponse = $request->post($notify_url, array('Content-Type: text/xml'), $req); + } catch (Exception $e) { + common_log(LOG_ERR, + "Exception pinging $notify_url: " . $e->getMessage()); + continue; + } if (!$httpResponse || mb_strlen($httpResponse->getBody()) == 0) { common_log(LOG_WARNING, diff --git a/lib/plugin.php b/lib/plugin.php index 65ccdafbb0..f63bdf3093 100644 --- a/lib/plugin.php +++ b/lib/plugin.php @@ -91,6 +91,7 @@ class Plugin $path = INSTALLDIR . "/plugins/$name/locale"; if (file_exists($path) && is_dir($path)) { bindtextdomain($name, $path); + bind_textdomain_codeset($name, 'UTF-8'); } } } diff --git a/lib/popularnoticesection.php b/lib/popularnoticesection.php index 296ddbbb50..f70a972efe 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.lat,notice.lon,location_id,location_ns,notice.repeat_of' . ' ORDER BY weight DESC'; $offset = 0; diff --git a/lib/profileformaction.php b/lib/profileformaction.php index 0ffafe5fb8..51c89a922e 100644 --- a/lib/profileformaction.php +++ b/lib/profileformaction.php @@ -60,7 +60,16 @@ class ProfileFormAction extends RedirectingAction $this->checkSessionToken(); if (!common_logged_in()) { - $this->clientError(_('Not logged in.')); + if ($_SERVER['REQUEST_METHOD'] == 'POST') { + $this->clientError(_('Not logged in.')); + } else { + // Redirect to login. + common_set_returnto($this->selfUrl()); + $user = common_current_user(); + if (Event::handle('RedirectToLogin', array($this, $user))) { + common_redirect(common_local_url('login'), 303); + } + } return false; } @@ -97,7 +106,7 @@ class ProfileFormAction extends RedirectingAction if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->handlePost(); - $this->returnToArgs(); + $this->returnToPrevious(); } } diff --git a/lib/redirectingaction.php b/lib/redirectingaction.php index f115852742..3a358f891c 100644 --- a/lib/redirectingaction.php +++ b/lib/redirectingaction.php @@ -53,12 +53,13 @@ class RedirectingAction extends Action * * To be called only after successful processing. * - * @fixme rename this -- it obscures Action::returnToArgs() which - * returns a list of arguments, and is a bit confusing. + * Note: this was named returnToArgs() up through 0.9.2, which + * caused problems because there's an Action::returnToArgs() + * already which does something different. * * @return void */ - function returnToArgs() + function returnToPrevious() { // Now, gotta figure where we go back to $action = false; @@ -77,7 +78,7 @@ class RedirectingAction extends Action if ($action) { common_redirect(common_local_url($action, $args, $params), 303); } else { - $url = $this->defaultReturnToUrl(); + $url = $this->defaultReturnTo(); } common_redirect($url, 303); } diff --git a/lib/router.php b/lib/router.php index a040abb832..86dd116c8d 100644 --- a/lib/router.php +++ b/lib/router.php @@ -136,6 +136,11 @@ class Router $m->connect('main/'.$a, array('action' => $a)); } + // Also need a block variant accepting ID on URL for mail links + $m->connect('main/block/:profileid', + array('action' => 'block'), + array('profileid' => '[0-9]+')); + $m->connect('main/sup/:seconds', array('action' => 'sup'), array('seconds' => '[0-9]+')); @@ -146,6 +151,8 @@ class Router $m->connect('main/xrds', array('action' => 'publicxrds')); + $m->connect('.well-known/host-meta', + array('action' => 'hostmeta')); // these take a code @@ -258,7 +265,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}')); @@ -535,7 +542,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', @@ -592,7 +599,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', @@ -650,10 +657,16 @@ class Router $m->connect('api/statusnet/groups/create.:format', array('action' => 'ApiGroupCreate', 'format' => '(xml|json)')); + + $m->connect('api/statusnet/groups/update/:id.:format', + array('action' => 'ApiGroupProfileUpdate', + 'id' => '[a-zA-Z0-9]+', + 'format' => '(xml|json)')); + // 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( @@ -662,9 +675,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')); @@ -751,12 +764,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', @@ -817,12 +830,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 62e3f21b61..f366db9729 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 1503c96d4f..e5def514e3 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(); + if (is_null($conn)) { + // XXX: there should be an easier way to do this. + $user = new User(); + $conn = $user->getDatabaseConnection(); + $user->free(); + unset($user); + } - $this->conn = $user->getDatabaseConnection(); - - $user->free(); - - 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) { - $type = common_config('db', 'type'); - if (empty(self::$_single)) { - $schemaClass = ucfirst($type).'Schema'; - self::$_single = new $schemaClass(); + if (is_null($conn)) { + $key = 'default'; + } else { + $key = md5(serialize($conn->dsn)); } - return self::$_single; + + $type = common_config('db', 'type'); + if (empty(self::$_static[$key])) { + $schemaClass = ucfirst($type).'Schema'; + self::$_static[$key] = new $schemaClass($conn); + } + return self::$_static[$key]; } /** diff --git a/lib/spawningdaemon.php b/lib/spawningdaemon.php index 2f9f6e32e3..ea09b6fb2f 100644 --- a/lib/spawningdaemon.php +++ b/lib/spawningdaemon.php @@ -204,7 +204,7 @@ abstract class SpawningDaemon extends Daemon // Reconnect main memcached, or threads will stomp on // each other and corrupt their requests. - $cache = common_memcache(); + $cache = Cache::instance(); if ($cache) { $cache->reconnect(); } diff --git a/lib/statusnet.php b/lib/statusnet.php index ac5d101342..ff0502915a 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 5d5c7ccfbd..1d9a5ad207 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); @@ -565,7 +578,7 @@ class StompQueueManager extends QueueManager function incDeliveryCount($msgId) { $count = 0; - $cache = common_memcache(); + $cache = Cache::instance(); if ($cache) { $key = 'statusnet:stomp:message-retries:' . $msgId; $count = $cache->increment($key); @@ -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 0be8c3b9df..992fce870e 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. @@ -51,6 +54,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { class Theme { + var $name = null; var $dir = null; var $path = null; @@ -67,6 +71,10 @@ class Theme if (empty($name)) { $name = common_config('site', 'theme'); } + if (!self::validName($name)) { + throw new ServerException("Invalid theme name."); + } + $this->name = $name; // Check to see if it's in the local dir @@ -76,7 +84,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,44 +97,65 @@ class Theme if (file_exists($fulldir) && is_dir($fulldir)) { $this->dir = $fulldir; - - $path = common_config('theme', 'path'); - - if (empty($path)) { - $path = common_config('site', 'path') . '/theme/'; - } - - if ($path[strlen($path)-1] != '/') { - $path .= '/'; - } - - if ($path[0] != '/') { - $path = '/'.$path; - } - - $server = common_config('theme', 'server'); - - if (empty($server)) { - $server = common_config('site', 'server'); - } - - $ssl = common_config('theme', 'ssl'); - - if (is_null($ssl)) { // null -> guess - if (common_config('site', 'ssl') == 'always' && - !common_config('theme', 'server')) { - $ssl = true; - } else { - $ssl = false; - } - } - - $protocol = ($ssl) ? 'https' : 'http'; - - $this->path = $protocol . '://'.$server.$path.$name; + $this->path = $this->relativeThemePath('theme', 'theme', $name); } } + /** + * 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 + */ + + protected function relativeThemePath($group, $fallbackSubdir, $name) + { + $path = common_config($group, 'path'); + + if (empty($path)) { + $path = common_config('site', 'path') . '/'; + if ($fallbackSubdir) { + $path .= $fallbackSubdir . '/'; + } + } + + if ($path[strlen($path)-1] != '/') { + $path .= '/'; + } + + if ($path[0] != '/') { + $path = '/'.$path; + } + + $server = common_config($group, 'server'); + + if (empty($server)) { + $server = common_config('site', 'server'); + } + + $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'; + + $path = $protocol . '://'.$server.$path.$name; + return $path; + } + /** * Gets the full local filename of a file in this theme. * @@ -153,6 +182,58 @@ class Theme return $this->path.'/'.$relative; } + /** + * Fetch a list of other themes whose CSS needs to be pulled in before + * this theme's, based on following the theme.ini 'include' settings. + * (May be empty if this theme has no include dependencies.) + * + * @return array of strings with theme names + */ + function getDeps() + { + $chain = $this->doGetDeps(array($this->name)); + array_pop($chain); // Drop us back off + return $chain; + } + + protected function doGetDeps($chain) + { + $data = $this->getMetadata(); + if (!empty($data['include'])) { + $include = $data['include']; + + // Protect against cycles! + if (!in_array($include, $chain)) { + try { + $theme = new Theme($include); + array_unshift($chain, $include); + return $theme->doGetDeps($chain); + } catch (Exception $e) { + common_log(LOG_ERR, + "Exception while fetching theme dependencies " . + "for $this->name: " . $e->getMessage()); + } + } + } + return $chain; + } + + /** + * Pull data from the theme's theme.ini file. + * @fixme calling getFile will fall back to default theme, this may be unsafe. + * + * @return associative array of strings + */ + function getMetadata() + { + $iniFile = $this->getFile('theme.ini'); + if (file_exists($iniFile)) { + return parse_ini_file($iniFile); + } else { + return array(); + } + } + /** * Gets the full path of a file in a theme dir based on its relative name * @@ -236,7 +317,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'; } /** @@ -255,4 +342,9 @@ class Theme return $instroot; } + + static function validName($name) + { + return preg_match('/^[a-z0-9][a-z0-9_-]*$/i', $name); + } } diff --git a/lib/themeuploader.php b/lib/themeuploader.php new file mode 100644 index 0000000000..5a48e884ed --- /dev/null +++ b/lib/themeuploader.php @@ -0,0 +1,336 @@ +<?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; + } + + // Is this a safe or skippable file? + $path = pathinfo($name); + if ($this->skippable($path['filename'], $path['extension'])) { + // Documentation and such... booooring + continue; + } else { + $this->validateFile($path['filename'], $path['extension']); + } + + // Check the directory structure... + $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); + } + + $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")); + } + } + + /** + * @fixme Probably most unrecognized files should just be skipped... + */ + protected function skippable($filename, $ext) + { + $skip = array('txt', 'html', 'rtf', 'doc', 'docx', 'odt', 'xcf'); + if (strtolower($filename) == 'readme') { + return true; + } + if (in_array(strtolower($ext), $skip)) { + return true; + } + if ($filename == '' || substr($filename, 0, 1) == '.') { + // Skip Unix-style hidden files + return true; + } + if ($filename == '__MACOSX') { + // Skip awful metadata files Mac OS X slips in for you. + // Thanks Apple! + return true; + } + return false; + } + + protected function validateFile($filename, $ext) + { + $this->validateFileOrFolder($filename); + $this->validateExtension($filename, $ext); + // @fixme validate content + } + + protected function validateFileOrFolder($name) + { + if (!preg_match('/^[a-z0-9_\.-]+$/i', $name)) { + common_log(LOG_ERR, "Bad theme filename: $name"); + $msg = _("Theme contains invalid file or folder name. " . + "Stick with ASCII letters, digits, underscore, and minus sign."); + throw new ClientException($msg); + } + if (preg_match('/\.(php|cgi|asp|aspx|js|vb)\w/i', $name)) { + common_log(LOG_ERR, "Unsafe theme filename: $name"); + $msg = _("Theme contains unsafe file extension names; may be unsafe."); + throw new ClientException($msg); + } + return true; + } + + protected function validateExtension($base, $ext) + { + $allowed = array('css', // CSS may need validation + 'png', 'gif', 'jpg', 'jpeg', + 'svg', // SVG images/fonts may need validation + 'ttf', 'eot', 'woff'); + if (!in_array(strtolower($ext), $allowed)) { + if ($ext == 'ini' && $base == 'theme') { + // theme.ini exception + return true; + } + $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/usernoprofileexception.php b/lib/usernoprofileexception.php index 6744d2529d..e0186fef97 100644 --- a/lib/usernoprofileexception.php +++ b/lib/usernoprofileexception.php @@ -55,7 +55,9 @@ class UserNoProfileException extends ServerException { $this->user = $user; - $message = sprintf(_("User %s (%d) has no profile record."), + // TRANS: Exception text shown when no profile can be found for a user. + // TRANS: %1$s is a user nickname, $2$d is a user ID (number). + $message = sprintf(_("User %1$s (%2$d) has no profile record."), $user->nickname, $user->id); parent::__construct($message); diff --git a/lib/util.php b/lib/util.php index 1f3aaf711a..20c9144d47 100644 --- a/lib/util.php +++ b/lib/util.php @@ -34,6 +34,14 @@ function common_user_error($msg, $code=400) $err->showPage(); } +/** + * This should only be used at setup; processes switching languages + * to send text to other users should use common_switch_locale(). + * + * @param string $language Locale language code (optional; empty uses + * current user's preference or site default) + * @return mixed success + */ function common_init_locale($language=null) { if(!$language) { @@ -41,13 +49,24 @@ function common_init_locale($language=null) } putenv('LANGUAGE='.$language); putenv('LANG='.$language); - return setlocale(LC_ALL, $language . ".utf8", + $ok = setlocale(LC_ALL, $language . ".utf8", $language . ".UTF8", $language . ".utf-8", $language . ".UTF-8", $language); + + return $ok; } +/** + * Initialize locale and charset settings and gettext with our message catalog, + * using the current user's language preference or the site default. + * + * This should generally only be run at framework initialization; code switching + * languages at runtime should call common_switch_language(). + * + * @access private + */ function common_init_language() { mb_internal_encoding('UTF-8'); @@ -69,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`; @@ -82,13 +101,39 @@ 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); } + common_init_gettext(); +} + +/** + * @access private + */ +function common_init_gettext() +{ + setlocale(LC_CTYPE, 'C'); + // So we do not have to make people install the gettext locales + $path = common_config('site','locale_path'); + bindtextdomain("statusnet", $path); + bind_textdomain_codeset("statusnet", "UTF-8"); + textdomain("statusnet"); +} + +/** + * Switch locale during runtime, and poke gettext until it cries uncle. + * Otherwise, sometimes it doesn't actually switch away from the old language. + * + * @param string $language code for locale ('en', 'fr', 'pt_BR' etc) + */ +function common_switch_locale($language=null) +{ + common_init_locale($language); + setlocale(LC_CTYPE, 'C'); // So we do not have to make people install the gettext locales $path = common_config('site','locale_path'); @@ -109,23 +154,38 @@ function common_timezone() return common_config('site', 'timezone'); } +function common_valid_language($lang) +{ + if ($lang) { + // Validate -- we don't want to end up with a bogus code + // left over from some old junk. + foreach (common_config('site', 'languages') as $code => $info) { + if ($info['lang'] == $lang) { + return true; + } + } + } + return false; +} + function common_language() { + // Allow ?uselang=xx override, very useful for debugging + // and helping translators check usage and context. + if (isset($_GET['uselang'])) { + $uselang = strval($_GET['uselang']); + if (common_valid_language($uselang)) { + return $uselang; + } + } // If there is a user logged in and they've set a language preference // then return that one... if (_have_config() && common_logged_in()) { $user = common_current_user(); - $user_language = $user->language; - if ($user->language) { - // Validate -- we don't want to end up with a bogus code - // left over from some old junk. - foreach (common_config('site', 'languages') as $code => $info) { - if ($info['lang'] == $user_language) { - return $user_language; - } - } + if (common_valid_language($user->language)) { + return $user->language; } } @@ -784,7 +844,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'); @@ -826,7 +889,7 @@ function common_linkify($url) { return XMLStringer::estring('a', $attrs, $url); } -function common_shorten_links($text) +function common_shorten_links($text, $always = false) { common_debug("common_shorten_links() called"); @@ -836,7 +899,7 @@ function common_shorten_links($text) common_debug("maxLength = $maxLength"); - if (mb_strlen($text) > $maxLength) { + if ($always || mb_strlen($text) > $maxLength) { common_debug("Forcing shortening"); return common_replace_urls_callback($text, array('File_redirection', 'forceShort')); } else { @@ -981,8 +1044,7 @@ function common_local_url($action, $args=null, $params=null, $fragment=null, $ad function common_is_sensitive($action) { - static $sensitive = array('login', 'register', 'passwordsettings', - 'twittersettings', 'api'); + static $sensitive = array('login', 'register', 'passwordsettings', 'api'); $ssl = null; if (Event::handle('SensitiveAction', array($action, &$ssl))) { @@ -1189,11 +1251,6 @@ function common_redirect($url, $code=307) exit; } -function common_broadcast_notice($notice, $remote=false) -{ - // DO NOTHING! -} - // Stick the notice on the queue function common_enqueue_notice($notice) @@ -1209,9 +1266,8 @@ function common_enqueue_notice($notice) $transports[] = 'plugin'; } - // @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); } @@ -1299,13 +1355,13 @@ function common_mtrand($bytes) /** * Record the given URL as the return destination for a future * form submission, to be read by common_get_returnto(). - * + * * @param string $url - * + * * @fixme as a session-global setting, this can allow multiple forms * to conflict and overwrite each others' returnto destinations if * the user has multiple tabs or windows open. - * + * * Should refactor to index with a token or otherwise only pass the * data along its intended path. */ @@ -1318,13 +1374,13 @@ function common_set_returnto($url) /** * Fetch a return-destination URL previously recorded by * common_set_returnto(). - * + * * @return mixed URL string or null - * + * * @fixme as a session-global setting, this can allow multiple forms * to conflict and overwrite each others' returnto destinations if * the user has multiple tabs or windows open. - * + * * Should refactor to index with a token or otherwise only pass the * data along its intended path. */ @@ -1353,7 +1409,7 @@ function common_log_line($priority, $msg) { static $syslog_priorities = array('LOG_EMERG', 'LOG_ALERT', 'LOG_CRIT', 'LOG_ERR', 'LOG_WARNING', 'LOG_NOTICE', 'LOG_INFO', 'LOG_DEBUG'); - return date('Y-m-d H:i:s') . ' ' . $syslog_priorities[$priority] . ': ' . $msg . "\n"; + return date('Y-m-d H:i:s') . ' ' . $syslog_priorities[$priority] . ': ' . $msg . PHP_EOL; } function common_request_id() @@ -1737,21 +1793,6 @@ function common_session_token() return $_SESSION['token']; } -function common_cache_key($extra) -{ - return Cache::key($extra); -} - -function common_keyize($str) -{ - return Cache::keyize($str); -} - -function common_memcache() -{ - return Cache::instance(); -} - function common_license_terms($uri) { if(preg_match('/creativecommons.org\/licenses\/([^\/]+)/', $uri, $matches)) { @@ -1908,6 +1949,15 @@ function common_url_to_nickname($url) $path = preg_replace('@/$@', '', $parts['path']); $path = preg_replace('@^/@', '', $path); $path = basename($path); + + // Hack for MediaWiki user pages, in the form: + // http://example.com/wiki/User:Myname + // ('User' may be localized.) + if (strpos($path, ':')) { + $parts = array_filter(explode(':', $path)); + $path = $parts[count($parts) - 1]; + } + if ($path) { return common_nicknamize($path); } diff --git a/plugins/OStatus/lib/xrd.php b/lib/xrd.php similarity index 64% rename from plugins/OStatus/lib/xrd.php rename to lib/xrd.php index 34b28790b7..145cd64cb4 100644 --- a/plugins/OStatus/lib/xrd.php +++ b/lib/xrd.php @@ -31,11 +31,11 @@ class XRD { const XML_NS = 'http://www.w3.org/2000/xmlns/'; - + const XRD_NS = 'http://docs.oasis-open.org/ns/xri/xrd-1.0'; const HOST_META_NS = 'http://host-meta.net/xrd/1.0'; - + public $expires; public $subject; @@ -43,11 +43,11 @@ class XRD public $host; public $alias = array(); - + public $types = array(); - + public $links = array(); - + public static function parse($xml) { $xrd = new XRD(); @@ -61,11 +61,11 @@ class XRD error_reporting($old); if (!$ok) { - throw new Exception("Invalid XML"); + throw new Exception("Invalid XML."); } $xrd_element = $dom->getElementsByTagName('XRD')->item(0); if (!$xrd_element) { - throw new Exception("Invalid XML, missing XRD root"); + throw new Exception("Invalid XML, missing XRD root."); } // Check for host-meta host @@ -86,7 +86,7 @@ class XRD case 'Subject': $xrd->subject = $node->nodeValue; break; - + case 'Alias': $xrd->alias[] = $node->nodeValue; break; @@ -106,51 +106,50 @@ 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); - } + if ($this->expires) { + $xs->element('Expires', null, $this->expires); + } - foreach ($this->alias as $alias) { - $alias_dom = $dom->createElement('Alias', $alias); - $xrd_dom->appendChild($alias_dom); - } + if ($this->subject) { + $xs->element('Subject', null, $this->subject); + } - foreach ($this->types as $type) { - $type_dom = $dom->createElement('Type', $type); - $xrd_dom->appendChild($type_dom); - } + foreach ($this->alias as $alias) { + $xs->element('Alias', null, $alias); + } - foreach ($this->links as $link) { - $link_dom = $this->saveLink($dom, $link); - $xrd_dom->appendChild($link_dom); - } + 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'); + } - return $dom->saveXML(); + $xs->elementEnd('XRD'); + + return $xs->getString(); } function parseType($element) { return array(); } - + function parseLink($element) { $link = array(); @@ -169,32 +168,4 @@ 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/lib/xrdsoutputter.php b/lib/xrdsoutputter.php index 4b77ed5a3a..95dc73300a 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 b9bae52129..9824826018 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:00+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:04+0000\n" "Language-Team: Afrikaans\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,38 +83,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +122,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:114 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 +156,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 +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 "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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +256,7 @@ msgstr "Kon nie die profiel stoor nie." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -313,49 +313,50 @@ msgstr "Direkte boodskappe aan %s" msgid "All the direct messages sent to %s" msgstr "Alle direkte boodskappe gestuur aan %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Die boodskap bevat geen inhoud nie!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Dit is te lank. Die maksimum boodskaplengte is %d karakters." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Die ontvanger kon gevind word nie." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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,134 +374,112 @@ 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 -msgid "Could not determine source user." -msgstr "" - -#: actions/apifriendshipsshow.php:142 -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 "" "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 -#, 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 -#, 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 "Groep nie gevind nie!" +msgstr "Nie gevind nie." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 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 -#, php-format -msgid "Could not remove user %1$s from group %2$s." -msgstr "" +msgstr "U is nie 'n lid van die groep 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" @@ -515,15 +494,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 @@ -535,10 +514,6 @@ msgstr "" msgid "Invalid nickname / password!" msgstr "Ongeldige gebruikersnaam of wagwoord!" -#: actions/apioauthauthorize.php:159 -msgid "Database error deleting OAuth application user." -msgstr "" - #: actions/apioauthauthorize.php:185 msgid "Database error inserting OAuth application user." msgstr "" @@ -584,12 +559,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:463 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 +572,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 +589,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." @@ -627,67 +602,58 @@ msgstr "U mag nie 'n ander gebruiker se status verwyder nie." msgid "No such notice." msgstr "Die kennisgewing bestaan nie." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "U kan nie u eie kennisgewings herhaal nie." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nie gevind nie." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "" - -#: actions/apitimelinementions.php:117 -#, 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:107 actions/publicrss.php:103 -#, php-format -msgid "%s public timeline" -msgstr "" - -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -702,16 +668,6 @@ msgstr "Na %s herhaal" msgid "Repeats of %s" msgstr "Herhalings van %s" -#: actions/apitimelinetag.php:104 actions/tag.php:67 -#, php-format -msgid "Notices tagged with %s" -msgstr "" - -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 -#, php-format -msgid "Updates tagged with %1$s on %2$s!" -msgstr "" - #: actions/attachment.php:73 msgid "No such attachment." msgstr "Die aanhangsel bestaan nie." @@ -742,12 +698,6 @@ msgstr "Avatar" msgid "You can upload your personal avatar. The maximum file size is %s." 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 -msgid "User without matching profile." -msgstr "" - #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 msgid "Avatar settings" @@ -764,7 +714,7 @@ msgid "Preview" msgstr "Voorskou" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Skrap" @@ -804,11 +754,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 +770,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,23 +788,24 @@ 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 "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -865,25 +815,11 @@ msgstr "" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Die groep bestaan nie." -#: actions/blockedfromgroup.php:97 -#, php-format -msgid "%s blocked profiles" -msgstr "" - -#: actions/blockedfromgroup.php:100 -#, php-format -msgid "%1$s blocked profiles, page %2$d" -msgstr "" - -#: actions/blockedfromgroup.php:115 -msgid "A list of the users blocked from joining this group." -msgstr "" - #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" msgstr "Gee gebruiker weer toegang tot die groep" @@ -898,33 +834,20 @@ msgstr "Deblokkeer hierdie gebruiker" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, 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 -msgid "Confirmation code not found." -msgstr "" - -#: actions/confirmaddress.php:85 -msgid "That confirmation code is not for you!" -msgstr "" - #. 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 "" -#. TRANS: Client error for an already confirmed email/jabbel/sms address. -#: actions/confirmaddress.php:96 -msgid "That address has already been confirmed." -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. #. TRANS: Server error thrown on database error updating IM preferences. @@ -944,7 +867,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 +889,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 +902,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:1307 msgid "There was a problem with your session token." msgstr "" @@ -1010,7 +933,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 +962,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Verwyder hierdie kennisgewing" @@ -1077,45 +1000,49 @@ 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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, 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: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 +1050,53 @@ 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 -msgid "Turn background image on or off." -msgstr "" - -#: actions/designadminpanel.php:482 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 "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 -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 "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 +1106,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 +1220,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 +1260,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 +1276,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 +1290,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,16 +1315,14 @@ 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" #. TRANS: Form legend for e-mail preferences form. #: 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 @@ -1435,29 +1354,18 @@ msgstr "" msgid "I want to post notices by email." msgstr "" -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:219 -msgid "Publish a MicroID for my email address." -msgstr "" - #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Voorkeure is gestoor." +msgstr "E-posadresse" #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." msgstr "Geen e-posadres." -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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 "Nie 'n geldige e-posadres nie." @@ -1467,18 +1375,13 @@ msgstr "Nie 'n geldige e-posadres nie." msgid "That is already your email address." 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 -msgid "That email address already belongs to another user." -msgstr "" - #. 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 "" +msgstr "Kon nie e-posbevestiging verwyder nie." #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1487,25 +1390,10 @@ msgid "" "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. -#. 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 "" - -#. 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 "Dit is die verkeerde IM-adres." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: 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. @@ -1515,9 +1403,8 @@ msgstr "Dit is nie u e-posadres nie." #. TRANS: Message given after successfully removing a registered e-mail address. #: 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." @@ -1535,19 +1422,6 @@ msgstr "Kon nie gebruikersdata opdateer nie." msgid "Incoming email address removed." 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 -msgid "New incoming email address added." -msgstr "" - -#: actions/favor.php:79 -msgid "This notice is already a favorite!" -msgstr "" - -#: actions/favor.php:92 lib/disfavorform.php:140 -msgid "Disfavor favorite" -msgstr "" - #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 msgid "Popular notices" @@ -1585,11 +1459,6 @@ msgstr "" msgid "%s's favorite notices" msgstr "%s se gunsteling kennisgewings" -#: actions/favoritesrss.php:115 -#, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "" - #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" @@ -1617,10 +1486,6 @@ msgstr "Geen kennisgewing." msgid "No attachments." msgstr "Geen aanhangsels." -#: actions/file.php:51 -msgid "No uploaded attachments." -msgstr "" - #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "" @@ -1629,10 +1494,6 @@ msgstr "" msgid "User being listened to does not exist." msgstr "" -#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 -msgid "You can use the local subscription!" -msgstr "" - #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." msgstr "" @@ -1649,11 +1510,6 @@ msgstr "" msgid "Remote service uses unknown version of OMB protocol." msgstr "" -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Kon nie die profiel stoor nie." - #: actions/getfile.php:79 msgid "No such file." msgstr "Die lêer bestaan nie." @@ -1670,23 +1526,15 @@ msgstr "Ongeldige rol." msgid "This role is reserved and cannot be set." msgstr "" -#: actions/grantrole.php:75 -msgid "You cannot grant user roles on this site." -msgstr "" - -#: actions/grantrole.php:82 -msgid "User already has this role." -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 "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." @@ -1699,14 +1547,6 @@ msgstr "Geen groep verskaf nie." msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -msgid "User is already blocked from group." -msgstr "" - -#: actions/groupblock.php:100 -msgid "User is not a member of group." -msgstr "" - #: actions/groupblock.php:134 actions/groupmembers.php:360 msgid "Block user from group" msgstr "Blok gebruiker toegang tot die groep" @@ -1719,47 +1559,21 @@ msgid "" "the group in the future." msgstr "" -#. 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 "" - #. 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 "Blok hierdie gebruiker van hierdie groep" -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" - #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." msgstr "Geen ID." -#: actions/groupdesignsettings.php:68 -msgid "You must be logged in to edit a group." -msgstr "" - -#: actions/groupdesignsettings.php:144 -msgid "Group design" -msgstr "" - #: actions/groupdesignsettings.php:155 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 -#: lib/designsettings.php:391 lib/designsettings.php:413 -msgid "Couldn't update your design." -msgstr "" - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -msgid "Design preferences saved." -msgstr "" - #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" msgstr "Groepslogo" @@ -1787,15 +1601,6 @@ msgstr "Die opdatering van die logo het gefaal." msgid "%s group members" msgstr "lede van die groep %s" -#: 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 "Administrateur" @@ -1804,10 +1609,6 @@ msgstr "Administrateur" msgid "Block" msgstr "Blokkeer" -#: actions/groupmembers.php:487 -msgid "Make user an admin of the group" -msgstr "" - #: actions/groupmembers.php:519 msgid "Make Admin" msgstr "Maak Admin" @@ -1820,17 +1621,11 @@ 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 -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" @@ -1862,10 +1657,6 @@ msgid "" "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." @@ -1889,10 +1680,6 @@ msgstr "" 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 "" @@ -1923,10 +1710,6 @@ msgstr "IM is nie beskikbaar nie." msgid "IM address" msgstr "IP-adres" -#: 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 @@ -1947,9 +1730,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: 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 @@ -2017,16 +1799,13 @@ msgstr "Dit is die verkeerde IM-adres." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: 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. @@ -2036,19 +1815,8 @@ msgstr "Dit is nie u Jabber-ID nie." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Die adres is verwyder." - -#: 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 "" +msgstr "Inkomende e-posadres is verwyder." #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." @@ -2058,31 +1826,18 @@ msgstr "" msgid "Invites have been disabled." msgstr "" -#: actions/invite.php:41 -#, fuzzy, php-format -msgid "You must be logged in to invite other users to use %s." -msgstr "U moet aanteken alvorens u by groep kan aansluit." - #: actions/invite.php:72 #, php-format msgid "Invalid email address: %s" msgstr "Ongeldige e-posadres: %s" -#: actions/invite.php:110 -msgid "Invitation(s) sent" -msgstr "" - #: actions/invite.php:112 msgid "Invite new users" msgstr "Nooi nuwe gebruikers" -#: 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2175,9 +1930,7 @@ msgstr "U moet aanteken alvorens u by groep kan aansluit." msgid "No nickname or ID." msgstr "Geen gebruikersnaam of ID nie." -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s het by groep %2$s aangesluit" @@ -2186,71 +1939,64 @@ msgstr "%1$s het by groep %2$s aangesluit" msgid "You must be logged in to leave a group." msgstr "U moet aanteken alvorens u 'n groep kan verlaat." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "U is nie 'n lid van daardie groep nie." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2262,22 +2008,13 @@ msgid "Can't make %1$s an admin for group %2$s." 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 -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 "'n Bron-URL is verpligtend." @@ -2290,20 +2027,19 @@ msgstr "Dit was nie moontlik om die applikasie te skep nie." msgid "New group" msgstr "Nuwe groep" -#: 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 "Nuwe boodskap" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "U kan nie 'n boodskap aan hierdie gebruiker stuur nie." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Geen inhoud nie!" @@ -2311,7 +2047,8 @@ msgstr "Geen inhoud nie!" msgid "No recipient specified." msgstr "Geen ontvanger gespesifiseer nie." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2320,23 +2057,10 @@ msgstr "" msgid "Message sent" msgstr "Boodskap is gestuur." -#: 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 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax-fout" -#: actions/newnotice.php:69 -msgid "New notice" -msgstr "" - -#: actions/newnotice.php:217 -msgid "Notice posted" -msgstr "" - #: actions/noticesearch.php:68 #, php-format msgid "" @@ -2348,11 +2072,6 @@ msgstr "" msgid "Text search" msgstr "Teks soektog" -#: actions/noticesearch.php:91 -#, php-format -msgid "Search results for \"%1$s\" on %2$s" -msgstr "" - #: actions/noticesearch.php:121 #, php-format msgid "" @@ -2372,14 +2091,9 @@ msgstr "" msgid "Updates with \"%s\"" msgstr "Opdaterings met \"%s\"" -#: 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 his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2390,35 +2104,14 @@ msgstr "Die por is gestuur" msgid "Nudge sent!" msgstr "Die por is gestuur!" -#: 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." @@ -2432,46 +2125,27 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 -msgid "Not a supported data format." -msgstr "" - #: actions/opensearch.php:64 msgid "People Search" msgstr "Mense soek" -#: 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 "" @@ -2488,48 +2162,14 @@ msgstr "" 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 "" @@ -2559,7 +2199,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" @@ -2571,11 +2211,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." @@ -2596,7 +2236,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" @@ -2605,24 +2245,19 @@ 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 "Tema is nie beskikbaar nie: %s" +msgstr "Tema-gids" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Avatar-gids" +msgstr "Tema-gids" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format -msgid "Background directory not writable: %s." -msgstr "Agtergrond-gids" - -#: actions/pathsadminpanel.php:177 #, php-format -msgid "Locales directory not readable: %s." -msgstr "" +msgid "Background directory not writable: %s." +msgstr "Tema-gids" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2644,10 +2279,6 @@ msgstr "" msgid "Path" msgstr "Pad" -#: actions/pathsadminpanel.php:242 -msgid "Site path" -msgstr "" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2744,10 +2375,6 @@ msgstr "SSL-bediener" msgid "Server to direct SSL requests to" msgstr "" -#: actions/pathsadminpanel.php:352 -msgid "Save paths" -msgstr "" - #: actions/peoplesearch.php:52 #, php-format msgid "" @@ -2759,30 +2386,16 @@ msgstr "" msgid "People search" msgstr "Soek gebruikers" -#: actions/peopletag.php:68 -#, fuzzy, php-format -msgid "Not a valid people tag: %s." -msgstr "Nie 'n geldige e-posadres nie." - #: actions/peopletag.php:142 #, php-format msgid "Users self-tagged with %1$s - page %2$d" msgstr "" -#: actions/postnotice.php:95 -#, fuzzy -msgid "Invalid notice content." -msgstr "Ongeldige token." - #: 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." @@ -2792,47 +2405,43 @@ msgstr "" 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: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 "" @@ -2872,40 +2481,15 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 -#, php-format -msgid "Bio is too long (max %d chars)." -msgstr "" - #: actions/profilesettings.php:235 actions/siteadminpanel.php: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 "Ongeldige etiket: \"$s\"" -#: 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." @@ -2916,19 +2500,6 @@ msgstr "Voorkeure is gestoor." 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 "" @@ -2941,13 +2512,6 @@ msgstr "" 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 "U kan die eerste een wees om 'n boodskap te plaas!" @@ -2989,10 +2553,6 @@ msgstr "" 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 "" @@ -3000,38 +2560,14 @@ msgid "" "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 " @@ -3042,29 +2578,17 @@ msgstr "" 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 "" +msgstr "Herstel wagwoord" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "" +msgstr "Herstel wagwoord" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" @@ -3074,18 +2598,10 @@ msgstr "" msgid "Unknown action" msgstr "Onbekende aksie" -#: actions/recoverpassword.php:236 -msgid "6 or more characters, and don't forget it!" -msgstr "" - #: actions/recoverpassword.php:243 msgid "Reset" msgstr "Herstel" -#: 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 "" @@ -3094,108 +2610,102 @@ msgstr "" 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:248 -msgid "Error setting user." -msgstr "" - #: 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:507 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 -msgid "6 or more characters. Required." -msgstr "" - -#: actions/register.php:434 -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 "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:494 +#: 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3214,7 +2724,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3236,18 +2746,10 @@ msgstr "" 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 "" @@ -3277,19 +2779,7 @@ msgstr "" 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 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Herhalend" @@ -3297,39 +2787,6 @@ msgstr "Herhalend" msgid "Repeated!" msgstr "Herhaal!" -#: 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 -#, 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 "" - #: actions/replies.php:204 #, php-format msgid "" @@ -3340,38 +2797,21 @@ 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)." -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." +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." 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 "" - -#: 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:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Sessies" @@ -3379,10 +2819,6 @@ msgstr "Sessies" 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 "" @@ -3395,26 +2831,13 @@ msgstr "" 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 "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" @@ -3425,12 +2848,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" @@ -3440,18 +2863,10 @@ msgstr "Statistieke" 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 "" @@ -3468,44 +2883,12 @@ msgstr "" 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 " @@ -3515,16 +2898,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 @@ -3563,27 +2946,12 @@ msgstr "Aliasse" msgid "Group actions" msgstr "Groepsaksies" -#: 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 "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" @@ -3597,11 +2965,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." @@ -3611,7 +2979,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." @@ -3620,7 +2988,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administrateurs" @@ -3632,16 +3000,6 @@ msgstr "Die boodskap bestaan nie." 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 "Hierdie kennisgewing is verwyder." @@ -3656,36 +3014,11 @@ msgstr "met die etiket %s" msgid "%1$s, page %2$d" msgstr "%1$s, bladsy %2$d" -#: 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 "Vriend van 'n vriend (FOAF) vir %s" -#: 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 " @@ -3695,8 +3028,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 @@ -3737,10 +3070,6 @@ msgstr "" 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\"." @@ -3758,10 +3087,6 @@ msgstr "" msgid "General" msgstr "Algemeen" -#: actions/siteadminpanel.php:224 -msgid "Site name" -msgstr "" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -3782,10 +3107,6 @@ msgstr "" 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 "Lokaal" @@ -3798,10 +3119,6 @@ msgstr "Standaardtydsone" 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 "" @@ -3826,34 +3143,14 @@ msgstr "Duplikaatlimiet" 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" @@ -3866,44 +3163,16 @@ msgstr "SMS-instellings" 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 -#, fuzzy -msgid "SMS address" -msgstr "IP-adres" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Bevestig" - #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 msgid "SMS phone number" @@ -3916,9 +3185,8 @@ msgstr "" #. TRANS: Form legend for SMS preferences form. #: 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 @@ -3927,32 +3195,11 @@ msgid "" "from my carrier." msgstr "" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Voorkeure is gestoor." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." msgstr "Geen telefoonnommer." -#. 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 "" @@ -3960,28 +3207,15 @@ msgid "" "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 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Bevestiging gekanselleer." - -#. 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 "SMS-bevestiging" #. 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-nommer" +msgstr "Inkomende e-posadres is verwyder." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4002,14 +3236,9 @@ msgid "" "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:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" @@ -4017,18 +3246,10 @@ msgstr "" 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 "" @@ -4061,26 +3282,10 @@ msgstr "" 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 "" - -#: actions/subedit.php:83 classes/Subscription.php:132 -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 "" @@ -4094,11 +3299,6 @@ msgstr "" 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 "" @@ -4126,16 +3326,6 @@ msgid "" "%) 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 "" @@ -4168,26 +3358,6 @@ msgstr "Jabber" msgid "SMS" msgstr "SMS" -#: 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 "Geen ID-argument." @@ -4223,37 +3393,12 @@ 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 "" +msgstr "Kon nie die etikette stoor nie." #: 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 -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 -#, fuzzy -msgid "No profile ID in request." -msgstr "Daar is geen profiel met daardie ID nie." - #: actions/unsubscribe.php:98 msgid "Unsubscribed" msgstr "" @@ -4305,38 +3450,14 @@ msgstr "" msgid "New users" msgstr "Nuwe gebruikers" -#: 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 "Uitnodigings" -#: 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 " @@ -4344,7 +3465,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" @@ -4352,19 +3473,10 @@ msgstr "Lisensie" msgid "Accept" msgstr "Aanvaar" -#: 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 "Verwerp" -#: actions/userauthorization.php:220 -msgid "Reject this subscription" -msgstr "" - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "" @@ -4380,10 +3492,6 @@ msgid "" "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 " @@ -4411,25 +3519,11 @@ msgstr "" 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 "Kan nie die avatar-URL \"%s\" lees nie." -#: 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 " @@ -4450,11 +3544,6 @@ msgstr "%1$s groepe, bladsy %2$d" msgid "Search for more groups" msgstr "Soek vir meer groepe" -#: 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." @@ -4465,29 +3554,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 " @@ -4495,7 +3584,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 " @@ -4503,179 +3592,175 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -msgid "Group join failed." -msgstr "" - -#: classes/Group_member.php:53 +#. TRANS: Exception thrown when trying to leave a group the user is not a member of. +#: classes/Group_member.php:55 msgid "Not part of group." msgstr "Nie lid van die groep nie." -#: classes/Group_member.php:60 -msgid "Group leave failed." +#. 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/Local_group.php:41 -msgid "Could not update local group." -msgstr "" - -#: classes/Login_token.php:76 +#. 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 "Could not create login token for %s" -msgstr "" - -#: classes/Message.php:45 -msgid "You are banned from sending direct messages." -msgstr "" - -#: classes/Message.php:61 -msgid "Could not insert message." -msgstr "" - -#: classes/Message.php:71 -msgid "Could not update message with new URI." +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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 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 -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 "" - -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "" - -#: classes/Subscription.php:211 -msgid "Couldn't 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 "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 -msgid "Could not set group URI." -msgstr "" - -#: classes/User_group.php:510 -msgid "Could not set group membership." -msgstr "" - -#: classes/User_group.php:524 -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 "Verander u profiel gegewens" -#. 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" @@ -4702,199 +3787,167 @@ msgid "Other" msgstr "Ander" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Persoonlik" -#. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -msgctxt "TOOLTIP" -msgid "Change your email, avatar, password, profile" -msgstr "" - #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:465 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:468 msgid "Connect" msgstr "Konnekteer" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Beheer" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Uitnodig" -#. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -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:490 msgctxt "MENU" msgid "Logout" msgstr "Teken uit" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registreer" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Meld by die webwerf aan" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Teken in" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Help my!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Help" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Soek na mense of teks" -#: lib/action.php:493 +#: lib/action.php:516 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 -msgid "Site notice" -msgstr "" - -#. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 -msgid "Local views" -msgstr "" - -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -msgid "Page notice" -msgstr "" - #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Help" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Aangaande" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Gewilde vrae" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "Gebruiksvoorwaardes" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privaatheid" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Bron" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Kontak" -#: lib/action.php:784 -msgid "Badge" -msgstr "" - #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4902,13 +3955,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4917,54 +3970,49 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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 -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:1247 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:1257 msgid "Before" msgstr "Voor" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -4972,24 +4020,14 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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." @@ -5000,110 +4038,34 @@ msgstr "" 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:349 -msgid "Basic site configuration" -msgstr "" - #. 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 -msgid "Design configuration" -msgstr "" - #. 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 -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 "Gebruiker" -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -msgid "Access configuration" -msgstr "" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -msgid "Paths configuration" -msgstr "" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -msgid "Sessions configuration" -msgstr "" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -msgid "Edit site notice" -msgstr "" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -msgid "Snapshots configuration" -msgstr "" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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" @@ -5149,18 +4111,6 @@ msgstr "" msgid "Cancel" msgstr "Kanselleer" -#. TRANS: Application access type -#: lib/applicationlist.php:136 -#, fuzzy -msgid "read-write" -msgstr "Lees-skryf" - -#. TRANS: Application access type -#: lib/applicationlist.php:138 -#, fuzzy -msgid "read-only" -msgstr "Lees-alleen" - #. 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 @@ -5169,10 +4119,9 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Herroep" +msgstr "Verwyder" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5189,19 +4138,15 @@ msgstr "Outeur" msgid "Provider" msgstr "Verskaffer" -#: lib/attachmentnoticesection.php:67 -msgid "Notices where this attachment appears" -msgstr "" - #: 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" @@ -5213,48 +4158,40 @@ msgstr "Opdragresultate" msgid "Command complete" msgstr "Opdrag voltooi" -#: 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" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" +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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" +msgid "Could not find a local user with nickname %s." msgstr "" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5262,55 +4199,39 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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 -#, fuzzy, 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." - -#. 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 "Kon nie die groep skep nie." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Tuisblad: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Oor: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5319,144 +4240,106 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" "Boodskap is te lank. Die maksimum is %1$d karakters. U het %2$d karakters " "gestuur." -#. 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 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Notice from %s repeated" +msgid "Reply to %s sent." msgstr "" -#: lib/command.php:531 -msgid "Error repeating notice." +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." 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 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" +msgid "Subscribed to %s." msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +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 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." 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 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" +msgid "Unsubscribed %s." msgstr "" -#: lib/command.php:778 -msgid "You are not subscribed to anyone." -msgstr "" - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "U volg hierdie gebruiker:" msgstr[1] "U volg hierdie gebruikers:" -#: lib/command.php:800 -msgid "No one is subscribed to you." -msgstr "" - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Hierdie gebruiker volg u:" msgstr[1] "Hierdie gebruikers volg u:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "U is nie 'n lid van enige groep nie." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "U is 'n lid van hierdie groep:" msgstr[1] "U is 'n lid van hierdie groepe:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5498,10 +4381,6 @@ msgid "" "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 "" @@ -5526,22 +4405,10 @@ msgstr "" msgid "Updates by SMS" msgstr "" -#: lib/connectsettingsaction.php:120 -msgid "Connections" -msgstr "" - -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "Databasisfout" -#: 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." @@ -5551,18 +4418,6 @@ msgstr "" 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 "RSS 1.0" @@ -5581,7 +4436,7 @@ msgstr "Vriende van vriende (FOAF)" #: lib/feedlist.php:64 msgid "Export data" -msgstr "" +msgstr "Eksporteer data" #: lib/galleryaction.php:121 msgid "Filter tags" @@ -5648,11 +4503,6 @@ msgstr "Geblokkeer" msgid "%s blocked users" msgstr "%s geblokkeerde gebruikers" -#: lib/groupnav.php:108 -#, php-format -msgid "Edit %s group properties" -msgstr "" - #: lib/groupnav.php:113 msgid "Logo" msgstr "Logo" @@ -5667,10 +4517,6 @@ msgstr "" 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 "" @@ -5678,26 +4524,13 @@ msgstr "" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "" +msgstr "Etikette in groepsaankondigings van %s" #. 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 "" @@ -5706,10 +4539,6 @@ msgstr "" 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 "Onbekende lêertipe" @@ -5727,11 +4556,6 @@ msgstr "kB" msgid "[%s]" msgstr "[%s]" -#: lib/jabber.php:567 -#, php-format -msgid "Unknown inbox source %d." -msgstr "" - #: lib/joinform.php:114 msgid "Join" msgstr "Aansluit" @@ -5740,19 +4564,10 @@ msgstr "Aansluit" msgid "Leave" msgstr "Verlaat" -#: 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 @@ -5771,14 +4586,15 @@ msgid "" "%s\n" msgstr "" -#. TRANS: Subject of new-subscriber notification e-mail -#: lib/mail.php:243 +#: lib/mail.php:248 #, php-format -msgid "%1$s is now listening to your notices on %2$s." +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 +4610,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" @@ -5820,30 +4636,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 " @@ -5860,13 +4676,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" @@ -5885,14 +4701,8 @@ msgid "" "%5$s\n" msgstr "" -#. TRANS: Subject for favorite notification email -#: lib/mail.php:583 -#, 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" @@ -5914,7 +4724,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" @@ -5922,13 +4732,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" @@ -5965,7 +4775,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "van" @@ -5985,11 +4795,6 @@ msgstr "Jammer, dit is nie u inkomende e-posadres nie." msgid "Sorry, no incoming email allowed." msgstr "Jammer, inkomende e-pos word nie toegelaat nie." -#: 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 "" @@ -6020,145 +4825,113 @@ 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 -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 "" -#: lib/messageform.php:120 -msgid "Send a direct notice" -msgstr "" - #: lib/messageform.php:146 msgid "To" msgstr "Aan" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Beskikbare karakters" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Stuur" -#: lib/noticeform.php:160 -msgid "Send a notice" -msgstr "" - -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Hallo, %s." -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Aanheg" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Heg 'n lêer aan" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "" -#: lib/noticeform.php:215 -msgid "Do not share my location" -msgstr "" - -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 "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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "in konteks" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Herhaal deur" -#: lib/noticelist.php:629 -msgid "Reply to this notice" -msgstr "" - -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Antwoord" -#: lib/noticelist.php:674 -msgid "Notice repeated" -msgstr "" - -#: lib/nudgeform.php:116 -msgid "Nudge this user" -msgstr "" - #: lib/nudgeform.php:128 msgid "Nudge" msgstr "Aanpor" -#: 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 "" @@ -6167,14 +4940,6 @@ msgstr "" 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 "Persoonlik" @@ -6199,35 +4964,19 @@ msgstr "U inkomende boodskappe" 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 "" +msgstr "Etikette in die aankondigings van %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Onbekend" -#: 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 "Gebruikers-ID" @@ -6245,7 +4994,7 @@ msgstr "Daaglikse gemiddelde" msgid "All groups" msgstr "Alle groepe" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6269,28 +5018,11 @@ msgstr "Uitgelig" msgid "Popular" msgstr "Gewild" -#: lib/redirectingaction.php:94 -msgid "No return-to arguments." -msgstr "" - -#: lib/repeatform.php:107 -msgid "Repeat this notice?" -msgstr "" - #: lib/repeatform.php:132 msgid "Yes" msgstr "Ja" -#: 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:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6298,14 +5030,6 @@ msgstr "" 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 "Term(e)" @@ -6314,10 +5038,6 @@ msgstr "Term(e)" msgid "Search" msgstr "Soek" -#: lib/searchaction.php:162 -msgid "Search help" -msgstr "" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "Gebruikers" @@ -6330,10 +5050,6 @@ msgstr "" 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 "" @@ -6350,16 +5066,6 @@ msgstr "Maak stil" msgid "Silence this user" msgstr "Maak die gebruikers stil" -#: 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" @@ -6388,6 +5094,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Mees aktiewe gebruikers" @@ -6396,31 +5142,10 @@ msgstr "Mees aktiewe gebruikers" 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 "Wysig Avatar" @@ -6468,56 +5193,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "ongeveer een jaar gelede" @@ -6531,10 +5256,3 @@ msgstr "%s is nie 'n geldige kleur nie!" msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" "%s is nie 'n geldige kleur nie. Gebruik drie of ses heksadesimale karakters." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Boodskap is te lank. Die maksimum is %1$d karakters. U het %2$d karakters " -"gestuur." diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po index f6bf14d12e..36fb17ce4b 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:04+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:10+0000\n" "Language-Team: Arabic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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 "Ù†Ùاذ" @@ -51,7 +52,7 @@ 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 @@ -85,38 +86,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +125,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:114 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 " @@ -164,79 +165,71 @@ 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:120 -#: actions/apitimelinehome.php:121 -#, 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +249,7 @@ msgstr "لم يمكن Ø­Ùظ الملÙ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -266,16 +259,6 @@ msgid "" "current configuration." msgstr "" -#: 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 "" - #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 msgid "Could not update your design." @@ -313,63 +296,41 @@ msgstr "رسالة مباشرة %s" msgid "All the direct messages sent to %s" msgstr "كل الرسائل المباشرة التي أرسلت إلى %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "لا نص ÙÙŠ الرسالة!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, php-format -msgid "That's too long. Max message size is %d chars." -msgstr "" - -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "لم ÙŠÙعثر على المستخدم المستلم." -#: actions/apidirectmessagenew.php:150 +#: 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 -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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 "" - -#: actions/apifriendshipscreate.php:118 -#, php-format -msgid "Could not follow user: %s is already on your list." -msgstr "" - -#: actions/apifriendshipsdestroy.php:109 -msgid "Could not unfollow user: User not found." -msgstr "" - #: actions/apifriendshipsdestroy.php:120 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 @@ -380,120 +341,92 @@ msgstr "تعذّر تحديد المستخدم المصدر." msgid "Could not find target user." msgstr "تعذّر إيجاد المستخدم الهدÙ." -#: actions/apigroupcreate.php:166 actions/editgroup.php:186 -#: actions/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 -msgid "Nickname must have only lowercase letters and numbers and no spaces." -msgstr "" - -#: actions/apigroupcreate.php: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/newapplication.php:172 -#, php-format -msgid "Description is too long (max %d chars)." -msgstr "" - -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 -#: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 -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 -msgid "Invalid alias: \"%s\"." -msgstr "كنية غير صالحة: \"%s\"" - -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 -#: actions/newgroup.php:172 +#: actions/apigroupcreate.php:267 #, php-format -msgid "Alias \"%s\" already in use. Try another one." -msgstr "" +msgid "Invalid alias: \"%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 -#, 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 -msgid "You are already a member of that group." -msgstr "" - -#: actions/apigroupjoin.php:119 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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" @@ -502,22 +435,17 @@ msgstr "مجموعات %s" msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "حجم غير صالح." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -530,14 +458,12 @@ 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 msgid "Database error inserting OAuth application user." -msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app" +msgstr "خطأ ÙÙŠ قاعدة البيانات أثناء حذ٠مستخدم تطبيق OAuth." #: actions/apioauthauthorize.php:214 #, php-format @@ -580,12 +506,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:463 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 @@ -593,8 +519,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 "كلمة السر" @@ -610,80 +536,63 @@ msgstr "اسمح" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 -msgid "This method requires a POST or DELETE." -msgstr "" - -#: actions/apistatusesdestroy.php:130 -msgid "You may not delete another user's status." -msgstr "" - #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." msgstr "لا إشعار كهذا." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "لا يمكنك تكرار ملحوظتك الخاصة." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "" +msgstr "هذه طويلة جدًا. أطول حجم للإشعار %d حرÙًا." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "لم يوجد." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, php-format -msgid "%1$s / Favorites from %2$s" -msgstr "" - -#: actions/apitimelinefavorites.php:118 -#, php-format -msgid "%1$s updates favorited by %2$s / %2$s." -msgstr "" - -#: actions/apitimelinementions.php:117 -#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "مسار %s الزمني العام" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -698,16 +607,11 @@ 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 -#, php-format -msgid "Updates tagged with %1$s on %2$s!" -msgstr "" - #: actions/attachment.php:73 msgid "No such attachment." msgstr "لا مرÙÙ‚ كهذا." @@ -760,7 +664,7 @@ msgid "Preview" msgstr "معاينة" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "احذÙ" @@ -768,10 +672,6 @@ msgstr "احذÙ" msgid "Upload" msgstr "ارÙع" -#: actions/avatarsettings.php:231 actions/grouplogo.php:289 -msgid "Crop" -msgstr "" - #: actions/avatarsettings.php:305 msgid "No file uploaded." msgstr "لم ÙŠÙرÙع ملÙ." @@ -800,11 +700,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 " @@ -816,17 +716,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 "لا تمنع هذا المستخدم" @@ -835,23 +734,24 @@ 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 "Ùشل Ø­Ùظ معلومات المنع." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -861,25 +761,16 @@ msgstr "Ùشل Ø­Ùظ معلومات المنع." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "لا مجموعة كهذه." -#: actions/blockedfromgroup.php:97 -#, php-format -msgid "%s blocked profiles" -msgstr "" - #: actions/blockedfromgroup.php:100 #, php-format msgid "%1$s blocked profiles, page %2$d" msgstr "%1$s ملÙات ممنوعة, الصÙحة %2$d" -#: actions/blockedfromgroup.php:115 -msgid "A list of the users blocked from joining this group." -msgstr "" - #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" msgstr "ألغ منع المستخدم من المجموعة" @@ -894,9 +785,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." @@ -916,11 +807,6 @@ msgstr "رمز التأكيد ليس لك!" msgid "Unrecognized address type %s." msgstr "" -#. TRANS: Client error for an already confirmed email/jabbel/sms address. -#: actions/confirmaddress.php:96 -msgid "That address has already been confirmed." -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. #. TRANS: Server error thrown on database error updating IM preferences. @@ -975,7 +861,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:1307 msgid "There was a problem with your session token." msgstr "" @@ -1006,7 +892,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 "لست والجًا." @@ -1035,7 +921,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "احذ٠هذا الإشعار" @@ -1069,49 +955,53 @@ msgstr "احذ٠هذا المستخدم" msgid "Design" msgstr "التصميم" -#: actions/designadminpanel.php:74 -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 -#, fuzzy, php-format +#: 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" @@ -1119,57 +1009,61 @@ 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 -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 @@ -1179,7 +1073,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 "احÙظ التصميم" @@ -1221,17 +1115,13 @@ msgstr "الاسم مطلوب." msgid "Name is too long (max 255 chars)." msgstr "الاسم طويل جدا (الأقصى 255 حرÙا)." -#: actions/editapplication.php:183 actions/newapplication.php:162 -msgid "Name already in use. Try another one." -msgstr "" - #: actions/editapplication.php:186 actions/newapplication.php:168 msgid "Description is required." msgstr "الوص٠مطلوب." #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "المسار المصدر طويل جدًا." #: actions/editapplication.php:200 actions/newapplication.php:185 msgid "Source URL is not valid." @@ -1249,14 +1139,6 @@ msgstr "المنظمة طويلة جدا (الأقصى 255 حرÙا)." msgid "Organization homepage is required." msgstr "صÙحة المنظمة الرئيسية مطلوبة." -#: actions/editapplication.php:218 actions/newapplication.php:206 -msgid "Callback is too long." -msgstr "" - -#: actions/editapplication.php:225 actions/newapplication.php:215 -msgid "Callback URL is not valid." -msgstr "" - #: actions/editapplication.php:258 msgid "Could not update application." msgstr "لم يمكن تحديث التطبيق." @@ -1279,11 +1161,6 @@ msgstr "يجب أن تكون إداريا لتعدل المجموعة." msgid "Use this form to edit the group." msgstr "استخدم هذا النموذج لتعديل المجموعة." -#: actions/editgroup.php:205 actions/newgroup.php:145 -#, php-format -msgid "description is too long (max %d chars)." -msgstr "" - #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format msgid "Invalid alias: \"%s\"" @@ -1293,7 +1170,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 "تعذّر إنشاء الكنى." @@ -1332,7 +1210,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 "أزل" @@ -1349,7 +1226,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 "ألغÙ" @@ -1364,7 +1240,6 @@ msgstr "عنوان البريد الإلكتروني، مثل \"UserName@example #. 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 "أضÙ" @@ -1390,16 +1265,14 @@ 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 "جديد" #. 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 @@ -1438,22 +1311,16 @@ 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 msgid "No email address." msgstr "لا عنوان بريد إلكتروني." -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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 "ليس عنوان بريد صالح." @@ -1483,25 +1350,15 @@ msgid "" "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. -#. 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 "" - #. 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. @@ -1511,9 +1368,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." @@ -1526,16 +1382,6 @@ msgstr "لا عنوان بريد إلكتروني وارد." msgid "Couldn't update user record." 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 "" - -#. 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 "" - #: actions/favor.php:79 msgid "This notice is already a favorite!" msgstr "هذا الإشعار Ù…Ùضلة مسبقًا!" @@ -1629,10 +1475,6 @@ msgstr "المستخدم الذي تستمع إليه غير موجود." msgid "You can use the local subscription!" msgstr "تستطيع استخدام الاشتراك المحلي!" -#: actions/finishremotesubscribe.php:99 -msgid "That user has blocked you from subscribing." -msgstr "" - #: actions/finishremotesubscribe.php:110 msgid "You are not authorized." msgstr "لا تملك تصريحًا." @@ -1646,9 +1488,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." @@ -1658,34 +1499,27 @@ msgstr "لا مل٠كهذا." msgid "Cannot read file." msgstr "تعذّرت قراءة الملÙ." -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "حجم غير صالح." - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "لا يمكنك سحب أدوار المستخدمين على هذا الموقع." #: 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 "لا مل٠شخصي بهذه الهوية." @@ -1698,10 +1532,6 @@ msgstr "لا مجموعة Ù…Ùحدّدة." msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -msgid "User is already blocked from group." -msgstr "" - #: actions/groupblock.php:100 msgid "User is not a member of group." msgstr "المستخدم ليس عضوًا ÙÙŠ المجموعة." @@ -1744,12 +1574,6 @@ msgstr "يجب أن تلج لتÙعدّل المجموعات." msgid "Group design" msgstr "تصميم المجموعة" -#: actions/groupdesignsettings.php:155 -msgid "" -"Customize the way your group looks with a background image and a colour " -"palette of your choice." -msgstr "" - #: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." @@ -1809,7 +1633,7 @@ msgstr "اجعل المستخدم إداريًا ÙÙŠ المجموعة" #: actions/groupmembers.php:519 msgid "Make Admin" -msgstr "" +msgstr "اجعله إداريًا" #: actions/groupmembers.php:519 msgid "Make this user an admin" @@ -1819,17 +1643,11 @@ 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 الزمني" -#. 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" @@ -1930,7 +1748,7 @@ msgstr "عنوان المراسلة الÙورية" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." -msgstr "" +msgstr "عنوان جابر أو محادثة غوغل المعتمد حاليًا." #. TRANS: Form note in IM settings form. #. TRANS: %s is the IM address set for the site. @@ -1952,14 +1770,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "التÙضيلات" - -#. TRANS: Checkbox label in IM preferences form. -#: actions/imsettings.php:160 -msgid "Send me notices through Jabber/GTalk." -msgstr "" +msgstr "تÙضيلات المحادثة الÙورية" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:166 @@ -1971,11 +1783,6 @@ msgstr "" 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." @@ -1986,26 +1793,11 @@ msgstr "Ø­ÙÙÙظت التÙضيلات." 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 @@ -2022,15 +1814,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. @@ -2040,9 +1830,8 @@ msgstr "هذه ليست هويتك ÙÙŠ جابر." #. 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 #, php-format @@ -2060,12 +1849,7 @@ msgstr "هذا صندوق بريدك الوارد، والذي يسرد رسائ #: actions/invite.php:39 msgid "Invites have been disabled." -msgstr "" - -#: actions/invite.php:41 -#, fuzzy, php-format -msgid "You must be logged in to invite other users to use %s." -msgstr "يجب أن تلج لتÙعدّل المجموعات." +msgstr "تم تعطيل الدعوات." #: actions/invite.php:72 #, php-format @@ -2080,13 +1864,9 @@ msgstr "Ø£Ùرسلت الدعوة" 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2133,12 +1913,6 @@ 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 @@ -2175,14 +1949,7 @@ msgstr "" 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 "لا اسم مستعار." - -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s انضم للمجموعة %2$s" @@ -2191,72 +1958,65 @@ msgstr "%1$s انضم للمجموعة %2$s" msgid "You must be logged in to leave a group." msgstr "يجب أن تلج لتغادر مجموعة." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2268,9 +2028,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "لم يمكن جعل %1$s إداريا للمجموعة %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "لا حالة حالية" +msgstr "لا حالة جارية." #: actions/newapplication.php:52 msgid "New Application" @@ -2284,10 +2043,6 @@ msgstr "يجب أن تكون مسجل الدخول لتسجل تطبيقا." 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 "لم يمكن إنشاء التطبيق." @@ -2304,12 +2059,15 @@ msgstr "استخدم هذا النموذج لإنشاء مجموعة جديدة. msgid "New message" msgstr "رسالة جديدة" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "لا محتوى!" @@ -2317,7 +2075,8 @@ msgstr "لا محتوى!" msgid "No recipient specified." msgstr "لا مستلم Ø­Ùدّد." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2326,12 +2085,14 @@ msgstr "" msgid "Message sent" msgstr "Ø£Ùرسلت الرسالة" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "رسالة مباشرة Ù„%s تم إرسالها." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "خطأ أجاكس" @@ -2339,7 +2100,7 @@ msgstr "خطأ أجاكس" msgid "New notice" msgstr "إشعار جديد" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Ø£Ùرسل الإشعار" @@ -2380,14 +2141,9 @@ msgstr "" 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 his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2410,15 +2166,6 @@ msgstr "تطبيقات OAuth" 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 "" @@ -2440,31 +2187,26 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 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 -#, 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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "ليس نسق بيانات مدعوم." @@ -2504,10 +2246,6 @@ msgstr "اعرض تصاميم المل٠الشخصي" 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 "لا هوية مستخدم محددة." @@ -2567,7 +2305,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 "أكّد" @@ -2579,11 +2317,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 "كلمتا السر غير متطابقتين." @@ -2604,37 +2342,29 @@ 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 "" - #: 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" - -#: actions/pathsadminpanel.php:183 -msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "لا يمكن قراءة دليل المحليات: %s." #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" @@ -2770,9 +2500,9 @@ 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 #, php-format @@ -2780,9 +2510,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "المستخدمون الذين وسموا أنÙسهم ب%1$s - الصÙحة %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "محتوى إشعار غير صالح" +msgstr "محتوى إشعار غير صالح." #: actions/postnotice.php:101 #, php-format @@ -2806,43 +2535,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 "مكان تواجدك، على سبيل المثال \"المدينة، الولاية (أو المنطقة)ØŒ الدولة\"" @@ -2883,28 +2612,15 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "اشترك تلقائيًا بأي شخص يشترك بي (ÙŠÙضل أن يستخدم لغير البشر)" -#: actions/profilesettings.php:228 actions/register.php:223 -#, php-format -msgid "Bio is too long (max %d chars)." -msgstr "" - #: actions/profilesettings.php:235 actions/siteadminpanel.php: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 "وسم غير صالح: \"%s\"" -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - #: actions/profilesettings.php:363 msgid "Couldn't save location prefs." msgstr "لم يمكن Ø­Ùظ تÙضيلات الموقع." @@ -2923,13 +2639,9 @@ msgid "Settings saved." msgstr "Ø­ÙÙظت الإعدادات." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "وراء حد الصÙحة (%s)" - -#: actions/public.php:92 -msgid "Could not retrieve public stream." -msgstr "" +msgstr "بعد حد الصÙحة (%s)." #: actions/public.php:130 #, php-format @@ -3045,10 +2757,6 @@ msgstr "خطأ ÙÙŠ رمز التأكيد." 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 " @@ -3091,10 +2799,6 @@ msgstr "Ø·Ùلبت استعادة كلمة السر" 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 "أعد الضبط" @@ -3103,10 +2807,6 @@ msgstr "أعد الضبط" 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 "لا يوجد عنوان بريد إلكتروني Ù…Ùسجّل لهذا المستخدم." @@ -3121,19 +2821,11 @@ msgid "" "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 "يجب أن تكون كلمة السر 6 محار٠أو أكثر." -#: actions/recoverpassword.php:369 -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 "خطأ أثناء ضبط المستخدم." @@ -3141,78 +2833,92 @@ 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:507 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 -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 -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:494 +#: 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3231,7 +2937,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3284,7 +2990,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." @@ -3306,7 +3012,7 @@ msgstr "لا يمكنك تكرار ملاحظتك الشخصية." msgid "You already repeated that notice." msgstr "أنت كررت هذه الملاحظة بالÙعل." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "مكرر" @@ -3321,9 +3027,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 @@ -3335,16 +3041,11 @@ msgstr "" 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 #, 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 @@ -3357,51 +3058,31 @@ 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)." -msgstr "" - -#: actions/repliesrss.php:72 -#, php-format -msgid "Replies to %1$s on %2$s!" +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$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 "ستاتس نت" -#: 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:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "الجلسات" #: actions/sessionsadminpanel.php:65 -#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "الإعدادات الأساسية لموقع StatusNet هذا." - -#: actions/sessionsadminpanel.php:175 -msgid "Handle sessions" -msgstr "" +msgstr "إعدادات جلسة موقع StatusNet هذا." #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." @@ -3424,17 +3105,13 @@ msgstr "اذ٠إعدادت الموقع" 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:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "الاسم" @@ -3445,12 +3122,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 "إحصاءات" @@ -3460,17 +3137,13 @@ msgstr "إحصاءات" 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 "" +msgstr "معلومات التطبيق" #: actions/showapplication.php:263 msgid "Consumer key" @@ -3499,18 +3172,13 @@ msgid "" msgstr "" #: 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 المÙÙضلة" - -#: actions/showfavorites.php:132 -msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "إشعارات %1$s المÙÙضلة، الصÙحة %2$d" #: actions/showfavorites.php:171 #, php-format @@ -3536,21 +3204,17 @@ 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 لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. أرسل شيئًا شيقًا ليضيÙÙ‡ إلى " -"Ù…Ùضلته. :)" #: 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%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3564,7 +3228,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" @@ -3584,10 +3248,6 @@ msgstr "ملاحظة" 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)" @@ -3603,12 +3263,7 @@ msgstr "" 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:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "الأعضاء" @@ -3622,11 +3277,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." @@ -3641,7 +3296,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." @@ -3653,7 +3308,7 @@ msgstr "" "en.wikipedia.org/wiki/Micro-blogging) المبنية على البرنامج الحر [StatusNet]" "(http://status.net/). يتشارك أعضاؤها رسائل قصيرة عن حياتهم واهتماماتهم. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "الإداريون" @@ -3665,25 +3320,10 @@ msgstr "لا رسالة كهذه." 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" @@ -3709,11 +3349,6 @@ msgstr "" 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." @@ -3728,8 +3363,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 @@ -3788,9 +3423,8 @@ msgid "Unknown language \"%s\"." msgstr "لغة غير معروÙØ© \"%s\"." #: actions/siteadminpanel.php:165 -#, fuzzy msgid "Minimum text limit is 0 (unlimited)." -msgstr "حد النص الأدنى هو 140 حرÙًا." +msgstr "حد النص الأدنى 0 (غير محدود)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3860,10 +3494,6 @@ msgstr "حد النص" 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 "" @@ -3915,19 +3545,8 @@ msgstr "الرسائل القصيرة غير متوÙرة." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy 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 "" +msgstr "عنوان الرسائل القصيرة" #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 @@ -3941,7 +3560,6 @@ msgstr "" #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "أكّد" @@ -3954,13 +3572,12 @@ msgstr "رقم هات٠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 "رقم الهات٠بدون شرطات أو مساÙات مع رمز المنطقة" #. 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 @@ -3971,30 +3588,14 @@ 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 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 "" @@ -4009,9 +3610,8 @@ 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. @@ -4021,20 +3621,14 @@ 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 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 @@ -4051,27 +3645,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 "غيّر ضبط الموقع" - -#: 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 "" @@ -4104,16 +3685,8 @@ msgstr "بلّغ عن المسار" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -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 "تعذّر Ø­Ùظ الاشتراك." @@ -4147,11 +3720,6 @@ msgstr "مشتركو %1$s, الصÙحة %2$d" 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 " @@ -4199,11 +3767,6 @@ msgid "" "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 "جابر" @@ -4236,11 +3799,6 @@ msgstr "" 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 "مل٠المستخدم الشخصي" @@ -4254,12 +3812,6 @@ msgstr "صورة" 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." @@ -4269,18 +3821,10 @@ msgstr "" 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/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "لم تمنع هذا المستخدم." @@ -4293,11 +3837,6 @@ msgstr "المستخدم ليس ÙÙŠ صندوق الرمل." msgid "User is not silenced." msgstr "المستخدم ليس Ù…Ùسكتًا." -#: actions/unsubscribe.php:77 -#, fuzzy -msgid "No profile ID in request." -msgstr "لا طلب استيثاق." - #: actions/unsubscribe.php:98 msgid "Unsubscribed" msgstr "غير مشترك" @@ -4314,10 +3853,6 @@ 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 "" @@ -4377,10 +3912,6 @@ msgstr "الدعوات Ù…ÙÙعلة" 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 " @@ -4388,7 +3919,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "الرخصة" @@ -4413,10 +3944,6 @@ msgstr "ارÙض هذا الاشتراك" 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 " @@ -4455,11 +3982,6 @@ msgstr "" 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’." @@ -4504,23 +4026,12 @@ msgstr "%s ليس عضوًا ÙÙŠ أي مجموعة." 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 -#, 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, " @@ -4529,11 +4040,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 " @@ -4541,7 +4052,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,172 +4060,231 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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: 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 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app" +msgstr "خطأ ÙÙŠ قاعدة البيانات أثناء حذ٠مستخدم تطبيق OAuth." -#: classes/Notice.php:245 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "مشكلة أثناء Ø­Ùظ الإشعار." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "مشكلة أثناء Ø­Ùظ الإشعار." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 +#: classes/Notice.php:1759 #, 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 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 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -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 "تعذّر Ø­Ùظ الاشتراك." -#: 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 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 -#, 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 @@ -4752,216 +4322,203 @@ msgid "Other" msgstr "أخرى" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "صÙحة غير Ù…Ùعنونة" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "الصÙحة الشخصية" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "اتصل" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "إداري" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "ادعÙ" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "اخرج" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "سجّل" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ù„Ùج إلى الموقع" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Ù„Ùج" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "ساعدني!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "مساعدة" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ابحث عن أشخاص أو نصوص" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "المشاهدات المحلية" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "إشعار الصÙحة" -#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -msgid "Secondary site navigation" -msgstr "" - #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "مساعدة" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "عن" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "الأسئلة المكررة" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "الشروط" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "خصوصية" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "المصدر" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "اتصل" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "الجسر" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4973,54 +4530,49 @@ msgstr "" "agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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 -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:1247 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:1257 msgid "Before" msgstr "قبل" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5028,11 +4580,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5046,16 +4598,6 @@ msgstr "لا يمكنك إجراء تغييرات على هذا الموقع." 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 @@ -5063,65 +4605,59 @@ 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 -#, fuzzy -msgid "Snapshots configuration" -msgstr "ضبط المسارات" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5135,12 +4671,6 @@ msgstr "عدّل التطبيق" 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" @@ -5156,16 +4686,6 @@ msgstr "مسار صÙحة هذا التطبيق" 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" @@ -5224,10 +4744,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 @@ -5244,19 +4763,15 @@ msgstr "المؤلÙ" 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: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 "تغيير كلمة السر غير مسموح به" @@ -5272,44 +4787,16 @@ msgstr "اكتمل الأمر" 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 "لم يمكن إيجاد مستخدم بالاسم %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 -msgid "Could not find a local user with nickname %s" -msgstr "لم يمكن إيجاد مستخدم بالاسم %s" - -#: lib/command.php:180 -msgid "Sorry, this command is not yet implemented." -msgstr "" - -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "التنبيه تم إرساله إلى %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5320,55 +4807,34 @@ msgstr "" "المشتركون: %2$s\n" "الإشعارات: %3$s" -#: 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 "لم يمكن ضم المستخدم %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 -msgid "Could not remove user %1$s from group %2$s" -msgstr "لم يمكن إزالة المستخدم %1$s من المجموعة %2$s." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "الصÙحة الرئيسية: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "عن: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5377,116 +4843,91 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 "رسالة مباشرة إلى %s تم إرسالها" - -#: 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 "الإشعار من %s مكرر" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "خطأ تكرار الإشعار." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "رÙد على رسالة %s" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "خطأ أثناء Ø­Ùظ الإشعار." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Ù…Ùشترك ب%s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +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 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "الأمر لم ÙŠÙجهزّ بعد." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "الإشعار Ù…ÙØ·ÙØ£." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "تعذّر إطÙاء الإشعارات." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "الإشعار يعمل." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "تعذّر تشغيل الإشعار." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "ألغ٠الاشتراك" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "لست Ù…Ùشتركًا بأي أحد." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "لست مشتركًا بأحد." @@ -5496,11 +4937,16 @@ msgstr[3] "أنت مشترك بهؤلاء الأشخاص:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "لا أحد مشترك بك." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "لا أحد مشترك بك." @@ -5510,11 +4956,16 @@ msgstr[3] "هؤلاء الأشخاص مشتركون بك:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "لست عضوًا ÙÙŠ أي مجموعة." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "لست عضوًا ÙÙŠ أي مجموعة." @@ -5524,7 +4975,7 @@ msgstr[3] "أنت عضو ÙÙŠ هذه المجموعات:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5604,10 +5055,6 @@ msgstr "" "tracks - لم يطبق بعد.\n" "tracking - لم يطبق بعد.\n" -#: 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 "" @@ -5636,10 +5083,6 @@ msgstr "تحديثات عبر الرسائل القصيرة" msgid "Connections" msgstr "اتصالات" -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "خطأ قاعدة بيانات" @@ -5718,24 +5161,10 @@ msgstr "اذهب" 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" @@ -5749,11 +5178,6 @@ msgstr "مجموعات" 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" @@ -5791,19 +5215,11 @@ msgstr "وسوم ÙÙŠ إشعارات مجموعة %s" 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 "هذا المل٠كبير جدًا. إن أقصى حجم للملÙات هو %s." -#: lib/imagefile.php:93 -msgid "Partial upload." -msgstr "" - #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." msgstr "" @@ -5812,10 +5228,6 @@ msgstr "" 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 "نوع مل٠غير معروÙ" @@ -5895,8 +5307,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" @@ -5922,19 +5341,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" @@ -5948,30 +5367,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 " @@ -5988,13 +5407,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" @@ -6014,13 +5433,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" @@ -6042,7 +5461,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" @@ -6050,13 +5469,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" @@ -6083,17 +5502,13 @@ msgid "" "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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "من" @@ -6105,14 +5520,6 @@ msgstr "تعذّر تحليل الرسالة." 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" @@ -6146,26 +5553,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 "" @@ -6178,11 +5585,11 @@ msgstr "أرسل إشعارًا مباشرًا" msgid "To" msgstr "إلى" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "المحار٠المتوÙرة" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "أرسل" @@ -6191,79 +5598,83 @@ msgstr "أرسل" msgid "Send a notice" msgstr "أرسل إشعارًا" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "ما الأخبار يا %sØŸ" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "أرÙÙ‚" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "أرÙÙ‚ ملÙًا" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "شارك موقعي" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "لا تشارك موقعي" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "ÙÙŠ السياق" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "مكرر بواسطة" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "رÙد على هذا الإشعار" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "رÙد" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "الإشعار مكرر" @@ -6275,10 +5686,6 @@ msgstr "نبّه هذا المستخدم" 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 "خطأ أثناء إدراج المل٠الشخصي الجديد" @@ -6336,7 +5743,7 @@ msgstr "رسائلك المÙرسلة" msgid "Tags in %s's notices" msgstr "وسوم ÙÙŠ إشعارات %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "غير معروÙØ©" @@ -6373,7 +5780,7 @@ msgstr "المÙعدّل اليومي" msgid "All groups" msgstr "كل المجموعات" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6397,7 +5804,7 @@ msgstr "Ù…Ùختارون" msgid "Popular" msgstr "محبوبة" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "لا مدخلات رجوع إلى." @@ -6413,12 +5820,7 @@ msgstr "نعم" msgid "Repeat this notice" 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 "" @@ -6497,11 +5899,6 @@ msgstr "المجموعات التي %s عضو Ùيها" 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" @@ -6516,14 +5913,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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +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 "أزل هذا المستخدم من صندوق الرمل" @@ -6544,11 +5977,6 @@ msgstr "ألغ٠الاشتراك مع هذا المستخدم" msgid "Unsubscribe" msgstr "ألغ٠الاشتراك" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "ليس للمستخدم مل٠شخصي." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "عدّل الأÙتار" @@ -6582,9 +6010,8 @@ msgid "Moderate" msgstr "راقب" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "مل٠المستخدم الشخصي" +msgstr "دور المستخدم" #: lib/userprofile.php:366 msgctxt "role" @@ -6597,56 +6024,32 @@ msgid "Moderator" msgstr "مراقب" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "قبل لحظات قليلة" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "قبل دقيقة تقريبًا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 -#, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "قبل ساعة تقريبًا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 -#, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "قبل يوم تقريبا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 -#, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "قبل شهر تقريبًا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 -#, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "قبل سنة تقريبًا" @@ -6654,13 +6057,3 @@ msgstr "قبل سنة تقريبًا" #, php-format msgid "%s is not a valid color!" msgstr "%s ليس لونًا صحيحًا!" - -#: 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/arz/LC_MESSAGES/statusnet.po b/locale/arz/LC_MESSAGES/statusnet.po index 3b6d78a7b6..415c703931 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:07+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:16+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: arz\n" "X-Message-Group: out-statusnet\n" @@ -24,22 +24,10 @@ 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 -#, fuzzy -msgid "Site access settings" -msgstr "اذ٠إعدادت الموقع" - -#. TRANS: Form legend for registration form. -#: actions/accessadminpanel.php:161 -#, fuzzy -msgid "Registration" -msgstr "سجّل" - #. TRANS: Checkbox instructions for admin setting "Private" #: actions/accessadminpanel.php:165 msgid "Prohibit anonymous users (not logged in) from viewing site?" @@ -47,10 +35,9 @@ msgstr "أأمنع المستخدمين المجهولين (غير الوالج #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" -msgstr "خاص" +msgstr "خصوصية" #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 @@ -72,57 +59,39 @@ msgstr "عطّل التسجيل الجديد." msgid "Closed" msgstr "Ù…Ùغلق" -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "اذ٠إعدادت الموقع" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +99,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:114 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 +139,71 @@ 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:120 -#: actions/apitimelinehome.php:121 -#, 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +223,7 @@ msgstr "لم يمكن Ø­Ùظ الملÙ." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -272,16 +233,6 @@ msgid "" "current configuration." msgstr "" -#: 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 "" - #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 msgid "Could not update your design." @@ -304,202 +255,135 @@ msgstr "Ùشل إلغاء منع المستخدم." msgid "Direct messages from %s" msgstr "رسائل مباشره من %s" -#: actions/apidirectmessage.php:93 -#, php-format -msgid "All the direct messages sent from %s" -msgstr "" - #: actions/apidirectmessage.php:101 #, php-format msgid "Direct messages to %s" msgstr "رساله مباشره %s" -#: actions/apidirectmessage.php:105 -#, php-format -msgid "All the direct messages sent to %s" -msgstr "" - -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "لا نص ÙÙ‰ الرسالة!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, php-format -msgid "That's too long. Max message size is %d chars." -msgstr "" - -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "لم ÙŠÙعثر على المستخدم المستلم." -#: actions/apidirectmessagenew.php:150 +#: 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 -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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 "" - -#: actions/apifriendshipscreate.php:118 -#, php-format -msgid "Could not follow user: %s is already on your list." -msgstr "" - -#: actions/apifriendshipsdestroy.php:109 -msgid "Could not unfollow user: User not found." -msgstr "" - #: actions/apifriendshipsdestroy.php:120 msgid "You cannot unfollow yourself." msgstr "ما ينÙعش عدم متابعة Ù†Ùسك." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "" - -#: actions/apifriendshipsshow.php:134 -msgid "Could not determine source user." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" #: actions/apifriendshipsshow.php:142 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/newapplication.php:172 -#, php-format -msgid "Description is too long (max %d chars)." -msgstr "" - -#: actions/apigroupcreate.php:226 actions/editgroup.php:208 -#: actions/newgroup.php:148 actions/profilesettings.php:232 -#: actions/register.php:227 -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 -#, 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 -#, 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 -msgid "You are already a member of that group." -msgstr "" - -#: actions/apigroupjoin.php:119 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, php-format msgid "Could not join user %1$s to group %2$s." msgstr "ما Ù†Ùعش يضم %1$s للجروپ %2$s." -#: actions/apigroupleave.php:114 -msgid "You are not a member of this group." -msgstr "" - -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -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" @@ -508,22 +392,17 @@ msgstr "مجموعات %s" msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "حجم غير صالح." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -535,16 +414,6 @@ msgstr "" msgid "Invalid nickname / password!" msgstr "نيكنيم / پاسوورد مش مظبوطه!" -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "خطأ قاعده البيانات أثناء حذ٠المستخدم OAuth app" - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -586,12 +455,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:463 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 +468,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,80 +485,63 @@ msgstr "اسمح" msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 -msgid "This method requires a POST or DELETE." -msgstr "" - -#: actions/apistatusesdestroy.php:130 -msgid "You may not delete another user's status." -msgstr "" - #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." msgstr "لا إشعار كهذا." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "مش ناÙعه تتكرر الملاحظتك بتاعتك." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." msgstr "الملاحظه اتكررت Ùعلا." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." msgstr "Ø­ÙØ°ÙÙت الحاله." -#: actions/apistatusesshow.php:144 -msgid "No status with that ID found." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." msgstr "" -#: actions/apistatusesupdate.php:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "" - -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "لم يوجد." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "مسار %s الزمنى العام" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -704,16 +556,11 @@ 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 -#, php-format -msgid "Updates tagged with %1$s on %2$s!" -msgstr "" - #: actions/attachment.php:73 msgid "No such attachment." msgstr "لا مرÙÙ‚ كهذا." @@ -739,11 +586,6 @@ msgstr "حجم غير صالح." msgid "Avatar" msgstr "Ø£Ùتار" -#: actions/avatarsettings.php:78 -#, php-format -msgid "You can upload your personal avatar. The maximum file size is %s." -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 @@ -766,7 +608,7 @@ msgid "Preview" msgstr "عاين" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "احذÙ" @@ -774,15 +616,6 @@ msgstr "احذÙ" msgid "Upload" msgstr "ارÙع" -#: actions/avatarsettings.php:231 actions/grouplogo.php:289 -msgid "Crop" -msgstr "" - -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "لا مل٠شخصى Ù…Ùحدّد." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "" @@ -807,11 +640,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,42 +656,30 @@ 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 +#: actions/block.php:157 actions/deleteuser.php:156 msgid "Do not block this user" 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/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 "Ùشل Ø­Ùظ معلومات المنع." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -868,25 +689,16 @@ msgstr "Ùشل Ø­Ùظ معلومات المنع." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "لا مجموعه كهذه." -#: actions/blockedfromgroup.php:97 -#, php-format -msgid "%s blocked profiles" -msgstr "" - #: actions/blockedfromgroup.php:100 #, php-format msgid "%1$s blocked profiles, page %2$d" msgstr "%1$s Ùايلات معمول ليها بلوك, الصÙحه %2$d" -#: actions/blockedfromgroup.php:115 -msgid "A list of the users blocked from joining this group." -msgstr "" - #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" msgstr "ألغ منع المستخدم من المجموعة" @@ -899,12 +711,6 @@ msgstr "ألغ٠المنع" msgid "Unblock this user" msgstr "ألغ٠منع هذا المستخدم" -#. TRANS: Title for mini-posting window loaded from bookmarklet. -#: actions/bookmarklet.php:51 -#, fuzzy, php-format -msgid "Post to %s" -msgstr "مجموعات %s" - #: actions/confirmaddress.php:75 msgid "No confirmation code." msgstr "لا رمز تأكيد." @@ -923,11 +729,6 @@ msgstr "رمز التأكيد ليس لك!" msgid "Unrecognized address type %s." msgstr "" -#. TRANS: Client error for an already confirmed email/jabbel/sms address. -#: actions/confirmaddress.php:96 -msgid "That address has already been confirmed." -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. #. TRANS: Server error thrown on database error updating IM preferences. @@ -968,14 +769,8 @@ msgid "Notices" msgstr "الإشعارات" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا." - -#: actions/deleteapplication.php:71 -#, fuzzy -msgid "Application not found." -msgstr "لم يوجد رمز التأكيد." +msgstr "لازم يكون متسجل دخولك علشان تعدّل application." #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 @@ -984,14 +779,13 @@ 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:1307 msgid "There was a problem with your session token." msgstr "" #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "لا تطبيق كهذا." +msgstr "OAuth applications" #: actions/deleteapplication.php:149 msgid "" @@ -1000,25 +794,13 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "لا تحذ٠هذا الإشعار" - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -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 #: 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "لست والجًا." @@ -1047,7 +829,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "احذ٠هذا الإشعار" @@ -1085,103 +867,104 @@ 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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, 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: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 -#, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -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 +974,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 "احÙظ التصميم" @@ -1204,14 +987,13 @@ msgid "Add to favorites" msgstr "أض٠إلى المÙضلات" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "لا مستند كهذا." +msgstr "لا مرÙÙ‚ كهذا." #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "تطبيقات OAuth" +msgstr "OAuth applications" #: actions/editapplication.php:66 msgid "You must be logged in to edit an application." @@ -1242,34 +1024,18 @@ msgstr "" msgid "Description is required." msgstr "الوص٠مطلوب." -#: actions/editapplication.php:194 -msgid "Source URL is too long." -msgstr "" - #: actions/editapplication.php:200 actions/newapplication.php:185 msgid "Source URL is not valid." msgstr "الSource URL مش مظبوط." -#: actions/editapplication.php:203 actions/newapplication.php:188 -msgid "Organization is required." -msgstr "" - #: actions/editapplication.php:206 actions/newapplication.php:191 msgid "Organization is too long (max 255 chars)." msgstr "المنظمه طويله جدا (اكتر حاجه 255 رمز)." -#: actions/editapplication.php:209 actions/newapplication.php:194 -msgid "Organization homepage is required." -msgstr "" - #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." msgstr "" -#: actions/editapplication.php:225 actions/newapplication.php:215 -msgid "Callback URL is not valid." -msgstr "" - #: actions/editapplication.php:258 msgid "Could not update application." msgstr "ما Ù†Ùعش تحديث الapplication." @@ -1292,11 +1058,6 @@ msgstr "لازم تكون ادارى علشان تعدّل الجروپ." msgid "Use this form to edit the group." msgstr "استخدم هذا النموذج لتعديل المجموعه." -#: actions/editgroup.php:205 actions/newgroup.php:145 -#, php-format -msgid "description is too long (max %d chars)." -msgstr "" - #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format msgid "Invalid alias: \"%s\"" @@ -1306,7 +1067,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 "تعذّر إنشاء الكنى." @@ -1345,10 +1107,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 "" @@ -1356,17 +1117,6 @@ msgid "" "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. -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "ألغÙ" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1377,10 +1127,9 @@ msgstr "عنوان البريد الإلكترونى، مثل \"UserName@example #. 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. @@ -1403,16 +1152,14 @@ 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 @@ -1424,11 +1171,6 @@ msgstr "أرسل لى إشعارات بالاشتراكات الجديده عب 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 -msgid "Send me email when someone sends me a private message." -msgstr "" - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 msgid "Send me email when someone sends me an \"@-reply\"." @@ -1444,29 +1186,13 @@ msgstr "" msgid "I want to post notices by email." msgstr "أريد أن أرسل الملاحظات عبر البريد الإلكترونى." -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:219 -msgid "Publish a MicroID for my email address." -msgstr "" - -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Ø­ÙÙÙظت التÙضيلات." - #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." msgstr "لا عنوان بريد إلكترونى." -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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 "ليس عنوان بريد صالح." @@ -1496,25 +1222,10 @@ msgid "" "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. -#. 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 "" - -#. 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 "هذا عنوان محادثه Ùوريه خاطئ." - #. 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. @@ -1524,30 +1235,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 "أزيل هذا العنوان." - -#: actions/emailsettings.php:493 actions/smssettings.php:568 -msgid "No incoming email address." -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 -msgid "Couldn't update user record." -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 "" - -#. 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!" @@ -1594,11 +1283,6 @@ msgstr "" msgid "%s's favorite notices" msgstr "إشعارات %s المÙÙضلة" -#: actions/favoritesrss.php:115 -#, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "" - #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" @@ -1638,14 +1322,6 @@ msgstr "لم أتوقع هذا الرد!" msgid "User being listened to does not exist." msgstr "المستخدم الذى تستمع إليه غير موجود." -#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 -msgid "You can use the local subscription!" -msgstr "" - -#: actions/finishremotesubscribe.php:99 -msgid "That user has blocked you from subscribing." -msgstr "" - #: actions/finishremotesubscribe.php:110 msgid "You are not authorized." msgstr "لا تملك تصريحًا." @@ -1658,11 +1334,6 @@ msgstr "" msgid "Remote service uses unknown version of OMB protocol." msgstr "" -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "خطأ أثناء تحديث المل٠الشخصى البعيد" - #: actions/getfile.php:79 msgid "No such file." msgstr "لا مل٠كهذا." @@ -1671,34 +1342,19 @@ msgstr "لا مل٠كهذا." msgid "Cannot read file." msgstr "تعذّرت قراءه الملÙ." -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "حجم غير صالح." - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "لا يمكنك إسكات المستخدمين على هذا الموقع." - -#: actions/grantrole.php:82 -#, fuzzy -msgid "User already has this role." -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 "لا مل٠شخصى بهذه الهويه." @@ -1711,10 +1367,6 @@ msgstr "لا مجموعه Ù…Ùحدّده." msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -msgid "User is already blocked from group." -msgstr "" - #: actions/groupblock.php:100 msgid "User is not a member of group." msgstr "المستخدم ليس عضوًا ÙÙ‰ المجموعه." @@ -1768,20 +1420,10 @@ msgstr "" msgid "Couldn't update your design." msgstr "تعذّر تحديث تصميمك." -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -msgid "Design preferences saved." -msgstr "" - #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" msgstr "شعار المجموعة" -#: actions/grouplogo.php:153 -#, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "" - #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." msgstr "" @@ -1816,14 +1458,6 @@ msgstr "إداري" 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 "اجعل هذا المستخدم إداريًا" @@ -1832,7 +1466,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 الزمني" @@ -1935,10 +1569,6 @@ msgstr "المراسله الÙوريه غير متوÙره." 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 @@ -1959,14 +1589,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "التÙضيلات" - -#. TRANS: Checkbox label in IM preferences form. -#: actions/imsettings.php:160 -msgid "Send me notices through Jabber/GTalk." -msgstr "" +msgstr "Ø­ÙÙÙظت التÙضيلات." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:166 @@ -1993,26 +1617,11 @@ msgstr "Ø­ÙÙÙظت التÙضيلات." 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 @@ -2027,17 +1636,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "هذا عنوان محادثه Ùوريه خاطئ." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -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. @@ -2045,17 +1647,6 @@ msgstr "Ø£Ùلغى التأكيد." msgid "That is not your Jabber ID." msgstr "هذه ليست هويتك ÙÙ‰ جابر." -#. TRANS: Message given after successfully removing a registered IM address. -#: actions/imsettings.php:447 -#, fuzzy -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" @@ -2065,15 +1656,6 @@ msgstr "" 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 -#, fuzzy, 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" @@ -2087,13 +1669,9 @@ msgstr "Ø£Ùرسلت الدعوة" 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2136,10 +1714,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 @@ -2179,91 +1756,69 @@ msgid "" "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 -#, fuzzy -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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s دخل جروپ %2$s" -#: actions/leavegroup.php:60 -msgid "You must be logged in to leave a group." -msgstr "" - -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2275,14 +1830,12 @@ msgid "Can't make %1$s an admin for group %2$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 "ما Ùيش application زى كده." #: actions/newapplication.php:64 msgid "You must be logged in to register an application." @@ -2292,10 +1845,6 @@ msgstr "لازم تكون مسجل دخوللك علشان تسجل application. msgid "Use this form to register a new application." msgstr "استعمل الÙورمه دى علشان تسجل application جديد." -#: actions/newapplication.php:176 -msgid "Source URL is required." -msgstr "" - #: actions/newapplication.php:258 actions/newapplication.php:267 msgid "Could not create application." msgstr "مش ممكن إنشاء الapplication." @@ -2312,12 +1861,10 @@ msgstr "استخدم هذا النموذج لإنشاء مجموعه جديده. 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "لا محتوى!" @@ -2325,7 +1872,8 @@ msgstr "لا محتوى!" msgid "No recipient specified." msgstr "لا مستلم Ø­Ùدّد." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2334,12 +1882,14 @@ msgstr "" msgid "Message sent" msgstr "Ø£Ùرسلت الرسالة" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "رساله مباشره اتبعتت لـ%s." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "خطأ أجاكس" @@ -2347,7 +1897,7 @@ msgstr "خطأ أجاكس" msgid "New notice" msgstr "إشعار جديد" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Ø£Ùرسل الإشعار" @@ -2393,7 +1943,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 @@ -2416,15 +1966,6 @@ msgstr "OAuth applications" 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 "" @@ -2446,31 +1987,21 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy -msgid "Notice has no profile." -msgstr "ليس للمستخدم مل٠شخصى." - -#: actions/oembed.php:86 actions/shownotice.php:175 +#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') +#: actions/oembed.php:159 #, php-format -msgid "%1$s's status on %2$s" +msgid "Content type %s not supported." msgstr "" -#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, 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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr " مش نظام بيانات مدعوم." @@ -2510,10 +2041,6 @@ msgstr "اعرض تصاميم المل٠الشخصي" 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 "ما Ùيش ID متحدد لليوزر." @@ -2534,16 +2061,6 @@ msgstr "امارة تسجيل الدخول اللى اتحطت مش موجوده msgid "Login token expired." msgstr "تاريخ صلاحية الاماره خلص." -#: actions/outbox.php:58 -#, php-format -msgid "Outbox for %1$s - page %2$d" -msgstr "" - -#: actions/outbox.php:61 -#, php-format -msgid "Outbox for %s" -msgstr "" - #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." msgstr "" @@ -2568,12 +2085,8 @@ msgstr "كلمه السر القديمة" 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:433 +#: actions/register.php:440 msgid "Confirm" msgstr "أكّد" @@ -2585,11 +2098,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 "كلمتا السر غير متطابقتين." @@ -2610,7 +2123,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 "المسارات" @@ -2619,28 +2132,19 @@ 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 "لا يمكن قراءه دليل السمات: %s" +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" - -#: actions/pathsadminpanel.php:177 -#, fuzzy, php-format -msgid "Locales directory not readable: %s." -msgstr "لا يمكن قراءه دليل المحليات: %s" - -#: actions/pathsadminpanel.php:183 -msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "دليل الخلÙيات" #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" @@ -2774,9 +2278,9 @@ msgid "People search" msgstr "بحث ÙÙ‰ الأشخاص" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "ليس وسم أشخاص صالح: %s" +msgstr "ليس عنوان بريد صالح." #: actions/peopletag.php:142 #, php-format @@ -2784,9 +2288,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "محتوى إشعار غير صالح" +msgstr "حجم غير صالح." #: actions/postnotice.php:101 #, php-format @@ -2810,43 +2313,38 @@ 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 -#, 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 "" @@ -2881,33 +2379,15 @@ msgstr "المنطقه الزمنية" 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:223 -#, 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 "وسم غير صالح: \"%s\"" -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - #: actions/profilesettings.php:363 msgid "Couldn't save location prefs." msgstr "لم يمكن Ø­Ùظ تÙضيلات الموقع." @@ -2926,12 +2406,8 @@ msgid "Settings saved." msgstr "Ø­ÙÙظت الإعدادات." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "وراء حد الصÙحه (%s)" - -#: actions/public.php:92 -msgid "Could not retrieve public stream." msgstr "" #: actions/public.php:130 @@ -3048,10 +2524,6 @@ msgstr "خطأ ÙÙ‰ رمز التأكيد." 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 " @@ -3094,10 +2566,6 @@ msgstr "Ø·Ùلبت استعاده كلمه السر" 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 "أعد الضبط" @@ -3106,14 +2574,6 @@ msgstr "أعد الضبط" 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 "خطأ أثناء Ø­Ùظ تأكيد العنوان." @@ -3124,19 +2584,11 @@ msgid "" "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 "يجب أن تكون كلمه السر 6 محار٠أو أكثر." -#: actions/recoverpassword.php:369 -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 "خطأ أثناء ضبط المستخدم." @@ -3144,78 +2596,96 @@ 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:507 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 -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:494 +#: 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3234,7 +2704,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3309,7 +2779,7 @@ msgstr "ما ينÙعش تكرر الملاحظه بتاعتك." msgid "You already repeated that notice." msgstr "انت عيدت الملاحظه دى Ùعلا." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "مكرر" @@ -3323,11 +2793,6 @@ msgstr "مكرر!" msgid "Replies to %s" msgstr "الردود على %s" -#: actions/replies.php:128 -#, fuzzy, php-format -msgid "Replies to %1$s, page %2$d" -msgstr "الردود على %s" - #: actions/replies.php:145 #, php-format msgid "Replies feed for %s (RSS 1.0)" @@ -3338,16 +2803,11 @@ msgstr "" 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 #, 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 @@ -3360,50 +2820,22 @@ 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 -msgid "Replies to %1$s on %2$s!" -msgstr "" - -#: actions/revokerole.php:75 -#, fuzzy -msgid "You cannot revoke user roles on this site." -msgstr "لا يمكنك إسكات المستخدمين على هذا الموقع." - -#: actions/revokerole.php:82 -#, fuzzy -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 "" - -#: 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:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "الجلسات" #: actions/sessionsadminpanel.php:65 -#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "الإعدادات الأساسيه لموقع StatusNet هذا." - -#: actions/sessionsadminpanel.php:175 -msgid "Handle sessions" msgstr "" #: actions/sessionsadminpanel.php:177 @@ -3427,17 +2859,13 @@ msgstr "اذ٠إعدادت الموقع" msgid "You must be logged in to view an application." msgstr "لازم تكون مسجل دخولك علشان تشو٠اى application." -#: 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:195 +#: actions/showapplication.php:169 actions/version.php:197 #: lib/applicationeditform.php:199 msgid "Name" msgstr "الاسم" @@ -3448,12 +2876,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 "إحصاءات" @@ -3463,18 +2891,10 @@ msgstr "إحصاءات" 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 "" @@ -3501,20 +2921,6 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "أمتأكد من أنك تريد حذ٠هذا الإشعار؟" - -#: actions/showfavorites.php:79 -#, fuzzy, php-format -msgid "%1$s's favorite notices, page %2$d" -msgstr "إشعارات %s المÙÙضلة" - -#: actions/showfavorites.php:132 -msgid "Could not retrieve favorite notices." -msgstr "" - #: actions/showfavorites.php:171 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" @@ -3539,21 +2945,17 @@ 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 لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. أرسل شيئًا شيقًا ليضيÙÙ‡ إلى " -"Ù…Ùضلته. :)" #: 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%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3565,9 +2967,9 @@ msgid "%s group" msgstr "مجموعه %s" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "%1$s أعضاء المجموعة, الصÙحه %2$d" +msgstr "%1$s اعضاء الجروپ, صÙحه %2$d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3587,10 +2989,6 @@ msgstr "ملاحظة" 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)" @@ -3606,12 +3004,7 @@ msgstr "" 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:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "الأعضاء" @@ -3625,30 +3018,11 @@ msgstr "(لا شيء)" msgid "All members" msgstr "جميع الأعضاء" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "أنشئ" -#: actions/showgroup.php:463 -#, 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:469 -#, 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:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "الإداريون" @@ -3660,29 +3034,14 @@ msgstr "لا رساله كهذه." 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 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%1$s والأصدقاء, الصÙحه %2$d" +msgstr "%1$s Ùˆ الصحاب, صÙحه %2$d" #: actions/showstream.php:122 #, php-format @@ -3723,25 +3082,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)." -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. " +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:305 @@ -3758,9 +3100,8 @@ msgid "User is already silenced." msgstr "المستخدم مسكت من قبل." #: actions/siteadminpanel.php:69 -#, fuzzy msgid "Basic settings for this StatusNet site" -msgstr "الإعدادات الأساسيه لموقع StatusNet هذا." +msgstr "" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." @@ -3776,9 +3117,8 @@ msgid "Unknown language \"%s\"." msgstr "لغه مش معروÙÙ‡ \"%s\"." #: actions/siteadminpanel.php:165 -#, fuzzy msgid "Minimum text limit is 0 (unlimited)." -msgstr "حد النص الأدنى هو 140 حرÙًا." +msgstr "" #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3829,9 +3169,8 @@ msgid "Default timezone for the site; usually UTC." msgstr "المنطقه الزمنيه المبدئيه للموقع؛ ت‌ع‌م عاده." #: 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" @@ -3849,47 +3188,18 @@ msgstr "حد النص" 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 "إشعار الموقع" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "رساله جديدة" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -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 -#, fuzzy -msgid "Site notice text" -msgstr "إشعار الموقع" - #: 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 "إشعار الموقع" - #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 msgid "SMS settings" @@ -3907,22 +3217,6 @@ msgstr "لا يمكنك استلام رسائل قصيره عبر البريد msgid "SMS is not available." msgstr "الرسائل القصيره غير متوÙره." -#. TRANS: Form legend for SMS settings form. -#: actions/smssettings.php:111 -#, fuzzy -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" @@ -3933,13 +3227,6 @@ msgstr "رمز التأكيد" 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 -#, fuzzy -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" @@ -3952,9 +3239,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 @@ -3963,32 +3249,11 @@ msgid "" "from my carrier." msgstr "" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -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 "" @@ -3996,16 +3261,10 @@ msgid "" "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 -#, 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. @@ -4013,22 +3272,11 @@ msgstr "Ø£Ùلغى التأكيد." msgid "That is not your phone number." 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" - #. 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 @@ -4038,34 +3286,20 @@ msgid "" "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:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "غيّر ضبط الموقع" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +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 "" @@ -4098,16 +3332,8 @@ msgstr "بلّغ عن المسار" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -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 "تعذّر Ø­Ùظ الاشتراك." @@ -4115,11 +3341,6 @@ msgstr "تعذّر Ø­Ùظ الاشتراك." msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "لا مل٠كهذا." - #: actions/subscribe.php:117 msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." msgstr "" @@ -4142,11 +3363,6 @@ msgstr "%1$s مشتركين, صÙحه %2$d" 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 " @@ -4194,11 +3410,6 @@ msgid "" "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 "جابر" @@ -4207,11 +3418,6 @@ msgstr "جابر" msgid "SMS" msgstr "رسائل قصيرة" -#: actions/tag.php:69 -#, fuzzy, php-format -msgid "Notices tagged with %1$s, page %2$d" -msgstr "الإشعارات الموسومه ب%s" - #: actions/tag.php:87 #, php-format msgid "Notice feed for tag %s (RSS 1.0)" @@ -4231,11 +3437,6 @@ msgstr "" 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 "مل٠المستخدم الشخصي" @@ -4264,18 +3465,10 @@ msgstr "" 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/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "لم تمنع هذا المستخدم." @@ -4288,28 +3481,12 @@ msgstr "اليوزر مش ÙÙ‰ السبوره." msgid "User is not silenced." msgstr "المستخدم ليس Ù…Ùسكتًا." -#: actions/unsubscribe.php:77 -#, fuzzy -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 -#, fuzzy -msgctxt "TITLE" -msgid "User" -msgstr "المستخدم" - #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." msgstr "" @@ -4373,10 +3550,6 @@ msgstr "الدعوات Ù…ÙÙعلة" 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 " @@ -4384,7 +3557,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "الرخصة" @@ -4409,10 +3582,6 @@ msgstr "ارÙض هذا الاشتراك" 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 " @@ -4451,11 +3620,6 @@ msgstr "" 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’." @@ -4482,52 +3646,32 @@ 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 "%1$s أعضاء المجموعة, الصÙحه %2$d" +msgstr "%1$s اعضاء الجروپ, صÙحه %2$d" #: 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:69 -#: lib/atomusernoticefeed.php:75 -#, 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 -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 " @@ -4535,7 +3679,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 " @@ -4543,174 +3687,227 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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: 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 -#, 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 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app" +msgstr "خطأ ÙÙ‰ إدراج الأÙتار" -#: classes/Notice.php:245 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "مشكله أثناء Ø­Ùظ الإشعار." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "مشكله أثناء Ø­Ùظ الإشعار." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 +#: classes/Notice.php:1759 #, 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 tag cannot be saved. +#: classes/Status_network.php:339 +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 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -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 "تعذّر Ø­Ùظ الاشتراك." -#: 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 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 -#, fuzzy -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" @@ -4747,232 +3944,137 @@ msgid "Other" msgstr "أخرى" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "صÙحه غير Ù…Ùعنونة" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "شخصية" - -#. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Change your email, avatar, password, profile" -msgstr "غير كلمه سرّك" - -#. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Connect to services" -msgstr "كونيكشونات (Connections)" +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:468 msgid "Connect" msgstr "اتصل" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -msgctxt "MENU" -msgid "Admin" -msgstr "إداري" +msgstr "ضبط الموقع الأساسي" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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 -msgctxt "MENU" -msgid "Invite" -msgstr "ادعÙ" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" -msgstr "اخرج" +msgstr "الشعار" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "أنشئ حسابًا" - -#. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "سجّل" - -#. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Login to the site" -msgstr "Ù„Ùج إلى الموقع" - -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "Ù„Ùج" +msgstr "أنشئ مجموعه جديدة" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "ساعدني!" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" msgstr "مساعدة" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "ابحث عن أشخاص أو نص" - -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -msgstr "ابحث" +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:538 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:605 msgid "Local views" msgstr "المشاهدات المحلية" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "إشعار الصÙحة" -#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -msgid "Secondary site navigation" -msgstr "" - #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "مساعدة" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "عن" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "الأسئله المكررة" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "الشروط" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "خصوصية" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "المصدر" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "اتصل" -#: lib/action.php:784 -msgid "Badge" -msgstr "" - -#. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 -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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4984,54 +4086,49 @@ msgstr "" "agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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 -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:1247 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:1257 msgid "Before" msgstr "قبل" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5039,19 +4136,14 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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." @@ -5062,11 +4154,6 @@ msgstr "التغييرات مش مسموحه للـ لوحه دى." 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 @@ -5074,110 +4161,40 @@ 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 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Design" -msgstr "التصميم" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, 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 -#, 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 -#, fuzzy -msgid "Sessions configuration" -msgstr "ضبط التصميم" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "إشعار الموقع" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "ضبط المسارات" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 "اوص٠الapplication بتاعتك" -#. 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 "Source URL" -#. 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" @@ -5241,10 +4258,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 @@ -5261,19 +4277,15 @@ msgstr "المؤلÙ" 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: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 "تغيير الپاسوورد مش مسموح" @@ -5289,44 +4301,21 @@ msgstr "اكتمل الأمر" msgid "Command failed" msgstr "Ùشل الأمر" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "الملاحظه بالـID ده مالهاش وجود" - -#: 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 "ما Ù†Ùعش يلاقى يوزر بإسم %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 -msgid "Could not find a local user with nickname %s" -msgstr "ما Ù†Ùعش يلاقى يوزر بإسم %s" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Nudge اتبعتت لـ %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5337,55 +4326,34 @@ msgstr "" "المشتركون: %2$s\n" "الإشعارات: %3$s" -#: 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 "ما Ù†Ùعش يضم %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 -msgid "Could not remove user %1$s from group %2$s" -msgstr "ما Ù†Ùعش يتشال اليوزر %1$s من الجروپ %2$s." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "الصÙحه الرئيسية: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "عن: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5394,116 +4362,70 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 "رساله مباشره اتبعتت لـ %s" - -#: 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 "الإشعار من %s مكرر" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "خطأ تكرار الإشعار." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "رÙد على رساله %s" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "خطأ أثناء Ø­Ùظ الإشعار." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Ù…Ùشترك ب%s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +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 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." 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 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "ألغ٠الاشتراك" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "لست Ù…Ùشتركًا بأى أحد." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "لست مشتركًا بأحد." @@ -5513,11 +4435,16 @@ msgstr[3] "أنت مشترك بهؤلاء الأشخاص:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "لا أحد مشترك بك." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "لا أحد مشترك بك." @@ -5527,11 +4454,16 @@ msgstr[3] "هؤلاء الأشخاص مشتركون بك:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "لست عضوًا ÙÙ‰ أى مجموعه." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "لست عضوًا ÙÙ‰ أى مجموعه." @@ -5541,7 +4473,7 @@ msgstr[3] "أنت عضو ÙÙ‰ هذه المجموعات:" msgstr[4] "" msgstr[5] "" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5583,10 +4515,6 @@ msgid "" "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 "" @@ -5615,10 +4543,6 @@ msgstr "" msgid "Connections" msgstr "كونيكشونات (Connections)" -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "خطأ قاعده بيانات" @@ -5701,10 +4625,6 @@ msgstr "" 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" @@ -5728,11 +4648,6 @@ msgstr "مجموعات" 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" @@ -5747,11 +4662,6 @@ msgstr "الشعار" msgid "Add or edit %s logo" msgstr "أض٠أو عدّل شعار %s" -#: lib/groupnav.php:120 -#, php-format -msgid "Add or edit %s design" -msgstr "" - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "المجموعات الأكثر أعضاءً" @@ -5760,29 +4670,16 @@ msgstr "المجموعات الأكثر أعضاءً" 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 "هذا المل٠كبير جدًا. إن أقصى حجم للملÙات هو %s." -#: lib/imagefile.php:93 -msgid "Partial upload." -msgstr "" - #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." msgstr "" @@ -5791,10 +4688,6 @@ msgstr "" 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 "نوع مل٠غير معروÙ" @@ -5825,10 +4718,6 @@ msgstr "انضم" 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 "" @@ -5856,14 +4745,15 @@ msgid "" "%s\n" msgstr "" -#. TRANS: Subject of new-subscriber notification e-mail -#: lib/mail.php:243 +#: lib/mail.php:248 #, php-format -msgid "%1$s is now listening to your notices on %2$s." +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" @@ -5879,19 +4769,13 @@ 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 -#, 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" @@ -5905,30 +4789,25 @@ 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 -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 " @@ -5945,13 +4824,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" @@ -5970,14 +4849,8 @@ msgid "" "%5$s\n" msgstr "" -#. TRANS: Subject for favorite notification email -#: lib/mail.php:583 -#, 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" @@ -5999,7 +4872,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" @@ -6007,13 +4880,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" @@ -6040,17 +4913,13 @@ msgid "" "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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "من" @@ -6062,10 +4931,6 @@ msgstr "تعذّر تحليل الرساله." 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 "" @@ -6105,24 +4970,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 "" @@ -6135,93 +5000,96 @@ msgstr "أرسل إشعارًا مباشرًا" msgid "To" msgstr "إلى" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "المحار٠المتوÙرة" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "أرسل" +msgstr "" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "أرسل إشعارًا" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "ما الأخبار يا %sØŸ" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "أرÙÙ‚" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "أرÙÙ‚ ملÙًا" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "اعمل مشاركه لمكانى" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "ما تعملش مشاركه لمكانى" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "ÙÙ‰ السياق" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "متكرر من" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "رÙد على هذا الإشعار" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "رÙد" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "الإشعار مكرر" @@ -6233,10 +5101,6 @@ msgstr "نبّه هذا المستخدم" 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 "خطأ أثناء إدراج المل٠الشخصى الجديد" @@ -6294,7 +5158,7 @@ msgstr "رسائلك المÙرسلة" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "مش معروÙ" @@ -6331,7 +5195,7 @@ msgstr "" msgid "All groups" msgstr "كل المجموعات" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6355,7 +5219,7 @@ msgstr "Ù…Ùختارون" msgid "Popular" msgstr "مشهورة" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "لا مدخلات رجوع إلى." @@ -6371,19 +5235,10 @@ msgstr "نعم" msgid "Repeat this notice" 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 "" -#: lib/sandboxform.php:67 -msgid "Sandbox" -msgstr "" - #: lib/sandboxform.php:78 msgid "Sandbox this user" msgstr "أض٠هذا المستخدم إلى صندوق الرمل" @@ -6474,14 +5329,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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +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 "أزل هذا المستخدم من صندوق الرمل" @@ -6502,11 +5393,6 @@ msgstr "ألغ٠الاشتراك مع هذا المستخدم" msgid "Unsubscribe" msgstr "ألغ٠الاشتراك" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "ليس للمستخدم مل٠شخصى." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "عدّل الأÙتار" @@ -6539,73 +5425,38 @@ msgstr "رسالة" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "مل٠المستخدم الشخصي" - -#: lib/userprofile.php:366 -#, fuzzy -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:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "قبل لحظات قليلة" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "قبل دقيقه تقريبًا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 -#, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "قبل ساعه تقريبًا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 -#, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "قبل يوم تقريبا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 -#, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "قبل شهر تقريبًا" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 -#, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "قبل سنه تقريبًا" @@ -6613,13 +5464,3 @@ msgstr "قبل سنه تقريبًا" #, php-format msgid "%s is not a valid color!" msgstr "%s ليس لونًا صحيحًا!" - -#: 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/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po index e38fe609c7..d4eb9fe7f9 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:11+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:22+0000\n" "Language-Team: Bulgarian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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 "ДоÑтъп" @@ -43,10 +43,9 @@ msgstr "" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" -msgstr "ЧаÑтен" +msgstr "ПоверителноÑÑ‚" #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 @@ -85,38 +84,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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:114 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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:131 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 @@ -266,23 +265,6 @@ msgid "" "current configuration." msgstr "" -#: 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 -#, fuzzy -msgid "Unable to save your design settings." -msgstr "Грешка при запиÑване наÑтройките за Twitter" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Грешка при обновÑване на потребителÑ." - #: actions/apiblockcreate.php:105 msgid "You cannot block yourself!" msgstr "Ðе можете да блокирате Ñебе Ñи!" @@ -315,49 +297,50 @@ msgstr "Преки ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾ %s" msgid "All the direct messages sent to %s" msgstr "Ð’Ñички преки ÑъобщениÑ, изпратени до %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "ЛипÑва текÑÑ‚ на Ñъобщението" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Твърде дълго. Може да е най-много %d знака." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "ПолучателÑÑ‚ не е открит" -#: actions/apidirectmessagenew.php:150 +#: 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -372,135 +355,129 @@ 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 "" #: actions/apifriendshipsshow.php:134 -#, fuzzy msgid "Could not determine source user." -msgstr "Грешка при изтеглÑне на Ð¾Ð±Ñ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ðº" +msgstr "ЦелевиÑÑ‚ потребител не беше открит." #: actions/apifriendshipsshow.php:142 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 -#, 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 "Групата не е открита." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "Вече членувате в тази група." -#: actions/apigroupjoin.php:119 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "Грешка при проÑледÑване — потребителÑÑ‚ не е намерен." +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 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 #, 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 -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" @@ -509,22 +486,17 @@ msgstr "групи в %s" msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Ðеправилен размер." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -537,14 +509,8 @@ msgid "Invalid nickname / password!" msgstr "Ðеправилно име или парола!" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "Грешка в наÑтройките на потребителÑ." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "Грешка в базата от данни — отговор при вмъкването: %s" +msgstr "Да не Ñе изтрива приложението" #: actions/apioauthauthorize.php:214 #, php-format @@ -576,7 +542,7 @@ msgstr "" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "Разрешение или забрана на доÑтъпа" #: actions/apioauthauthorize.php:292 #, php-format @@ -587,12 +553,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:463 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 @@ -600,29 +566,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 "Ðе може да изтривате бележки на друг потребител." @@ -631,67 +596,73 @@ msgstr "Ðе може да изтривате бележки на друг по msgid "No such notice." msgstr "ÐÑма такава бележка." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Ðе можете да повтарÑте ÑобÑтвени бележки." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "Твърде дълга бележка. ТрÑбва да е най-много 140 знака." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:242 actions/newnotice.php:157 +#: lib/mailhandler.php:60 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "Твърде дълго. Може да е най-много %d знака." + +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе е открито." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, 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 / %3$s." -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Общ поток на %s" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -706,20 +677,18 @@ 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 -#, 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." -msgstr "ÐÑма такъв документ." +msgstr "ÐÑма прикачени файлове." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -751,9 +720,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 @@ -771,7 +739,7 @@ msgid "Preview" msgstr "Преглед" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Изтриване" @@ -791,10 +759,6 @@ msgstr "ÐÑма качен файл." msgid "Pick a square area of the image to be your avatar" msgstr "Изберете квадратна облаÑÑ‚ от изображението за аватар" -#: actions/avatarsettings.php:347 actions/grouplogo.php:380 -msgid "Lost our file data." -msgstr "" - #: actions/avatarsettings.php:370 msgid "Avatar updated." msgstr "Ðватарът е обновен." @@ -811,11 +775,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 " @@ -827,17 +791,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 "Да не Ñе блокира този потребител" @@ -846,23 +809,24 @@ 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 "Грешка при запиÑване данните за блокирането." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -872,8 +836,8 @@ msgstr "Грешка при запиÑване данните за блокир #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "ÐÑма такава група" @@ -883,14 +847,9 @@ msgid "%s blocked profiles" msgstr "Блокирани за %s" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "Блокирани за %s, Ñтраница %d" - -#: actions/blockedfromgroup.php:115 -#, fuzzy -msgid "A list of the users blocked from joining this group." -msgstr "СпиÑък Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ð¸Ñ‚Ðµ в тази група." +msgstr "%1$s и приÑтели, Ñтраница %2$d" #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" @@ -906,9 +865,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." @@ -924,9 +883,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 @@ -973,31 +932,27 @@ 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:1307 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 "" @@ -1008,15 +963,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 "Изтриване на бележката" +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 @@ -1024,7 +977,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 "Ðе Ñте влезли в ÑиÑтемата." @@ -1053,7 +1006,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Изтриване на бележката" @@ -1080,119 +1033,97 @@ msgstr "" msgid "Delete this user" 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 "" - -#: actions/designadminpanel.php:74 -msgid "Design settings for this StatusNet site." -msgstr "" - -#: actions/designadminpanel.php:276 -#, 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 msgid "Change logo" msgstr "СмÑна на логото" -#: actions/designadminpanel.php:381 +#: actions/designadminpanel.php:431 msgid "Site logo" msgstr "Лого на Ñайта" -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" -msgstr "ПромÑна" - -#: actions/designadminpanel.php:405 -#, fuzzy +#: actions/designadminpanel.php:460 msgid "Site theme" -msgstr "Ðова бележка" +msgstr "Път до Ñайта" -#: actions/designadminpanel.php:406 -#, fuzzy -msgid "Theme for the site." -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 -#, fuzzy, php-format +#: actions/designadminpanel.php:496 +#, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." -msgstr "Може да качите лого за групата ви." +msgstr "" +"Можете да качите лично изображение за фон. МакÑималната големина на файла е " +"2MB." #. 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 -msgid "Turn background image on or off." -msgstr "" - -#: actions/designadminpanel.php:482 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 -#, fuzzy +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" -msgstr "СпиÑък" +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 @@ -1202,10 +1133,6 @@ msgstr "" msgid "Save" msgstr "Запазване" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "Тази бележка не е отбелÑзана като любима!" @@ -1215,9 +1142,9 @@ msgid "Add to favorites" msgstr "ДобавÑне към любимите" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "ÐÑма такъв документ." +msgstr "ÐÑма такава бележка." #: actions/editapplication.php:54 msgid "Edit Application" @@ -1232,25 +1159,10 @@ msgstr "За да редактирате приложение, Ñ‚Ñ€Ñбва да msgid "No such application." msgstr "ÐÑма такова приложение." -#: actions/editapplication.php:161 -#, fuzzy -msgid "Use this form to edit your application." -msgstr "Използвайте тази бланка за Ñъздаване на нова група." - #: actions/editapplication.php:177 actions/newapplication.php:159 msgid "Name is required." msgstr "Името е задължително." -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Пълното име е твърде дълго (макÑ. 255 знака)" - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Опитайте друг пÑевдоним, този вече е зает." - #: actions/editapplication.php:186 actions/newapplication.php:168 msgid "Description is required." msgstr "ОпиÑанието е задължително." @@ -1259,23 +1171,10 @@ msgstr "ОпиÑанието е задължително." msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "ÐдреÑÑŠÑ‚ на личната Ñтраница не е правилен URL." - -#: actions/editapplication.php:203 actions/newapplication.php:188 -msgid "Organization is required." -msgstr "" - #: actions/editapplication.php:206 actions/newapplication.php:191 msgid "Organization is too long (max 255 chars)." msgstr "Името на организациÑта е твърде дълго (макÑ. 255 знака)." -#: actions/editapplication.php:209 actions/newapplication.php:194 -msgid "Organization homepage is required." -msgstr "" - #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." msgstr "" @@ -1284,11 +1183,6 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Грешка при обновÑване на групата." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" @@ -1300,13 +1194,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 "За да редактирате групата, Ñ‚Ñ€Ñбва да Ñте й админиÑтратор." - -#: actions/editgroup.php:158 -msgid "Use this form to edit the group." -msgstr "" +msgstr "За да редактирате група, Ñ‚Ñ€Ñбва да Ñте влезли." #: actions/editgroup.php:205 actions/newgroup.php:145 #, php-format @@ -1322,11 +1211,6 @@ msgstr "Ðеправилен пÑевдоним: \"%s\"" msgid "Could not update group." msgstr "Грешка при обновÑване на групата." -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy -msgid "Could not create aliases." -msgstr "Грешка при отбелÑзване като любима." - #: actions/editgroup.php:280 msgid "Options saved." msgstr "ÐаÑтройките Ñа запазени." @@ -1362,7 +1246,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 "Премахване" @@ -1381,7 +1264,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 "Отказ" @@ -1396,7 +1278,6 @@ 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 "ДобавÑне" @@ -1422,16 +1303,14 @@ 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 @@ -1448,12 +1327,6 @@ msgstr "Изпращане на пиÑмо при отбелÑзване на м msgid "Send me email when someone sends me a private message." 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 "Изпращане на пиÑмо при ново лично Ñъобщение." - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." @@ -1471,9 +1344,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 @@ -1486,7 +1358,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 "Ðеправилен Ð°Ð´Ñ€ÐµÑ Ð½Ð° е-поща." @@ -1527,17 +1399,10 @@ msgstr "" msgid "No pending confirmation to cancel." 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 "Грешен IM адреÑ." - #. 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. @@ -1547,9 +1412,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." @@ -1577,9 +1441,8 @@ msgid "This notice is already a favorite!" 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 @@ -1618,11 +1481,6 @@ msgstr "" msgid "%s's favorite notices" msgstr "Любими бележки на %s" -#: actions/favoritesrss.php:115 -#, fuzzy, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "Бележки от %1$s в %2$s." - #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" @@ -1651,18 +1509,16 @@ msgid "No attachments." 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!" @@ -1673,24 +1529,16 @@ msgid "That user has blocked you from subscribing." msgstr "ПотребителÑÑ‚ е забранил да Ñе абонирате за него." #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Забранено." +msgstr "Ðе Ñте абонирани за никого." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Грешка при преобразуване на tokens за одобрение в tokens за доÑтъп." +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy 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." @@ -1700,34 +1548,23 @@ msgstr "ÐÑма такъв файл." msgid "Cannot read file." msgstr "Грешка при четене на файла." -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Ðеправилен размер." - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Ðе може да изпращате ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð¾ този потребител." - -#: 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 "Ðе е открит профил Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор." @@ -1749,9 +1586,8 @@ msgid "User is not a member of group." msgstr "ПотребителÑÑ‚ не членува в групата." #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "Блокиране на потребителÑ" +msgstr "Разблокиране на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¾Ñ‚ групата" #: actions/groupblock.php:160 #, php-format @@ -1763,19 +1599,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 "СпиÑък Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ð¸Ñ‚Ðµ в тази група." +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 "СпиÑък Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ð¸Ñ‚Ðµ в тази група." - -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" +msgstr "Разблокиране на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¾Ñ‚ групата" #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." @@ -1785,42 +1615,26 @@ msgstr "ЛипÑва ID." msgid "You must be logged in to edit a group." msgstr "За да редактирате група, Ñ‚Ñ€Ñбва да Ñте влезли." -#: actions/groupdesignsettings.php:144 -#, fuzzy -msgid "Group design" -msgstr "Групи" - #: actions/groupdesignsettings.php:155 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." 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 "Грешка при обновÑване на потребителÑ." - #: 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" msgstr "Лого на групата" #: actions/grouplogo.php:153 -#, fuzzy, php-format +#, php-format msgid "" "You can upload a logo image for your group. The maximum file size is %s." -msgstr "Може да качите лого за групата ви." - -#: actions/grouplogo.php:365 -#, fuzzy -msgid "Pick a square area of the image to be the logo." -msgstr "Изберете квадратна облаÑÑ‚ от изображението за аватар" +msgstr "" +"Можете да качите личен аватар тук. МакÑималната големина на файла е %s." #: actions/grouplogo.php:399 msgid "Logo updated." @@ -1836,9 +1650,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." @@ -1852,15 +1666,6 @@ msgstr "ÐаÑтройки" msgid "Block" msgstr "Блокиране" -#: actions/groupmembers.php:487 -#, fuzzy -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 "" @@ -1869,17 +1674,11 @@ 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" -#. 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 -msgid "Updates from members of %1$s on %2$s!" -msgstr "Бележки от %1$s в %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" @@ -1904,15 +1703,6 @@ msgstr "" msgid "Create a new group" msgstr "Създаване на нова група" -#: actions/groupsearch.php:52 -#, 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 "" -"ТърÑене на хора в %%site.name%% по техните име, мÑÑто или интереÑи. " -"ОтделÑйте фразите за " - #: actions/groupsearch.php:58 msgid "Group search" msgstr "ТърÑене на групи" @@ -1936,25 +1726,18 @@ msgid "" "action.newgroup%%) yourself!" msgstr "" -#: actions/groupunblock.php:91 -msgid "Only an admin can unblock group members." -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 "ÐаÑтройки за SMS" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -1970,16 +1753,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 "IM адреÑ" +msgstr "ÐÐ´Ñ€ÐµÑ Ð½Ð° е-поща" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2009,9 +1790,8 @@ 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 @@ -2079,17 +1859,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Грешен IM адреÑ." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -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. @@ -2099,14 +1872,13 @@ msgstr "Това не е вашиÑÑ‚ Jabber ID." #. 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 @@ -2122,9 +1894,9 @@ 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 "За да каните хора в %s, Ñ‚Ñ€Ñбва да Ñте влезли." +msgstr "За да редактирате група, Ñ‚Ñ€Ñбва да Ñте влезли." #: actions/invite.php:72 #, php-format @@ -2145,7 +1917,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2192,10 +1964,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 @@ -2265,67 +2036,54 @@ msgstr "" 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 "ÐÑма пÑевдоним." - -#. 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 +#: actions/joingroup.php:141 +#, php-format msgid "%1$s joined group %2$s" -msgstr "%s Ñе приÑъедини към групата %s" +msgstr "%1$s напуÑна групата %2$s" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "За напуÑнете група, Ñ‚Ñ€Ñбва да Ñте влезли." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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 -#, 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." @@ -2333,61 +2091,24 @@ msgstr "" "За по-голÑма ÑигурноÑÑ‚, Ð¼Ð¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ отново потребителÑкото Ñи име и парола " "при промÑна на наÑтройките." -#: actions/login.php:270 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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 -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 "Грешка при проÑледÑване — потребителÑÑ‚ не е намерен." - -#: actions/makeadmin.php:146 -#, fuzzy, php-format -msgid "Can't make %1$s an admin for group %2$s." -msgstr "За да редактирате групата, Ñ‚Ñ€Ñбва да Ñте й админиÑтратор." - -#: actions/microsummary.php:69 -#, fuzzy -msgid "No current status." -msgstr "ÐÑма резултати." +msgstr "" #: actions/newapplication.php:52 msgid "New Application" msgstr "Ðово приложение" #: actions/newapplication.php:64 -#, fuzzy msgid "You must be logged in to register an application." -msgstr "За да Ñъздавате група, Ñ‚Ñ€Ñбва да Ñте влезли." - -#: actions/newapplication.php:143 -#, fuzzy -msgid "Use this form to register a new application." -msgstr "Използвайте тази бланка за Ñъздаване на нова група." - -#: actions/newapplication.php:176 -msgid "Source URL is required." -msgstr "" - -#: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy -msgid "Could not create application." -msgstr "Грешка при отбелÑзване като любима." +msgstr "За да редактирате приложение, Ñ‚Ñ€Ñбва да Ñте влезли." #: actions/newgroup.php:53 msgid "New group" @@ -2401,12 +2122,15 @@ msgstr "Използвайте тази бланка за Ñъздаване н msgid "New message" msgstr "Ðово Ñъобщение" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "ÐÑма Ñъдържание!" @@ -2414,7 +2138,8 @@ msgstr "ÐÑма Ñъдържание!" msgid "No recipient specified." msgstr "Ðе е указан получател." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2425,12 +2150,7 @@ msgstr "" msgid "Message sent" msgstr "Съобщението е изпратено" -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "ПрÑкото Ñъобщение до %s е изпратено." - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Грешка в Ajax" @@ -2438,7 +2158,7 @@ msgstr "Грешка в Ajax" msgid "New notice" msgstr "Ðова бележка" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Бележката е публикувана" @@ -2456,9 +2176,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 "Съобщение от %1$s в %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2486,7 +2206,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 @@ -2498,36 +2218,24 @@ msgid "Nudge sent!" 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 -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "Ðе членувате в тази група." +msgstr "Ðе Ñте ÑобÑтвеник на това приложение." #: actions/oauthconnectionssettings.php:186 #, php-format @@ -2542,31 +2250,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Ðеподдържан формат на данните" @@ -2588,7 +2295,7 @@ msgstr "Управление на различни други наÑтройки #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr " (безплатна уÑлуга)" #: actions/othersettings.php:116 msgid "Shorten URLs with" @@ -2599,47 +2306,29 @@ msgid "Automatic shortening service to use." msgstr "УÑлуга за автоматично Ñъкращаване, коÑто да Ñе ползва." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -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 "УÑлугата за Ñъкращаване е твърде дълга (може да е до 50 знака)." -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "Ðе е указана група." - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "Ðе е указана бележка." - #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Сървърът не е върнал Ð°Ð´Ñ€ÐµÑ Ð½Ð° профила." +msgstr "ÐÑма заÑвка за одобрение." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "Ðевалидно Ñъдържание на бележка" +msgstr "Ðе е указана бележка." #: actions/otp.php:104 -#, fuzzy msgid "Login token expired." -msgstr "Влизане в Ñайта" +msgstr "Вход в Ñайта" #: actions/outbox.php:58 -#, 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 @@ -2658,11 +2347,6 @@ msgstr "СмÑна на паролата" msgid "Change your password." msgstr "СмÑна на паролата." -#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy -msgid "Password change" -msgstr "Паролата е запиÑана." - #: actions/passwordsettings.php:104 msgid "Old password" msgstr "Стара парола" @@ -2676,7 +2360,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 "Потвърждаване" @@ -2688,11 +2372,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 "Паролите не Ñъвпадат." @@ -2713,7 +2397,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 "Пътища" @@ -2721,25 +2405,10 @@ msgstr "Пътища" msgid "Path and server settings for this StatusNet site." msgstr "Пътища и Ñървърни наÑтройки за тази инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ Ð½Ð° StatusNet." -#: actions/pathsadminpanel.php:157 -#, fuzzy, php-format -msgid "Theme directory not readable: %s." -msgstr "Страницата не е доÑтъпна във вида медиÑ, който приемате" - #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Страницата не е доÑтъпна във вида медиÑ, който приемате" - -#: actions/pathsadminpanel.php:169 -#, fuzzy, php-format -msgid "Background directory not writable: %s." -msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° фона" - -#: actions/pathsadminpanel.php:177 -#, fuzzy, php-format -msgid "Locales directory not readable: %s." -msgstr "Страницата не е доÑтъпна във вида медиÑ, който приемате" +msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° аватара" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2785,18 +2454,6 @@ msgstr "" 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 "Ðватари" @@ -2879,19 +2536,13 @@ msgid "People search" msgstr "ТърÑене на хора" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Това не е правилен Ð°Ð´Ñ€ÐµÑ Ð½Ð° е-поща." - -#: actions/peopletag.php:142 -#, fuzzy, 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 @@ -2915,43 +2566,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 "Къде Ñе намирате (град, община, държава и Ñ‚.н.)" @@ -2993,7 +2644,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 Ñимвола)." @@ -3011,15 +2662,6 @@ msgstr "Името на езика е твърде дълго (може да е msgid "Invalid tag: \"%s\"" msgstr "Ðеправилен етикет: \"%s\"" -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Грешка при запазване етикетите." - #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Грешка при запазване на профила." @@ -3098,9 +2740,8 @@ msgid "" msgstr "" #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "ЕмиÑÐ¸Ñ Ð½Ð° Ð¾Ð±Ñ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ðº" +msgstr "Общ поток, Ñтраница %d" #: actions/publictagcloud.php:63 #, php-format @@ -3123,10 +2764,6 @@ msgid "" "one!" msgstr "" -#: actions/publictagcloud.php:134 -msgid "Tag cloud" -msgstr "" - #: actions/recoverpassword.php:36 msgid "You are already logged in!" msgstr "Вече Ñте влезли!" @@ -3155,12 +2792,6 @@ msgstr "Кодът за потвърждение е твърде Ñтар. За msgid "Could not update user with confirmed email address." msgstr "Грешка при обновÑване на потребител Ñ Ð¿Ð¾Ñ‚Ð²ÑŠÑ€Ð´ÐµÐ½ email адреÑ." -#: 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 "" @@ -3241,7 +2872,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 "Грешка в наÑтройките на потребителÑ." @@ -3249,81 +2880,98 @@ 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 -#, 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:507 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:494 -#, fuzzy, php-format +#: 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 " оÑвен тези лични данни: парола, е-поща, меÑинджър, телефон." +msgstr "" -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3356,7 +3004,7 @@ msgstr "" "Благодарим, че Ñе включихте в Ñайта и дано ползването на уÑлугата ви ноÑи " "Ñамо приÑтни мигове!" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3419,9 +3067,8 @@ msgid "That’s a local profile! Login to subscribe." msgstr "Това е локален профил! Влезте, за да Ñе абонирате." #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "Ðе е получен token за одобрение." +msgstr "" #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." @@ -3439,7 +3086,7 @@ msgstr "Ðе можете да повтарÑте ÑобÑтвена бележ msgid "You already repeated that notice." msgstr "Вече Ñте повторили тази бележка." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Повторено" @@ -3453,11 +3100,6 @@ msgstr "Повторено!" msgid "Replies to %s" msgstr "Отговори на %s" -#: actions/replies.php:128 -#, fuzzy, php-format -msgid "Replies to %1$s, page %2$d" -msgstr "Отговори до %1$s в %2$s!" - #: actions/replies.php:145 #, php-format msgid "Replies feed for %s (RSS 1.0)" @@ -3477,7 +3119,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 @@ -3490,8 +3132,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 @@ -3499,40 +3141,27 @@ msgstr "" msgid "Replies to %1$s on %2$s!" msgstr "Отговори до %1$s в %2$s!" -#: actions/revokerole.php:75 -#, fuzzy -msgid "You cannot revoke user roles on this site." -msgstr "Ðе можете да заглушавате потребители на този Ñайт." - -#: actions/revokerole.php:82 -#, fuzzy -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 "Ðе можете да заглушавате потребители на този Ñайт." #: 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 "СеÑии" #: actions/sessionsadminpanel.php:65 -#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "ОÑновни наÑтройки на тази инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ Ð½Ð° StatusNet." +msgstr "Пътища и Ñървърни наÑтройки за тази инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ Ð½Ð° StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" @@ -3556,14 +3185,12 @@ msgid "Save site settings" 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 @@ -3571,7 +3198,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 "Име" @@ -3582,12 +3209,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 "СтатиÑтики" @@ -3597,10 +3224,6 @@ msgstr "СтатиÑтики" 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 "" @@ -3625,22 +3248,12 @@ msgstr "" msgid "Access token URL" msgstr "" -#: actions/showapplication.php:283 -#, fuzzy -msgid "Authorize URL" -msgstr "Ðвтор" - #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "ÐаиÑтина ли иÑкате да изтриете тази бележка?" - #: actions/showfavorites.php:79 #, php-format msgid "%1$s's favorite notices, page %2$d" @@ -3674,16 +3287,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 @@ -3696,9 +3309,9 @@ msgid "%s group" 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" @@ -3718,31 +3331,27 @@ msgstr "Бележка" msgid "Aliases" msgstr "ПÑевдоними" -#: actions/showgroup.php:302 -msgid "Group actions" -msgstr "" - #: actions/showgroup.php:338 -#, fuzzy, php-format +#, 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 +#, 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 +#, 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 msgid "Members" msgstr "Членове" @@ -3750,17 +3359,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." @@ -3770,7 +3379,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." @@ -3779,7 +3388,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтратори" @@ -3805,20 +3414,15 @@ msgstr "Съобщение от %1$s в %2$s" msgid "Notice deleted." msgstr "Бележката е изтрита." -#: actions/showstream.php:73 -#, fuzzy, php-format -msgid " tagged %s" -msgstr "Бележки Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ %s" - #: actions/showstream.php:79 #, php-format msgid "%1$s, page %2$d" msgstr "%1$s, Ñтраница %2$d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, 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 #, php-format @@ -3854,8 +3458,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 @@ -3876,9 +3480,9 @@ msgid "" msgstr "" #: actions/showstream.php:305 -#, fuzzy, php-format +#, php-format msgid "Repeat of %s" -msgstr "Отговори на %s" +msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° %s" #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." @@ -3889,18 +3493,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 "Името на Ñайта е задължително." #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "ÐдреÑÑŠÑ‚ на е-поща за контакт е задължителен" +msgstr "Ðеправилен Ð°Ð´Ñ€ÐµÑ Ð½Ð° е-поща." #: actions/siteadminpanel.php:159 #, php-format @@ -3908,9 +3510,8 @@ msgid "Unknown language \"%s\"." msgstr "Ðепознат език \"%s\"." #: actions/siteadminpanel.php:165 -#, fuzzy msgid "Minimum text limit is 0 (unlimited)." -msgstr "Минималното ограничение на текÑта е 140 знака." +msgstr "" #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3948,11 +3549,6 @@ msgstr "" msgid "Contact email address for your site" msgstr "ÐÐ´Ñ€ÐµÑ Ð½Ð° е-поща за контакт ÑÑŠÑ Ñайта" -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "МеÑтоположение" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "ЧаÑови поÑÑ Ð¿Ð¾ подразбиране" @@ -3990,37 +3586,24 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Ðова бележка" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "Ðово Ñъобщение" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Грешка при запиÑване наÑтройките за Twitter" +msgstr "Бележки" #: 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 "Изтриване на бележката" #: 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 "Запазване наÑтройките на Ñайта" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 @@ -4036,15 +3619,13 @@ msgstr "Може да получавате на е-пощата Ñи 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 @@ -4066,13 +3647,6 @@ msgstr "Код за потвърждение" 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 -#, fuzzy -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" @@ -4085,9 +3659,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 @@ -4098,12 +3671,6 @@ msgstr "" "Получаване на бележки в SMS. Имайте предвид, че може да има допълнителни " "такÑи от оператора." -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "ÐаÑтройките Ñа запазени." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." @@ -4126,14 +3693,13 @@ msgstr "Този телефонен номер вече Ñе използва о #. 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 "" -"Ðа Ñ‚ÐµÐ»ÐµÑ„Ð¾Ð½Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€, който Ñте въвели, беше изпратен код за потвърждение. " -"Проверете ÑъобщениÑта (или папката за Ñпам) за кода и указаниÑта за " -"използването му." +"Ðа адреÑа на е-поща, който Ñте въвели, беше изпратен код за потвърждение. " +"Проверете кутиÑта (или папката за Ñпам) за кода и указаниÑта за използването " +"му." #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4142,9 +3708,8 @@ msgstr "Този код за потвърждение е грешен." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: 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. @@ -4152,12 +3717,6 @@ msgstr "Потвърждаването е прекъÑнато." msgid "That is not your phone number." 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" - #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" @@ -4186,19 +3745,10 @@ 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 "ПромÑна наÑтройките на Ñайта" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" - #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." msgstr "" @@ -4239,19 +3789,14 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Запазване наÑтройките на Ñайта" - #: actions/subedit.php:70 msgid "You are not subscribed to that profile." msgstr "Ðе Ñте абонирани за този профил" -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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." @@ -4261,25 +3806,15 @@ msgstr "" msgid "No such profile." msgstr "ÐÑма такъв профил." -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Ðе Ñте абонирани за този профил" - -#: actions/subscribe.php:145 -#, fuzzy -msgid "Subscribed" -msgstr "Ðбониране" - #: actions/subscribers.php:50 #, php-format msgid "%s subscribers" msgstr "%s абоната" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "Ðбонаменти на %s, Ñтраница %d" +msgstr "Ðбонати на %1$s, Ñтраница %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4314,9 +3849,9 @@ msgid "%s subscriptions" msgstr "Ðбонаменти на %s" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "Ðбонаменти на %s, Ñтраница %d" +msgstr "Ðбонаменти на %1$s, Ñтраница %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4351,34 +3886,28 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Бележки Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ %s, Ñтраница %d" +msgstr "Бележки Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ %s" #: actions/tag.php:87 -#, fuzzy, php-format +#, 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 +#, 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 +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "ЕмиÑÐ¸Ñ Ñ Ð±ÐµÐ»ÐµÐ¶ÐºÐ¸ на %s" +msgstr "ЕмиÑÐ¸Ñ Ñ Ð±ÐµÐ»ÐµÐ¶ÐºÐ¸ на %s (Atom)" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "ÐÑма такъв документ." - -#: actions/tagother.php:65 -#, fuzzy, php-format -msgid "Tag %s" -msgstr "Етикети" +msgstr "ЛипÑват аргументи return-to." #: actions/tagother.php:77 lib/userprofile.php:76 msgid "User profile" @@ -4389,11 +3918,6 @@ msgstr "ПотребителÑки профил" msgid "Photo" msgstr "Снимка" -#: actions/tagother.php:141 -#, fuzzy -msgid "Tag user" -msgstr "Етикети" - #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " @@ -4417,32 +3941,21 @@ 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 "Ðе Ñте блокирали този потребител." #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "ПотребителÑÑ‚ ви е блокирал." +msgstr "ПотребителÑÑ‚ не е заглушен." #: actions/unsilence.php:72 msgid "User is not silenced." msgstr "ПотребителÑÑ‚ не е заглушен." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Сървърът не е върнал Ð°Ð´Ñ€ÐµÑ Ð½Ð° профила." - -#: actions/unsubscribe.php:98 -#, fuzzy -msgid "Unsubscribed" -msgstr "ОтпиÑване" +msgstr "Ðе е открит профил Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор." #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format @@ -4456,10 +3969,6 @@ 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 "" @@ -4479,10 +3988,6 @@ msgstr "" 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 "" @@ -4491,26 +3996,10 @@ msgstr "" 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 -#, fuzzy -msgid "Default subscription" -msgstr "Ð’Ñички абонаменти" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "" -"Ðвтоматично абониране за вÑеки, който Ñе абонира за мен (подходÑщо за " -"ботове)." - #: actions/useradminpanel.php:251 msgid "Invitations" msgstr "Покани" @@ -4528,16 +4017,13 @@ msgid "Authorize subscription" msgstr "ОдобрÑване на абонамента" #: actions/userauthorization.php:110 -#, fuzzy msgid "" "Please check these details to make sure that you want to subscribe to this " "user’s notices. If you didn’t just ask to subscribe to someone’s notices, " "click “Rejectâ€." msgstr "" -"Проверете тези детайли и Ñе уверете, че иÑкате да Ñе абонирате за бележките " -"на този потребител. Ðко не иÑкате абонамента, натиÑнете \"Cancel\" (Отказ)." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Лиценз" @@ -4554,11 +4040,6 @@ msgstr "Ðбониране за този потребител" msgid "Reject" msgstr "ОхвърлÑне" -#: actions/userauthorization.php:220 -#, fuzzy -msgid "Reject this subscription" -msgstr "Ðбонаменти на %s" - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "ÐÑма заÑвка за одобрение." @@ -4568,28 +4049,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 "" -"Ðбонаментът е одобрен, но не е зададен callback URL. За да завършите " -"одобрÑването, проверете инÑтрукциите на Ñайта. ВашиÑÑ‚ token за абонамент е:" #: 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 "" -"Ðбонаментът е отказан, но не е зададен callback URL. За да откажете напълно " -"абонамента, проверете инÑтрукциите на Ñайта." #: actions/userauthorization.php:303 #, php-format @@ -4617,19 +4092,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 "Грешка при четене адреÑа на аватара '%s'" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Грешен вид изображение за '%s'" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "ÐаÑтройки на профила" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4643,9 +4113,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" @@ -4666,29 +4136,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 " @@ -4696,7 +4166,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 " @@ -4704,187 +4174,189 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -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 "" -#: classes/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Грешка при обновÑване на групата." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Профил на групата" - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Грешка при обновÑване на групата." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Грешка при отбелÑзване като любима." - -#: classes/Message.php:45 -#, 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Грешка в базата от данни — отговор при вмъкването: %s" +msgstr "Грешка при вмъкване на аватар" -#: classes/Notice.php:245 -#, 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:270 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:276 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте " "отново Ñлед нÑколко минути." -#: classes/Notice.php:260 -#, 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Проблем при запиÑване на бележката." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Проблем при запиÑване на бележката." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -#, fuzzy -msgid "You have been banned from subscribing." -msgstr "ПотребителÑÑ‚ е забранил да Ñе абонирате за него." - -#: classes/Subscription.php:78 -msgid "Already subscribed!" +#. 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:82 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +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 "ПотребителÑÑ‚ ви е блокирал." -#: classes/Subscription.php:167 -#, fuzzy -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 "Грешка при добавÑне на нов абонамент." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't 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 "Грешка при добавÑне на нов абонамент." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't 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 "Грешка при добавÑне на нов абонамент." -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Грешка при Ñъздаване на нов абонамент." +msgstr "Грешка при Ñъздаване на групата." -#: classes/User_group.php:510 -#, fuzzy +#. 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 @@ -4906,12 +4378,6 @@ msgstr "СмÑна на паролата" msgid "Change email handling" msgstr "ПромÑна обработката на пиÑмата" -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:137 -#, fuzzy -msgid "Design your profile" -msgstr "ПотребителÑки профил" - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 msgid "Other options" @@ -4923,228 +4389,179 @@ msgid "Other" msgstr "Друго" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Ðеозаглавена Ñтраница" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Лично" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Свързване" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -msgctxt "MENU" -msgid "Admin" -msgstr "ÐаÑтройки" - #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "Покани" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Изход" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 msgctxt "TOOLTIP" msgid "Create an account" msgstr "Създаване на нова Ñметка" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy +#: lib/action.php:498 msgctxt "MENU" msgid "Register" msgstr "РегиÑтриране" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Влизане в Ñайта" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Вход" -#. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Help me!" -msgstr "Помощ" - -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Помощ" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ТърÑене за хора или бележки" -#: lib/action.php:493 +#: lib/action.php:516 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 -#, 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:605 msgid "Local views" msgstr "" -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, fuzzy -msgid "Page notice" -msgstr "Ðова бележка" - #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "Ðбонаменти" +msgstr "ОÑновна наÑтройка на Ñайта" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Помощ" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "ОтноÑно" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "ВъпроÑи" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "УÑловиÑ" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "ПоверителноÑÑ‚" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Изходен код" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Контакт" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Табелка" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5156,54 +4573,54 @@ msgstr "" "licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Преди" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5211,11 +4628,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5224,143 +4641,51 @@ msgstr "" 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 -#, fuzzy -msgid "Changes to that panel are not allowed." -msgstr "ЗапиÑването не е позволено." - -#. TRANS: Client error message. -#: lib/adminpanelaction.php:229 -#, fuzzy -msgid "showForm() not implemented." -msgstr "Командата вÑе още не Ñе поддържа." - -#. TRANS: Client error message -#: lib/adminpanelaction.php:259 -#, fuzzy -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 "Грешка при запиÑване наÑтройките за 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 -#, fuzzy -msgctxt "MENU" -msgid "Design" -msgstr "ВерÑиÑ" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, 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 -#, 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 -#, fuzzy -msgid "Sessions configuration" -msgstr "ÐаÑтройка на оформлението" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Ðова бележка" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "ÐаÑтройка на пътищата" +msgstr "Изтриване на бележката" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format -msgid "Describe your application in %d characters" -msgstr "Опишете групата или темата в до %d букви" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Опишете групата или темата" +msgstr "Изтриване на приложението" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "ÐÐ´Ñ€ÐµÑ Ð½Ð° Ñтраница, блог или профил в друг Ñайт на групата" - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -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 -#, fuzzy -msgid "URL for the homepage of the organization" -msgstr "ÐÐ´Ñ€ÐµÑ Ð½Ð° Ñтраница, блог или профил в друг Ñайт на групата" +msgstr "Ðе Ñте ÑобÑтвеник на това приложение." #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5418,18 +4743,6 @@ msgstr "" msgid "Approved %1$s - \"%2$s\" access." msgstr "" -#. TRANS: Button label -#: lib/applicationlist.php:159 -#, fuzzy -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" @@ -5444,19 +4757,9 @@ msgstr "ДоÑтавчик" msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, 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" @@ -5470,45 +4773,21 @@ msgstr "Командата е изпълнена" msgid "Command failed" msgstr "Грешка при изпълнение на командата" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -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 -#, fuzzy, php-format -msgid "Could not find a user with nickname %s" -msgstr "Грешка при обновÑване на потребител Ñ Ð¿Ð¾Ñ‚Ð²ÑŠÑ€Ð´ÐµÐ½ email адреÑ." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Грешка при обновÑване на потребител Ñ Ð¿Ð¾Ñ‚Ð²ÑŠÑ€Ð´ÐµÐ½ email адреÑ." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "За Ñъжаление тази команда вÑе още не Ñе поддържа." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Изпратено е побутване на %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5519,55 +4798,39 @@ msgstr "" "Ðбонати: %2$s\n" "Бележки: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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 -#, fuzzy, 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 -#, fuzzy, 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 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Домашна Ñтраница: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "ОтноÑно: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5576,146 +4839,122 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" "Съобщението е твърде дълго. Ðай-много може да е %1$d знака, а Ñте въвели %2" "$d." -#. 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 "ПрÑкото Ñъобщение до %s е изпратено." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 "Бележката от %s е повторена" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Грешка при повтарÑне на бележката." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "" -"Съобщението е твърде дълго. Ðай-много може да е 140 знака, а Ñте въвели %d." - -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "Отговорът до %s е изпратен" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Грешка при запиÑване на бележката." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Уточнете името на потребителÑ, за когото Ñе абонирате." +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +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 "Ðе Ñте абонирани за този профил" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Ðбонирани Ñте за %s." - -#: 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 "ОтпиÑани Ñте от %s." - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Командата вÑе още не Ñе поддържа." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Уведомлението е изключено." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Грешка при изключване на уведомлението." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Уведомлението е включено." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Грешка при включване на уведомлението." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "ОтпиÑани Ñте от %s." - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Ðе Ñте абонирани за никого." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Вече Ñте абонирани за Ñледните потребители:" msgstr[1] "Вече Ñте абонирани за Ñледните потребители:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Ðикой не е абониран за ваÑ." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Грешка при абониране на друг потребител за ваÑ." msgstr[1] "Грешка при абониране на друг потребител за ваÑ." -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Ðе членувате в нито една група." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Ðе членувате в тази група." msgstr[1] "Ðе членувате в тази група." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5769,11 +5008,6 @@ msgstr "" msgid "You may wish to run the installer to fix this." msgstr "" -#: lib/common.php:139 -#, fuzzy -msgid "Go to the installer." -msgstr "Влизане в Ñайта" - #: lib/connectsettingsaction.php:110 msgid "IM" msgstr "IM" @@ -5786,15 +5020,6 @@ msgstr "Бележки през меÑинджър (IM)" msgid "Updates by SMS" msgstr "Бележки през SMS" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "Свързване" - -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "Грешка в базата от данни" @@ -5810,14 +5035,9 @@ msgstr "" "Можете да качите лично изображение за фон. МакÑималната големина на файла е " "2MB." -#: lib/designsettings.php:418 -msgid "Design defaults restored." -msgstr "" - #: lib/disfavorform.php:114 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor this notice" -msgstr "%s любими бележки" +msgstr "ОтбелÑзване като любимо" #: lib/favorform.php:114 lib/favorform.php:140 msgid "Favor this notice" @@ -5927,11 +5147,6 @@ msgstr "Лого" msgid "Add or edit %s logo" msgstr "ДобавÑне или редактиране логото на %s" -#: lib/groupnav.php:120 -#, fuzzy, php-format -msgid "Add or edit %s design" -msgstr "ДобавÑне или редактиране логото на %s" - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Групи Ñ Ð½Ð°Ð¹-много членове" @@ -5954,11 +5169,6 @@ msgstr "Страницата не е доÑтъпна във вида Ð¼ÐµÐ´Ð¸Ñ msgid "Unsupported image file format." msgstr "Форматът на файла Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÐµÑ‚Ð¾ не Ñе поддържа." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "Може да качите лого за групата ви." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "ЧаÑтично качване на файла." @@ -5972,9 +5182,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" @@ -5994,9 +5203,9 @@ msgid "[%s]" msgstr "[%s]" #: lib/jabber.php:567 -#, fuzzy, php-format +#, php-format msgid "Unknown inbox source %d." -msgstr "Ðепознат език \"%s\"" +msgstr "Ðепознат език \"%s\"." #: lib/joinform.php:114 msgid "Join" @@ -6043,8 +5252,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" @@ -6070,19 +5286,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" @@ -6096,30 +5312,24 @@ 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 -#, 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 " @@ -6136,13 +5346,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" @@ -6162,13 +5372,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" @@ -6190,7 +5400,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" @@ -6198,13 +5408,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6241,7 +5446,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "от" @@ -6261,11 +5466,6 @@ msgstr "Това не е вашиÑÑ‚ входÑщ адреÑ." msgid "Sorry, no incoming email allowed." msgstr "ВходÑщата поща не е разрешена." -#: lib/mailhandler.php:228 -#, fuzzy, 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 "" @@ -6296,25 +5496,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 "" @@ -6327,95 +5526,92 @@ msgstr "Изпращане на прÑко Ñъобщеие" msgid "To" msgstr "До" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Ðалични знаци" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Прати" +msgstr "" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "Изпращане на бележка" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Какво Ñтава, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "ПрикрепÑне" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "ПрикрепÑне на файл" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Грешка при запазване етикетите." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Грешка при запазване етикетите." +msgstr "СподелÑне на меÑтоположението ми" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "Без ÑподелÑне на меÑтоположението ми" + +#: lib/noticeform.php:217 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 -msgid "at" +#: lib/noticelist.php:502 +msgid "web" msgstr "" -#: lib/noticelist.php:567 +#: lib/noticelist.php:568 msgid "in context" msgstr "в контекÑÑ‚" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Повторено от" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "ОтговарÑне на тази бележка" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Отговор" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Бележката е повторена." @@ -6447,11 +5643,6 @@ msgstr "Грешка при обновÑване на отдалечен про msgid "Error inserting remote profile" msgstr "Грешка при вмъкване на отдалечен профил" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Изтриване на бележката" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Грешка при добавÑне на нов абонамент." @@ -6489,10 +5680,9 @@ msgstr "Изпратените от Ð²Ð°Ñ ÑъобщениÑ" msgid "Tags in %s's notices" msgstr "Етикети в бележките на %s" -#: lib/plugin.php:114 -#, fuzzy +#: lib/plugin.php:115 msgid "Unknown" -msgstr "Ðепознато дейÑтвие" +msgstr "Ðепознато" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6510,11 +5700,6 @@ msgstr "Ðбонати" msgid "All subscribers" msgstr "Ð’Ñички абонати" -#: lib/profileaction.php:191 -#, fuzzy -msgid "User ID" -msgstr "Потребител" - #: lib/profileaction.php:196 msgid "Member since" msgstr "УчаÑтник от" @@ -6528,7 +5713,7 @@ msgstr "" msgid "All groups" msgstr "Ð’Ñички групи" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6552,14 +5737,13 @@ msgstr "Избрано" msgid "Popular" msgstr "ПопулÑрно" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "ЛипÑват аргументи return-to." #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "ПовтарÑне на тази бележка" +msgstr "Да Ñе повтори ли тази бележка?" #: lib/repeatform.php:132 msgid "Yes" @@ -6569,29 +5753,13 @@ msgstr "Да" msgid "Repeat this notice" 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 "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "ВходÑщи" - -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "Разблокиране на този потребител" - #: lib/searchaction.php:120 -#, fuzzy msgid "Search site" -msgstr "ТърÑене" +msgstr "ТърÑене в Ñайта" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6602,9 +5770,8 @@ msgid "Search" msgstr "ТърÑене" #: lib/searchaction.php:162 -#, fuzzy msgid "Search help" -msgstr "ТърÑене" +msgstr "Помощ за Ñ‚ÑŠÑ€Ñенето" #: lib/searchgroupnav.php:80 msgid "People" @@ -6676,6 +5843,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Грешка при изпращане на прÑкото Ñъобщение" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Ðай-чеÑто пишещи" @@ -6684,19 +5891,9 @@ msgstr "Ðай-чеÑто пишещи" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -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 msgid "Unsubscribe from this user" @@ -6706,11 +5903,6 @@ msgstr "ОтпиÑване от този потребител" msgid "Unsubscribe" msgstr "ОтпиÑване" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "ПотребителÑÑ‚ нÑма профил." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Редактиране на аватара" @@ -6739,10 +5931,6 @@ msgstr "Изпращате на прÑко Ñъобщение до този по msgid "Message" msgstr "Съобщение" -#: lib/userprofile.php:326 -msgid "Moderate" -msgstr "" - #: lib/userprofile.php:364 msgid "User role" msgstr "ПотребителÑка ролÑ" @@ -6758,56 +5946,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "преди нÑколко Ñекунди" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "преди около минута" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "преди около чаÑ" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "преди около ден" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "преди около меÑец" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "преди около година" @@ -6820,10 +6008,3 @@ msgstr "%s не е допуÑтим цвÑÑ‚!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s не е допуÑтим цвÑÑ‚! Използвайте 3 или 6 шеÑтнадеÑетични знака." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Съобщението е твърде дълго. Ðай-много може да е %1$d знака, а Ñте въвели %2" -"$d." diff --git a/locale/br/LC_MESSAGES/statusnet.po b/locale/br/LC_MESSAGES/statusnet.po index 3b72ee8c2c..82213ba432 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:14+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:29+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +85,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +124,41 @@ 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:114 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 +#: actions/all.php:138 #, php-format msgid "" "This is the timeline for %s and friends but no one has posted anything yet." msgstr "" +"Hemañ eo al lanvad evit %s hag e vignoned met den n'en deus skrivet tra ebet " +"evit ar mare." -#: 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 +166,72 @@ 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)." -msgstr "" - -#: actions/all.php:145 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." +"You can try to [nudge %1$s](../%2$s) from their profile or [post something " +"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)." msgstr "" #. 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +251,7 @@ msgstr "Diposubl eo enrollañ ar profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -311,49 +308,50 @@ msgstr "Kemennadennoù war-eeun kaset da %s" msgid "All the direct messages sent to %s" msgstr "An holl gemennadennoù war-eeun kaset da %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Kemenadenn hep testenn !" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Re hir eo ! Ment hirañ ar gemenadenn a zo a %d arouezenn." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "N'eo ket bet kavet ar resever." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +367,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 +379,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/newgroup.php:126 actions/profilesettings.php:215 -#: actions/register.php:205 -msgid "Nickname must have only lowercase letters and numbers and no spaces." -msgstr "" - -#: actions/apigroupcreate.php: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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "Ezel eo %s eus ar strolladoù" +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 +511,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 @@ -528,10 +531,6 @@ msgstr "Ur gudenn 'zo bet gant ho jedaouer dalc'h. Mar plij adklaskit." msgid "Invalid nickname / password!" msgstr "Lesanv / ger tremen direizh !" -#: actions/apioauthauthorize.php:159 -msgid "Database error deleting OAuth application user." -msgstr "" - #: actions/apioauthauthorize.php:185 msgid "Database error inserting OAuth application user." msgstr "" @@ -577,12 +576,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:463 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 +589,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 +606,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." @@ -620,67 +619,68 @@ msgstr "Ne c'helloc'h ket dilemel statud un implijer all." msgid "No such notice." msgstr "N'eus ket eus an ali-se." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Ne c'helloc'h ket adlavar ho alioù." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "N'eo ket bet kavet." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -msgid "%1$s updates that reply to updates from %2$s / %3$s." -msgstr "" - -#: actions/apitimelinepublic.php:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Oberezhioù publik %s" -#: actions/apitimelinepublic.php:112 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 +695,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 +743,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 +761,7 @@ msgid "Preview" msgstr "Rakwelet" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Diverkañ" @@ -797,11 +801,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,17 +817,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 "Ket" +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ñ" @@ -832,23 +835,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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ñ." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -858,8 +862,8 @@ msgstr "Diposubl eo enrollañ an titouroù stankañ." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "N'eus ket eus ar strollad-se." @@ -892,9 +896,9 @@ msgstr "Distankañ an implijer-mañ" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Postañ war " +msgstr "Postañ war %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -910,9 +914,9 @@ msgstr "N'eo ket ar c'hod-se evidoc'h !" #. 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 "N'eo ket bet anavezet seurt ar chomlec'h %s" +msgstr "Doare chomlec'h dianav %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -973,7 +977,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:1307 msgid "There was a problem with your session token." msgstr "Ur gudenn 'zo bet gant ho jedaouer dalc'h." @@ -1004,7 +1008,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." @@ -1033,7 +1037,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Dilemel an ali-mañ" @@ -1071,45 +1075,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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "N'eus ket tu kaout an dodenn : %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" @@ -1117,57 +1129,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 @@ -1177,7 +1197,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" @@ -1291,7 +1311,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ù." @@ -1330,7 +1351,6 @@ msgstr "Chomlec'h postel gwiriekaet er mare-mañ." #: 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 "Dilemel" @@ -1347,7 +1367,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 "Nullañ" @@ -1362,7 +1381,6 @@ msgstr "Chomlec'h postel, evel \"AnvImplijer@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 "Ouzhpennañ" @@ -1373,36 +1391,17 @@ msgstr "Ouzhpennañ" msgid "Incoming email" 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 -msgid "Send email to this address to post new notices." -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 "" - #. 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 "Nevez" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Penndibaboù" - -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:180 -msgid "Send me notices of new subscriptions through email." -msgstr "" +msgstr "Penndibaboù ar posteloù" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:186 @@ -1436,22 +1435,16 @@ msgstr "Embann ur MicroID evit ma chomlec'h postel." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Enrollet eo bet an arventennoù design." +msgstr "Enrollet eo bet an arventennoù postel." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." msgstr "Chomlec'h postel ebet." -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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 "N'eo ket ur chomlec'h postel reizh." @@ -1461,18 +1454,13 @@ msgstr "N'eo ket ur chomlec'h postel reizh." msgid "That is already your email address." msgstr "Ho postel eo dija." -#. 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 "" - #. 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 "" +msgstr "Dibosupl eo ensoc'hañ ar c'hod gwiriekaat." #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1481,25 +1469,15 @@ msgid "" "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. -#. 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 "" - #. 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 "N'eo ket mat ar chomlec'h postelerezh prim." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Nullet eo bet ar gadarnadenn." +msgstr "Nullet eo bet kadarnadenn ar postel." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1509,9 +1487,8 @@ msgstr "N'eo ket ho postel." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Dilamet eo bet ar chomlec'h." +msgstr "Dilamet eo bet ar chomlec'h postel." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1522,17 +1499,7 @@ msgstr "Chomlec'h postel ebet o tont." #: actions/emailsettings.php:504 actions/emailsettings.php:528 #: actions/smssettings.php:578 actions/smssettings.php:602 msgid "Couldn't update user record." -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 "" - -#. 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 "Dibosupl eo hizivaat doser an implijer." #: actions/favor.php:79 msgid "This notice is already a favorite!" @@ -1566,13 +1533,6 @@ msgid "" "next to any notice you like." msgstr "" -#: 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 "" - #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 #, php-format @@ -1584,16 +1544,6 @@ msgstr "Alioù pennrollet eus %s" msgid "Updates favored by %1$s on %2$s!" msgstr "Hizivadennoù brientek gant %1$s war %2$s !" -#: actions/featured.php:69 lib/featureduserssection.php:87 -#: lib/publicgroupnav.php:89 -msgid "Featured users" -msgstr "" - -#: actions/featured.php:71 -#, php-format -msgid "Featured users, page %d" -msgstr "" - #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" @@ -1611,10 +1561,6 @@ msgstr "Ali ebet." msgid "No attachments." msgstr "N'eus restr stag ebet." -#: actions/file.php:51 -msgid "No uploaded attachments." -msgstr "" - #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "Ne oa ket gortozet ar respont-mañ !" @@ -1623,10 +1569,6 @@ msgstr "Ne oa ket gortozet ar respont-mañ !" msgid "User being listened to does not exist." msgstr "" -#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 -msgid "You can use the local subscription!" -msgstr "" - #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." msgstr "An implijer-se en deus ho stanket evit en enskrivañ." @@ -1635,18 +1577,13 @@ msgstr "An implijer-se en deus ho stanket evit en enskrivañ." msgid "You are not authorized." msgstr "N'oc'h ket aotreet." -#: actions/finishremotesubscribe.php:113 -msgid "Could not convert request token to access token." -msgstr "" - #: 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." @@ -1674,13 +1611,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ñ." @@ -1723,18 +1660,10 @@ msgstr "Arabat stankañ an implijer-mañ eus ar strollad." msgid "Block this user from this group" msgstr "Stankañ an implijer-mañ eus ar strollad-se" -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" - #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." msgstr "ID ebet" -#: actions/groupdesignsettings.php:68 -msgid "You must be logged in to edit a group." -msgstr "" - #: actions/groupdesignsettings.php:144 msgid "Group design" msgstr "Design ar strollad" @@ -1764,10 +1693,6 @@ msgid "" "You can upload a logo image for your group. The maximum file size is %s." msgstr "" -#: actions/grouplogo.php:365 -msgid "Pick a square area of the image to be the logo." -msgstr "" - #: actions/grouplogo.php:399 msgid "Logo updated." msgstr "Logo hizivaet." @@ -1814,7 +1739,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" @@ -1849,13 +1774,6 @@ msgstr "" msgid "Create a new group" msgstr "Krouiñ ur strollad nevez" -#: 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 "Klask strolladoù" @@ -1874,13 +1792,6 @@ msgstr "" "Ma ne gavoc'h ket ar strollad emaoc'h o klask, neuze e c'helloc'h [krouiñ " "anezhañ](%%action.newgroup%%)." -#: 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 "N'eus nemet ur merour a c'hell distankañ izili ur strollad." @@ -1943,25 +1854,14 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Penndibaboù" +msgstr "Penndibaboù ar bostelerezh prim" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 msgid "Send me notices through Jabber/GTalk." msgstr "Kas din an alioù dre Jabber/GTalk." -#. 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." @@ -2011,17 +1911,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "N'eo ket mat ar chomlec'h postelerezh prim." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Diposubl eo dilemel ar postel kadarnadur." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Nullet eo bet ar gadarnadenn." +msgstr "Nullet eo bet kadarnadenn ar bostelerezh prim." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2031,9 +1924,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 @@ -2054,9 +1946,9 @@ msgid "Invites have been disabled." msgstr "Diweredekaat eo bet ar bedadennoù." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "Rankout a reoc'h bezañ luget evit mont en ur strollad." +msgstr "Rankout a reoc'h bezañ luget evit pediñ implijerien all e %s." #: actions/invite.php:72 #, php-format @@ -2077,7 +1969,7 @@ msgstr "Koumanantet oc'h dija d'an implijerien-mañ :" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2099,11 +1991,6 @@ 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" msgstr "Chomlec'hioù postel" @@ -2118,7 +2005,7 @@ msgstr "Kemennadenn bersonel" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." -msgstr "" +msgstr "Ouzhpennañ ur gemennadenn bersonel d'ar bedadenn (diret)." #. TRANS: Send button for inviting friends #: actions/invite.php:198 @@ -2172,9 +2059,7 @@ msgstr "Rankout a reoc'h bezañ luget evit mont en ur strollad." msgid "No nickname or ID." msgstr "Lesanv pe ID ebet." -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s a zo bet er strollad %2$s" @@ -2183,54 +2068,53 @@ msgstr "%1$s a zo bet er strollad %2$s" msgid "You must be logged in to leave a group." msgstr "Ret eo deoc'h bezañ kevreet evit kuitaat ur strollad" -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "N'oc'h ket un ezel eus ar strollad-mañ." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2238,14 +2122,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Kevreit gant ho anv implijer hag ho ker tremen. N'o peus ket a anv implijer " -"evit c'hoazh ? [Krouit](%%action.register%%) ur gont nevez." +"N'o peus ket a anv implijer evit c'hoazh ? [Krouit](%%action.register%%) ur " +"gont nevez." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2256,11 +2143,6 @@ msgstr "N'eus nemet ur merour a c'hall lakaat un implijer all da vezañ merour." 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 -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." @@ -2302,12 +2184,15 @@ msgstr "Implijit ar furmskrid-mañ a-benn krouiñ ur strollad nevez." msgid "New message" msgstr "Kemennadenn nevez" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Ne c'helloc'h ket kas kemennadennoù d'an implijer-mañ." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Goullo eo !" @@ -2315,7 +2200,8 @@ msgstr "Goullo eo !" msgid "No recipient specified." msgstr "N'o peus ket lakaet a resever." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2326,12 +2212,14 @@ msgstr "" msgid "Message sent" msgstr "Kemennadenn kaset" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Kaset eo bet da %s ar gemennadenn war-eeun." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Fazi Ajax" @@ -2339,17 +2227,10 @@ msgstr "Fazi Ajax" msgid "New notice" msgstr "Ali nevez" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Ali embannet" -#: 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 "Klask testennoù" @@ -2366,26 +2247,14 @@ msgid "" "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 "Hizivadenn gant \"%s\"" -#: 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 his email yet." +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/nudge.php:94 @@ -2426,43 +2295,33 @@ 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 : " - -#: 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: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 -msgid "Content type %s not supported." -msgstr "seurt an danvez " - -#. TRANS: Error message displaying attachments. %s is the site's base URL. -#: actions/oembed.php:162 +#: actions/oembed.php:159 #, php-format -msgid "Only %s URLs over plain HTTP please." +msgid "Content type %s not supported." msgstr "" -#. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:183 actions/oembed.php:202 lib/apiaction.php:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 -msgid "Not a supported data format." +#. 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 "" #: actions/opensearch.php:64 @@ -2493,38 +2352,14 @@ msgstr "" 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 "Diskouez pe kuzhat designoù ar profil." -#: 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 "N'eus bet diferet ID implijer ebet." -#: 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" @@ -2564,7 +2399,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" @@ -2576,11 +2411,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." @@ -2601,33 +2436,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 -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 "N'eus ket tu kaout an dodenn : %s" +msgstr "N'eus ket eus ar gaoz-se : %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Restroù an avataroù" - -#: 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 "" +msgstr "N'eus ket eus ar gaoz-se : %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2709,14 +2530,6 @@ msgstr "Backgroundoù" msgid "Background server" msgstr "Servijer ar backgroundoù" -#: actions/pathsadminpanel.php:309 -msgid "Background path" -msgstr "" - -#: actions/pathsadminpanel.php:313 -msgid "Background directory" -msgstr "" - #: actions/pathsadminpanel.php:320 msgid "SSL" msgstr "SSL" @@ -2759,15 +2572,18 @@ 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" msgstr "Klask tud" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "N'eo ket reizh ar merk-se : %s" +msgstr "N'eo ket reizh ar merk-se : %s." #: actions/peopletag.php:142 #, php-format @@ -2775,14 +2591,15 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "Implijerien bet merket drezo o unan gant %1$s - pajenn %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Danvez direizh an ali" +msgstr "Danvez direizh an ali." #: actions/postnotice.php:101 #, php-format msgid "Notice 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\"." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2792,6 +2609,8 @@ msgstr "Arventennoù ar profil" msgid "" "You can update your personal profile info here so people know more about you." msgstr "" +"Gellout a reoc'h hizivaat titouroù ho profil evit ma ouifemp muioc'h a draoù " +"diwar ho penn." #: actions/profilesettings.php:99 msgid "Profile information" @@ -2799,51 +2618,51 @@ msgstr "Titouroù ar profil" #: actions/profilesettings.php:108 lib/groupeditform.php:154 msgid "1-64 lowercase letters or numbers, no punctuation or spaces" -msgstr "" +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 "" +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 "" +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 "" +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\"" #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" -msgstr "" +msgstr "Rannañ va lec'hiadur pa bostan un ali." #: actions/profilesettings.php:145 actions/tagother.php:149 #: actions/tagother.php:209 lib/subscriptionlist.php:106 @@ -2855,6 +2674,8 @@ msgstr "Balizennoù" msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" +"Merkoù evidoc'h oc'h unan (lizherennoù, sifroù, -, ., ha _), dispartiet gant " +"virgulennoù pe esaouennoù" #: actions/profilesettings.php:151 msgid "Language" @@ -2870,14 +2691,16 @@ msgstr "Takad eur" #: actions/profilesettings.php:162 msgid "What timezone are you normally in?" -msgstr "" +msgstr "Pehini eo gwerzhid-eur boaz ?" #: actions/profilesettings.php:167 msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" 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ñ)." @@ -2886,10 +2709,6 @@ msgstr "Re hir eo ar bio (%d arouezenn d'ar muiañ)." msgid "Timezone not selected." msgstr "N'eo bet dibabet gwerzhid-eur ebet." -#: actions/profilesettings.php:241 -msgid "Language is too long (max 50 chars)." -msgstr "Re hir eo ar yezh (255 arouezenn d'ar muiañ)." - #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format msgid "Invalid tag: \"%s\"" @@ -2897,11 +2716,11 @@ msgstr "Balizenn direizh : \"%s\"" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." -msgstr "" +msgstr "Dibosupl eo hizivaat ar c'houmanant ez emgefre." #: actions/profilesettings.php:363 msgid "Couldn't save location prefs." -msgstr "" +msgstr "Dibosupl eo enrollañ an dibaboù lec'hiadur." #: actions/profilesettings.php:375 msgid "Couldn't save profile." @@ -2919,32 +2738,32 @@ msgstr "Enrollet eo bet an arventennoù." #: actions/public.php:83 #, php-format msgid "Beyond the page limit (%s)." -msgstr "" +msgstr "Dreist da bevennoù ar bajenn (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." -msgstr "" +msgstr "Dibosupl eo adtapout al lanv foran." #: actions/public.php:130 #, php-format msgid "Public timeline, page %d" -msgstr "" +msgstr "Lanv foran - pajenn %d" #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" -msgstr "" +msgstr "Lanv foran" #: actions/public.php:160 msgid "Public Stream Feed (RSS 1.0)" -msgstr "" +msgstr "Neudenn gwazh foran (RSS 1.0)" #: actions/public.php:164 msgid "Public Stream Feed (RSS 2.0)" -msgstr "" +msgstr "Neudenn gwazh foran (RSS 2.0)" #: actions/public.php:168 msgid "Public Stream Feed (Atom)" -msgstr "" +msgstr "Neudenn gwazh foran (Atom)" #: actions/public.php:188 #, php-format @@ -2952,6 +2771,7 @@ msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"Kronologiezh foran %%site.name%% eo, met den n'en deus skrivet tra ebet." #: actions/public.php:191 msgid "Be the first to post!" @@ -2962,15 +2782,8 @@ msgstr "Bezit an hini gentañ da bostañ !" 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 "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #: actions/public.php:247 #, php-format @@ -2979,15 +2792,17 @@ msgid "" "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/publictagcloud.php:57 msgid "Public tag cloud" -msgstr "" +msgstr "Koumoulenn a merkoù foran" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "" +msgstr "Ar merkoù ziwezhañ evit ar re vrudetañ war %s " #: actions/publictagcloud.php:69 #, php-format @@ -2996,7 +2811,7 @@ msgstr "" #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "" +msgstr "Bezit an hini gentañ oc'h embann unan !" #: actions/publictagcloud.php:75 #, php-format @@ -3004,10 +2819,12 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini " +"gentañ da embann un dra !" #: actions/publictagcloud.php:134 msgid "Tag cloud" -msgstr "" +msgstr "Koumoulenn merkoù" #: actions/recoverpassword.php:36 msgid "You are already logged in!" @@ -3023,29 +2840,31 @@ msgstr "N'eo ket ur c'hod adtapout an dra-mañ." #: actions/recoverpassword.php:73 msgid "Recovery code for unknown user." -msgstr "" +msgstr "Kod adtapout evit un implijer dizanv." #: actions/recoverpassword.php:86 msgid "Error with confirmation code." -msgstr "" +msgstr "Ur fazi 'zo bet gant ar c'hod kadarnaat." #: actions/recoverpassword.php:97 msgid "This confirmation code is too old. Please start again." -msgstr "" +msgstr "Re gozh eo ar c'hod gwiriañ. Adkrogit mar plij." #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." -msgstr "" +msgstr "Dibosupl eo hizivaat an implijer gant ar chomlec'h postel gwiriekaet." #: 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 "" +"M'o peus disoñjet pe kollet ho ger-tremen, e c'helloc'h kaout unan nevez hag " +"a vo kaset deoc'h d'ar chomlec'h postel termenet en ho kont." #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " -msgstr "" +msgstr "Diskleriet oc'h bet. Lakait ur ger-tremen nevez amañ da heul. " #: actions/recoverpassword.php:188 msgid "Password recovery" @@ -3053,11 +2872,11 @@ msgstr "Adtapout ar ger-tremen" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "" +msgstr "Lesanv pe chomlec'h postel" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." -msgstr "" +msgstr "Ho lesanv war ar servijer-mañ, pe ar chomlec'h postel o peus enrollet." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" @@ -3093,114 +2912,140 @@ msgstr "Lakait ul lesanv pe ur chomlec'h postel." #: actions/recoverpassword.php:282 msgid "No user with that email address or username." -msgstr "" +msgstr "N'eus bet kavet implijer ebet gant ar postel-se pe an anv-se." #: actions/recoverpassword.php:299 msgid "No registered email address for that user." -msgstr "" +msgstr "Chomlec'h postel enrollet ebet evit an implijer-mañ." #: actions/recoverpassword.php:313 msgid "Error saving address confirmation." -msgstr "" +msgstr "Ur fazi 'zo bet pa voe enrollet kod kadarnaat ar postel." #: actions/recoverpassword.php:338 msgid "" "Instructions for recovering your password have been sent to the email " "address registered to your account." msgstr "" +"Kaset eo bet deoc'h, d'ar chomlec'h postel termenet en ho kont, an titouroù " +"ret evit gouzout penaos adtapout o ger-tremen." #: actions/recoverpassword.php:357 msgid "Unexpected password reset." -msgstr "" +msgstr "Adderaouekadur dic'hortoz ar ger-tremen." #: actions/recoverpassword.php:365 msgid "Password must be 6 chars or more." -msgstr "" +msgstr "Rankout a ra ar ger-tremen bezañ 6 arouezenn d'an nebeutañ." #: actions/recoverpassword.php:369 msgid "Password and confirmation do not match." -msgstr "" +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 "" +msgstr "Ur fazi 'zo bet e-pad kefluniadur an implijer." #: actions/recoverpassword.php:395 msgid "New password successfully saved. You are now logged in." -msgstr "" +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 "" +msgstr "Krouet eo bet ar gont." -#: actions/register.php:114 actions/register.php:507 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 "" +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 "" +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 -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 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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "Kompren a ran ez eo prevez danvez ha roadennoù %1$s." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Holl gwrioù miret strizh." + +#. 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3219,11 +3064,13 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" msgstr "" +"(Resevout a reoc'h a-benn nebeut ur postel gant an titouroù evit kadarnaat " +"ho chomlec'h.)" #: actions/remotesubscribe.php:98 #, php-format @@ -3235,11 +3082,11 @@ msgstr "" #: actions/remotesubscribe.php:112 msgid "Remote subscribe" -msgstr "" +msgstr "Koumanant eus a-bell" #: actions/remotesubscribe.php:124 msgid "Subscribe to a remote user" -msgstr "" +msgstr "Koumanantiñ d'un implijer pell" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3264,7 +3111,7 @@ msgstr "En em enskrivañ" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" -msgstr "" +msgstr "URL direizh evit ar profil (furmad fall)" #: actions/remotesubscribe.php:168 msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." @@ -3272,15 +3119,15 @@ msgstr "" #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." -msgstr "" +msgstr "Lec'hel eo ar profil-mañ ! Kevreit evit koumananti." #: actions/remotesubscribe.php:183 msgid "Couldn’t get a request token." -msgstr "" +msgstr "Dibosupl eo kaout ur jedaouer reked." #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." -msgstr "" +msgstr "N'eus nemet an implijerien kevreet hag a c'hell adkemer alioù." #: actions/repeat.php:64 actions/repeat.php:71 msgid "No notice specified." @@ -3294,7 +3141,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Adlavaret" @@ -3328,13 +3175,6 @@ msgstr "Gwazh respontoù evit %s (RSS 2.0)" msgid "Replies feed for %s (Atom)" msgstr "Gwazh respontoù evit %s (Atom)" -#: 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." -msgstr "" - #: actions/replies.php:204 #, php-format msgid "" @@ -3345,8 +3185,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 @@ -3355,29 +3195,24 @@ msgid "Replies to %1$s on %2$s!" 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 -msgid "You cannot sandbox users on this site." -msgstr "" - #: actions/sandbox.php:72 msgid "User is already sandboxed." 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ù" @@ -3404,7 +3239,7 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 msgid "Save site settings" -msgstr "" +msgstr "Enrollañ arventennoù al lec'hienn" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." @@ -3420,7 +3255,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" @@ -3431,12 +3266,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ù" @@ -3468,11 +3303,11 @@ msgstr "Sekred an implijer" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "URL ar jedouer reked" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "URL ar jedouer moned" #: actions/showapplication.php:283 msgid "Authorize URL" @@ -3487,25 +3322,22 @@ msgstr "" #: actions/showapplication.php:309 msgid "Are you sure you want to reset your consumer key and secret?" msgstr "" +"Ha sur oc'h o peus c'hoant adderaouekaat ho alc'hwez bevezer ha sekred ?" #: actions/showfavorites.php:79 #, php-format msgid "%1$s's favorite notices, page %2$d" msgstr "Alioù karetañ %1$s, pajenn %2$d" -#: 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 "" +msgstr "Gwazh evit mignoned %s (RSS 1.0)" #: actions/showfavorites.php:178 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "" +msgstr "Gwazh evit mignoned %s (RSS 2.0)" #: actions/showfavorites.php:185 #, php-format @@ -3521,16 +3353,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 @@ -3572,24 +3404,24 @@ msgstr "Obererezh ar strollad" #: actions/showgroup.php:338 #, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "" +msgstr "Neudenn alioù ar strollad %s (RSS 1.0)" #: actions/showgroup.php:344 #, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "" +msgstr "Neudenn alioù ar strollad %s (RSS 2.0)" #: actions/showgroup.php:350 #, php-format msgid "Notice feed for %s group (Atom)" -msgstr "" +msgstr "Neudenn alioù ar strollad %s (Atom)" #: actions/showgroup.php:355 #, php-format 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" @@ -3603,30 +3435,11 @@ msgstr "(Hini ebet)" msgid "All members" msgstr "An holl izili" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "Krouet" -#: actions/showgroup.php:463 -#, 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:469 -#, 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:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Merourien" @@ -3667,17 +3480,17 @@ msgstr "%1$s, pajenn %2$d" #: actions/showstream.php:122 #, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "" +msgstr "Neudenn an alioù evit %1$s merket %2$s (RSS 1.0)" #: actions/showstream.php:129 #, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "" +msgstr "Neudenn an alioù evit %s (RSS 1.0)" #: actions/showstream.php:136 #, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "" +msgstr "Neudenn an alioù evit %s (RSS 2.0)" #: actions/showstream.php:143 #, php-format @@ -3693,6 +3506,8 @@ msgstr "mignon ur mignon evit %s" #, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." msgstr "" +"Hemañ eo al lanvad evit %s hag e vignoned met den n'en deus skrivet tra ebet " +"evit ar mare." #: actions/showstream.php:205 msgid "" @@ -3703,25 +3518,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)." -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. " +"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." msgstr "" #: actions/showstream.php:305 @@ -3729,10 +3527,6 @@ msgstr "" msgid "Repeat of %s" msgstr "Adkemeret eus %s" -#: 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 "Lakaet eo bet da mut an implijer-mañ dija." @@ -3745,10 +3539,6 @@ msgstr "Arventennoù diazez evit al lec'hienn StatusNet-mañ." msgid "Site name must have non-zero length." msgstr "Ne c'hell ket bezañ goullo anv al lec'hienn." -#: actions/siteadminpanel.php:141 -msgid "You must have a valid contact email address." -msgstr "" - #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." @@ -3756,7 +3546,7 @@ msgstr "Yezh \"%s\" dizanv." #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "Ar vevenn izelañ evit an destenn a zo 0 arouezenn (anvevenn)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3772,7 +3562,7 @@ msgstr "Anv al lec'hienn" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "" +msgstr "Anv ho lec'hienn, evel \"Microblog ho embregerezh\"" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -3792,16 +3582,12 @@ msgstr "" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "" +msgstr "Chomlec'h postel daremprediñ ho lec'hienn" #: actions/siteadminpanel.php:245 msgid "Local" msgstr "Lec'hel" -#: actions/siteadminpanel.php:256 -msgid "Default timezone" -msgstr "" - #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." msgstr "" @@ -3839,9 +3625,8 @@ msgid "Site Notice" msgstr "Ali al lec'hienn" #: actions/sitenoticeadminpanel.php:67 -#, fuzzy msgid "Edit site-wide message" -msgstr "Kemennadenn nevez" +msgstr "Kemmañ ur gemennadenn hag a zo diwar-benn al lec'hienn a-bezh" #: actions/sitenoticeadminpanel.php:103 msgid "Unable to save site notice." @@ -3858,6 +3643,8 @@ msgstr "Testenn ali al lec'hienn" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" msgstr "" +"Testenn an ali diwar-benn al lec'hienn a-bezh (255 arouezenn d'ar muiañ ; " +"HTML gweredekaet)" #: actions/sitenoticeadminpanel.php:198 msgid "Save site notice" @@ -3874,6 +3661,8 @@ msgstr "Arventennoù SMS" #, php-format msgid "You can receive SMS messages through email from %%site.name%%." msgstr "" +"Gellout a reoc'h resevout kemmadennoù SMS dre postel o tont eus %%site.name%" +"%." #. TRANS: Message given in the SMS settings if SMS is not enabled on the site. #: actions/smssettings.php:97 @@ -3882,19 +3671,18 @@ msgstr "Dizimplijadus eo an SMS." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Chomlec'h postelerezh prim" +msgstr "Chomlec'h SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 msgid "Current confirmed SMS-enabled phone number." -msgstr "" +msgstr "Niverenn pellgomz bet gwiriekaet evit resevout SMSoù." #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 msgid "Awaiting confirmation on this phone number." -msgstr "" +msgstr "Niverenn pellgomz o c'hortoz bezañ kadarnaet." #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 @@ -3904,11 +3692,10 @@ msgstr "Kod kadarnaat" #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 msgid "Enter the code you received on your phone." -msgstr "" +msgstr "Lakait ar c'hod o peus resevet war ho pellgomzer hezoug." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Kadarnaat" @@ -3918,16 +3705,10 @@ msgstr "Kadarnaat" msgid "SMS phone number" msgstr "Niverenn bellgomz evit an 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 "" - #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Penndibaboù" +msgstr "Penndibaboù an SMSoù" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -3938,20 +3719,14 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Penndibaboù enrollet" +msgstr "Penndibaboù an SMSoù enrollet." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." msgstr "Niverenn bellgomz ebet." -#. 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." @@ -3976,9 +3751,8 @@ msgstr "Direizh eo ar c'hod gwiriekaat-mañ." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Nullet eo bet ar gadarnadenn." +msgstr "Nullet eo bet ar gadarnadenn SMS." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -3988,14 +3762,13 @@ msgstr "n'eo ket ho niverenn pellgomz." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Niverenn bellgomz evit an SMS" +msgstr "Dilamet eo bet an niverenn bellgomz evit an SMSoù." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" -msgstr "" +msgstr "Pourvezer pellgomzerezh hezoug" #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 @@ -4018,26 +3791,14 @@ 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 -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 "" @@ -4046,10 +3807,6 @@ msgstr "" 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 "" @@ -4064,24 +3821,15 @@ msgstr "" #: actions/snapshotadminpanel.php:226 msgid "Report URL" -msgstr "" +msgstr "URL an danevell" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" msgstr "" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "Enrollañ an arventennoù moned" - -#: actions/subedit.php:70 -msgid "You are not subscribed to that profile." -msgstr "" - -#: actions/subedit.php:83 classes/Subscription.php:132 -msgid "Could not save subscription." -msgstr "" +msgstr "Enrollañ arventennoù al lec'hienn" #: actions/subscribe.php:77 msgid "This action only accepts POST requests." @@ -4109,15 +3857,6 @@ msgstr "Koumanantet da %s" msgid "%1$s subscribers, page %2$d" msgstr "Koumanantet da %1$s, pajenn %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 " @@ -4130,26 +3869,19 @@ msgid "%s has no subscribers. Want to be the first?" msgstr "" "n'ez eus den ebet koumanantet da %s. Ha c'hoant o peus bezañ an hini gentañ ?" -#: 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 "" +msgstr "Koumanantoù %s" #: actions/subscriptions.php:54 #, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "" +msgstr "Koumanantoù %1$s, pajenn %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." -msgstr "" +msgstr "Heuliañ a reoc'h alioù an dud-se." #: actions/subscriptions.php:69 #, php-format @@ -4182,26 +3914,26 @@ msgstr "SMS" #: actions/tag.php:69 #, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "" +msgstr "Alioù merket gant %1$s, pajenn %2$d" #: actions/tag.php:87 #, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "" +msgstr "Gwazh an alioù evit ar merk %s (RSS 1.0)" #: actions/tag.php:93 #, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "" +msgstr "Gwazh an alioù evit ar merk %s (RSS 2.0)" #: actions/tag.php:99 #, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "" +msgstr "Gwazh an alioù evit ar merk %s (Atom)" #: actions/tagother.php:39 msgid "No ID argument." -msgstr "" +msgstr "Arguzenn ID ebet." #: actions/tagother.php:65 #, php-format @@ -4226,6 +3958,8 @@ msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" msgstr "" +"Merkoù evit an implijer-mañ (lizherennoù, sifroù, -, ., ha _), dispartiet " +"gant virgulennoù pe gant esaouennoù" #: actions/tagother.php:193 msgid "" @@ -4236,55 +3970,24 @@ msgstr "" msgid "Could not save tags." msgstr "Dibosupl eo enrollañ ar merkoù." -#: 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/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "N'o peus ket stanket an implijer-mañ." -#: actions/unsandbox.php:72 -msgid "User is not sandboxed." -msgstr "" - -#: actions/unsilence.php:72 -msgid "User is not silenced." -msgstr "" - #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "N'eus profil id ebet er reked." +msgstr "N'eus profil ID ebet er reked." #: actions/unsubscribe.php:98 msgid "Unsubscribed" msgstr "Digoumanantet" -#: 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 "Implijer" -#: actions/useradminpanel.php:70 -msgid "User settings for this StatusNet site." -msgstr "" - #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." msgstr "" @@ -4320,18 +4023,10 @@ msgstr "Implijerien nevez" msgid "New user welcome" msgstr "Degemer an implijerien nevez" -#: actions/useradminpanel.php:236 -msgid "Welcome text for new users (Max 255 chars)." -msgstr "" - #: actions/useradminpanel.php:241 msgid "Default subscription" msgstr "Koumanantoù dre ziouer" -#: actions/useradminpanel.php:242 -msgid "Automatically subscribe new users to this user." -msgstr "" - #: actions/useradminpanel.php:251 msgid "Invitations" msgstr "Pedadennoù" @@ -4340,10 +4035,6 @@ msgstr "Pedadennoù" msgid "Invitations enabled" msgstr "Pedadennoù gweredekaet" -#: actions/useradminpanel.php:258 -msgid "Whether to allow users to invite new users." -msgstr "" - #: actions/userauthorization.php:105 msgid "Authorize subscription" msgstr "Aotreañ ar c'houmanant" @@ -4355,7 +4046,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" @@ -4405,27 +4096,27 @@ msgstr "" #: actions/userauthorization.php:303 #, php-format msgid "Listener URI ‘%s’ not found here." -msgstr "" +msgstr "N'eo ket bet kavet amañ URI ar selaouer \"%s\"." #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "Re hir eo an URI \"%s\" ez oc'h koumanantet dezhi." #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "An URI \"%s\" ez oc'h koumanantet dezhi a zo un implijer lec'hel." #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "URI ar profil \"%s\" a zo evit un implijer lec'hel." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "N'eo ket reizh URL an avatar \"%s\"." #: actions/userauthorization.php:350 #, php-format @@ -4435,11 +4126,11 @@ msgstr "Dibosupl eo lenn URL an avatar \"%s\"." #: actions/userauthorization.php:355 #, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "" +msgstr "Seurt skeudenn direizh evit URL an avatar \"%s\"." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" -msgstr "" +msgstr "Design ar profil" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4476,29 +4167,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 " @@ -4506,7 +4197,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 " @@ -4514,174 +4205,233 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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: 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 -msgid "Could not update local group." +#. 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/Login_token.php:76 -#, php-format -msgid "Could not create login token for %s" -msgstr "" - -#: classes/Message.php:45 -msgid "You are banned from sending direct messages." -msgstr "" - -#: classes/Message.php:61 +#. TRANS: Message given when a message could not be stored on the server. +#: classes/Message.php:63 msgid "Could not insert message." msgstr "Diposubl eo ensoc'hañ ur gemenadenn" -#: classes/Message.php:71 +#. TRANS: Message given when a message could not be updated on the server. +#: classes/Message.php:74 msgid "Could not update message with new URI." msgstr "Dibosupl eo hizivaat ar gemennadenn gant un URI nevez." -#. TRANS: Server exception. %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: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -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:358 classes/Notice.php:385 msgid "Problem saving notice." +msgstr "Ur gudenn 'zo bet pa veze enrollet an ali." + +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" msgstr "" -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 msgid "Problem saving group inbox." -msgstr "" +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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: 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 +msgid "Missing profile." +msgstr "Mankout a ra ar profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:339 +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ñ." + +#. 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 +msgid "Could not delete self-subscription." +msgstr "Dibosupl eo dilemel ar c'houmanant." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Diposubl eo dilemel ar postel kadarnadur." +#. 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 "Dibosupl eo dilemel ar c'houmanant." -#: 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 "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 "" +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 "" +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 "" +msgstr "Dibosupl eo enrollañ titouroù ar strollad lec'hel." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" -msgstr "" +msgstr "Kemmañ arventennoù ho profil" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 @@ -4696,12 +4446,12 @@ msgstr "Cheñch ar ger-tremen" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:130 msgid "Change email handling" -msgstr "" +msgstr "Kemmañ tretadur ar posteloù" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 msgid "Design your profile" -msgstr "" +msgstr "Krouit ho profil" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 @@ -4714,199 +4464,189 @@ msgid "Other" msgstr "All" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Pajenn hep anv" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personel" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Kevreañ" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 msgctxt "TOOLTIP" msgid "Change site configuration" -msgstr "" +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:474 msgctxt "MENU" msgid "Admin" msgstr "Merañ" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "" +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:481 msgctxt "MENU" msgid "Invite" msgstr "Pediñ" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Digevreañ" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "En em enskrivañ" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Kevreañ d'al lec'hienn" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Kevreañ" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Sikour din !" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Skoazell" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Klask tud pe un tamm testenn" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 msgid "Page notice" msgstr "Ali ar bajenn" -#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -msgid "Secondary site navigation" -msgstr "" - #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Skoazell" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Diwar-benn" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAG" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "AIH" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Prevezded" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Mammenn" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Darempred" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Badj" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4914,13 +4654,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, php-format msgid "**%%site.name%%** is a microblogging service." -msgstr "" +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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4929,54 +4669,47 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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 -#, php-format -msgid "Content and data of %1$s are private and confidential." -msgstr "" +msgstr "Aotre-implijout diwar-benn danvez al lec'hienn" #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Kent" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -4984,99 +4717,94 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "" +msgstr "N'eo ket aotreet kemmañ ar panell-se" #. TRANS: Client error message. #: lib/adminpanelaction.php:229 msgid "showForm() not implemented." -msgstr "" +msgstr "N'eo ket bet emplementet showForm()." #. TRANS: Client error message #: lib/adminpanelaction.php:259 msgid "saveSettings() not implemented." -msgstr "" +msgstr "N'eo ket bet emplementet saveSettings()." #. 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 "" +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 "" +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 "" +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 "" +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 "" +msgstr "Kefluniadur ar moned" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" -msgstr "" +msgstr "Kefluniadur an hentoù" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "" +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 "" +msgstr "Kefluniadur ar primoù" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5088,23 +4816,23 @@ msgstr "Kemmañ an arload" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "Arlun evit ar poellad-mañ" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 #, php-format msgid "Describe your application in %d characters" -msgstr "" +msgstr "Diskrivit ho poellad gant %d arouezenn" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 msgid "Describe your application" -msgstr "" +msgstr "Deskrivit ho poellad" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 msgid "URL of the homepage of this application" -msgstr "" +msgstr "URL pajenn degemer ar poellad-mañ" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 @@ -5114,17 +4842,17 @@ msgstr "Mammenn URL" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "An aozadur e karg eus ar poellad-mañ" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 msgid "URL for the homepage of the organization" -msgstr "" +msgstr "URL pajenn degemer an aozadur-se" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "URL davet pehini e o ret adkas goude bezañ kevreet" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 @@ -5139,7 +4867,7 @@ msgstr "Burev" #. TRANS: Form guide. #: lib/applicationeditform.php:297 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "Seurt ar poellad, merdeer pe burev" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 @@ -5163,28 +4891,19 @@ msgstr "Nullañ" #. TRANS: Application access type #: lib/applicationlist.php:136 -#, fuzzy msgid "read-write" -msgstr "Lenn-skrivañ" +msgstr "lenn-skrivañ" #. TRANS: Application access type #: lib/applicationlist.php:138 -#, fuzzy msgid "read-only" -msgstr "Lenn hepken" +msgstr "lenn hepken" #. 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 "Dilemel" +msgstr "Aprouet d'an %1$s - moned \"%2$s\"." #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5205,124 +4924,85 @@ msgstr "Pourvezer" msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -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 "" +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 "" +msgstr "N'eo ket aotreet kemmañ ar ger-tremen" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" -msgstr "" +msgstr "Disoc'hoù an urzhiad" #: lib/channel.php:229 lib/mailhandler.php:142 msgid "Command complete" -msgstr "" +msgstr "Urzhiad bet klokaet" #: lib/channel.php:240 msgid "Command failed" -msgstr "" +msgstr "C'hwitet en deus an urzhiad" -#: 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 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Digarezit, n'eo ket bet emplementet an urzhiad-mañ c'hoazh." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "" +"N'eus tamm talvoudegezh ebet ober ur blinkadenn deoc'h c'hwi oc'h unan !" -#. 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 "Blinkadenn kaset da %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"Koumanatoù : %1$s\n" +"Tud koumanantet : %2$s\n" +"kemennadennoù : %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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 -#, fuzzy, 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." - -#. 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 "Diposubl eo dilemel an implijer %1$s deus ar strollad %2$s." +msgstr "Ali bet ouzhpennet d'ar pennroll." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Lec'hienn Web : %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Diwar-benn : %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5331,147 +5011,84 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" "Re hir eo ar gemennadenn - ar ment brasañ a zo %1$d arouezenn, %2$d " "arouezenn o peus lakaet." -#. 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 "Kaset eo bet ar gemennadenn war eeun da %s." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." +msgstr "Ur gudenn 'zo bet pa veze kaset ho kemennadenn." + +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." 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 "Respont kaset da %s" - -#: 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 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." 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 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "" +msgstr "Kemennoù diweredekaet." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." -msgstr "" +msgstr "Dibosupl eo diweredekaat ar c'hemennoù." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." -msgstr "" +msgstr "Kemennoù gweredekaet" -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." +msgstr "Dibosupl eo gweredekaat ar c'hemennoù." + +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" - -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, php-format -msgid "Unsubscribed %s" -msgstr "Digoumanantet eus %s" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 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:" - -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 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:" - -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." -msgstr "" +msgstr "N'oc'h ezel eus strollad ebet." -#: 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 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5515,7 +5132,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: " @@ -5539,44 +5156,36 @@ msgstr "" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "" +msgstr "Hizivadennoù dre SMS" #: lib/connectsettingsaction.php:120 msgid "Connections" msgstr "Kevreadennoù" -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: 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 "" "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 "" +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" @@ -5606,10 +5215,6 @@ msgstr "Silañ ar balizennoù" msgid "All" msgstr "An holl" -#: lib/galleryaction.php:139 -msgid "Select tag to filter" -msgstr "" - #: lib/galleryaction.php:140 msgid "Tag" msgstr "Balizenn" @@ -5627,24 +5232,6 @@ msgstr "Mont" 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" @@ -5663,11 +5250,6 @@ msgstr "Stanket" msgid "%s blocked users" msgstr "%s implijer stanket" -#: lib/groupnav.php:108 -#, php-format -msgid "Edit %s group properties" -msgstr "" - #: lib/groupnav.php:113 msgid "Logo" msgstr "Logo" @@ -5677,15 +5259,6 @@ msgstr "Logo" msgid "Add or edit %s logo" msgstr "Ouzhpennañ pe kemmañ logo %s" -#: 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 "" @@ -5700,19 +5273,6 @@ msgstr "" 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 "" @@ -5742,11 +5302,6 @@ msgstr "Ko" msgid "[%s]" msgstr "[%s]" -#: lib/jabber.php:567 -#, php-format -msgid "Unknown inbox source %d." -msgstr "" - #: lib/joinform.php:114 msgid "Join" msgstr "Stagañ" @@ -5755,10 +5310,6 @@ msgstr "Stagañ" msgid "Leave" msgstr "Kuitaat" -#: lib/logingroupnav.php:80 -msgid "Login with a username and password" -msgstr "" - #: lib/logingroupnav.php:86 msgid "Sign up for a new account" msgstr "Digeriñ ur gont nevez" @@ -5766,7 +5317,7 @@ msgstr "Digeriñ ur gont nevez" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 msgid "Email address confirmation" -msgstr "" +msgstr "Kadarnadur ar chomlec'h postel" #. TRANS: Body for address confirmation email. #: lib/mail.php:177 @@ -5786,14 +5337,15 @@ msgid "" "%s\n" msgstr "" -#. TRANS: Subject of new-subscriber notification e-mail -#: lib/mail.php:243 +#: lib/mail.php:248 #, php-format -msgid "%1$s is now listening to your notices on %2$s." +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" @@ -5808,20 +5360,14 @@ msgid "" "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:269 -#, 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 "" +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" @@ -5835,30 +5381,24 @@ 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 "" - -#. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 -#, php-format -msgid "%s: confirm you own this phone number with this code:" -msgstr "" +msgstr "Kadarnadur SMS" #. 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 " @@ -5875,13 +5415,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" @@ -5900,14 +5440,8 @@ msgid "" "%5$s\n" msgstr "" -#. TRANS: Subject for favorite notification email -#: lib/mail.php:583 -#, 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" @@ -5929,21 +5463,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 "" +"Ar gaozeadenn klok a c'hell bezañ lennet amañ :\n" +"\n" +"%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +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" @@ -5970,41 +5507,20 @@ msgid "" "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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "eus" -#: lib/mailhandler.php:37 -msgid "Could not parse message." -msgstr "" - #: lib/mailhandler.php:42 msgid "Not a registered user." msgstr "N'eo ket un implijer enrollet." -#: 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 "" @@ -6025,7 +5541,7 @@ msgstr "" #: lib/mediafile.php:159 msgid "Missing a temporary folder." -msgstr "" +msgstr "Mankout a ra un doser padennek." #: lib/mediafile.php:162 msgid "Failed to write file to disk." @@ -6035,24 +5551,20 @@ 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 -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 "" +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 "" @@ -6065,11 +5577,7 @@ msgstr "Kas ur gemennadenn war-eeun" msgid "To" msgstr "Da" -#: lib/messageform.php:159 lib/noticeform.php:185 -msgid "Available characters" -msgstr "" - -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Kas" @@ -6078,79 +5586,83 @@ msgstr "Kas" msgid "Send a notice" msgstr "Kas un ali" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Penaos 'mañ kont, %s ?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Stagañ" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Stagañ ur restr" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Rannañ va lec'hiadur." -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Chom hep rannañ va lec'hiadur." -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 "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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "en amdro" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Adkemeret gant" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Respont d'an ali-mañ" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Respont" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Ali adkemeret" @@ -6168,28 +5680,16 @@ msgstr "Kas ur blinkadenn d'an implijer-mañ" #: lib/oauthstore.php:283 msgid "Error inserting new profile" -msgstr "" +msgstr "Ur fazi 'zo bet en ur ensoc'hañ ar profil nevez" #: 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 "" +msgstr "Ur fazi 'zo bet en ur ensoc'hañ an avatar" #: lib/oauthstore.php:345 msgid "Duplicate notice" msgstr "Eilañ an ali" -#: lib/oauthstore.php:490 -msgid "Couldn't insert new subscription." -msgstr "" - #: lib/personalgroupnav.php:99 msgid "Personal" msgstr "Hiniennel" @@ -6223,7 +5723,7 @@ msgstr "Ar c'hemenadennoù kaset ganeoc'h" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Dianav" @@ -6260,7 +5760,7 @@ msgstr "Keidenn pemdeziek" msgid "All groups" msgstr "An holl strolladoù" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6274,20 +5774,12 @@ msgstr "Strolladoù implijerien" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" -msgstr "" - -#: lib/publicgroupnav.php:88 -msgid "Featured" -msgstr "" +msgstr "Merkoù nevez" #: lib/publicgroupnav.php:92 msgid "Popular" msgstr "Poblek" -#: lib/redirectingaction.php:94 -msgid "No return-to arguments." -msgstr "" - #: lib/repeatform.php:107 msgid "Repeat this notice?" msgstr "Adkregiñ gant an ali-mañ ?" @@ -6300,12 +5792,7 @@ msgstr "Ya" msgid "Repeat this notice" msgstr "Adkregiñ gant an ali-mañ" -#: lib/revokeroleform.php:91 -#, fuzzy, php-format -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 "" @@ -6313,10 +5800,6 @@ msgstr "" msgid "Sandbox" msgstr "Poull-traezh" -#: lib/sandboxform.php:78 -msgid "Sandbox this user" -msgstr "" - #: lib/searchaction.php:120 msgid "Search site" msgstr "Klask el lec'hienn" @@ -6361,20 +5844,6 @@ msgstr "Muioc'h..." msgid "Silence" msgstr "Didrouz" -#: 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" @@ -6384,11 +5853,6 @@ msgstr "Ezel eo %s eus ar strolladoù" msgid "Invite" msgstr "Pediñ" -#: 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" @@ -6403,26 +5867,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "An implijerien an efedusañ" -#: 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 "En em zigoumanantiñ eus an implijer-mañ" @@ -6431,11 +5915,6 @@ msgstr "En em zigoumanantiñ eus an implijer-mañ" msgid "Unsubscribe" msgstr "Digoumanantiñ" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "An implijer-mañ n'eus profil ebet dezhañ." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Kemmañ an Avatar" @@ -6469,9 +5948,8 @@ msgid "Moderate" msgstr "Habaskaat" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "Strolladoù implijerien" +msgstr "Rol an implijer" #: lib/userprofile.php:366 msgctxt "role" @@ -6484,56 +5962,56 @@ msgid "Moderator" msgstr "Habasker" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "bloaz zo well-wazh" @@ -6545,11 +6023,4 @@ msgstr "n'eo ket %s ul liv reizh !" #: 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 "" -"Re hir eo ar gemennadenn - ar ment brasañ a zo %1$d arouezenn, %2$d " -"arouezenn o peus lakaet." +msgstr "N'eo ket %s ul liv reizh ! Implijit 3 pe 6 arouezenn heksdekvedennel." diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po index 55bbac1964..3233ac9a3d 100644 --- a/locale/ca/LC_MESSAGES/statusnet.po +++ b/locale/ca/LC_MESSAGES/statusnet.po @@ -11,12 +11,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:18+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:34+0000\n" "Language-Team: Catalan\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ca\n" "X-Message-Group: out-statusnet\n" @@ -24,15 +24,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 "Accés" #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -msgstr "Desa els paràmetres del lloc" +msgstr "Paràmetres d'accés al lloc" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 @@ -74,9 +73,8 @@ msgstr "Tancat" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 -#, fuzzy msgid "Save access settings" -msgstr "Desa els paràmetres del lloc" +msgstr "Desa els paràmetres d'accés" #. TRANS: Button label to save e-mail preferences. #. TRANS: Button label to save IM preferences. @@ -90,161 +88,168 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 msgid "No such user." -msgstr "No existeix aquest usuari." +msgstr "No existeix l'usuari." #. 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 perfils blocats, pàgina %d" +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:114 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." msgstr "" -"Aquesta és la línia temporal de %s i amics, però ningú hi ha enviat res " +"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 " "something yourself." msgstr "" +"Proveu de subscriure més gent, [uniu-vos a un grup](%%action.groups%%) o " +"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 +#: 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 "" +"Sigueu el primer en [enviar sobre aquest tema](%%%%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 "" +"Per què no hi [registreu un compte](%%action.register%%) i sou el primer en " +"escriure'n un!" #. 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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 -#, fuzzy +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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." msgstr "" +"Heu d'especificar un paràmetre anomenat 'device' (dispositiu) amb un valor " +"dels següents: sms, im, none (cap)" -#: actions/apiaccountupdatedeliverydevice.php:132 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "No s'ha pogut actualitzar l'usuari." @@ -259,13 +264,12 @@ msgid "User has no profile." msgstr "L'usuari no té perfil." #: actions/apiaccountupdateprofile.php:147 -#, fuzzy msgid "Could not save profile." -msgstr "No s'ha pogut guardar el perfil." +msgstr "No s'ha pogut desar el perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -274,6 +278,8 @@ msgid "" "The server was unable to handle that much POST data (%s bytes) due to its " "current configuration." msgstr "" +"El servidor no ha pogut gestionar tantes dades POST (%s bytes) a causa de la " +"configuració actual." #: actions/apiaccountupdateprofilebackgroundimage.php:136 #: actions/apiaccountupdateprofilebackgroundimage.php:146 @@ -282,15 +288,13 @@ msgstr "" #: actions/groupdesignsettings.php:290 actions/groupdesignsettings.php:300 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 -#, fuzzy msgid "Unable to save your design settings." -msgstr "No s'ha pogut guardar la teva configuració de Twitter!" +msgstr "No s'han pogut desar els paràmetres de disseny." #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy msgid "Could not update your design." -msgstr "No s'ha pogut actualitzar l'usuari." +msgstr "No s'ha pogut actualitzar el vostre disseny." #: actions/apiblockcreate.php:105 msgid "You cannot block yourself!" @@ -298,11 +302,11 @@ msgstr "No podeu bloquejar-vos a vosaltres mateixos!" #: actions/apiblockcreate.php:126 msgid "Block user failed." -msgstr "Ha fallat el bloqueig d'usuari." +msgstr "Ha fallat el blocatge de l'usuari." #: actions/apiblockdestroy.php:114 msgid "Unblock user failed." -msgstr "Ha fallat el desbloqueig d'usuari." +msgstr "Ha fallat el desblocatge de l'usuari." #: actions/apidirectmessage.php:89 #, php-format @@ -324,216 +328,225 @@ msgstr "Missatges directes a %s" msgid "All the direct messages sent to %s" msgstr "Tots els missatges directes enviats a %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "No hi ha text al missatge!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "És massa llarg. La mida màxima del missatge és %d caràcters." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." -msgstr "No has escrit cap usuari receptor." +msgstr "No s'ha trobat l'usuari destinatari." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 estatus amb aquesta 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." -msgstr "No es pot crear favorit." +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 suprimir el preferit." +msgstr "No s'ha pogut eliminar el preferit." #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "No pots subscriure't a aquest usuari: L'usuari no existeix." +msgid "Could not follow user: profile not found." +msgstr "No es pot deixar de seguir l'usuari: no s'ha trobat l'usuari." #: actions/apifriendshipscreate.php:118 #, php-format msgid "Could not follow user: %s is already on your list." -msgstr "" -"No pots subscriure't de nou a aquest usuari: %s ja està a la teva llista." +msgstr "No s'ha pogut seguir l'usuari: %s ja està a la vostra llista." #: actions/apifriendshipsdestroy.php:109 msgid "Could not unfollow user: User not found." -msgstr "No pots subscriure't a aquest usuari: l'usuari no existeix." +msgstr "No es pot deixar de seguir l'usuari: no s'ha trobat l'usuari." #: actions/apifriendshipsdestroy.php:120 msgid "You cannot unfollow yourself." -msgstr "No podeu deixar de seguir-vos a vosaltres mateixos." +msgstr "No podeu deixar de seguir-vos a un mateix." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Dos ids d'usuari o screen_names has de ser substituïts." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Cal proporcionar dos identificadors d'usuari o screen_names." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." msgstr "No s'ha pogut determinar l'usuari d'origen." #: actions/apifriendshipsshow.php:142 -#, fuzzy msgid "Could not find target user." -msgstr "No es pot trobar cap estatus." +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 teu nom és massa llarg (màx. 255 caràcters)." +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\"." +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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "No s'ha pogut suprimir l'usuari %1$s del grup %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 +msgid "Upload failed." +msgstr "La pujada ha fallat." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." -msgstr "" +msgstr "No s'ha proporcionat cap paràmetre oauth_token." #: actions/apioauthauthorize.php:106 -#, fuzzy msgid "Invalid token." -msgstr "Mida invàlida." +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 @@ -561,11 +574,13 @@ msgid "" "The request token %s has been authorized. Please exchange it for an access " "token." msgstr "" +"S'ha autoritzat el testimoni de sol·licitud %s. Si us plau, canvieu-lo per " +"un testimoni d'accés." #: actions/apioauthauthorize.php:227 #, php-format msgid "The request token %s has been denied and revoked." -msgstr "" +msgstr "S'ha denegat i revocat el testimoni de sol·licitud %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. @@ -581,11 +596,11 @@ msgstr "Enviament de formulari inesperat." #: actions/apioauthauthorize.php:259 msgid "An application would like to connect to your account" -msgstr "" +msgstr "Una aplicació voldria connectar-se al vostre compte" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "Permet o denega l'accés" #: actions/apioauthauthorize.php:292 #, php-format @@ -594,14 +609,17 @@ 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 "" +"L'aplicació <strong>%1$s</strong>, de <strong>%2$s</strong>, voldria obtenir " +"l'habilitat de <strong>%3$s</strong> les dades del vostre compte %4$s. Només " +"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:463 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 @@ -609,8 +627,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" @@ -624,106 +642,116 @@ msgstr "Permet" #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." -msgstr "" +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 pots eliminar l'estatus d'un altre usuari." +msgstr "No podeu eliminar l'estat d'un altre usuari." #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." msgstr "No existeix aquest avís." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "No podeu repetir els vostres propis avisos." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." msgstr "Avís duplicat." -#: actions/apistatusesshow.php:138 +#: actions/apistatusesshow.php:139 msgid "Status deleted." -msgstr "S'ha suprimit l'estat." +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:161 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "El client ha de proporcionar un paràmetre 'status' amb un valor." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "No s'ha trobat." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." -msgstr "" +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 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:110 +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / Preferits de %s" +msgstr "%1$s / Preferits de %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 actualitzacions favorites per %s / %s." +msgstr "%1$s actualitzacions preferides per %2$s / %2$s." -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / Notificacions contestant a %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 notificacions que responen a notificacions de %2$s / %3$s." +msgstr "%1$s actualitzacions que responen a avisos de %2$s / %3$s." -#: actions/apitimelinepublic.php:107 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:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "%s notificacions de tots!" +msgstr "%s actualitzacions de tothom!" #: actions/apitimelineretweetedtome.php:111 #, php-format msgid "Repeated to %s" -msgstr "Repetida a %s" +msgstr "Repetit a %s" #: actions/apitimelineretweetsofme.php:114 #, php-format 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ó." @@ -741,7 +769,7 @@ msgstr "Cap mida." #: actions/avatarbynickname.php:69 msgid "Invalid size." -msgstr "Mida invàlida." +msgstr "La mida no és vàlida." #. TRANS: Link description in user account settings menu. #: actions/avatarsettings.php:67 actions/showgroup.php:230 @@ -758,9 +786,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 "Usuari sense perfil coincident" +msgstr "L'usuari que no coincideix amb cap perfil" #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -778,9 +805,9 @@ msgid "Preview" msgstr "Vista prèvia" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" -msgstr "Suprimeix" +msgstr "Elimina" #: actions/avatarsettings.php:166 actions/grouplogo.php:236 msgid "Upload" @@ -814,39 +841,41 @@ msgstr "Error en actualitzar avatar." #: actions/avatarsettings.php:397 msgid "Avatar deleted." -msgstr "S'ha suprimit l'avatar." +msgstr "S'ha eliminat l'avatar." #: actions/block.php:69 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 "Usuari bloquejat." +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 " "will not be notified of any @-replies from them." msgstr "" +"Esteu segur que voleu blocar l'usuari? Tot seguit, se'n cancel·larà la " +"vostra subscripció, no us podrà subscriure en el futur, i no en rebreu cap " +"avís de respostes @." #. 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 -#, fuzzy msgctxt "BUTTON" msgid "No" 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" @@ -855,23 +884,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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 "Bloquejar aquest usuari" +msgstr "Bloca aquest usuari" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." -msgstr "Error al guardar la informació del block." +msgstr "No s'ha pogut desar la informació del bloc." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -881,8 +911,8 @@ msgstr "Error al guardar la informació del block." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "No s'ha trobat el grup." @@ -892,14 +922,13 @@ msgid "%s blocked profiles" msgstr "%s perfils blocats" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s perfils blocats, pàgina %d" +msgstr "%1$s perfils blocats, pàgina %2$d" #: actions/blockedfromgroup.php:115 -#, fuzzy msgid "A list of the users blocked from joining this group." -msgstr "La llista dels usuaris d'aquest grup." +msgstr "Una llista d'usuaris que han estat blocats d'afegir-se a aquest grup." #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" @@ -917,7 +946,7 @@ msgstr "Desbloca l'usuari" #: actions/bookmarklet.php:51 #, php-format msgid "Post to %s" -msgstr "Publicar a %s" +msgstr "Publica a %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -929,7 +958,7 @@ msgstr "Codi de confirmació no trobat. " #: actions/confirmaddress.php:85 msgid "That confirmation code is not for you!" -msgstr "Aquest codi de confirmació no és per a tu!" +msgstr "Aquest codi de confirmació no és vostre!" #. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'. #: actions/confirmaddress.php:91 @@ -970,7 +999,7 @@ msgstr "Confirmeu l'adreça de correu electrònic" #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." -msgstr "L'adreça \"%s\" ha estat confirmada per al teu compte." +msgstr "L'adreça «%s» ha estat confirmada per al vostre compte." #: actions/conversation.php:99 msgid "Conversation" @@ -982,9 +1011,8 @@ msgid "Notices" msgstr "Avisos" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "Heu d'iniciar una sessió per editar un grup." +msgstr "Heu d'haver iniciat una sessió per eliminar una aplicació." #: actions/deleteapplication.php:71 msgid "Application not found." @@ -997,13 +1025,13 @@ 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:1307 msgid "There was a problem with your session token." -msgstr "Ha ocorregut algun problema amb la teva sessió." +msgstr "S'ha produït un problema amb el testimoni de la vostra sessió." #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 msgid "Delete application" -msgstr "Esborra aplicació" +msgstr "Elimina l'aplicació" #: actions/deleteapplication.php:149 msgid "" @@ -1011,12 +1039,14 @@ msgid "" "about the application from the database, including all existing user " "connections." msgstr "" +"Esteu segur que voler eliminar l'aplicació? Això netejarà totes les dades de " +"l'aplicació de la base de dades, incloent-hi totes les connexions d'usuari " +"existents." #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 -#, fuzzy msgid "Do not delete this application" -msgstr "No es pot esborrar la notificació." +msgstr "No eliminis l'aplicació" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 @@ -1029,44 +1059,44 @@ 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ó." #: actions/deletenotice.php:71 msgid "Can't delete this notice." -msgstr "No es pot esborrar la notificació." +msgstr "No es pot eliminar l'avís." #: actions/deletenotice.php:103 msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" -"Estàs a punt d'eliminar permanentment un avís. Una vegada fet, no es podrà " +"Esteu a punt d'eliminar permanentment un avís. Una vegada fet, no es podrà " "desfer." #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" -msgstr "Eliminar nota." +msgstr "Elimina l'avís" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" -msgstr "N'estàs segur que vols eliminar aquesta notificació?" +msgstr "Esteu segur que voleu eliminar aquest avís?" #. TRANS: Submit button title for 'No' when deleting a notice. #: actions/deletenotice.php:151 msgid "Do not delete this notice" -msgstr "No elimineu aquest avís" +msgstr "No eliminis aquest avís" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" -msgstr "Eliminar aquesta nota" +msgstr "Elimina aquest avís" #: actions/deleteuser.php:67 msgid "You cannot delete users." -msgstr "No podeu suprimir els usuaris." +msgstr "No podeu eliminar els usuaris." #: actions/deleteuser.php:74 msgid "You can only delete local users." @@ -1074,18 +1104,20 @@ msgstr "Només podeu eliminar usuaris locals." #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" -msgstr "Suprimeix l'usuari" +msgstr "Elimina l'usuari" #: 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 "" +"Esteu segur que voleu eliminar l'usuari? S'esborraran totes les dades de " +"l'usuari de la base de dades, sense cap còpia de seguretat." #. TRANS: Submit button title for 'Yes' when deleting a user. #: actions/deleteuser.php:163 lib/deleteuserform.php:77 msgid "Delete this user" -msgstr "Suprimeix l'usuari" +msgstr "Elimina l'usuari" #. TRANS: Message used as title for design settings for the site. #. TRANS: Link description in user account settings menu. @@ -1098,45 +1130,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" @@ -1145,57 +1185,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 "" +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 "" +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 "" +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 @@ -1203,15 +1251,15 @@ msgstr "" #: 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" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" -msgstr "Aquesta notificació no és un favorit!" +msgstr "Aquesta avís no és un preferit!" #: actions/disfavor.php:94 msgid "Add to favorites" @@ -1220,7 +1268,7 @@ msgstr "Afegeix als preferits" #: actions/doc.php:158 #, php-format msgid "No such document \"%s\"" -msgstr "No existeix el document \"%s\"" +msgstr "No existeix el document «%s»" #: actions/editapplication.php:54 msgid "Edit Application" @@ -1236,33 +1284,28 @@ msgid "No such application." msgstr "No hi ha tal aplicació." #: actions/editapplication.php:161 -#, fuzzy msgid "Use this form to edit your application." -msgstr "Utilitza aquest formulari per editar el grup." +msgstr "Utilitza el formulari per editar la vostra aplicació." #: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy msgid "Name is required." -msgstr "Igual a la contrasenya de dalt. Requerit." +msgstr "Cal un nom." #: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy msgid "Name is too long (max 255 chars)." -msgstr "El teu nom és massa llarg (màx. 255 caràcters)." +msgstr "El nom és massa llarg (màx. 255 caràcters)." #: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy msgid "Name already in use. Try another one." -msgstr "Aquest sobrenom ja existeix. Prova un altre. " +msgstr "El nom ja es troba en ús. Proveu-ne un altre." #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "Descripció" +msgstr "Cal una descripció." #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "L'URL font és massa llarg." #: actions/editapplication.php:200 actions/newapplication.php:185 msgid "Source URL is not valid." @@ -1270,7 +1313,7 @@ msgstr "La URL d'origen no és vàlida." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "Cal una organització." #: actions/editapplication.php:206 actions/newapplication.php:191 msgid "Organization is too long (max 255 chars)." @@ -1278,35 +1321,33 @@ msgstr "El camp organització és massa llarg (màx. 255 caràcters)." #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" +msgstr "Cal una pàgina d'inici de l'organització." #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." -msgstr "" +msgstr "La crida de retorn és massa llarga." #: actions/editapplication.php:225 actions/newapplication.php:215 msgid "Callback URL is not valid." -msgstr "" +msgstr "L'URL de la crida de retorn no és vàlid." #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "No s'ha pogut actualitzar el grup." +msgstr "No s'ha pogut actualitzar l'aplicació." #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" -msgstr "Editar el grup %s" +msgstr "Edita el grup %s" #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 msgid "You must be logged in to create a group." -msgstr "Has d'haver entrat per crear un grup." +msgstr "Heu d'haver iniciat una sessió per crear un grup." #: 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 "Has de ser admin per editar aquest grup" +msgstr "Heu de ser administrador per editar el grup." #: actions/editgroup.php:158 msgid "Use this form to edit the group." @@ -1326,7 +1367,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." @@ -1336,16 +1378,15 @@ msgstr "Configuració guardada." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Configuració del correu electrònic" +msgstr "Paràmetres del correu electrònic" #. 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 "Gestionar com reps correus de %%site.name%%." +msgstr "Gestioneu com rebeu correu de %%site.name%%." #. TRANS: Form legend for e-mail settings form. #. TRANS: Field label for e-mail address input in e-mail settings form. @@ -1366,10 +1407,9 @@ msgstr "Adreça electrònica confirmada actualment." #: 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 "Suprimeix" +msgstr "Elimina" #: actions/emailsettings.php:122 msgid "" @@ -1385,7 +1425,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 "Cancel·la" @@ -1400,7 +1439,6 @@ msgstr "Adreça electrònica, com ara «nomusuari@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 "Afegeix" @@ -1415,41 +1453,36 @@ msgstr "Correu electrònic entrant" #. 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 "" -"Envia correu electrònic a aquesta adreça per publicar noves notificacions." +msgstr "Envia correu electrònic a aquesta adreça per publicar nous avisos." #. 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 "Posar un nou correu electrònic per publicar; cancel·lar l'antic." +msgstr "Estableix una nova adreça electrònica d'enviament; cancel·la l'antiga." #. 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 "Nou" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferències" +msgstr "Preferències del correu electrònic" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 msgid "Send me notices of new subscriptions through email." -msgstr "" -"Envia'm notificacions quan algú nou se'm subscrigui, al meu correu " -"electrònic." +msgstr "Envia'm avisos per correu electrònic quan algú nou se'm subscrigui." #. 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 "" -"Envia'm un correu electrònic quan algú afegeixi una nota meva com a favorit." +"Envia'm un correu electrònic quan algú afegeixi un avís meu com a preferit." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:193 @@ -1458,19 +1491,19 @@ msgstr "Envia'm un correu electrònic quan algú m'envii un missatge privat." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 -#, fuzzy msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "Envia'm un correu electrònic quan algú m'envii un missatge privat." +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 msgid "I want to post notices by email." -msgstr "Vull publicar notificacions per correu electrònic." +msgstr "Vull publicar avisos amb el correu electrònic." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 @@ -1479,9 +1512,8 @@ msgstr "Publica una MicroID per al meu correu electrònic." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "S'han desat les preferències de disseny." +msgstr "S'han desat les preferències del correu electrònic." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1494,7 +1526,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." @@ -1533,19 +1565,17 @@ msgstr "" #: actions/emailsettings.php:419 actions/imsettings.php:383 #: actions/smssettings.php:408 msgid "No pending confirmation to cancel." -msgstr "Cap confirmació pendent per a cancel·lar." +msgstr "Cap confirmació pendent per cancel·lar." #. 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 "Aquesta adreça de missatgeria instantània és incorrecta." +msgstr "Aquesta l'adreça de correu electrònic incorrecta." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Confirmació cancel·lada." +msgstr "S'ha cancel·lat la confirmació de correu electrònic." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1555,9 +1585,8 @@ msgstr "Aquest no és el teu correu electrònic" #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "L'adreça ha estat eliminada." +msgstr "S'ha eliminat l'adreça de correu electrònic." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1582,35 +1611,39 @@ msgstr "Nou correu electrònic entrant afegit." #: actions/favor.php:79 msgid "This notice is already a favorite!" -msgstr "Aquesta nota ja és favorita." +msgstr "Aquest avís ja és un preferit." #: actions/favor.php:92 lib/disfavorform.php:140 msgid "Disfavor favorite" -msgstr "Desfavoritar favorit" +msgstr "Fes que deixi de ser preferit" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 msgid "Popular notices" -msgstr "Notificacions populars" +msgstr "Avisos populars" #: actions/favorited.php:67 #, php-format msgid "Popular notices, page %d" -msgstr "Notificacions populars, pàgina %d" +msgstr "Avisos populars, pàgina %d" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." -msgstr "Les notificacions més populars en aquest lloc ara mateix." +msgstr "Els avisos més populars en aquest lloc ara mateix." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." msgstr "" +"Els avisos de preferits apareixen en aquesta pàgina però ningú n'ha preferit " +"cap encara." #: 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 "" +"Sigueu el primer en afegir un avís dels vostres preferits fent clic al botó " +"de preferit que es troba al costat dels avisos que us poden agradar." #: actions/favorited.php:156 #, php-format @@ -1618,17 +1651,19 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" +"Per què no [registreu un compte](%%action.register%%) i sou el primer en " +"afegir un avís als vostres preferits!" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "%s's notes favorites" +msgstr "Avisos preferits de %s" #: actions/favoritesrss.php:115 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "Actualitzacions de %1$s a %2$s!" +msgstr "Actualitzacions preferides per %1$s a %2$s!" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1641,7 +1676,7 @@ msgid "Featured users, page %d" msgstr "Usuaris destacats, pàgina %d" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" msgstr "Una selecció d'alguns dels millors usuaris a %s" @@ -1671,7 +1706,7 @@ msgstr "L'usuari que s'escolta no existeix." #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" -msgstr "Pots utilitzar la subscripció local!" +msgstr "Podeu utilitzar la subscripció local!" #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." @@ -1682,19 +1717,16 @@ msgid "You are not authorized." msgstr "No esteu autoritzat." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "No s'han pogut convertir els senyals de petició a senyals d'accés." +msgstr "No s'ha pogut convertir el testimoni de sol·licitud a un d'accés." #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Versió desconeguda del protocol OMB." +msgstr "El servei remot utilitza una versió desconeguda del protocol OMB." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Error en actualitzar el perfil remot" +msgstr "S'ha produït un error en actualitzar el perfil remot." #: actions/getfile.php:79 msgid "No such file." @@ -1710,27 +1742,25 @@ msgstr "Rol no vàlid." #: actions/grantrole.php:66 actions/revokerole.php:66 msgid "This role is reserved and cannot be set." -msgstr "" +msgstr "Aquest rol està reservat i no pot definir-se." #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "No pots enviar un missatge a aquest usuari." +msgstr "No podeu establir rols d'usuari en aquest lloc." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "L'usuari ja està silenciat." +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 perfil." +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." @@ -1744,9 +1774,8 @@ msgid "Only an admin can block group members." msgstr "Només un administrador pot blocar membres del grup." #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "Un usuari t'ha bloquejat." +msgstr "L'usuari ja està blocat del grup." #: actions/groupblock.php:100 msgid "User is not a member of group." @@ -1757,14 +1786,14 @@ msgid "Block user from group" msgstr "Bloca l'usuari del grup" #: 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 "" -"Esteu segur que voleu blocar l'usuari «%s» del grup «%s»? Se suprimiran del " -"grup, i no podran enviar-hi res ni subscriure-s'hi en el futur." +"Esteu segur que voleu blocar l'usuari «%1$s» del grup «%2$s»? S'eliminarà del " +"grup, i no podrà enviar-hi res ni subscriure-s'hi en el futur." #. TRANS: Submit button title for 'No' when blocking a user from a group. #: actions/groupblock.php:182 @@ -1781,9 +1810,8 @@ msgid "Database error blocking user from group." msgstr "S'ha produït un error en la base de dades en blocar l'usuari del grup." #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "No ID" +msgstr "Sense ID." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." @@ -1815,10 +1843,12 @@ msgid "Group logo" msgstr "Logo del grup" #: actions/grouplogo.php:153 -#, fuzzy, php-format +#, php-format msgid "" "You can upload a logo image for your group. The maximum file size is %s." -msgstr "Pots pujar una imatge de logo per al grup." +msgstr "" +"Podeu pujar una imatge com a logotip del vostre grup. La mida màxima del " +"fitxer és %s." #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." @@ -1838,9 +1868,9 @@ msgid "%s group members" msgstr "%s membre/s en el grup" #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "%s membre/s en el grup, pàgina %d" +msgstr "%1$s membres del grup, pàgina %2$d" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1870,7 +1900,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" @@ -1900,19 +1930,24 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" +"Els grups de %%%%site.name%%%% us permeten trobar-vos i parlar amb gent " +"d'interessos semblants. Després d'unir-vos a un grup, podeu enviar missatges " +"a altres membres emprant la sintaxi «!groupname». No veieu cap grup que us " +"agradi? Proveu de [cercar-ne un](%%%%action.groupsearch%%%%) o [comenceu-ne " +"un de propi!](%%%%action.newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 msgid "Create a new group" msgstr "Crea un grup nou" #: actions/groupsearch.php:52 -#, fuzzy, php-format +#, php-format msgid "" "Search for groups on %%site.name%% by their name, location, or description. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"Troba gent a %%site.name%% per nom, ubicació o interessos. Separa els termes " -"de cerca amb espais; han de ser majors a 3 caràcters." +"Cerca grups a %%site.name%% per nom, ubicació o descripció. Separeu els " +"termes de cerca amb espais; han de contenir com a mínim 3 caràcters." #: actions/groupsearch.php:58 msgid "Group search" @@ -1929,6 +1964,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"Si no podeu trobar el grup que cerqueu, podeu provar de [crear-lo](%%action." +"newgroup%%) també." #: actions/groupsearch.php:85 #, php-format @@ -1936,6 +1973,8 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"Per què no [registreu un compte](%%action.register%%) i proveu de [crear-hi " +"un grup](%%action.newgroup%%)!" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." @@ -1947,7 +1986,7 @@ msgstr "L'usuari no està blocat del grup." #: actions/groupunblock.php:128 actions/unblock.php:86 msgid "Error removing the block." -msgstr "S'ha produït un error en suprimir el bloc." +msgstr "S'ha produït un error en eliminar el bloc." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 @@ -1963,8 +2002,8 @@ msgid "" "You can send and receive notices through Jabber/GTalk [instant messages](%%" "doc.im%%). Configure your address and settings below." msgstr "" -"Pots enviar i rebre avisos via [missatges instantanis](%%doc.im%%) de Jabber/" -"GTalk. Configura la teva adreça i opcions a sota." +"Podeu enviar i rebre avisos a través de [missatges instantanis](%%doc.im%%) " +"de Jabber/GTalk. Configureu la vostra adreça i opcions a continuació." #. TRANS: Message given in the IM settings if XMPP is not enabled on the site. #: actions/imsettings.php:94 @@ -2001,15 +2040,14 @@ 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 "" -"Adreça Jabber o GTalk, per exemple \"NomUsuari@example.org\". Primer, " -"assegura't d'afegir a %s a la teva llista d'amics en el teu client de " -"missatgeria instantània o a GTalk." +"Adreça Jabber o GTalk, per exemple «NomUsuari@example.org». Primer, assegureu-" +"vos d'afegir %s a la vostra llista d'amics en el vostre client de " +"missatgeria instantània o al GTalk." #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferències" +msgstr "Preferències de MI" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2072,7 +2110,7 @@ msgid "" "s for sending messages to you." msgstr "" "S'ha enviat un codi de confirmació a l'adreça de missatgeria instantània que " -"has afegit. Has d'acceptar que %s et pugui enviar missatges." +"heu afegit. Heu d'acceptar que %s us pugui enviar missatges." #. TRANS: Message given canceling IM address confirmation for the wrong IM address. #: actions/imsettings.php:388 @@ -2081,15 +2119,13 @@ msgstr "Aquesta adreça de missatgeria instantània és incorrecta." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "No s'ha pogut eliminar la confirmació de correu electrònic." +msgstr "No s'ha pogut eliminar la confirmació de MI." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Confirmació cancel·lada." +msgstr "S'ha cancel·lat la confirmació de MI." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2099,19 +2135,18 @@ msgstr "Aquest no és el teu Jabber ID." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "L'adreça ha estat eliminada." +msgstr "S'ha eliminat l'adreça de MI." #: actions/inbox.php:59 -#, fuzzy, php-format +#, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "Safata d'entrada per %s" +msgstr "Safata d'entrada de %1$s - pàgina %2$d" #: actions/inbox.php:62 #, php-format msgid "Inbox for %s" -msgstr "Safata d'entrada per %s" +msgstr "Safata d'entrada de %s" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." @@ -2124,11 +2159,10 @@ msgid "Invites have been disabled." msgstr "S'han inhabilitat les invitacions." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." msgstr "" -"Has d'estar dins del servei per poder convidar altres usuaris a utilitzar-lo " -"%s" +"Heu d'haver iniciat una sessió per convidar altres usuaris a utilitzar %s" #: actions/invite.php:72 #, php-format @@ -2137,11 +2171,11 @@ msgstr "Correu electrònic invàlid: %s" #: actions/invite.php:110 msgid "Invitation(s) sent" -msgstr "Invitació(ons) enviada(des)" +msgstr "Invitacions envidades" #: actions/invite.php:112 msgid "Invite new users" -msgstr "Invitar nous usuaris" +msgstr "Convida nous usuaris" #: actions/invite.php:128 msgid "You are already subscribed to these users:" @@ -2149,7 +2183,7 @@ msgstr "Ja estàs subscrit a aquests usuaris:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2157,8 +2191,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:" @@ -2169,8 +2202,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 "" @@ -2181,11 +2214,11 @@ msgstr "" #: actions/invite.php:187 msgid "Email addresses" -msgstr "Direcció de correu electrònic" +msgstr "Adreces de correu electrònic" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" -msgstr "Direccions d'amic per convidar (una per línia)" +msgstr "Adreces d'amics per convidar (una per línia)" #: actions/invite.php:192 msgid "Personal message" @@ -2203,9 +2236,9 @@ msgstr "Envia" #. TRANS: Subject for invitation email. Note that 'them' is correct as a gender-neutral singular 3rd-person pronoun in English. #: actions/invite.php:228 -#, fuzzy, php-format +#, php-format msgid "%1$s has invited you to join them on %2$s" -msgstr "%1$s t'ha convidat us ha convidat a unir-te al grup %2$s" +msgstr "%1$s us ha convidat a unir-vos al grup %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 @@ -2267,119 +2300,117 @@ msgstr "" #: actions/joingroup.php:60 msgid "You must be logged in to join a group." -msgstr "Has d'haver entrat per participar en un grup." +msgstr "Heu d'haver iniciat una sessió per unir-vos a un grup." #: actions/joingroup.php:88 actions/leavegroup.php:88 msgid "No nickname or ID." msgstr "Cap sobrenom o 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s s'ha unit al grup %2$s" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." -msgstr "Has d'haver entrat per a poder marxar d'un grup." +msgstr "Heu d'haver iniciat una sessió per deixar un grup." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "No ets membre d'aquest grup." -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%s ha abandonat el grup %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 -#, fuzzy +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." -msgstr "No autoritzat." +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 "" -"Iniciar sessió automàticament en el futur; no utilitzar en ordinadors " +"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." msgstr "" -"Per raons de seguretat, si us plau torna a escriure el teu nom d'usuari i " -"contrasenya abans de canviar la teva configuració." +"Per raons de seguretat, torneu a escriure el vostre nom d'usuari i " +"contrasenya abans de canviar la vostra configuració." -#: actions/login.php:270 -#, fuzzy, php-format +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Inicieu una sessió amb nom d'usuari i contrasenya" + +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Inicia una sessió amb el teu nom d'usuari i la teva contrasenya. Encara no " -"tens un nom d'usuari? [Crea](%%action.register%%) un nou compte o prova " -"[OpenID] (%%action.openidlogin%%)." +"No teniu cap nom d'usuari encara? [Registreu-hi](%%action.register%%) un nou " +"compte." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "Només un administrador poc fer a un altre usuari administrador." #: actions/makeadmin.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "%s ja és un administrador del grup «%s»." +msgstr "%1$s ja és un administrador del grup «%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 "No s'ha pogut eliminar l'usuari %s del grup %s" +msgstr "No s'ha pogut obtenir el registre de pertinència de %1$s al grup %2$s." #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "No es pot fer %s un administrador del grup %s" +msgstr "No es pot fer %1$s administrador del grup %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "No té cap estatus ara mateix" +msgstr "No hi ha cap estat actual." #: actions/newapplication.php:52 msgid "New Application" msgstr "Nova Aplicació" #: actions/newapplication.php:64 -#, fuzzy msgid "You must be logged in to register an application." -msgstr "Has d'haver entrat per crear un grup." +msgstr "Heu d'haver iniciat una sessió per registrar-hi una aplicació." #: actions/newapplication.php:143 msgid "Use this form to register a new application." @@ -2390,9 +2421,8 @@ msgid "Source URL is required." msgstr "URL d'origen requerida." #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "No s'han pogut crear els àlies." +msgstr "No s'ha pogut crear l'aplicació." #: actions/newgroup.php:53 msgid "New group" @@ -2406,12 +2436,15 @@ msgstr "Utilitza aquest formulari per crear un nou grup." msgid "New message" msgstr "Nou missatge" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "No podeu enviar un misssatge a aquest usuari." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Cap contingut!" @@ -2419,7 +2452,8 @@ msgstr "Cap contingut!" msgid "No recipient specified." msgstr "No has especificat el destinatari." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "No t'enviïs missatges a tu mateix, simplement dir-te això." @@ -2428,12 +2462,14 @@ msgstr "No t'enviïs missatges a tu mateix, simplement dir-te això." msgid "Message sent" msgstr "S'ha enviat el missatge" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "S'ha enviat un missatge directe a %s." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax Error" @@ -2441,9 +2477,9 @@ msgstr "Ajax Error" msgid "New notice" msgstr "Nou avís" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" -msgstr "Notificació publicada" +msgstr "S'ha publicat l'avís" #: actions/noticesearch.php:68 #, php-format @@ -2469,6 +2505,8 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"Sigueu el primer en [enviar sobre aquest tema](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/noticesearch.php:124 #, php-format @@ -2476,6 +2514,8 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" +"Per què no [registreu un compte](%%%%action.register%%%%) i sou el primer " +"[en parlar del tema](%%%%action.newnotice%%%%?status_textarea=%s)!" #: actions/noticesearchrss.php:96 #, php-format @@ -2490,23 +2530,22 @@ 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 "" -"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 " +"l'adreça electrònica." #: 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 -#, fuzzy msgid "You must be logged in to list your applications." -msgstr "Heu d'iniciar una sessió per editar un grup." +msgstr "Heu d'haver iniciat una sessió per llistar les vostres aplicacions." #: actions/oauthappssettings.php:74 msgid "OAuth applications" @@ -2514,20 +2553,20 @@ msgstr "Aplicacions OAuth" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Aplicacions que heu registrat" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "No teniu cap aplicació registrada encara." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" +msgstr "Aplicacions connectades" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "Heu permès les aplicacions següents accedir al vostre compte." #: actions/oauthconnectionssettings.php:175 msgid "You are not a user of that application." @@ -2536,41 +2575,42 @@ msgstr "No sou usuari de l'aplicació." #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." -msgstr "" +msgstr "No s'ha pogut revocar l'accés de l'aplicació: %s" #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "No heu autoritzat cap aplicació perquè utilitzi el vostre compte." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " msgstr "" +"Els desenvolupadors poden editar els paràmetres de registre de llurs " +"aplicacions " -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "Avís sense perfil" +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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "tipus de contingut " +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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Format de data no suportat." @@ -2580,7 +2620,7 @@ msgstr "Cerca de gent" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "Cerca de notificacions" +msgstr "Cerca d'avisos" #: actions/othersettings.php:60 msgid "Other settings" @@ -2588,7 +2628,7 @@ msgstr "Altres paràmetres" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "Gestionar altres vàries opcions." +msgstr "Gestiona altres opcions diferents." #: actions/othersettings.php:108 msgid " (free service)" @@ -2620,29 +2660,25 @@ msgid "No user ID specified." msgstr "No s'ha especificat cap ID d'usuari." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "No s'ha especificat perfil." +msgstr "No s'ha especificat cap testimoni d'inici de sessió." #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "No id en el perfil sol·licitat." +msgstr "No s'ha sol·licitat cap testimoni d'inici de sessió." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "El contingut de l'avís és invàlid" +msgstr "No s'ha especificat un testimoni d'inici de sessió vàlid." #: actions/otp.php:104 -#, fuzzy msgid "Login token expired." -msgstr "Accedir al lloc" +msgstr "El testimoni d'inici de sessió ha vençut." #: actions/outbox.php:58 -#, fuzzy, php-format +#, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "Safata de sortida per %s" +msgstr "Safata de sortida de %1$s - pàgina %2$d" #: actions/outbox.php:61 #, php-format @@ -2657,11 +2693,11 @@ msgstr "" #: actions/passwordsettings.php:58 msgid "Change password" -msgstr "Canviar contrasenya" +msgstr "Canvia la contrasenya" #: actions/passwordsettings.php:69 msgid "Change your password." -msgstr "Canviar contrasenya" +msgstr "Canvieu la vostra contrasenya" #: actions/passwordsettings.php:96 actions/recoverpassword.php:231 msgid "Password change" @@ -2680,9 +2716,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" @@ -2690,13 +2726,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." @@ -2706,48 +2742,48 @@ msgstr "Contrasenya antiga incorrecta" #: actions/passwordsettings.php:181 msgid "Error saving user; invalid." -msgstr "Error en guardar usuari; invàlid." +msgstr "S'ha produït un error en desar l'usuari; no és vàlid." #: actions/passwordsettings.php:186 actions/recoverpassword.php:381 msgid "Can't save new password." -msgstr "No es pot guardar la nova contrasenya." +msgstr "No es pot desar la nova contrasenya." #: actions/passwordsettings.php:192 actions/recoverpassword.php:211 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" #: actions/pathsadminpanel.php:70 msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "Camí i paràmetres del servidor d'aquest lloc StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Aquesta pàgina no està disponible en " +msgstr "No es pot llegir el directori de temes: %s" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "No es pot escriure al directori de fons: %s" +msgstr "No es pot escriure al directori d'avatars: %s" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." msgstr "No es pot escriure al directori de fons: %s" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Aquesta pàgina no està disponible en " +msgstr "No es pot llegir el directori de les traduccions: %s" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "El servidor SSL no és vàlid. La mida màxima és de 255 caràcters." #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" @@ -2771,19 +2807,19 @@ msgstr "Camí del lloc" #: actions/pathsadminpanel.php:246 msgid "Path to locales" -msgstr "" +msgstr "El camí a les traduccions" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" -msgstr "" +msgstr "El camí del directori a les traduccions" #: actions/pathsadminpanel.php:250 msgid "Fancy URLs" -msgstr "" +msgstr "URL atractius" #: actions/pathsadminpanel.php:252 msgid "Use fancy (more readable and memorable) URLs?" -msgstr "" +msgstr "Voleu fer servir URL atractius (més fàcils de llegir i de recordar)?" #: actions/pathsadminpanel.php:259 msgid "Theme" @@ -2855,21 +2891,19 @@ msgstr "Utilitza l'SSL" #: actions/pathsadminpanel.php:330 msgid "When to use SSL" -msgstr "" +msgstr "Quan utilitzar l'SSL" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" msgstr "Servidor SSL" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" -msgstr "" +msgstr "Servidor on dirigir les sol·licituds SSL" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Avís del lloc" +msgstr "Desa els camins" #: actions/peoplesearch.php:52 #, php-format @@ -2885,24 +2919,25 @@ msgid "People search" msgstr "Cerca de gent" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Etiqueta no vàlida per a la gent: %s" +msgstr "No és una etiqueta de gent vàlida: %s" #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Usuaris que s'han etiquetat %s - pàgina %d" +msgstr "Usuaris que s'han etiquetat amb %1$s - pàgina %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "El contingut de l'avís és invàlid" +msgstr "El contingut de l'avís no és vàlid." #: actions/postnotice.php:101 #, php-format msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" +"La llicència ‘%1$s’ de l'avís no és compatible amb la llicència ‘%2$s’ del " +"lloc." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2912,8 +2947,8 @@ msgstr "Configuració del perfil" msgid "" "You can update your personal profile info here so people know more about you." msgstr "" -"Pots actualitzar la informació del teu perfil personal per a que la gent " -"sàpiga més sobre tu." +"Podeu actualitzar la informació del vostre perfil personal perquè la gent us " +"pugui conèixer millor." #: actions/profilesettings.php:99 msgid "Profile information" @@ -2924,50 +2959,49 @@ 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 -#, fuzzy +#: actions/profilesettings.php:125 actions/register.php:471 msgid "Describe yourself and your interests" -msgstr "Explica'ns alguna cosa sobre tu " +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 ets, per exemple \"Ciutat, Estat (o Regió), País\"" +msgstr "On us trobeu, per exemple «ciutat, comarca (o illa), país»" #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" -msgstr "" +msgstr "Comparteix la meva ubicació actual en enviar avisos" #: actions/profilesettings.php:145 actions/tagother.php:149 #: actions/tagother.php:209 lib/subscriptionlist.php:106 @@ -2979,49 +3013,49 @@ msgstr "Etiquetes" msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" -"Etiquetes per a tu mateix (lletres, números, -, ., i _), per comes o separat " -"por espais" +"Etiquetes pròpies (lletres, nombres, -, ., i _), per comes o separades amb " +"espais" #: actions/profilesettings.php:151 msgid "Language" -msgstr "Idioma" +msgstr "Llengua" #: actions/profilesettings.php:152 msgid "Preferred language" -msgstr "Preferència d'idioma" +msgstr "Llengua preferida" #: actions/profilesettings.php:161 msgid "Timezone" -msgstr "Franja horària" +msgstr "Fus horari" #: actions/profilesettings.php:162 msgid "What timezone are you normally in?" -msgstr "Quina franja horària seria normal ser?" +msgstr "En quin fus horari us trobeu normalment?" #: actions/profilesettings.php:167 msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -"Automàticament subscriure's a qualsevol que ho estigui a tu mateix (ideal " -"per no-humans)" +"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 msgid "Invalid tag: \"%s\"" -msgstr "Etiqueta no vàlida: \"%s\"" +msgstr "L'etiqueta no és vàlida: «%s»" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." @@ -3033,19 +3067,19 @@ msgstr "No s'han pogut desar les preferències d'ubicació." #: actions/profilesettings.php:375 msgid "Couldn't save profile." -msgstr "No s'ha pogut guardar el perfil." +msgstr "No s'ha pogut desar el perfil." #: actions/profilesettings.php:383 msgid "Couldn't save tags." -msgstr "No s'han pogut guardar les etiquetes." +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 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." msgstr "Més enllà del límit de la pàgina (%s)" @@ -3103,16 +3137,20 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" +"Això és %%site.name%%, un servei de [micro-blogging](http://en.wikipedia.org/" +"wiki/Micro-blogging) basat en l'eina lliure [StatusNet](http://status.net/). " +"[Uniu-vos-hi ara](%%action.register%%) per compartir què feu amb els vostres " +"amics, familiars, i companys! ([Més informació](%%doc.help%%))" #: 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 "" "Això és %%site.name%%, un servei de [microblogging](http://ca.wikipedia.org/" -"wiki/Microblogging) " +"wiki/Microblogging) basat en l'eina lliure [StatusNet](http://status.net/)." #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -3127,6 +3165,8 @@ msgstr "Aquestes són les etiquetes recents més populars a %s " #, php-format msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." msgstr "" +"Ningú ha enviat encara cap avís amb una [etiqueta de coixinet (#)](%%doc.tags" +"%%)." #: actions/publictagcloud.php:72 msgid "Be the first to post one!" @@ -3138,6 +3178,8 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"Per què no hi [registreu un compte](%%action.register%%) i sou el primer en " +"escriure'n un!" #: actions/publictagcloud.php:134 msgid "Tag cloud" @@ -3145,7 +3187,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." @@ -3194,20 +3236,20 @@ 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 msgid "Recover" -msgstr "Recuperar" +msgstr "Recupera" #: actions/recoverpassword.php:208 msgid "Reset password" -msgstr "Restablir contrasenya" +msgstr "Reinicialitza la contrasenya" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "Recuperar contrasenya" +msgstr "Recupera la contrasenya" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" @@ -3223,11 +3265,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." @@ -3235,18 +3277,18 @@ msgstr "No hi ha cap usuari amb aquesta direcció o usuari." #: actions/recoverpassword.php:299 msgid "No registered email address for that user." -msgstr "Cap adreça de correu electrònic registrada per aquest usuari." +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 "" "Instructions for recovering your password have been sent to the email " "address registered to your account." msgstr "" -"S'han enviat instruccions per a recuperar la teva contrasenya a l'adreça de " +"S'han enviat instruccions per recuperar la vostra contrasenya a l'adreça de " "correu electrònic registrada." #: actions/recoverpassword.php:357 @@ -3261,7 +3303,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." @@ -3269,40 +3311,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:507 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 -#, fuzzy +#: 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. " @@ -3310,45 +3351,69 @@ 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 contrasenyes" +"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 teu nom \"real\"" +msgstr "Nom llarg, preferiblement el vostre nom «real»" -#: actions/register.php:494 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Entenc que el contingut i les dades de %1$s són privades i confidencials." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Tots els drets reservats." + +#. 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 "" -"excepte les següents dades privades: contrasenya, adreça de correu " -"electrònic, adreça de missatgeria instantània, número de telèfon." +"El meu text i fitxers es troben disponibles sota %s, excepte pel que fa a " +"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:542 -#, 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" @@ -3365,20 +3430,22 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Felicitats, %s! I benvingut/da a %%%%site.name%%%%. Des d'aquí, podries...\n" +"Enhorabona, %1$s! Us donem la benvinguda a %%%%site.name%%%%. A partir " +"d'ara, podríeu voler...\n" "\n" -"* Anar al teu [teu perfil](%s) i publicar el teu primer missatge.\n" -"* Afegir una [direcció Jabber/GTalk](%%%%action.imsettings%%%%) i així poder " -"publicar les notificacions a través de missatgeria instantània.\n" -"* [Buscar gent](%%%%action.peoplesearch%%%%) que puguis conèixer o que " -"comparteixi els teus interessos. \n" -"* Actualitzar les [preferències del teu perfil](%%%%action.profilesettings%%%" -"%) per explicar als demés més sobre tu. * Llegir els [documents de la xarxa]" -"(%%%%doc.help%%%%) per conèixer les característiques del nostre servei. \n" +"* Anar al [vostre perfil](%2%s) i enviar el vostre primer missatge.\n" +"* Afegir una [adreça de Jabber/GTalk](%%%%action.imsettings%%%%) i així " +"poder enviar avisos a través de missatgeria instantània.\n" +"* [Cercar gent](%%%%action.peoplesearch%%%%) que pugueu conèixer o que " +"comparteixi els vostres interessos. \n" +"* Actualitzar les [preferències del vostre perfil](%%%%action.profilesettings" +"%%%%) per incloure-hi informació personal. \n" +"* Consultar els [documents de la xarxa](%%%%doc.help%%%%) per tal de " +"conèixer les característiques del servei. \n" "\n" -"Gràcies per registrar-te i esperem que gaudeixis d'aquest servei." +"Gràcies per registrar-vos-hi i esperem que en gaudiu." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3393,10 +3460,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 "" -"Per a subscriure't, pots [iniciar una sessió](%%action.login%%), o " -"[registrar](%%action.register%%) un nou compte. Si ja tens un en un [servei " -"de microblogging compatible](%%doc.openmublog%%), escriu l'URL del teu " -"perfil a sota." +"Per subscriure-us, podeu [iniciar una sessió](%%action.login%%), o " +"[registrar-hi](%%action.register%%) un nou compte. Si ja en teniu un en un " +"[servei de microblogging compatible](%%doc.openmublog%%), escriviu l'URL del " +"vostre perfil a continuació." #: actions/remotesubscribe.php:112 msgid "Remote subscribe" @@ -3425,48 +3492,43 @@ 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)" msgstr "L'URL del perfil és invàlid (format incorrecte)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "URL de perfil no vàlid (cap document YADIS)." +msgstr "" +"L'URL del perfil no és vàlid (no és un document YADIS o no s'ha definit un " +"XRDS vàlid)." #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." -msgstr "Aquest és un perfil local! Entra per subscriure-t'hi." +msgstr "Aquest és un perfil local! Inicieu una sessió per subscriure-us-hi." #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "No s'ha pogut obtenir un senyal de petició." +msgstr "No s'ha pogut obtenir un testimoni de sol·licitud." #: actions/repeat.php:57 -#, fuzzy msgid "Only logged-in users can repeat notices." -msgstr "Només l'usuari pot llegir les seves safates de correu." +msgstr "Només els usuaris que han iniciat una sessió poden enviar avisos." #: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy msgid "No notice specified." -msgstr "No s'ha especificat perfil." +msgstr "No s'ha especificat cap avís." #: actions/repeat.php:76 -#, fuzzy msgid "You can't repeat your own notice." -msgstr "No pots registrar-te si no estàs d'acord amb la llicència." +msgstr "No podeu repetir el vostre propi avís." #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "Ja heu blocat l'usuari." +msgstr "Ja havíeu repetit l'avís." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repetit" @@ -3481,33 +3543,32 @@ msgid "Replies to %s" msgstr "Respostes a %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Respostes a %1$s el %2$s!" +msgstr "Respostes a %1$s, pàgina %2$d" #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "Feed d'avisos de %s" +msgstr "Canal de respostes de %s (RSS 1.0)" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "Feed d'avisos de %s" +msgstr "Canal de respostes de %s (RSS 2.0)" #: actions/replies.php:159 #, php-format msgid "Replies feed for %s (Atom)" -msgstr "Feed d'avisos de %s" +msgstr "Canal de respostes de %s (Atom)" #: actions/replies.php:199 -#, fuzzy, php-format +#, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"notice to them yet." msgstr "" -"Aquesta és la línia temporal de %s i amics, però ningú hi ha enviat res " -"encara." +"Aquesta és la línia temporal de %1$s, però %2$s no hi ha enviat res encara." #: actions/replies.php:204 #, php-format @@ -3515,13 +3576,17 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" +"Podeu animar altres usuaris a una conversa, subscriviu-vos a més gent o " +"[uniu-vos a grups](%%action.groups%%)." #: 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 "" +"Sigueu el primer en [enviar sobre aquest tema](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/repliesrss.php:72 #, php-format @@ -3529,40 +3594,34 @@ msgid "Replies to %1$s on %2$s!" msgstr "Respostes a %1$s el %2$s!" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "No podeu silenciar els usuaris d'aquest lloc." +msgstr "No podeu revocar els rols d'usuari en aquest lloc." #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "Usuari sense perfil coincident" +msgstr "L'usuari no té aquest rol." -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "S'ha suprimit l'estat." +msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "No pots enviar un missatge a aquest usuari." +msgstr "No podeu posar els usuaris en un entorn de prova en aquest lloc." #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "Un usuari t'ha bloquejat." +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" #: actions/sessionsadminpanel.php:65 -#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "Paràmetres de disseny d'aquest lloc StatusNet." +msgstr "Paràmetres de sessió d'aquest lloc StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" @@ -3570,7 +3629,7 @@ msgstr "Gestiona les sessions" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." -msgstr "" +msgstr "Si cal gestionar les sessions nosaltres mateixos." #: actions/sessionsadminpanel.php:181 msgid "Session debugging" @@ -3586,39 +3645,36 @@ msgid "Save site settings" msgstr "Desa els paràmetres del lloc" #: actions/showapplication.php:82 -#, fuzzy msgid "You must be logged in to view an application." -msgstr "Has d'haver entrat per a poder marxar d'un grup." +msgstr "Heu d'haver iniciat una sessió per visualitzar una aplicació." #: actions/showapplication.php:157 -#, fuzzy msgid "Application profile" -msgstr "Avís sense perfil" +msgstr "Perfil de l'aplicació" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 msgid "Icon" -msgstr "" +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" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "Paginació" +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" @@ -3626,56 +3682,57 @@ msgstr "Estadístiques" #: actions/showapplication.php:203 #, php-format msgid "Created by %1$s - %2$s access by default - %3$d users" -msgstr "" +msgstr "Creat per %1$s - %2$s accés per defecte - %3$d usuaris" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Accions d'aplicació" #: actions/showapplication.php:236 msgid "Reset key & secret" -msgstr "" +msgstr "Reinicialitza la clau i la secreta" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Informació de l'aplicació" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "Clau del consumidor" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "Secreta del consumidor" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "Sol·licita l'URL del testimoni" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "Accedeix a l'URL del testimoni" #: actions/showapplication.php:283 -#, fuzzy msgid "Authorize URL" -msgstr "Autoria" +msgstr "Autoritza l'URL" #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" +"Nota: Les signatures HMAC-SHA1 són vàlides; però no es permet el mètode de " +"signatures en text net." #: actions/showapplication.php:309 -#, fuzzy msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "N'estàs segur que vols eliminar aquesta notificació?" +msgstr "" +"Esteu segur que voleu reinicialitzar la clau del consumidor i la secreta?" #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "%s's notes favorites" +msgstr "Avisos preferits de %1$s, pàgina %2$d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." @@ -3684,38 +3741,44 @@ msgstr "No s'han pogut recuperar els avisos preferits." #: actions/showfavorites.php:171 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "Feed per a amics de %s" +msgstr "Canal dels preferits de %s (RSS 1.0)" #: actions/showfavorites.php:178 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "Feed per a amics de %s" +msgstr "Canal dels preferits de %s (RSS 2.0)" #: actions/showfavorites.php:185 #, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "Feed per a amics de %s" +msgstr "Canal dels preferits 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 "" +"No heu triat cap avís preferit encara. Feu clic al botó de preferit dels " +"avisos que us agraden per arxivar-los per a més endavant i fer-los conèixer." #: 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 no ha afegit cap avís als seus preferits encara. Envieu quelcom " +"interessant que pugui afegir-hi :)" #: 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 "" +"Per què no [registreu un compte](%%action.register%%) i sou el primer en " +"afegir un avís als vostres preferits!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3727,9 +3790,9 @@ msgid "%s group" msgstr "%s grup" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "%s membre/s en el grup, pàgina %d" +msgstr "grup %1$s, pàgina %2$d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3754,26 +3817,26 @@ msgid "Group actions" msgstr "Accions del grup" #: actions/showgroup.php:338 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "Feed d'avisos del grup %s" +msgstr "Canal d'avisos del grup %s (RSS 1.0)" #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "Feed d'avisos del grup %s" +msgstr "Canal d'avisos del grup %s (RSS 2.0)" #: actions/showgroup.php:350 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (Atom)" -msgstr "Feed d'avisos del grup %s" +msgstr "Canal d'avisos del grup %s (Atom)" #: actions/showgroup.php:355 #, php-format 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" @@ -3787,11 +3850,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." @@ -3800,9 +3863,15 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** és un grup d'usuaris a %%%%site.name%%%%, un servei de [microblogging]" +"(http://ca.wikipedia.org/wiki/Microblogging) basat en l'eina lliure " +"[StatusNet](http://status.net/). Els seus membres comparteixen missatges " +"curts sobre llur vida i interessos. [Uniu-vos-hi ara](%%%%action.register%%%" +"%) per formar part del grup i molt més! ([Més informació...](%%%%doc.help%%%" +"%))" -#: 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 " @@ -3810,9 +3879,11 @@ msgid "" "their life and interests. " msgstr "" "**%s** és un grup d'usuaris a %%%%site.name%%%%, un servei de [microblogging]" -"(http://ca.wikipedia.org/wiki/Microblogging)" +"(http://ca.wikipedia.org/wiki/Microblogging) basat en l'eina lliure " +"[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" @@ -3835,64 +3906,66 @@ msgid "Message from %1$s on %2$s" msgstr "Missatge de %1$s a %2$s" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "Notificació publicada" +msgstr "S'ha eliminat l'avís." #: actions/showstream.php:73 -#, fuzzy, php-format +#, php-format msgid " tagged %s" -msgstr "Aviso etiquetats amb %s" +msgstr " etiquetats amb %s" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s perfils blocats, pàgina %d" +msgstr "%1$s, pàgina %2$d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Feed d'avisos del grup %s" +msgstr "Canal d'avisos de %1$s etiquetats amb %2$s (RSS 1.0)" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Feed d'avisos de %s" +msgstr "Canal d'avisos de %s (RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Feed d'avisos de %s" +msgstr "Canal d'avisos de %s (RSS 2.0)" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "Feed d'avisos de %s" +msgstr "Canal d'avisos de %s (Atom)" #: actions/showstream.php:148 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s" -msgstr "Safata de sortida per %s" +msgstr "FOAF de %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 "" -"Aquesta és la línia temporal de %s i amics, però ningú hi ha enviat res " -"encara." +"Aquesta és la línia temporal de %1$s, però %2$s no hi ha enviat res encara." #: 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 "" +"Heu vist res interessant recentment? No heu enviat cap avís encara, ara " +"podria ser un bon moment per començar :)" #: 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 "" +"Sigueu el primer en [enviar sobre aquest tema](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/showstream.php:243 #, php-format @@ -3902,16 +3975,23 @@ msgid "" "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** té un compte a %%%%site.name%%%%, un servei de [microblogging](http://" +"ca.wikipedia.org/wiki/Microblogging) basat en l'eina lliure [StatusNet]" +"(http://status.net/). Els seus membres comparteixen missatges curts sobre " +"llur vida i interessos. [Uniu-vos-hi ara](%%%%action.register%%%%) per poder " +"seguir els avisos de **%s** i molt més! ([Més informació...](%%%%doc.help%%%" +"%))" #: 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** té un compte a %%%%site.name%%%%, un servei de [microblogging](http://" -"ca.wikipedia.org/wiki/Microblogging) " +"ca.wikipedia.org/wiki/Microblogging) basat en l'eina lliure [StatusNet]" +"(http://status.net/). " #: actions/showstream.php:305 #, php-format @@ -3927,31 +4007,29 @@ msgid "User is already silenced." msgstr "L'usuari ja està silenciat." #: actions/siteadminpanel.php:69 -#, fuzzy msgid "Basic settings for this StatusNet site" -msgstr "Paràmetres bàsic d'aquest lloc basat en l'StatusNet." +msgstr "Paràmetres bàsics d'aquest lloc basat en l'StatusNet." #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." msgstr "El nom del lloc ha de tenir una longitud superior a zero." #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "Heu de tenir una adreça electrònica de contacte vàlida" +msgstr "Heu de tenir una adreça electrònica de contacte vàlida." #: actions/siteadminpanel.php:159 -#, fuzzy, php-format +#, php-format msgid "Unknown language \"%s\"." -msgstr "Llengua desconeguda «%s»" +msgstr "Llengua desconeguda «%s»." #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "El límit de text mínim és 0 (sense cap límit)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." -msgstr "" +msgstr "El límit de duplicats ha de ser d'un o més segons." #: actions/siteadminpanel.php:221 msgid "General" @@ -3967,7 +4045,7 @@ msgstr "El nom del vostre lloc, com ara «El microblog de l'empresa»" #: actions/siteadminpanel.php:229 msgid "Brought by" -msgstr "" +msgstr "Funciona gràcies a" #: actions/siteadminpanel.php:230 msgid "Text used for credits link in footer of each page" @@ -3975,11 +4053,11 @@ msgstr "El text que s'utilitza a l'enllaç dels crèdits al peu de cada pàgina" #: actions/siteadminpanel.php:234 msgid "Brought by URL" -msgstr "" +msgstr "URL de «Funciona gràcies a»" #: actions/siteadminpanel.php:235 msgid "URL used for credits link in footer of each page" -msgstr "" +msgstr "L'URL que s'utilitza en els enllaços de crèdits al peu de cada pàgina" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" @@ -3998,13 +4076,14 @@ msgid "Default timezone for the site; usually UTC." msgstr "Fus horari per defecte del lloc; normalment UTC." #: actions/siteadminpanel.php:262 -#, fuzzy msgid "Default language" -msgstr "Llengua per defecte del lloc" +msgstr "Llengua per defecte" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" +"Llengua del lloc quan la detecció automàtica des de la configuració del " +"navegador no està disponible" #: actions/siteadminpanel.php:271 msgid "Limits" @@ -4016,7 +4095,7 @@ msgstr "Límits del text" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "" +msgstr "Nombre màxim de caràcters dels avisos." #: actions/siteadminpanel.php:278 msgid "Dupe limit" @@ -4029,37 +4108,32 @@ msgstr "" "de nou." #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" msgstr "Avís del lloc" #: actions/sitenoticeadminpanel.php:67 -#, fuzzy msgid "Edit site-wide message" -msgstr "Nou missatge" +msgstr "Edita el missatge de tot el lloc" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "No s'ha pogut guardar la teva configuració de Twitter!" +msgstr "No s'ha pogut desar l'avís del lloc." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "" +msgstr "La mida màxima per als avisos de tot el lloc és de 255 caràcters." #: actions/sitenoticeadminpanel.php:176 -#, fuzzy msgid "Site notice text" -msgstr "Avís del lloc" +msgstr "Text de l'avís del lloc" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" -msgstr "" +msgstr "Text d'avís de tot el lloc (màxim 255 caràcters, es permet l'HTML)" #: actions/sitenoticeadminpanel.php:198 -#, fuzzy msgid "Save site notice" -msgstr "Avís del lloc" +msgstr "Desa l'avís del lloc" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 @@ -4072,8 +4146,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 @@ -4082,9 +4156,8 @@ msgstr "L'SMS no és disponible." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Adreça de missatgeria instantània" +msgstr "Adreça SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4094,7 +4167,7 @@ msgstr "Número de telèfon actualment confirmat i activat per SMS." #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 msgid "Awaiting confirmation on this phone number." -msgstr "Esperant confirmació per aquest número de telèfon." +msgstr "S'està esperant la confirmació d'aquest número de telèfon." #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 @@ -4108,10 +4181,9 @@ msgstr "Escriu el codi que has rebut en el teu telèfon mòbil." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" -msgstr "Confirmar" +msgstr "Confirma" #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 @@ -4125,9 +4197,8 @@ msgstr "Número de telèfon, no puntuació ni espais, en l'àrea del codi" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferències" +msgstr "Preferències de l'SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4135,14 +4206,13 @@ 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. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "S'han desat les preferències." +msgstr "S'han desat les preferències de l'SMS." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4157,7 +4227,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 @@ -4166,14 +4236,13 @@ msgstr "Aquest número de telèfon pertany a un altre usuari." #. 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 "" -"S'ha enviat un codi de confirmació al número de telèfon has afegit. Revisa " -"la teva safata d'entrada (i la carpeta de spam!) per veure aquest codi i les " -"instruccions per utilitzar-lo." +"S'ha enviat un codi de confirmació al número de telèfon que heu afegit. " +"Comproveu el codi i instruccions del vostre telèfon per saber com fer-lo " +"servir." #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4182,9 +4251,8 @@ msgstr "Aquest és un número de confirmació incorrecte." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Confirmació cancel·lada." +msgstr "La confirmació d'SMS s'ha cancel·lat." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4194,9 +4262,8 @@ msgstr "Aquest no és el teu número de telèfon." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Número de telèfon per als SMS" +msgstr "S'ha eliminat el número de telèfon de l'SMS." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4216,41 +4283,40 @@ 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 "" -"Capacitat per al teu telèfon mòbil. Si vostè coneix una companyia que " -"accepti SMS a través del correu electrònic, però no està a la llista, " -"envia'ns un correu electrònic per fer-nos-ho saber %s." +"Capacitat per al vostre telèfon mòbil. Si coneixeu una companyia que accepti " +"SMS a través del correu electrònic, però no es troba a la llista, envieu-nos " +"un missatge de correu per fer-nos-ho saber %s." #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 msgid "No code entered" -msgstr "No hi ha cap codi entrat" +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" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Canvia la configuració del lloc" +msgstr "Gestiona la configuració de les instantànies" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." -msgstr "" +msgstr "El valor d'execució d'instantànies no és vàlid." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." -msgstr "" +msgstr "La freqüència de les instantànies ha de ser un nombre." #: actions/snapshotadminpanel.php:144 msgid "Invalid snapshot report URL." -msgstr "" +msgstr "L'URL d'informe d'instantànies no és vàlid." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" -msgstr "" +msgstr "A l'atzar durant les sol·licituds web" #: actions/snapshotadminpanel.php:201 msgid "In a scheduled job" @@ -4262,7 +4328,7 @@ msgstr "Instantànies de dades" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" -msgstr "" +msgstr "Quan enviar dades estadístiques als servidors de l'status.net" #: actions/snapshotadminpanel.php:217 msgid "Frequency" @@ -4270,42 +4336,40 @@ msgstr "Freqüència" #: actions/snapshotadminpanel.php:218 msgid "Snapshots will be sent once every N web hits" -msgstr "" +msgstr "Les instantànies s'enviaran una vegada cada N sol·licituds web" #: actions/snapshotadminpanel.php:226 msgid "Report URL" -msgstr "" +msgstr "Informa de l'URL" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" msgstr "Les instantànies s'enviaran a aquest URL" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "Desa els paràmetres del lloc" +msgstr "Desa els paràmetres de les instantànies" #: actions/subedit.php:70 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ó." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." -msgstr "" +msgstr "Aquesta acció només accepta sol·licituds POST." #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "No existeix el fitxer." +msgstr "No existeix el perfil." #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "No estàs subscrit a aquest perfil." +msgstr "No podeu subscriure-us a un perfil remot OMB 0.1 amb aquesta acció." #: actions/subscribe.php:145 msgid "Subscribed" @@ -4317,9 +4381,9 @@ msgid "%s subscribers" msgstr "%s subscriptors" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s subscriptors, pàgina %d" +msgstr "%1$s subscriptors, pàgina %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4380,6 +4444,12 @@ msgid "" "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can " "automatically subscribe to people you already follow there." msgstr "" +"No esteu escoltant els avisos de ningú ara mateix, proveu de subscriure-us a " +"gent que coneixeu. Proveu de [cercar gent](%%action.peoplesearch%%), trobar " +"membres de grups en què esteu interessats i en els nostres [usuaris " +"destacats](%%action.featured%%). Si sou un [usuari del Twitter](%%action." +"twittersettings%%), podeu subscriure-us automàticament a gent que ja seguiu " +"allà." #: actions/subscriptions.php:128 actions/subscriptions.php:132 #, php-format @@ -4395,29 +4465,28 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Usuaris que s'han etiquetat %s - pàgina %d" +msgstr "Avisos etiquetats amb %1$s, pàgina %2$d" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Feed d'avisos de %s" +msgstr "Canal d'avisos de l'etiqueta %s (RSS 1.0)" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Feed d'avisos de %s" +msgstr "Canal d'avisos de l'etiqueta %s (RSS 2.0)" #: actions/tag.php:99 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Feed d'avisos de %s" +msgstr "Canal d'avisos de l'etiqueta %s (Atom)" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "No argument de la id." +msgstr "No hi ha cap argument ID." #: actions/tagother.php:65 #, php-format @@ -4442,15 +4511,15 @@ msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" msgstr "" -"Etiquetes per aquest usuari (lletres, números,, -, ., i _), comes o separat " -"per espais" +"Etiquetes d'aquest usuari (lletres, nombres,, -, ., i _), comes o separades " +"amb espais" #: actions/tagother.php:193 msgid "" "You can only tag people you are subscribed to or who are subscribed to you." msgstr "" -"Només pots etiquetar gent a la que estiguis subscrit o que s'hagin subscrit " -"a tu." +"Només podeu etiquetar gent a la qual estigueu subscrit o que us hagin " +"subscrit." #: actions/tagother.php:200 msgid "Could not save tags." @@ -4459,34 +4528,28 @@ msgstr "No s'han pogut guardar les etiquetes." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." msgstr "" -"Utilitza aquest formulari per afegir etiquetes als teus subscriptors i " +"Utilitzeu aquest formulari per afegir etiquetes als vostres subscriptors i " "subscripcions." #: actions/tagrss.php:35 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." #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "Un usuari t'ha bloquejat." +msgstr "L'usuari no està a l'entorn de proves." #: actions/unsilence.php:72 msgid "User is not silenced." msgstr "L'usuari no està silenciat." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "No id en el perfil sol·licitat." +msgstr "No hi ha cap identificador del perfil en la sol·licitud." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4497,30 +4560,32 @@ msgstr "No subscrit" msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" +"La llicència del flux de qui escolteu, «%1$s», no és compatible amb la " +"llicència del lloc, «%2$s»." #. TRANS: User admin panel title #: actions/useradminpanel.php:59 -#, fuzzy msgctxt "TITLE" msgid "User" msgstr "Usuari" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "" +msgstr "Paràmetres d'usuari d'aquest lloc StatusNet." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." -msgstr "" +msgstr "El límit de la biografia no és vàlid. Cal que sigui numèric." #: actions/useradminpanel.php:155 msgid "Invalid welcome text. Max length is 255 characters." msgstr "" +"El text de benvinguda no és vàlid. La longitud màxima és de 255 caràcters." #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "" +msgstr "La subscripció per defecte no és vàlida: «%1$s» no és cap usuari." #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 @@ -4546,7 +4611,7 @@ msgstr "Benvinguda als usuaris nous" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Text de benvinguda per a nous usuaris (màx. 255 caràcters)." #: actions/useradminpanel.php:241 msgid "Default subscription" @@ -4566,24 +4631,23 @@ msgstr "S'han habilitat les invitacions" #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." -msgstr "" +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 -#, 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 "" -"Si us plau, revisa aquestes dades per a estar segur que desitges " -"subscriure't als avisos d'aquest usuari. Si no has demanat subscriure't als " -"avisos de ningú, clica \"Cancel·lar\"." +"Si us plau, reviseu aquests detalls per assegurar-vos que voleu subscriure-" +"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" @@ -4594,7 +4658,7 @@ msgstr "Accepta" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 msgid "Subscribe to this user" -msgstr "Subscriure's a aquest usuari" +msgstr "Subscriu-me a aquest usuari" #: actions/userauthorization.php:219 msgid "Reject" @@ -4606,71 +4670,70 @@ msgstr "Rebutja la subscripció" #: actions/userauthorization.php:232 msgid "No authorization request!" -msgstr "Cap petició d'autorització!" +msgstr "No és una sol·licitud d'autorització!" #: actions/userauthorization.php:254 msgid "Subscription authorized" msgstr "Subscripció autoritzada" #: 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 "" -"S'ha autoritzat la subscripció, però no s'ha enviat un URL de retorn. " -"Llegeix de nou les instruccions per a saber com autoritzar la subscripció. " -"El teu identificador de subscripció és:" +"S'ha autoritzat la subscripció, però no s'ha enviat cap URL de la crida de " +"retorn. Reviseu les instruccions del lloc per tal de tenir més detalls de " +"com autoritzar la subscripció. El vostre testimoni de subscripció és:" #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "Subscripció rebutjada" #: 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 "" -"S'ha rebutjat la subscripció, però no s'ha enviat un URL de retorn. Llegeix " -"de nou les instruccions per a saber com rebutjar la subscripció completament." +"S'ha rebutjat la subscripció, però no s'ha enviat cap URL de la crida de " +"retorn. Reviseu les instruccions del lloc per tal de tenir més detalls de " +"com rebutjar la subscripció completament." #: actions/userauthorization.php:303 #, php-format msgid "Listener URI ‘%s’ not found here." -msgstr "" +msgstr "No s'hi ha trobat l'URI de qui us escolta, «%s»." #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "L'URI de qui escolteu, «%s», és massa llarga." #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "L'URI de qui escolteu, «%s», és un usuari local." #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "L'URL del perfil «%s» és només per a un usuari local." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "L'URL de l'avatar «%s» no és vàlid." #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "No es pot llegir l'URL de l'avatar '%s'" +msgstr "No es pot llegir l'URL de l'avatar «%s»." #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Tipus d'imatge incorrecte per a '%s'" +msgstr "Tipus d'imatge incorrecta per a l'URL de l'avatar «%s»." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" @@ -4690,9 +4753,9 @@ msgstr "Gaudiu de l'entrepà!" #. 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 membre/s en el grup, pàgina %d" +msgstr "Grups de %1$s, pàgina %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" @@ -4706,231 +4769,329 @@ msgstr "%s no és membre de cap grup." #: actions/usergroups.php:164 #, php-format msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." -msgstr "" +msgstr "Proveu de [cercar grups](%%action.groupsearch%%) i unir-vos-hi." #. 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 "Actualitzacions de %1$s a %2$s!" -#: actions/version.php:73 -#, fuzzy, php-format +#: actions/version.php:75 +#, php-format msgid "StatusNet %s" -msgstr "Estadístiques" +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 "" +"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 " "Software Foundation, either version 3 of the License, or (at your option) " "any later version. " msgstr "" +"L'StatusNet és programari lliure; podeu redistribuir-lo i/o modificar-lo " +"d'acord amb els termes de la llicència GNU Affero General Public License tal " +"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 " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License " "for more details. " msgstr "" +"Aquest programa es distribueix amb la voluntat que sigui útil, perquè sense " +"cap mena de garantia; sense tampoc cap garantia implícita respecte a la seva " +"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 " "along with this program. If not, see %s." 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 -#, fuzzy +#: actions/version.php:198 lib/action.php:805 msgid "Version" -msgstr "Sessions" +msgstr "Versió" -#: actions/version.php:197 -#, fuzzy +#: 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 "No es pot processar l'URL «%s»" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "El Robin pensa que quelcom és 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 "" +"Cap fitxer pot ser major de %1$d bytes i el fitxer que heu enviat era de %2" +"$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 -#, fuzzy +#. 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 "El nom del fitxer no és vàlid." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." -msgstr "Perfil del grup" +msgstr "No s'ha pogut unir al grup." -#: 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 "No s'ha pogut actualitzar el grup." +msgstr "No s'és part del grup." -#: 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 "Perfil del grup" +msgstr "La sortida del grup ha fallat." -#: 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 "No s'ha pogut actualitzar el grup." +msgstr "No s'ha pogut actualitzar el grup local." -#: 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 "No s'han pogut crear els àlies." +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 "No s'ha trobat el nom de la base de dades o el DSN enlloc." + +#. 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 "No hi ha cap perfil (%1$d) per a l'avís (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Hashtag de l'error de la base de dades:%s" +msgstr "" +"S'ha produït un error de la base de dades en inserir una etiqueta de " +"coixinet (%): %s" -#: classes/Notice.php:245 -#, fuzzy +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 msgid "Problem saving notice. Too long." -msgstr "Problema en guardar l'avís." +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:270 msgid "Problem saving notice. Unknown user." -msgstr "Problema al guardar la notificació. Usuari desconegut." +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:276 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" -"Masses notificacions massa ràpid; pren un respir i publica de nou en uns " -"minuts." +"Massa avisos massa ràpid; pren un respir i publica de nou en uns minuts." -#: classes/Notice.php:260 -#, fuzzy +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -"Masses notificacions massa ràpid; pren un respir i publica de nou en uns " -"minuts." +"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:291 msgid "You are banned from posting notices on this site." -msgstr "Ha estat bandejat de publicar notificacions en aquest lloc." +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:358 classes/Notice.php:385 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:965 -#, fuzzy +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "S'ha proporcionat un tipus incorrecte per a saveKnownGroups" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 msgid "Problem saving group inbox." -msgstr "Problema en guardar l'avís." +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%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 es pot revocar el rol «%1$s» de l'usuari #%2$d; no existeix." + +#. 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 es pot revocar el rol «%1$s» de l'usuari #%2$d; s'ha produït un error en " +"la base de dades." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Manca el perfil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +msgstr "No s'ha pogut desar l'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 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 -#, fuzzy +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" -msgstr "No estàs subscrit!" +msgstr "No hi esteu subscrit!" -#: classes/Subscription.php:173 -#, fuzzy -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 s'ha pogut eliminar l'autosubscripció." + +#. 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 s'ha pogut eliminar el testimoni OMB de la subscripció." + +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "No s'ha pogut eliminar la subscripció." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "No s'ha pogut eliminar la subscripció." - -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "No s'ha pogut establir la pertinença d'aquest grup." +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 -#, fuzzy +#. 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 guardar la subscripció." +msgstr "No s'ha pogut desar la informació del grup local." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 @@ -4954,9 +5115,8 @@ msgstr "Canvieu la gestió del correu" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 -#, fuzzy msgid "Design your profile" -msgstr "Perfil de l'usuari" +msgstr "Dissenyeu el vostre perfil" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 @@ -4969,217 +5129,200 @@ msgid "Other" msgstr "Altres" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%1$s (%2$s)" +msgstr "%1$s - %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Navegació primària del lloc" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -#, fuzzy +#: lib/action.php:458 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "Canviar correu electrònic, avatar, contrasenya, perfil" +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 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "No s'ha pogut redirigir al servidor: %s" +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:468 msgid "Connect" msgstr "Connexió" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -#, fuzzy +#: lib/action.php:474 msgctxt "MENU" msgid "Admin" -msgstr "Admin" +msgstr "Administrador" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "Convidar amics i companys perquè participin a %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 -#, fuzzy +#: lib/action.php:481 msgctxt "MENU" msgid "Invite" msgstr "Convida" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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 -#, fuzzy +#: lib/action.php:490 msgctxt "MENU" msgid "Logout" msgstr "Finalitza la sessió" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy +#: lib/action.php:498 msgctxt "MENU" msgid "Register" msgstr "Registre" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Inicia una sessió al lloc" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Inici de sessió" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "Ajuda'm" +msgstr "Ajuda'm!" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Ajuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Cerca gent o text" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 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:538 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:605 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:675 msgid "Page notice" -msgstr "Notificació pàgina" +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:778 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:784 msgid "Help" msgstr "Ajuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Quant a" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 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:795 msgid "TOS" -msgstr "" +msgstr "Termes del servei" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privadesa" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Font" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contacte" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Insígnia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." @@ -5188,13 +5331,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5206,68 +5349,75 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +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:880 #, 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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" +"Tot el contingut i les dades de %1$s es troben disponibles sota una " +"llicència %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1236 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:1247 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:1257 msgid "Before" msgstr "Anteriors" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" +"S'esperava un element del canal arrel, però se n'ha obtingut tot un document " +"XML sencer." #: lib/activityutils.php:208 msgid "Can't handle remote content yet." -msgstr "" +msgstr "No es pot gestionar el contingut remot encara." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "No es pot gestionar el contingut XML incrustat encara." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." -msgstr "" +msgstr "No es pot gestionar el contingut Base64 incrustat encara." #. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights. #: lib/adminpanelaction.php:98 @@ -5276,177 +5426,165 @@ msgstr "No podeu fer canvis al lloc." #. 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 "Registre no permès." +msgstr "No es permeten canvis a aquell tauler." #. TRANS: Client error message. #: lib/adminpanelaction.php:229 -#, fuzzy msgid "showForm() not implemented." -msgstr "Comanda encara no implementada." +msgstr "El showForm() no està implementat." #. TRANS: Client error message #: lib/adminpanelaction.php:259 -#, fuzzy msgid "saveSettings() not implemented." -msgstr "Comanda encara no implementada." +msgstr "El saveSettings() no està implementat." #. 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 "No s'ha pogut guardar la teva configuració de Twitter!" +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 -#, fuzzy +#: 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 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Disseny" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "Configuració dels camins" +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 -#, fuzzy +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "Configuració del disseny" +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 -#, fuzzy +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "Configuració del disseny" +msgstr "Configuració de les sessions" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Avís del lloc" +msgstr "Edita l'avís del lloc" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "Configuració dels camins" +msgstr "Configuració de les instantànies" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 " +"de lectura." #. TRANS: Form legend. #: lib/applicationeditform.php:137 msgid "Edit application" -msgstr "" +msgstr "Edita l'aplicació" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "Icona de l'aplicació" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "Descriu el grup amb 140 caràcters" +msgstr "Descriviu la vostra aplicació en %d caràcters" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Descriu el grup amb 140 caràcters" +msgstr "Descriviu la vostra aplicació" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "URL del teu web, blog del grup u tema" +msgstr "URL de la pàgina d'inici de l'aplicació" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 -#, fuzzy msgid "Source URL" -msgstr "Font" +msgstr "URL d'origen" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "Organització responsable de l'aplicació" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "URL del teu web, blog del grup u tema" +msgstr "L'URL de la pàgina d'inici de l'organització" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "URL on redirigir-hi després de l'autenticació." #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 msgid "Browser" -msgstr "" +msgstr "Navegador" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:295 msgid "Desktop" -msgstr "" +msgstr "Escriptori" #. TRANS: Form guide. #: lib/applicationeditform.php:297 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "Tipus d'aplicació, navegador o escriptori" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 msgid "Read-only" -msgstr "" +msgstr "Només lectura" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:339 msgid "Read-write" -msgstr "" +msgstr "Lectura i escriptura" #. TRANS: Form guide. #: lib/applicationeditform.php:341 msgid "Default access for this application: read-only, or read-write" msgstr "" +"Accés per defecte per a l'aplicació: només lectura, o lectura i escriptura" #. TRANS: Submit button title #: lib/applicationeditform.php:359 @@ -5456,25 +5594,24 @@ msgstr "Cancel·la" #. TRANS: Application access type #: lib/applicationlist.php:136 msgid "read-write" -msgstr "" +msgstr "de lectura i d'escriptura" #. TRANS: Application access type #: lib/applicationlist.php:138 msgid "read-only" -msgstr "" +msgstr "només de lectura" #. 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 "" +msgstr "Aprovat: %1$s - accés «%2$s»." #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Suprimeix" +msgstr "Revoca" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5493,20 +5630,19 @@ msgstr "Proveïdor" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "" +msgstr "Avisos on apareix l'adjunt" #: lib/attachmenttagcloudsection.php:48 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 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "Contrasenya canviada." +msgstr "No es permet el canvi de contrasenya" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" @@ -5520,252 +5656,284 @@ msgstr "Comanda completada" msgid "Command failed" msgstr "Comanda fallida" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "No hi ha cap perfil amb aquesta id." +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "No existeix cap avís amb aquest identificador." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "L'usuari no té última nota" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "L'usuari no té un darrer avís." #. 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 "No es pot actualitzar l'usuari amb el correu electrònic confirmat" +#: lib/command.php:130 +#, php-format +msgid "Could not find a user with nickname %s." +msgstr "No es pot trobar un usuari amb el sobrenom %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 -msgid "Could not find a local user with nickname %s" -msgstr "No es pot actualitzar l'usuari amb el correu electrònic confirmat" +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "No s'ha pogut trobar un usuari local amb el sobrenom %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Perdona, aquesta comanda no està implementada." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" -msgstr "" +msgstr "No té massa sentit avisar-se a un mateix!" #. 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 "Reclamació enviada" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "S'ha cridat l'atenció a %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"Subscripcions: %1$s\n" +"Subscriptors: %2$s\n" +"Avisos: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." -msgstr "Nota marcada com a favorita." +msgstr "L'avís està marcat com a preferit." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Ja sou membre del grup." - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, 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." +msgid "%1$s joined group %2$s." +msgstr "%1$s s'ha unit al grup %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "No s'ha pogut suprimir l'usuari %1$s del grup %2$s." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s ha deixat el grup %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Pàgina web: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" -msgstr "Sobre tu: %s" +msgstr "Informació personal: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " "same server." msgstr "" +"%s és un perfil remot; només podeu enviar missatges directess a usuaris del " +"mateix servidor." #. 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Missatge massa llarg - màxim és 140 caràcters, tu has enviat %d" - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "Missatge directe per a %s enviat" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" +"El missatge és massa llarg - el màxim és %1$d caràcters, i n'heu enviat %2$d." -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." -msgstr "Error al enviar el missatge directe." - -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "No es poden posar en on les notificacions." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Eliminar aquesta nota" +msgstr "S'ha produït un error en enviar el missatge directe." #. 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 "Notificació publicada" +#: lib/command.php:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "S'ha repetit l'avís de %s." -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Problema en guardar l'avís." +msgstr "S'ha produït un error en repetir l'avís." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Missatge massa llarg - màxim és 140 caràcters, tu has enviat %d" - -#: lib/command.php:571 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Reply to %s sent" -msgstr "S'ha enviat la resposta a %s" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "L'avís és massa llarg - el màxim és %1$d caràcters, n'heu enviat %2$d." -#: lib/command.php:573 -#, fuzzy +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 +#, php-format +msgid "Reply to %s sent." +msgstr "S'ha enviat la resposta a %s." + +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." -msgstr "Problema en guardar l'avís." +msgstr "S'ha produït un error en desar l'avís." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Especifica el nom de l'usuari a que vols subscriure't" - -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "No estàs subscrit a aquest perfil." - -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Subscrit a %s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Especifica el nom de l'usuari del que vols deixar d'estar subscrit" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Especifiqueu el nom de l'usuari al qual voleu subscriure-us." +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Has deixat d'estar subscrit a %s" +msgid "Can't subscribe to OMB profiles by command." +msgstr "No es pot subscriure a perfils de OMB amb ordres." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "Subscrit a %s." + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Especifiqueu el nom de l'usuari del qui voleu deixar la subscripció." + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 +#, php-format +msgid "Unsubscribed from %s." +msgstr "S'ha deixat d'estar subscrit a %s." + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Comanda encara no implementada." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "Notificacions off." +msgstr "Avisos desactivats." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." -msgstr "No es poden posar en off les notificacions." +msgstr "No es poden desactivar els avisos." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." -msgstr "Notificacions on." +msgstr "Avisos activitats." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." -msgstr "No es poden posar en on les notificacions." +msgstr "No es poden activar els avisos." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "L'ordre d'inici de sessió no està habilitada." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" +"Aquest enllaç només es pot fer servir una vegada i només és vàlid durant 2 " +"minuts: %s." -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Has deixat d'estar subscrit a %s" +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 +#, php-format +msgid "Unsubscribed %s." +msgstr "S'ha cancel·lat la subscripció de %s." -#: lib/command.php:778 -#, fuzzy +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "No estàs subscrit a aquest perfil." +msgstr "No esteu subscrit a ningú." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ja estàs subscrit a aquests usuaris:" msgstr[1] "Ja estàs subscrit a aquests usuaris:" -#: lib/command.php:800 -#, fuzzy +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "No pots subscriure a un altre a tu mateix." +msgstr "Ningú no us ha subscrit." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "No pots subscriure a un altre a tu mateix." msgstr[1] "No pots subscriure a un altre a tu mateix." -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "No sou membre de cap grup." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Sou un membre d'aquest grup:" msgstr[1] "Sou un membre d'aquests grups:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5806,6 +5974,44 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"Ordres:\n" +"on - activeu els avisos\n" +"off - desactiveu els avisos\n" +"help - mostra aquesta ajuda\n" +"follow <nickname> - se subscriu a l'usuari\n" +"groups - llista els grups on us heu unit\n" +"subscriptions - llista la gent que seguiu\n" +"subscribers - llista la gent que us segueix\n" +"leave <nickname> - cancel·la la subscripció de l'usuari\n" +"d <nickname> <text> - missatge directe a l'usuari\n" +"get <nickname> - s'obté el darrer avís de l'usuari\n" +"whois <nickname> - s'obté la informació del perfil de l'usuari\n" +"lose <nickname> - es força l'usuari a deixar de seguir-vos\n" +"fav <nickname> - afegeix el darrer avís de l'usuari com a «preferit»\n" +"fav #<notice_id> - afegeix l'avís amb l'id donat com a «preferit»\n" +"repeat #<notice_id> - repeteix l'avís amb l'id donat\n" +"repeat <nickname> - repeteix el darrer avís de l'usari\n" +"reply #<notice_id> - respon l'avís amb l'id donat\n" +"reply <nickname> - respon el darrer avís de l'usuari\n" +"join <group> - s'uneix al grup\n" +"login - s'obté un enllaç per iniciar una sessió des de la interfície web\n" +"drop <group> - es deixa el grup\n" +"stats - s'obté el vostre estat\n" +"stop - el mateix que «off»\n" +"quit - el mateix que «off»\n" +"sub <nickname> - el mateix que «follow»\n" +"unsub <nickname> - el mateix que «leave»\n" +"last <nickname> - el mateix que «get»\n" +"on <nickname> - no s'ha implementat encara.\n" +"off <nickname> - no s'ha implementat encara.\n" +"nudge <nickname> - es recorda a l'usuari que actualitzi.\n" +"invite <phone number> - no s'ha implementat encara.\n" +"track <word> - no s'ha implementat encara.\n" +"untrack <word> - no s'ha implementat encara.\n" +"track off - no s'ha implementat encara.\n" +"untrack all - no s'ha implementat encara.\n" +"tracks - no s'ha implementat encara.\n" +"tracking - no s'ha implementat encara.\n" #: lib/common.php:135 msgid "No configuration file found. " @@ -5813,11 +6019,11 @@ msgstr "No s'ha trobat cap fitxer de configuració. " #: lib/common.php:136 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "S'han cercat fitxers de configuracions en els llocs següents: " #: lib/common.php:138 msgid "You may wish to run the installer to fix this." -msgstr "Podeu voler executar l'instal·lador per a corregir-ho." +msgstr "Podeu voler executar l'instal·lador per corregir-ho." #: lib/common.php:139 msgid "Go to the installer." @@ -5825,11 +6031,11 @@ msgstr "Vés a l'instal·lador." #: lib/connectsettingsaction.php:110 msgid "IM" -msgstr "Missatgeria Instantània" +msgstr "MI" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "Actualitzacions per Missatgeria Instantània" +msgstr "Actualitzacions per missatgeria instantània (MI)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" @@ -5852,10 +6058,11 @@ msgid "Upload file" msgstr "Puja un fitxer" #: lib/designsettings.php:109 -#, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "Pots pujar el teu avatar personal." +msgstr "" +"Podeu pujar la vostra imatge de fons personal. La mida màxima del fitxer és " +"2MB." #: lib/designsettings.php:418 msgid "Design defaults restored." @@ -5863,11 +6070,11 @@ msgstr "S'han restaurat els paràmetres de disseny per defecte." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" -msgstr "Deixar de tenir favorita aquesta notificació" +msgstr "Deixa de tenir com a preferit aquest avís" #: lib/favorform.php:114 lib/favorform.php:140 msgid "Favor this notice" -msgstr "Fer favorita aquesta notificació" +msgstr "Fes preferit aquest avís" #: lib/favorform.php:140 msgid "Favor" @@ -5911,7 +6118,7 @@ msgstr "Etiqueta" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "Elegeix una etiqueta para reduir la llista" +msgstr "Trieu una etiqueta per escurçar la llista" #: lib/galleryaction.php:143 msgid "Go" @@ -5920,31 +6127,31 @@ msgstr "Vés-hi" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "" +msgstr "Atorga a l'usuari el rol «%s»" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" -msgstr "URL del teu web, blog del grup u tema" +msgstr "URL del teu web, blog del grup o de la temàtica" #: lib/groupeditform.php:168 msgid "Describe the group or topic" -msgstr "Descriviu el grup o el tema" +msgstr "Descriviu el grup o la temàtica" #: lib/groupeditform.php:170 #, php-format msgid "Describe the group or topic in %d characters" -msgstr "Descriviu el grup o el tema en %d caràcters" +msgstr "Descriviu el grup o la temàtica en %d caràcters" #: lib/groupeditform.php:179 msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" msgstr "" -"Localització del grup, si n'hi ha, com \"Ciutat, Estat (o Regió), País\"" +"Ubicació del grup, si s'hi adiu cap, com ara «ciutat, comarca (o illa), país»" #: lib/groupeditform.php:187 #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" -msgstr "" +msgstr "Sobrenoms addicionals del grup, separats amb comes o espais, màx. %d" #: lib/groupnav.php:85 msgid "Group" @@ -5957,12 +6164,12 @@ msgstr "Blocat" #: lib/groupnav.php:102 #, php-format msgid "%s blocked users" -msgstr "%susuaris blocats" +msgstr "%s usuaris blocats" #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" -msgstr "Editar propietats del grup %s" +msgstr "Edita les propietats del grup %s" #: lib/groupnav.php:113 msgid "Logo" @@ -5971,7 +6178,7 @@ msgstr "Logo" #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "Afegir o editar logo %s" +msgstr "Afegeix o edita el logo %s" #: lib/groupnav.php:120 #, php-format @@ -5989,7 +6196,7 @@ msgstr "Grups amb més entrades" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "Etiquetes en les notificacions del grup %s" +msgstr "Etiquetes en els avisos del grup %s" #. TRANS: Client exception 406 #: lib/htmloutputter.php:104 @@ -6001,9 +6208,9 @@ msgid "Unsupported image file format." msgstr "Format d'imatge no suportat." #: lib/imagefile.php:88 -#, fuzzy, php-format +#, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "Pots pujar una imatge de logo per al grup." +msgstr "La mida del fitxer és massa gran, La mida màxima és %s." #: lib/imagefile.php:93 msgid "Partial upload." @@ -6019,7 +6226,7 @@ msgstr "No és una imatge o és un fitxer corrupte." #: lib/imagefile.php:122 msgid "Lost our file." -msgstr "Hem perdut el nostre arxiu." +msgstr "Hem perdut el nostre fitxer." #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" @@ -6036,12 +6243,12 @@ msgstr "kB" #: lib/jabber.php:387 #, php-format msgid "[%s]" -msgstr "" +msgstr "[%s]" #: lib/jabber.php:567 -#, fuzzy, php-format +#, php-format msgid "Unknown inbox source %d." -msgstr "Llengua desconeguda «%s»" +msgstr "Font %d de la safata d'entrada desconeguda." #: lib/joinform.php:114 msgid "Join" @@ -6049,7 +6256,7 @@ msgstr "Inici de sessió" #: lib/leaveform.php:114 msgid "Leave" -msgstr "Abandonar" +msgstr "Deixa" #: lib/logingroupnav.php:80 msgid "Login with a username and password" @@ -6057,7 +6264,7 @@ msgstr "Accedir amb el nom d'usuari i contrasenya" #: lib/logingroupnav.php:86 msgid "Sign up for a new account" -msgstr "Crear nou compte" +msgstr "Registreu-vos-hi si voleu un compte nou" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 @@ -6081,6 +6288,19 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" +"Hola, %s.\n" +"\n" +"Algú ha introduït aquesta adreça electrònica a %s.\n" +"\n" +"Si sou qui ho ha fet i voleu confirmar-hi la vostra entrada, feu servir " +"l'URL a continuació:\n" +"\n" +"\t%s\n" +"\n" +"Si nou, simplement ignoreu el missatge.\n" +"\n" +"Gràcies pel vostre temps, \n" +"%s\n" #. TRANS: Subject of new-subscriber notification e-mail #: lib/mail.php:243 @@ -6088,9 +6308,19 @@ 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 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6103,29 +6333,31 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s ara està escoltant els teus avisos a %2$s.\n" +"%1$s ara està escoltant els vostres avisos a %2$s.\n" "\n" -"\t%3$s\n" +"%3$s\n" "\n" +"%4$s%5$s%6$s\n" "Atentament,\n" -"%4$s.\n" +"%7$s.\n" +"\n" +"----\n" +"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 -#, fuzzy, php-format +#: lib/mail.php:274 +#, php-format msgid "Bio: %s" -msgstr "" -"Biografia: %s\n" -"\n" +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" @@ -6137,40 +6369,40 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -"Tens una nova direcció per publicar a %1$s.\n" +"Teniu una nova adreça per publicar a %1$s.\n" "\n" -"Envia un correu electrònic a %2$s per publicar un nou missatge.\n" +"Envieu un correu electrònic a %2$s per publicar un nou missatge.\n" "\n" "Més instruccions per al correu electrònic a %3$s.\n" "\n" -"Sincerament teus,\n" +"Atentament,\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 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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "Esperant confirmació per aquest número de telèfon." +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 " @@ -6185,15 +6417,25 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" +"%1$s (%2$s) què tal us trobeu is us convida a publicar algunes notícies.\n" +"\n" +"Esperem sentir-vos aviat :)\n" +"\n" +"%3$s\n" +"\n" +"No responeu aquest missatge; no els hi arribarà.\n" +"\n" +"Ben cordialment,\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 "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" @@ -6211,15 +6453,29 @@ msgid "" "With kind regards,\n" "%5$s\n" msgstr "" +"%1$s (%2$s) us ha enviat un missatge privat:\n" +"\n" +"------------------------------------------------------\n" +"%3$s\n" +"------------------------------------------------------\n" +"\n" +"Podeu respondre llurs missatges a continuació:\n" +"\n" +"%4$s\n" +"\n" +"No responeu aquest missatge; no els hi arribarà.\n" +"\n" +"Ben cordialment,\n" +"%5$s\n" #. 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 "%s ha afegit la teva nota com a favorita" +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" @@ -6239,23 +6495,42 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" +"%1$s (@%7$s) acaba d'afegir el vostre avís de %2$s com a preferit.\n" +"\n" +"L'URL del vostre avís és:\n" +"\n" +"%3$s\n" +"\n" +"El text del vostre avís és:\n" +"\n" +"%4$s\n" +"\n" +"Podeu veure la llista dels preferits de %1$s a continuació:\n" +"\n" +"%5$s\n" +"\n" +"Atentament,\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 "" +"La conversa sencera pot llegir-se a continuació:\n" +"\n" +"%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +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" @@ -6281,6 +6556,29 @@ 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" +"\n" +"L'avís és a continuació:\n" +"\n" +"\t%3$s\n" +"\n" +"Hi diu:\n" +"\n" +"\t%4$s\n" +"\n" +"%5$s Podeu respondre'l a continuació:\n" +"\n" +"\t%6$s\n" +"\n" +"Teniu la llista de les respostes amb @ a continuació:\n" +"\n" +"%7$s\n" +"\n" +"Atentament,\n" +"%2$s\n" +"\n" +"P.S. Podeu desactivar els avisos per correu aquí: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6291,8 +6589,11 @@ 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 "" +"No teniu missatges privats. Podeu enviar un missatge per animar altres " +"usuaris en la conversa. La gent pot enviar-vos missatges només per als " +"vostres ulls." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "de" @@ -6313,27 +6614,33 @@ msgid "Sorry, no incoming email allowed." msgstr "Ho sentim, no s'hi permet correu d'entrada." #: lib/mailhandler.php:228 -#, fuzzy, php-format +#, php-format msgid "Unsupported message type: %s" -msgstr "Format d'imatge no suportat." +msgstr "Tipus de missatge no permès: %s" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" +"S'ha produït un error a la base de dades mentre es desava el vostre fitxer. " +"Torneu-ho a provar." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." msgstr "" +"El fitxer pujat excedeix la mida de la directiva upload_max_filesize del php." +"ini." #: lib/mediafile.php:147 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." msgstr "" +"El fitxer pujat excedeix la mida de la directiva MAX_FILE_SIZE especificada " +"en el formulari HTML." #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "" +msgstr "El fitxer pujat només s'ha pujat parcialment." #: lib/mediafile.php:159 msgid "Missing a temporary folder." @@ -6341,148 +6648,148 @@ msgstr "Manca una carpeta temporal." #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "No s'ha pogut escriure el fitxer al disc." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +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 "" +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 "" +msgstr "No s'ha pogut moure el fitxer al directori de destinació." -#: 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 "No s'ha pogut recuperar la conversa pública." +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 "" +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 "" +msgstr "%s no és un tipus de fitxer permès al servidor." #: lib/messageform.php:120 msgid "Send a direct notice" -msgstr "Enviar notificació directa" +msgstr "Envia un avís directe" #: lib/messageform.php:146 msgid "To" msgstr "A" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Caràcters disponibles" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Envia" #: lib/noticeform.php:160 msgid "Send a notice" -msgstr "Enviar notificació" +msgstr "Envia un avís" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Què tal, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Adjunta" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Adjunta un fitxer" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Comparteix la vostra ubicació" - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Comparteix la vostra ubicació" +msgstr "Comparteix la meva ubicació" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "No comparteixis la meva ubicació" + +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" msgstr "" +"Ho sentim, la obtenció de la vostra ubicació geogràfica està trigant més de " +"l'esperat; torneu-ho a provar més tard" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 -#, fuzzy +#: lib/noticelist.php:436 msgid "N" -msgstr "No" +msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" -msgstr "" +msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" -msgstr "" +msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" -msgstr "" +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 "" +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 "a" -#: lib/noticelist.php:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "en context" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetit per" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "respondre a aquesta nota" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Respon" -#: lib/noticelist.php:674 -#, fuzzy +#: lib/noticelist.php:675 msgid "Notice repeated" -msgstr "Notificació publicada" +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" @@ -6501,9 +6808,8 @@ msgid "Error inserting remote profile" msgstr "Error en inserir perfil remot" #: lib/oauthstore.php:345 -#, fuzzy msgid "Duplicate notice" -msgstr "Eliminar nota." +msgstr "Duplica l'avís" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." @@ -6540,12 +6846,11 @@ msgstr "Els teus missatges enviats" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "Etiquetes en les notificacions de %s's" +msgstr "Etiquetes en els avisos de %s" -#: lib/plugin.php:114 -#, fuzzy +#: lib/plugin.php:115 msgid "Unknown" -msgstr "Acció desconeguda" +msgstr "Desconegut" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6574,13 +6879,13 @@ msgstr "Membre des de" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "" +msgstr "Mitjana diària" #: lib/profileaction.php:264 msgid "All groups" msgstr "Tots els grups" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Mètode no implementat" @@ -6604,15 +6909,13 @@ msgstr "Destacat" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "No argument de la id." +msgstr "No hi ha arguments de retorn." #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "Repeteix l'avís" +msgstr "Voleu repetir l'avís?" #: lib/repeatform.php:132 msgid "Yes" @@ -6623,23 +6926,21 @@ msgid "Repeat this notice" msgstr "Repeteix l'avís" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Bloca l'usuari del grup" +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 "" +msgstr "No s'ha definit cap usuari únic per al mode d'usuari únic." #: lib/sandboxform.php:67 -#, fuzzy msgid "Sandbox" -msgstr "Safata d'entrada" +msgstr "Entorn de proves" #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "Desbloquejar aquest usuari" +msgstr "Posa l'usuari a l'entorn de proves" #: lib/searchaction.php:120 msgid "Search site" @@ -6663,15 +6964,15 @@ msgstr "Gent" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "Trobar gent en aquest lloc" +msgstr "Cerca gent en aquest lloc" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "Trobar contingut de les notes" +msgstr "Cerca el contingut dels avisos" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "Trobar un grup en aquest lloc" +msgstr "Cerca grups en aquest lloc" #: lib/section.php:89 msgid "Untitled section" @@ -6679,7 +6980,7 @@ msgstr "Secció sense títol" #: lib/section.php:106 msgid "More..." -msgstr "Més…" +msgstr "Més..." #: lib/silenceform.php:67 msgid "Silence" @@ -6697,7 +6998,7 @@ msgstr "Persones %s subscrites a" #: lib/subgroupnav.php:91 #, php-format msgid "People subscribed to %s" -msgstr "Persones subscrites a %s" +msgstr "Gent subscrita a %s" #: lib/subgroupnav.php:99 #, php-format @@ -6711,34 +7012,82 @@ msgstr "Convida" #: lib/subgroupnav.php:106 #, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "Convidar amics i companys perquè participin a %s" +msgstr "Convida amics i companys perquè participin a %s" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "" +msgstr "Núvol d'etiquetes personals (etiquetes pròpies)" #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "" +msgstr "Núvol d'etiquetes personals" #: lib/tagcloudsection.php:56 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Ha fallat el desament del tema." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "El tema conté uns noms d'extensió de fitxer que no són segurs." + +#: lib/themeuploader.php:241 +#, 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:259 +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 "Que més publiquen" +msgstr "Qui més publica" #: lib/unsandboxform.php:69 msgid "Unsandbox" -msgstr "" +msgstr "Treu de l'entorn de proves" #: lib/unsandboxform.php:80 -#, fuzzy msgid "Unsandbox this user" -msgstr "Desbloquejar aquest usuari" +msgstr "Treu l'usuari de l'entorn de proves" #: lib/unsilenceform.php:67 msgid "Unsilence" @@ -6750,16 +7099,11 @@ msgstr "Dessilencia l'usuari" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" -msgstr "Deixar d'estar subscrit des d'aquest usuari" +msgstr "Cancel·la la subscripció d'aquest usuari" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" -msgstr "Cancel·lar subscripció" - -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "L'usuari no té perfil." +msgstr "Cancel·la la subscripció" #: lib/userprofile.php:117 msgid "Edit Avatar" @@ -6771,7 +7115,7 @@ msgstr "Accions de l'usuari" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "S'està eliminant l'usuari..." #: lib/userprofile.php:263 msgid "Edit profile settings" @@ -6783,7 +7127,7 @@ msgstr "Edita" #: lib/userprofile.php:287 msgid "Send a direct message to this user" -msgstr "Enviar un missatge directe a aquest usuari" +msgstr "Envia un missatge directe a aquest usuari" #: lib/userprofile.php:288 msgid "Message" @@ -6794,73 +7138,70 @@ msgid "Moderate" msgstr "Modera" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "Perfil de l'usuari" +msgstr "Rol de l'usuari" #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" -msgstr "Administradors" +msgstr "Administrador" #: lib/userprofile.php:367 -#, fuzzy msgctxt "role" msgid "Moderator" -msgstr "Modera" +msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "fa un any" @@ -6873,8 +7214,3 @@ msgstr "%s no és un color vàlid!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s no és un color vàlid! Feu servir 3 o 6 caràcters hexadecimals." - -#: lib/xmppmanager.php:403 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Missatge massa llarg - màxim és 140 caràcters, tu has enviat %d" diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po index b4efa94331..e5baa2ff50 100644 --- a/locale/cs/LC_MESSAGES/statusnet.po +++ b/locale/cs/LC_MESSAGES/statusnet.po @@ -1,7 +1,7 @@ # Translation of StatusNet to Czech # +# Author@translatewiki.net: Koo6 # Author@translatewiki.net: Kuvaly -# Author@translatewiki.net: McDutchie # -- # This file is distributed under the same license as the StatusNet package. # @@ -9,12 +9,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:21+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-09 18:08:09+0000\n" "Language-Team: Czech\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: cs\n" "X-Message-Group: out-statusnet\n" @@ -22,61 +22,55 @@ 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 "PÅ™ijmout" +msgstr "Přístup" #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -msgstr "Nastavení" +msgstr "Nastavení přístupu" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 -#, fuzzy msgid "Registration" -msgstr "Registrovat" +msgstr "Registrace" #. TRANS: Checkbox instructions for admin setting "Private" #: actions/accessadminpanel.php:165 msgid "Prohibit anonymous users (not logged in) from viewing site?" -msgstr "" +msgstr "Zakázat anonymním (nepÅ™ihlášeným) uživatelům prohlížet stránky" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" -msgstr "Soukromí" +msgstr "Soukromé" #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." -msgstr "" +msgstr "Registrace jen na pozvánku" #. TRANS: Checkbox label for configuring site as invite only. #: actions/accessadminpanel.php:176 msgid "Invite only" -msgstr "" +msgstr "Pouze na pozvánku" #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." -msgstr "" +msgstr "Znemožnit nové registrace" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Žádný takový uživatel." +msgstr "UzavÅ™ené" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 -#, fuzzy msgid "Save access settings" -msgstr "Nastavení" +msgstr "uložit nastavení přístupu" #. TRANS: Button label to save e-mail preferences. #. TRANS: Button label to save IM preferences. @@ -85,169 +79,174 @@ msgstr "Nastavení" #: 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 "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í." +msgstr "Tady žádná taková stránka není." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 msgid "No such user." -msgstr "Žádný takový uživatel." +msgstr "Uživatel neexistuje." #. 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 a přátelé" +msgstr "%1$s a přátelé, strana %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:114 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 -#, fuzzy, php-format +#: actions/all.php:107 +#, php-format msgid "Feed for friends of %s (RSS 1.0)" -msgstr "Feed přítel uživatele: %s" +msgstr "Feed pro přátele uživatele: %s (RSS 1.0)" #. 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 "Feed přítel uživatele: %s" +msgstr "Feed pro přátele uživatele: %s (RSS 2.0)" #. 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 "Feed přítel uživatele: %s" +msgstr "Feed pro přátele uživatele: %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 "" +"Tohle je Äasová osa pro uživatele %s a jeho(její) přátele ale nikdo zatím " +"nic nenapsal." -#: 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 "" +"Zkuste zaÄít sledovat víc lidí, [pÅ™ipojte se ke skupinÄ›](%%action.groups%%) " +"nebo napiÅ¡te nÄ›co o sobÄ›." #. 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 "" +"Můžete se pokusit uživatele [%1$s postrÄit](../%2$s) z jejich profilu nebo " +"[jim nÄ›co poslat](%%%%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 "" +"ProÄ si [nezaregistrovat úÄet](%%%%action.register%%%%) a pak poÅ¡Å¥ouchnout " +"uživatele %s nebo jim poslat hlášku." #. TRANS: H1 text -#: actions/all.php:178 -#, fuzzy +#: actions/all.php:182 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:120 -#: 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 "Novinky od uživatele %1$s a přátel 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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 -#, fuzzy +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." -msgstr "Potvrzující kód nebyl nalezen" +msgstr " API metoda nebyla nalezena." -#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 "" +msgstr "Tato metoda vyžaduje 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 "" +"Je nutné zadat parametr s názvem 'device' s jednou z hodnot: sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." -msgstr "Nelze aktualizovat uživatele" +msgstr "NepodaÅ™ilo se aktualizovat nastavení uživatele" #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 @@ -260,13 +259,12 @@ msgid "User has no profile." msgstr "Uživatel nemá profil." #: actions/apiaccountupdateprofile.php:147 -#, fuzzy msgid "Could not save profile." -msgstr "Nelze uložit profil" +msgstr "NepodaÅ™ilo se uložit profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -275,6 +273,8 @@ msgid "" "The server was unable to handle that much POST data (%s bytes) due to its " "current configuration." msgstr "" +"Server nebyl schopen zpracovat tolik POST dat (%s bytů) vzhledem k jeho " +"aktuální konfiguraci." #: actions/apiaccountupdateprofilebackgroundimage.php:136 #: actions/apiaccountupdateprofilebackgroundimage.php:146 @@ -284,280 +284,278 @@ msgstr "" #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 msgid "Unable to save your design settings." -msgstr "" +msgstr "Nelze uložit vaÅ¡e nastavení designu." #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy msgid "Could not update your design." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nelze uložit design." #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Nelze aktualizovat uživatele" +msgstr "Nemůžete zablokovat sami sebe!" #: actions/apiblockcreate.php:126 msgid "Block user failed." -msgstr "" +msgstr "Zablokovat uživatele se nezdaÅ™ilo." #: actions/apiblockdestroy.php:114 msgid "Unblock user failed." -msgstr "" +msgstr "Odblokovat uživatele se nezdaÅ™ilo." #: actions/apidirectmessage.php:89 #, php-format msgid "Direct messages from %s" -msgstr "" +msgstr "Přímá zpráva od %s" #: actions/apidirectmessage.php:93 #, php-format msgid "All the direct messages sent from %s" -msgstr "" +msgstr "VÅ¡echny přímé zprávy od uživatele %s" #: actions/apidirectmessage.php:101 #, php-format msgid "Direct messages to %s" -msgstr "" +msgstr "Přímé zprávy uživateli %s" #: actions/apidirectmessage.php:105 #, php-format msgid "All the direct messages sent to %s" -msgstr "" +msgstr "VÅ¡echny přímé zprávy odeslané uživateli %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" -msgstr "" +msgstr "zpráva bez textu!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "Je to příliÅ¡ dlouhé. Maximální sdÄ›lení délka je 140 znaků" +msgstr "Je to příliÅ¡ dlouhé. Maximální délka sdÄ›lení je %d znaků." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." -msgstr "" +msgstr "Příjemce nebyl nalezen." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." -msgstr "" +msgstr "Nelze odesílat zprávy uživatelům, kteří nejsou vaÅ¡imi přáteli." -#: 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 "" +msgstr "Hláška s tímto ID nenalezena." -#: actions/apifavoritecreate.php:119 -#, fuzzy +#: actions/apifavoritecreate.php:120 msgid "This status is already a favorite." -msgstr "Toto je již vaÅ¡e Jabber" +msgstr "Tuto hlášku již máte v oblíbených." -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." -msgstr "" +msgstr "Nelze vytvoÅ™it oblíbenou položku." -#: actions/apifavoritedestroy.php:122 +#: actions/apifavoritedestroy.php:123 msgid "That status is not a favorite." -msgstr "" +msgstr "Tato hláška není oblíbená." -#: 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 "" +msgid "Could not follow user: profile not found." +msgstr "Nemůžu zaÄít sledovat uživatele, profil nenalezen." #: actions/apifriendshipscreate.php:118 #, php-format msgid "Could not follow user: %s is already on your list." -msgstr "" +msgstr "Nemohu zaÄít sledovat uživatele: %s je již na vaÅ¡em seznamu." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "Nelze pÅ™esmÄ›rovat na server: %s" +msgstr "Nemohu pÅ™estat sledovat uživatele, uživatel nebyl nalezen." #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nemůžete pÅ™estat sledovat sami sebe." -#: 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 "Dva platné ID nebo screen_names musí být dodány." #: actions/apifriendshipsshow.php:134 -#, fuzzy msgid "Could not determine source user." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nelze urÄit zdrojového uživatele." #: actions/apifriendshipsshow.php:142 -#, fuzzy msgid "Could not find target user." -msgstr "Nelze aktualizovat uživatele" +msgstr "NepodaÅ™ilo se najít cílového 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" +msgstr "PÅ™ezdívka může obsahovat pouze malá písmena a Äísla a žádné mezery." -#: 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" +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." +msgstr "Domovská stránka není platná 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 -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/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/newgroup.php:148 actions/profilesettings.php:232 #: actions/register.php:227 -msgid "Location is too long (max 255 chars)." -msgstr "UmístÄ›ní příliÅ¡ dlouhé (maximálnÄ› 255 znaků)" +msgid "Full name is too long (max 255 chars)." +msgstr "Celé jméno je moc dlouhé (maximální délka je 255 znaků)." -#: actions/apigroupcreate.php:245 actions/editgroup.php:219 +#: actions/apigroupcreate.php:216 actions/editapplication.php:190 +#: actions/newapplication.php:172 +#, php-format +msgid "Description is too long (max %d chars)." +msgstr "Popis je příliÅ¡ dlouhý (maximálnÄ› %d znaků)." + +#: 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 "UmístÄ›ní je příliÅ¡ dlouhé (maximálnÄ› 255 znaků)." + +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 #: actions/newgroup.php:159 #, php-format msgid "Too many aliases! Maximum %d." -msgstr "" +msgstr "PříliÅ¡ mnoho aliasů! MaximálnÄ› %d." -#: actions/apigroupcreate.php:266 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Neplatná adresa '%s'" +msgstr "Neplatný alias: \"%s\"." -#: actions/apigroupcreate.php:275 actions/editgroup.php:232 +#: actions/apigroupcreate.php:276 actions/editgroup.php:232 #: actions/newgroup.php:172 -#, fuzzy, php-format +#, php-format msgid "Alias \"%s\" already in use. Try another one." -msgstr "PÅ™ezdívku již nÄ›kdo používá. Zkuste jinou" +msgstr "Alias \"%s\" se již používá. Zkuste jiný." -#: 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 "Alias nemůže být stejný jako pÅ™ezdívka." -#: 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 "Žádný požadavek nebyl nalezen!" +msgstr "Skupina nebyla nalezena." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 -#, fuzzy +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." -msgstr "Již jste pÅ™ihlášen" +msgstr "Jste již Älenem této skupiny." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." -msgstr "" +msgstr "Z této skupiny jste byl zablokován adminem." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "Nelze pÅ™esmÄ›rovat na server: %s" +msgstr "Nemohu pÅ™ipojit uživatele %1$s do skupiny %2$s." -#: actions/apigroupleave.php:114 -#, fuzzy +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste Älenem této skupiny." -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "Nelze vytvoÅ™it OpenID z: %s" +msgstr "Nelze odebrat uživatele %1$S ze skupiny %2$s." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 -#, fuzzy, php-format +#: actions/apigrouplist.php:98 +#, php-format msgid "%s's groups" -msgstr "Profil" +msgstr "skupiny uživatele %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 "Neodeslal jste nám profil" +msgstr "skupiny na %1$s, kterych je %2$s Älenem." #. 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 "" +msgstr "skupiny uživatele %s" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" -msgstr "" +msgstr "skupiny na %s" + +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Nahrání se nezdaÅ™ilo." #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." -msgstr "" +msgstr "nebyl dodán parametr oauth_token" #: actions/apioauthauthorize.php:106 -#, fuzzy msgid "Invalid token." -msgstr "Neplatná velikost" +msgstr "Neplatný 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 #: lib/designsettings.php:294 msgid "There was a problem with your session token. Try again, please." -msgstr "" +msgstr "Nastal problém s vaším session tokenem. Zkuste to znovu, prosím." #: actions/apioauthauthorize.php:135 -#, fuzzy msgid "Invalid nickname / password!" -msgstr "Neplatné jméno nebo heslo" +msgstr "Neplatné jméno nebo heslo!" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "Chyba nastavení uživatele" +msgstr "Chyba databáze pÅ™i mazání uživatele aplikace OAuth." #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "Chyba v DB pÅ™i vkládání odpovÄ›di: %s" +msgstr "Chyba databáze pÅ™i vkládání uživatele aplikace OAuth." #: actions/apioauthauthorize.php:214 #, php-format @@ -565,11 +563,12 @@ msgid "" "The request token %s has been authorized. Please exchange it for an access " "token." msgstr "" +"Token požadavku %s byl autorizován. Prosím vyměňte jej za přístupový token." #: actions/apioauthauthorize.php:227 #, php-format msgid "The request token %s has been denied and revoked." -msgstr "" +msgstr "Token žádosti %s byl odepÅ™en a zruÅ¡en." #. 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. @@ -581,15 +580,15 @@ msgstr "" #: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44 #: actions/smssettings.php:277 lib/designsettings.php:304 msgid "Unexpected form submission." -msgstr "NeÄekaná forma submission." +msgstr "NeÄekaný požadavek." #: actions/apioauthauthorize.php:259 msgid "An application would like to connect to your account" -msgstr "" +msgstr "Aplikace se chce pÅ™ipojit k vaÅ¡emu úÄtu" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "Povolit nebo zamítnout přístup" #: actions/apioauthauthorize.php:292 #, php-format @@ -598,15 +597,17 @@ 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 "" +"Aplikace <strong>%1$s</strong> od <strong>%2$s</strong> by chtÄ›la \"<strong>%" +"3$s</strong>\" data vaÅ¡eho úÄtu na %4$s. MÄ›li byste povolit přístup k datům " +"vaÅ¡eho úÄtu na %4$s jen tÅ™etím stranám kterým věříte.." #. 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:463 msgid "Account" -msgstr "O nás" +msgstr "ÚÄet" -#: 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,131 +615,134 @@ 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" #: actions/apioauthauthorize.php:328 -#, fuzzy msgid "Deny" -msgstr "Vzhled" +msgstr "Odepřít" #: actions/apioauthauthorize.php:334 msgid "Allow" -msgstr "" +msgstr "Povolit" #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." -msgstr "" +msgstr "Povolit nebo zakázat přístup k vaÅ¡emu úÄtu." -#: actions/apistatusesdestroy.php:107 +#: actions/apistatusesdestroy.php:112 msgid "This method requires a POST or DELETE." -msgstr "" +msgstr "Tato metoda vyžaduje POST nebo DELETE." -#: actions/apistatusesdestroy.php:130 +#: actions/apistatusesdestroy.php:135 msgid "You may not delete another user's status." -msgstr "" +msgstr "Nesmíte odstraňovat status jiného uživatele." #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." msgstr "Žádné takové oznámení." -#: actions/apistatusesretweet.php:83 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." -msgstr "Nemůžete se registrovat, pokud nesouhlasíte s licencí." +msgstr "Nelze opakovat své vlastní oznámení." -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." -msgstr "Odstranit toto oznámení" +msgstr "Již jste zopakoval toto oznámení." -#: actions/apistatusesshow.php:138 -#, fuzzy +#: actions/apistatusesshow.php:139 msgid "Status deleted." -msgstr "Obrázek nahrán" +msgstr "Status smazán." -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." -msgstr "" +msgstr "Nenalezen status s tímto ID." -#: actions/apistatusesupdate.php:161 actions/newnotice.php:155 +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "Klient musí poskytnout 'status' parametr s hodnotou." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:157 #: lib/mailhandler.php:60 -#, fuzzy, php-format +#, 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ů" +msgstr "Je to příliÅ¡ dlouhé. Maximální délka sdÄ›lení je %d znaků" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 -#, fuzzy +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." -msgstr "Žádný požadavek nebyl nalezen!" +msgstr "Nebyl nalezen." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." -msgstr "" +msgstr "Maximální délka notice je %d znaků vÄetnÄ› pÅ™iložené URL." -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." -msgstr "Nepodporovaný formát obrázku." +msgstr "Nepodporovaný formát." -#: actions/apitimelinefavorites.php:109 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:110 +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%1 statusů na %2" +msgstr "%1$s / Oblíbené z %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 "Mikroblog od %s" +msgstr "Updaty na %1$s od %2$s / %2$s." -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1 statusů na %2" +msgstr "%1$s / Updaty zmiňující %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 "" +msgstr "updaty na %1$s odpovídající na updaty od %2$s / %3$s." -#: actions/apitimelinepublic.php:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" -msgstr "" +msgstr "VeÅ™ejná Äasová osa %s" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "" +msgstr "VÅ¡echny updaty na %s!" #: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format +#, php-format msgid "Repeated to %s" -msgstr "OdpovÄ›di na %s" +msgstr "Opakováno uživatelem %s" #: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format +#, php-format msgid "Repeats of %s" -msgstr "OdpovÄ›di na %s" +msgstr "Opakování %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 "" +msgstr "Noticy taglé %s" -#: 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 "Mikroblog od %s" +msgstr "Aktualizace oznaÄené %1$s na %2$s!" + +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "API metoda ve výstavbÄ›." #: actions/attachment.php:73 -#, fuzzy msgid "No such attachment." -msgstr "Žádný takový dokument." +msgstr "Žádná taková příloha." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -759,38 +763,36 @@ msgstr "Neplatná velikost" #: actions/avatarsettings.php:67 actions/showgroup.php:230 #: lib/accountsettingsaction.php:118 msgid "Avatar" -msgstr "Obrázek" +msgstr "Avatar" #: actions/avatarsettings.php:78 #, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "" +msgstr "Můžete nahrát váš osobní avatar. Maximální velikost souboru je %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 -#, fuzzy msgid "User without matching profile." -msgstr "Uživatel nemá profil." +msgstr "Uživatel bez odpovídajícího profilu." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 -#, fuzzy msgid "Avatar settings" -msgstr "Nastavení" +msgstr "Nastavené Profilu" #: actions/avatarsettings.php:127 actions/avatarsettings.php:205 #: actions/grouplogo.php:202 actions/grouplogo.php:262 msgid "Original" -msgstr "" +msgstr "Originál" #: actions/avatarsettings.php:142 actions/avatarsettings.php:217 #: actions/grouplogo.php:213 actions/grouplogo.php:274 msgid "Preview" -msgstr "" +msgstr "Náhled" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Odstranit" @@ -800,20 +802,19 @@ msgstr "Upload" #: actions/avatarsettings.php:231 actions/grouplogo.php:289 msgid "Crop" -msgstr "" +msgstr "Oříznout" #: actions/avatarsettings.php:305 -#, fuzzy msgid "No file uploaded." -msgstr "ČásteÄné náhrání." +msgstr "žádný soubor nebyl nahrán." #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" -msgstr "" +msgstr "Vyberte Ätvercovou plochu obrázku, která bude váš avatar" #: actions/avatarsettings.php:347 actions/grouplogo.php:380 msgid "Lost our file data." -msgstr "" +msgstr "Ztratili jsme údaje souboru." #: actions/avatarsettings.php:370 msgid "Avatar updated." @@ -828,64 +829,64 @@ msgid "Avatar deleted." msgstr "Avatar smazán." #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Již jste pÅ™ihlášen" +msgstr "Jabber ID již patří jinému uživateli" -#: 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 "Žádný takový uživatel." +msgstr "Zablokovat tohoto uživatele" -#: 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 "" +"Jste si jisti, že chcete zablokovat tohoto uživatele? Poté bude odhlášen od " +"vás, nebude se k vám moci v budoucnu pÅ™ihlásit, a nebudete upozorňováni na " +"jakékoli @-odpovÄ›di od nich." #. 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 -#, fuzzy msgctxt "BUTTON" msgid "No" -msgstr "Ne" +msgstr "Poznámka" #. 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 "Žádný takový uživatel." +msgstr "Zablokovat tohoto uživatele" #. 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 msgctxt "BUTTON" 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 "" +msgstr "NepodaÅ™ilo se uložit blokování." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -895,45 +896,42 @@ msgstr "" #: 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 -#, fuzzy +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." -msgstr "Žádné takové oznámení." +msgstr "Žádný takový uživatel." #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "Uživatel nemá profil." +msgstr "profily blokovány skupinou %s" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s a přátelé" +msgstr "blokované profily %1$s, strana %2$d" #: actions/blockedfromgroup.php:115 msgid "A list of the users blocked from joining this group." -msgstr "" +msgstr "Seznam uživatelů blokovaných od pÅ™ipojení k této skupinÄ›." #: actions/blockedfromgroup.php:288 -#, fuzzy msgid "Unblock user from group" -msgstr "Žádný takový uživatel." +msgstr "Odblokovat uživatele ze skupiny" #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" -msgstr "" +msgstr "Odblokovat" #: actions/blockedfromgroup.php:320 lib/unblockform.php:80 -#, fuzzy msgid "Unblock this user" -msgstr "Žádný takový uživatel." +msgstr "Odblokovat tohoto uživatele" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "OdpovÄ›di na %s" +msgstr "Poslat na %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -949,9 +947,9 @@ msgstr "Tento potvrzující kód vám nepatří!" #. 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 "Neznámý typ adresy %s" +msgstr "Neznámý typ adresy %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -980,9 +978,8 @@ msgid "Couldn't delete email confirmation." msgstr "Nelze smazat potvrzení emailu" #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "PotvrÄ adresu" +msgstr "Heslo znovu" #: actions/confirmaddress.php:161 #, php-format @@ -990,9 +987,8 @@ msgid "The address \"%s\" has been confirmed for your account." msgstr "Adresa \"%s\" byla potvrzena pro váš úÄet" #: actions/conversation.php:99 -#, fuzzy msgid "Conversation" -msgstr "UmístÄ›ní" +msgstr "Konverzace" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 @@ -1000,31 +996,27 @@ msgid "Notices" msgstr "SdÄ›lení" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "Nelze aktualizovat uživatele" +msgstr "Pro vymazání aplikace musíte být pÅ™ihlášen." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "SdÄ›lení nemá profil" +msgstr "Aplikace nebyla nalezena." #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 -#, fuzzy msgid "You are not the owner of this application." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste vlastníkem této aplikace." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." -msgstr "" +msgstr "Nastal problém s vaším session tokenem." #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "Žádné takové oznámení." +msgstr "Odstranit aplikaci" #: actions/deleteapplication.php:149 msgid "" @@ -1032,18 +1024,18 @@ msgid "" "about the application from the database, including all existing user " "connections." msgstr "" +"Jste si jisti, že chcete smazat tuto aplikaci? To vymaže vÅ¡echny data o " +"aplikace z databáze, vÄetnÄ› vÅ¡ech existujících uživatelských spojení." #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 -#, fuzzy msgid "Do not delete this application" -msgstr "Žádné takové oznámení." +msgstr "Neodstraňujte tuto aplikaci" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -msgstr "Odstranit toto oznámení" +msgstr "Odstranit tuto aplikaci" #. 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 @@ -1051,10 +1043,10 @@ 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" +msgstr "Nejste pÅ™ihlášen(a)." #: actions/deletenotice.php:71 msgid "Can't delete this notice." @@ -1065,45 +1057,46 @@ msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" +"Chystáte se trvale odstranit oznámení. Jakmile se tak stane, nemůže se " +"odestát." #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" -msgstr "" +msgstr "Odstranit oznámení" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" -msgstr "" +msgstr "Jste si jisti, že chcete smazat tohoto oznámení?" #. TRANS: Submit button title for 'No' when deleting a notice. #: actions/deletenotice.php:151 -#, fuzzy msgid "Do not delete this notice" -msgstr "Žádné takové oznámení." +msgstr "Neodstraňujte toto oznámení" #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Odstranit toto oznámení" #: actions/deleteuser.php:67 -#, fuzzy msgid "You cannot delete users." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nemůžete odstranit uživatele." #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "Můžete použít místní odebírání." +msgstr "Můžete smazat pouze místní uživatele." #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" -msgstr "" +msgstr "Smazat uživatele" #: 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 "" +"Jste si jisti, že chcete smazat tohoto uživatele? To odstraní vÅ¡echny údaje " +"o uživateli z databáze, bez zálohy." #. TRANS: Submit button title for 'Yes' when deleting a user. #: actions/deleteuser.php:163 lib/deleteuserform.php:77 @@ -1119,111 +1112,122 @@ msgstr "Vzhled" #: actions/designadminpanel.php:74 msgid "Design settings for this StatusNet site." -msgstr "" +msgstr "Nastavení vzhledu pro tuto stránku StatusNet." -#: actions/designadminpanel.php:276 -#, fuzzy +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." -msgstr "Neplatná velikost" +msgstr "Neplatná URL loga." -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "Téma není k dispozici: %s." -#: actions/designadminpanel.php:376 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "ZmÄ›nit heslo" +msgstr "Změňte logo" -#: actions/designadminpanel.php:381 -#, fuzzy +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "Nové sdÄ›lení" +msgstr "Logo stránek" -#: actions/designadminpanel.php:388 -#, fuzzy +#: actions/designadminpanel.php:443 msgid "Change theme" -msgstr "ZmÄ›nit" +msgstr "ZmÄ›nit téma" -#: actions/designadminpanel.php:405 -#, fuzzy +#: actions/designadminpanel.php:460 msgid "Site theme" -msgstr "Nové sdÄ›lení" +msgstr "Téma stránek" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:461 msgid "Theme for the site." -msgstr "" +msgstr "Téma stránek" -#: actions/designadminpanel.php:418 lib/designsettings.php:101 +#: actions/designadminpanel.php:467 +msgid "Custom theme" +msgstr "Vlastní téma" + +#: actions/designadminpanel.php:471 +msgid "You can upload a custom StatusNet theme as a .ZIP archive." +msgstr "Můžete nahrát vlastní StatusNet téma jako .ZIP archiv." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" -msgstr "" +msgstr "ZmÄ›nit obrázek na pozadí" -#: 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 -#, fuzzy, php-format +#: actions/designadminpanel.php:496 +#, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." -msgstr "Je to příliÅ¡ dlouhé. Maximální sdÄ›lení délka je 140 znaků" +msgstr "" +"Můžete nahrát obrázek na pozadí stránek. Maximální velikost souboru 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 "" +msgstr "zap." #. 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 "" +msgstr "vyp." -#: actions/designadminpanel.php:477 lib/designsettings.php:156 +#: actions/designadminpanel.php:545 lib/designsettings.php:156 msgid "Turn background image on or off." -msgstr "" +msgstr "ZapnÄ›te nebů vypnÄ›te obrázek na pozadí." -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" -msgstr "" +msgstr "Dlaždicovat obrázek na pozadí" -#: 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 -#, fuzzy +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" -msgstr "Hledat" +msgstr "BoÄní panel" -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" -msgstr "" +msgstr "Text" -#: 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 "Rozšířené" + +#: actions/designadminpanel.php:655 +msgid "Custom CSS" +msgstr "Vlastní CSS" + +#: actions/designadminpanel.php:676 lib/designsettings.php:247 msgid "Use defaults" -msgstr "" +msgstr "Použít výchozí" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" -msgstr "" +msgstr "Obnovit výchozí vzhledy" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" -msgstr "" +msgstr "Reset zpÄ›t do výchozího" #. 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,133 +1237,124 @@ 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 "" +msgstr "Uložit vzhled" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" -msgstr "" +msgstr "Toto oznámení není oblíbeno!" #: actions/disfavor.php:94 msgid "Add to favorites" msgstr "PÅ™idat do oblíbených" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Žádný takový dokument." +msgstr "Žádný dokument \"%s\" neexistuje" #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "SdÄ›lení nemá profil" +msgstr "Upravit aplikaci" #: actions/editapplication.php:66 msgid "You must be logged in to edit an application." -msgstr "" +msgstr "Pro úpravy aplikace musíte být pÅ™ihlášen." #: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 #: actions/showapplication.php:87 -#, fuzzy msgid "No such application." -msgstr "Žádné takové oznámení." +msgstr "Aplikace neexistuje." #: actions/editapplication.php:161 msgid "Use this form to edit your application." -msgstr "" +msgstr "Pomocí tohoto formuláře můžete upravovat svou aplikaci." #: actions/editapplication.php:177 actions/newapplication.php:159 msgid "Name is required." -msgstr "" +msgstr "Název je povinný." #: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy msgid "Name is too long (max 255 chars)." -msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)" +msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)." #: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy msgid "Name already in use. Try another one." -msgstr "PÅ™ezdívku již nÄ›kdo používá. Zkuste jinou" +msgstr "Název již nÄ›kdo používá. Zkuste jinou" #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "OdbÄ›ry" +msgstr "Popis je tÅ™eba." #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "URL zdroje je příliÅ¡ dlouhý." #: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy msgid "Source URL is not valid." -msgstr "Stránka není platnou URL." +msgstr "URL zdroje není platný." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "Organizace je nutná." #: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy msgid "Organization is too long (max 255 chars)." -msgstr "UmístÄ›ní příliÅ¡ dlouhé (maximálnÄ› 255 znaků)" +msgstr "Organizace je příliÅ¡ dlouhá (max 255 znaků)." #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" +msgstr "Homepage organizace je nutná." #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." -msgstr "" +msgstr "Callback je příliÅ¡ dlouhý." #: actions/editapplication.php:225 actions/newapplication.php:215 msgid "Callback URL is not valid." -msgstr "" +msgstr "Callback URL není platný." #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nelze aktualizovat aplikaci." #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" -msgstr "Upravit %s skupinu" +msgstr "Upravit skupinu %s" #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 msgid "You must be logged in to create a group." -msgstr "" +msgstr "K vytvoÅ™ení skupiny musíte být pÅ™ihlášen." #: 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 "" +msgstr "K úpravÄ› skupiny musíte být admin." #: actions/editgroup.php:158 msgid "Use this form to edit the group." -msgstr "" +msgstr "Použijte tento formulář k úpravám skupiny." #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "Text je příliÅ¡ dlouhý (maximální délka je 140 zanků)" +msgstr "Popis je příliÅ¡ dlouhý (maximálnÄ› %d znaků)." #: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "Neplatná adresa '%s'" +msgstr "Neplatný alias: \"%s\"" #: actions/editgroup.php:258 -#, fuzzy msgid "Could not update group." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nelze aktualizovat skupinu." -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." -msgstr "Nelze uložin informace o obrázku" +msgstr "Nelze vytvoÅ™it aliasy." #: actions/editgroup.php:280 msgid "Options saved." @@ -1367,28 +1362,26 @@ msgstr "Nastavení uloženo." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Nastavení E-mailu" +msgstr "Nastavení e-mailu" #. 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 "" +msgstr "Spravovat posílání e-mailů z %%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 "Potvrzení emailové adresy" +msgstr "E-mailová adresa" #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." -msgstr "" +msgstr "Aktuální potvrzená e-mailová adresa." #. 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. @@ -1398,7 +1391,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 "Odstranit" @@ -1408,6 +1400,8 @@ msgid "" "Awaiting confirmation on this address. Check your inbox (and spam box!) for " "a message with further instructions." msgstr "" +"ÄŒakám na potvrzení této adresy. Podívejte se v příchozí poÅ¡tÄ› (a spamu!) po " +"e-mailu s dalšími instrukcemi." #. TRANS: Button label to cancel an e-mail address confirmation procedure. #. TRANS: Button label to cancel an IM address confirmation procedure. @@ -1415,7 +1409,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 "ZruÅ¡it" @@ -1423,14 +1416,13 @@ msgstr "ZruÅ¡it" #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" -msgstr "" +msgstr "E-mailová adresa, ve stylu \"UzivatelskeJmeno@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 -#, fuzzy msgctxt "BUTTON" msgid "Add" msgstr "PÅ™idat" @@ -1439,87 +1431,84 @@ msgstr "PÅ™idat" #. TRANS: Form legend for incoming SMS settings form. #: actions/emailsettings.php:147 actions/smssettings.php:171 msgid "Incoming email" -msgstr "" +msgstr "Příchozí 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 "" +msgstr "PoÅ¡lete e-mail na tuto adresu pro poslání nového oznámení." #. 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 "VytvoÅ™ení nové e-mailové adresy pro zasílání, ruší starou." #. 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 "Nový" +msgstr "Nová" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Nastavení" +msgstr "Nastavení e-mailu" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 msgid "Send me notices of new subscriptions through email." -msgstr "" +msgstr "PoÅ¡lete mi oznámení o nových pÅ™ihlášeních e-mailem." #. 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 "PoÅ¡lete mi e-mail, když nÄ›kdo pÅ™idá moje oznámení mezi oblíbené." #. 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 "PoÅ¡lete mi e-mail, když mi nÄ›kdo poÅ¡le soukromou zprávu." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:199 msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "" +msgstr "PoÅ¡lete mi e-mail, když mi nÄ›kdo poÅ¡le \"@-odpovÄ›Ä\"." #. 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 "Povolit přátelům mÄ› poÅ¡Å¥ouchnout a poslat mi email." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:212 msgid "I want to post notices by email." -msgstr "" +msgstr "Chci posílat oznámení e-mailem." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 msgid "Publish a MicroID for my email address." -msgstr "" +msgstr "Publikovat MicroID pro mou e-mailovou adresu." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Nastavení uloženo" +msgstr "Email nastavení uloženo." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." -msgstr "" +msgstr "Chybí e-mailová adresa." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 msgid "Cannot normalize that email address" -msgstr "" +msgstr "NepodaÅ™ilo se normalizovat (kanonizovat) e-mailovou adresu." #. 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." @@ -1527,12 +1516,12 @@ msgstr "Není platnou mailovou adresou." #. TRANS: Message given saving e-mail address that is already set. #: actions/emailsettings.php:370 msgid "That is already your email address." -msgstr "" +msgstr "To je již vaší e-mailovou adresou." #. 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 "Tato e-mailová adresa již patří jinému uživateli." #. TRANS: Server error thrown on database error adding e-mail confirmation code. #. TRANS: Server error thrown on database error adding IM confirmation code. @@ -1540,7 +1529,7 @@ msgstr "" #: actions/emailsettings.php:391 actions/imsettings.php:348 #: actions/smssettings.php:373 msgid "Couldn't insert confirmation code." -msgstr "Nelze vložit potvrzující kód" +msgstr "Nelze vložit potvrzující kód." #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1548,6 +1537,9 @@ 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 "" +"Potvrzovací kód byl zaslán na e-mailovou adresu, kterou jste pÅ™idali. " +"Zkontrolujte vaÅ¡e e-mailové schránky (a spam box!) pro kód a instrukce, jak " +"jej použít." #. TRANS: Message given canceling e-mail address confirmation that is not pending. #. TRANS: Message given canceling IM address confirmation that is not pending. @@ -1555,85 +1547,85 @@ msgstr "" #: actions/emailsettings.php:419 actions/imsettings.php:383 #: actions/smssettings.php:408 msgid "No pending confirmation to cancel." -msgstr "NeÄeká žádné potvrzení na zruÅ¡ení." +msgstr "Žádné potvrzení ke zruÅ¡ení." #. 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 "Toto je Å¡patná IM adresa" +msgstr "Toto je Å¡patná e-mailová adresa." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "PotvrÄ zruÅ¡ení" +msgstr "Potvrzení e-mailu zruÅ¡eno." #. 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 "To není vaÅ¡e e-mailová adresa." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Adresa byla odstranÄ›na" +msgstr "E-mailová adresa byla odstranÄ›na." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." -msgstr "" +msgstr "Nemáte příchozí e-mailovou adresu." #. 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 "" +msgstr "Nelze aktualizovat záznam uživatele." #. 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 "Příchozí e-mailová adresa odstranÄ›na." #. 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 "PÅ™idána nová příchozí e-mailová adresa." #: actions/favor.php:79 msgid "This notice is already a favorite!" -msgstr "" +msgstr "Tuto hlášku již máte v oblíbených." #: actions/favor.php:92 lib/disfavorform.php:140 msgid "Disfavor favorite" -msgstr "" +msgstr "Znemilostnit oblíbenou" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 -#, fuzzy msgid "Popular notices" -msgstr "Žádné takové oznámení." +msgstr "Populární oznámení" #: actions/favorited.php:67 -#, fuzzy, php-format +#, php-format msgid "Popular notices, page %d" -msgstr "Žádné takové oznámení." +msgstr "Populární oznámení, strana %d" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." -msgstr "" +msgstr "PrávÄ› teÄ nejpopulárnÄ›jší oznámení na stránkách." #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." msgstr "" +"Oblíbená oznámení se objeví na této stránce, ale nikdo zatím oblíbené jeÅ¡tÄ› " +"nemá." #: 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 "" +"BuÄte první, kdo pÅ™idá oznámení k oblíbeným kliknutím na tlaÄítko Oblíbené " +"vedle kteréhokoli oznámení které se vám líbí." #: actions/favorited.php:156 #, php-format @@ -1641,59 +1633,56 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" +"ProÄ ne [zaregistrovat úÄet](%%action.register%%) a být první, kdo pÅ™idá " +"oznámení k oblíbeným!" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "" +msgstr "oblíbená oznámení uživatele %s" #: actions/favoritesrss.php:115 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "Mikroblog od %s" +msgstr "Aktualizace oblíbené uživatelem %1$s na %2$s!" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" -msgstr "" +msgstr "Nejlepší uživatelé" #: actions/featured.php:71 #, php-format msgid "Featured users, page %d" -msgstr "" +msgstr "Nejlepší uživatelé, strana %d" #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" -msgstr "" +msgstr "VýbÄ›r nÄ›kterých skvÄ›lých uživatelů na %s" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Žádné oznámení" +msgstr "Chybí ID oznámení." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Žádné oznámení" +msgstr "Žádné takové oznámení." #: actions/file.php:42 -#, fuzzy msgid "No attachments." -msgstr "Žádný takový dokument." +msgstr "Bez příloh." #: actions/file.php:51 -#, fuzzy msgid "No uploaded attachments." -msgstr "Žádný takový dokument." +msgstr "Žádné nahrané přílohy." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" -msgstr "NeÄekaná odpovÄ›Ä." +msgstr "NeÄekaná odpovÄ›Ä!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." msgstr "Úživatel, kterému nasloucháte neexistuje." @@ -1703,92 +1692,80 @@ msgstr "Můžete použít místní odebírání." #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." -msgstr "" +msgstr "Uživatel vaÅ¡e odebírání zablokoval." #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Neautorizován." +msgstr "Nejste autorizován." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Nelze konvertovat Å™etÄ›zec požadavku na přístupový Å™etÄ›zec." +msgstr "Nemohu pÅ™evést žádost token na přístup token." #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Neznámá verze OMB protokolu." +msgstr "Vzdálená služba používá neznámou verzi protokolu OMB." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Chyba pÅ™i aktualizaci vzdáleného profilu" +msgstr "Chyba pÅ™i aktualizaci vzdáleného profilu." #: actions/getfile.php:79 -#, fuzzy msgid "No such file." -msgstr "Žádné takové oznámení." +msgstr "Žádný takový soubor." #: actions/getfile.php:83 -#, fuzzy msgid "Cannot read file." -msgstr "Žádné takové oznámení." +msgstr "Nelze pÅ™eÄíst soubor." #: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy msgid "Invalid role." -msgstr "Neplatná velikost" +msgstr "Neplatná role." #: actions/grantrole.php:66 actions/revokerole.php:66 msgid "This role is reserved and cannot be set." -msgstr "" +msgstr "Tato role je vyhrazena a nelze jí nastavit." #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "Neodeslal jste nám profil" +msgstr "Nemůžete dávat uživatelské role na této stránce." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "Uživatel nemá profil." +msgstr "Uživatel již tuto roli má." #: 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 "Nebyl vybrán 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 "" +msgstr "Neexistuje profil s tímto ID." #: actions/groupblock.php:81 actions/groupunblock.php:81 #: actions/makeadmin.php:81 msgid "No group specified." -msgstr "" +msgstr "Nebyla vybrána skupina." #: actions/groupblock.php:91 msgid "Only an admin can block group members." -msgstr "" +msgstr "Pouze admin může blokovat Äleny skupiny." #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "Uživatel nemá profil." +msgstr "Uživatel již je zablokován ze skupiny." #: actions/groupblock.php:100 -#, fuzzy msgid "User is not a member of group." -msgstr "Neodeslal jste nám profil" +msgstr "Uživatel není Älenem skupiny." #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "Žádný takový uživatel." +msgstr "Zablokovat uživatele ze skupiny" #: actions/groupblock.php:160 #, php-format @@ -1797,52 +1774,51 @@ msgid "" "will be removed from the group, unable to post, and unable to subscribe to " "the group in the future." msgstr "" +"Jste si jisti, že chcete blokovat uživatele \"%1$s\" ze skupiny \"%2$S\"? " +"Bude odstranÄ›n ze skupiny a nebude moci pÅ™ispívat nebo se pÅ™ihlásit k odbÄ›ru." #. 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 "Nelze pÅ™esmÄ›rovat na server: %s" +msgstr "Neblokujte tohoto uživatele z této skupiny" #. 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 "Žádný takový uživatel." +msgstr "Blokovat tohoto uživatele z této skupiny" #: actions/groupblock.php:206 msgid "Database error blocking user from group." -msgstr "" +msgstr "Chyba databáze pÅ™i blokování uživatele ze skupiny." #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "Žádné id" +msgstr "Chybí ID." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." -msgstr "" +msgstr "K úpravÄ› skupiny musíte být pÅ™ihlášen." #: actions/groupdesignsettings.php:144 msgid "Group design" -msgstr "" +msgstr "Vzhled skupiny" #: actions/groupdesignsettings.php:155 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" +"PÅ™izpůsobit vzhled skupiny obrázkem na pozadí a barevnou paletou vaÅ¡eho " +"výbÄ›ru." #: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 -#, fuzzy msgid "Couldn't update your design." -msgstr "Nelze aktualizovat uživatele" +msgstr "Nelze uložit vzhled." #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy msgid "Design preferences saved." -msgstr "Nastavení uloženo" +msgstr "Nastavení vzhledu uloženo." #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" @@ -1853,69 +1829,69 @@ msgstr "Logo skupiny" msgid "" "You can upload a logo image for your group. The maximum file size is %s." msgstr "" +"Můžete nahrát obrázek loga pro vaÅ¡i skupinu. Maximální velikost souboru je %" +"s." #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." -msgstr "" +msgstr "Vyberte Ätvercovou oblast obrázku, která bude vaÅ¡e logo." #: actions/grouplogo.php:399 -#, fuzzy msgid "Logo updated." -msgstr "Obrázek nahrán" +msgstr "Logo aktualizováno." #: actions/grouplogo.php:401 -#, fuzzy msgid "Failed updating logo." -msgstr "Nahrávání obrázku selhalo." +msgstr "NepodaÅ™ilo se aktualizovat logo." #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format msgid "%s group members" -msgstr "" +msgstr "Älenové skupiny %s" #: actions/groupmembers.php:103 #, php-format msgid "%1$s group members, page %2$d" -msgstr "" +msgstr "Älenové skupiny %1$s, strana %2$d" #: actions/groupmembers.php:118 msgid "A list of the users in this group." -msgstr "" +msgstr "Seznam uživatelů v této skupinÄ›." #: actions/groupmembers.php:182 lib/groupnav.php:107 msgid "Admin" -msgstr "" +msgstr "Admin" #: actions/groupmembers.php:392 lib/blockform.php:69 msgid "Block" -msgstr "" +msgstr "Blokovat" #: actions/groupmembers.php:487 msgid "Make user an admin of the group" -msgstr "" +msgstr "UÄelat uživatele adminem skupiny" #: actions/groupmembers.php:519 msgid "Make Admin" -msgstr "" +msgstr "UdÄ›lat adminem" #: actions/groupmembers.php:519 msgid "Make this user an admin" -msgstr "" +msgstr "UdÄ›lat tohoto uživatele adminem" #. 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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" -msgstr "" +msgstr "Äasová osa %s" #. 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 "Mikroblog od %s" +msgstr "Novinky od Älenů %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 @@ -1925,7 +1901,7 @@ msgstr "Skupiny" #: actions/groups.php:64 #, php-format msgid "Groups, page %d" -msgstr "" +msgstr "Skupiny, strana %d" #: actions/groups.php:90 #, php-format @@ -1936,29 +1912,31 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" +"skupiny na %%%%Site.name%%%% vám umožní najít a mluvit s lidmi podobných " +"zájmů. Po pÅ™ipojení skupiny můžete posílat zprávy vÅ¡em ostatním Älenům " +"pomocí syntaxe \"!NazevSkupiny\". Nevidíte skupinu která by se vám líbila? " +"Zkuste ji [vyhledat](%%%%action.groupsearch%%%%) nebo [založit!](%%%%action." +"newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "VytvoÅ™it nový úÄet" +msgstr "VytvoÅ™it novou skupinu" #: actions/groupsearch.php:52 -#, fuzzy, php-format +#, php-format msgid "" "Search for groups on %%site.name%% by their name, location, or description. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"Hledej uživatele na %%site.name%% podle jejich jména, místa, nebo zájmů. " -"Minimální délka musí být alespoň 3 znaky" +"Hledejte skupiny na %%site.name%% podle jejich názvu, místa, nebo popisu. " +"OddÄ›lte slova mezerami; musí být nejménÄ› 3 znaky dlouhá." #: actions/groupsearch.php:58 -#, fuzzy msgid "Group search" -msgstr "Hledání lidí" +msgstr "Hledání skupin" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." msgstr "Žádné výsledky." @@ -1968,6 +1946,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"Pokud nemůžete najít skupinu, kterou hledáte, můžete ji [vytvoÅ™it](%%action." +"newgroup%%) sami." #: actions/groupsearch.php:85 #, php-format @@ -1975,26 +1955,25 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"ProÄ si ne[zaregistrovat úÄet](%% action.register%%) a ne[vytvoÅ™it skupinu](%" +"%action.newgroup%%) sami!" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "Pouze admin může odblokovat Äleny skupiny." #: actions/groupunblock.php:95 -#, fuzzy msgid "User is not blocked from group." -msgstr "Uživatel nemá profil." +msgstr "Uživatel není blokován ze skupiny." #: actions/groupunblock.php:128 actions/unblock.php:86 -#, fuzzy msgid "Error removing the block." -msgstr "Chyba pÅ™i ukládaní uživatele" +msgstr "Chyba pÅ™i odstraňování bloku." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "IM nastavení" +msgstr "Nastavení IM" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2005,25 +1984,23 @@ msgid "" "You can send and receive notices through Jabber/GTalk [instant messages](%%" "doc.im%%). Configure your address and settings below." msgstr "" -"Můžete odesílat nebo pÅ™ijámat sdÄ›lení pomocí Jabber/GTalk [zpráv](%%doc.im%" -"%).Zadejte svou adresu níže." +"Můžete odesílat nebo pÅ™ijámat oznámení pomocí Jabber/GTalk [zpráv](%%doc.im%" +"%) .Zadejte svou adresu a nastavení níže." #. 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 "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "IM není k dispozici." #. 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 adresa" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." -msgstr "Potvrzené Jabber/GTalk adresy" +msgstr "Aktuální potvrzená Jabber / GTalk adresa." #. TRANS: Form note in IM settings form. #. TRANS: %s is the IM address set for the site. @@ -2033,8 +2010,8 @@ 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 "" -"ÄŒakám na potvrzení této adresy. Zkontrolujte zprávy na vaÅ¡em Jabber/GTalk " -"úÄtu. (PÅ™idal jste si %s do vaÅ¡ich kontaktů?)" +"ÄŒakám na potvrzení této adresy. Hledejte zprávu s dalšími instrukcemi na " +"vaÅ¡em Jabber/GTalk úÄtu. (PÅ™idal jste si %s do vaÅ¡ich kontaktů?)" #. TRANS: IM address input field instructions in IM settings form. #. TRANS: %s is the IM address set for the site. @@ -2044,14 +2021,14 @@ 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 nebo GTalk adresy, například \"jmeno@example.org\". Neprve se " -"ujistÄ›te že jste pÅ™idal %s do vaÅ¡eho seznamu kontaktů." +"Jabber nebo GTalk adresa, například \"jmeno@example.org\". Neprve se " +"ujistÄ›te že jste pÅ™idal %s do vaÅ¡eho seznamu kontaktů ve vaÅ¡em IM klientu " +"nebo na GTalku." #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Nastavení" +msgstr "Nastavení IM" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2067,11 +2044,12 @@ msgstr "Poslat oznámení, když se zmÄ›ní můj Jabber/Gtalk status." #: actions/imsettings.php:172 msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to." msgstr "" +"PoÅ¡lete mi odpovÄ›di pÅ™es Jabber / GTalk od lidí, ke kterým nejsem pÅ™ihlášen." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:179 msgid "Publish a MicroID for my Jabber/GTalk address." -msgstr "" +msgstr "Publikovat MicroID pro mou Jabber / GTalk adresu." #. TRANS: Confirmation message for successful IM preferences save. #: actions/imsettings.php:287 actions/othersettings.php:180 @@ -2081,12 +2059,12 @@ msgstr "Nastavení uloženo" #. TRANS: Message given saving IM address without having provided one. #: actions/imsettings.php:309 msgid "No Jabber ID." -msgstr "Žádné Jabber ID." +msgstr "Chybí Jabber ID." #. TRANS: Message given saving IM address that cannot be normalised. #: actions/imsettings.php:317 msgid "Cannot normalize that Jabber ID" -msgstr "Nelze normalizovat JabberID" +msgstr "Nelze normalizovat tento JabberID" #. TRANS: Message given saving IM address that not valid. #: actions/imsettings.php:322 @@ -2096,7 +2074,7 @@ msgstr "Není platným Jabber ID" #. TRANS: Message given saving IM address that is already set. #: actions/imsettings.php:326 msgid "That is already your Jabber ID." -msgstr "Toto je již vaÅ¡e Jabber" +msgstr "Toto je již vaÅ¡e Jabber ID" #. TRANS: Message given saving IM address that is already set for another user. #: actions/imsettings.php:330 @@ -2111,8 +2089,8 @@ msgid "" "A confirmation code was sent to the IM address you added. You must approve %" "s for sending messages to you." msgstr "" -"Ověřující kód byl poslán na vloženou IM adresu. Musíte prokázat %s pro " -"posílání zpráv." +"Ověřující kód byl poslán na vloženou IM adresu. Musíte povolit aby vám %s " +"posílal zprávy." #. TRANS: Message given canceling IM address confirmation for the wrong IM address. #: actions/imsettings.php:388 @@ -2121,114 +2099,114 @@ msgstr "Toto je Å¡patná IM adresa" #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Nelze smazat potvrzení emailu" +msgstr "Nelze smazat potvrzení IM" #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "PotvrÄ zruÅ¡ení" +msgstr "IM potvrzení zruÅ¡eno." #. 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 "Toto není váš Jabber" +msgstr "Toto není váš Jabber ID" #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Adresa byla odstranÄ›na" +msgstr "IM adresa byla odstranÄ›na." #: actions/inbox.php:59 #, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "" +msgstr "PoÅ¡ta doruÄená pro %1$s - strana %2$d" #: actions/inbox.php:62 #, php-format msgid "Inbox for %s" -msgstr "" +msgstr "DoruÄená poÅ¡ta pro %s" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." -msgstr "" +msgstr "To je váš inbox, obsahuje seznam příchozích soukromých zpráv." #: actions/invite.php:39 msgid "Invites have been disabled." -msgstr "" +msgstr "Pozvánky byly zakázány." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "Nelze aktualizovat uživatele" +msgstr "Musíte být pÅ™ihlášen aby jste mohl zvát další uživatele k použití %s." #: actions/invite.php:72 #, php-format msgid "Invalid email address: %s" -msgstr "" +msgstr "Neplatný e-mail: %s" #: actions/invite.php:110 msgid "Invitation(s) sent" -msgstr "" +msgstr "Pozvánka(y) zaslána(y)" #: actions/invite.php:112 msgid "Invite new users" -msgstr "" +msgstr "Pozvat nové uživatele" #: actions/invite.php:128 msgid "You are already subscribed to these users:" -msgstr "" +msgstr "Jste již pÅ™ihlášeni k tÄ›mto uživatelům:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" -msgstr "" +msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" "These people are already users and you were automatically subscribed to them:" -msgstr "" +msgstr "Tito lidé jsou již uživatelé a jste k nim automaticky pÅ™ihlášen:" #: actions/invite.php:144 msgid "Invitation(s) sent to the following people:" -msgstr "" +msgstr "Pozvánka (y) zaslány následujícím osobám:" #: 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 "" +"Budete upozornÄ›ni, když vaÅ¡i pozvaní lidé pozvání pÅ™ijmout a zaregistrují se " +"na tomto webu. Díky za zvetÅ¡ení komunity!" #: actions/invite.php:162 msgid "" "Use this form to invite your friends and colleagues to use this service." msgstr "" +"Použijte tento formulář k pozvání svých přátel a kolegů k používání této " +"služby." #: actions/invite.php:187 msgid "Email addresses" -msgstr "" +msgstr "E-mailové adresy" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" -msgstr "" +msgstr "Adresy přátel k pozvání (jedna na řádek)" #: actions/invite.php:192 msgid "Personal message" -msgstr "" +msgstr "Osobní zpráva" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." -msgstr "" +msgstr "VolitelnÄ› pÅ™idat osobní zprávu." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" msgstr "Odeslat" @@ -2237,7 +2215,7 @@ msgstr "Odeslat" #: actions/invite.php:228 #, php-format msgid "%1$s has invited you to join them on %2$s" -msgstr "" +msgstr "%1$s vás pozval, abyste se k nim pÅ™ipojil(a) na %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 @@ -2270,133 +2248,153 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" +" %1$s vás pozval, abyste se k nim pÅ™ipojil(a) na %2$s (%3$s). \n" +"\n" +"%2$s je mikro-blogovací služba, která vám umožní být v kontaktu s lidmi, " +"které znáte, a s lidmi, kteří vás zajímají. \n" +"\n" +"Můžete také sdílet novinky o sobÄ›, své myÅ¡lenky, nebo svůj online život s " +"lidmi, kteří o vás vÄ›dí. Je to také skvÄ›lé pro setkávání s novými lidmi, " +"kteří sdílejí vaÅ¡e zájmy. \n" +"\n" +"%1$s Å™ekl: \n" +"\n" +"%4$s \n" +"\n" +"Můžete vidÄ›t profil uživatele %1$s na %2$s zde: \n" +"\n" +"%5$s \n" +"\n" +"Pokud si chcete službu vyzkouÅ¡et, kliknÄ›te na odkaz níže k pÅ™ijmutí " +"pozvání. \n" +"\n" +"%6$s \n" +"\n" +"Pokud ne, můžete tuto zprávu ignorovat. DÄ›kujeme za vaÅ¡i trpÄ›livost a Äas. \n" +"\n" +"S pozdravem, %2$s \n" #: actions/joingroup.php:60 msgid "You must be logged in to join a group." -msgstr "" +msgstr "Musíte být pÅ™ihlášen pro vstup do skupiny." #: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy msgid "No nickname or ID." -msgstr "Žádná pÅ™ezdívka." +msgstr "Žádná pÅ™ezdívka nebo 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" -msgstr "" +msgstr "%1$s se pÅ™ipojil(a) ke skupinÄ› %2$s" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." -msgstr "" +msgstr "Musíte být pÅ™ihlášen abyste mohl opustit skupinu." -#: actions/leavegroup.php:100 lib/command.php:373 -#, fuzzy +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste Älenem této skupiny." -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%1 statusů na %2" +msgstr "%1$s opustil(a) skupinu %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 "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 -#, fuzzy +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." -msgstr "Neautorizován." +msgstr "Chyba pÅ™i nastavení uživatele. PravdÄ›podobnÄ› nejste autorizová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 "" +msgstr "PÅ™ihlásit se na stránky" -#: 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á " +msgstr "" +"PříštÄ› automaticky pÅ™ihlásit; ne pro poÄítaÄe, které používá více lidí! " -#: 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 -#, fuzzy, php-format -msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." msgstr "" -"PÅ™ihlaste se pomocí vaší prezdívky a hesla. Zatím nejste zaregistrován? " -"[Registrovat](%%action.register%%) nový úÄet, nebo vyzkouÅ¡ejte [OpenID](%%" -"action.openidlogin%%)." +"Z bezpeÄnostních důvodů, prosím zadejte znovu své jméno a heslo než budete " +"mÄ›nit svá nastavení." + +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "PÅ™ihlásit se pomocí svého uživatelského jména a hesla." + +#: actions/login.php:295 +#, php-format +msgid "" +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "" +"Zatím nemáte uživatelské jméno? [Registrovat](%%action.register%%) nový úÄet." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." -msgstr "" +msgstr "Pouze admin může udÄ›lat adminem dalšího uživatele." #: actions/makeadmin.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "Uživatel nemá profil." +msgstr "%1$s je již admin pro skupinu \"%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 "Nelze vytvoÅ™it OpenID z: %s" +msgstr "Nelze získat záznam o Älenství %1$s ve skupinÄ› %2$s." #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "Uživatel nemá profil." +msgstr "Nelze uÄinit %1$s adminem skupiny %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Žádné výsledky." +msgstr "V souÄasné dobÄ› žádný stav." #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "Žádné takové oznámení." +msgstr "Nová aplikace" #: actions/newapplication.php:64 msgid "You must be logged in to register an application." -msgstr "" +msgstr "Musíte být pÅ™ihlášen k registraci aplikace." #: actions/newapplication.php:143 msgid "Use this form to register a new application." -msgstr "" +msgstr "Použijte tento formulář pro registraci nové aplikace." #: actions/newapplication.php:176 msgid "Source URL is required." -msgstr "" +msgstr "Zdrojové URL je nutné." #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "Nelze uložin informace o obrázku" +msgstr "Nelze vytvoÅ™it aplikaci." #: actions/newgroup.php:53 msgid "New group" @@ -2404,51 +2402,57 @@ msgstr "Nová skupina" #: actions/newgroup.php:110 msgid "Use this form to create a new group." -msgstr "" +msgstr "Použijte tento formulář k vytvoÅ™ení nové skupiny." #: actions/newmessage.php:71 actions/newmessage.php:231 msgid "New message" -msgstr "" +msgstr "Nová zpráva" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "" +"Nemůžete odesílat zprávy tomuto uživateli. (musíte být vzájemnÄ› prihlášení)" -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" -msgstr "Žádný obsah!" +msgstr "Chybí obsah!" #: actions/newmessage.php:158 msgid "No recipient specified." -msgstr "" +msgstr "Neuveden příjemce." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." -msgstr "" +msgstr "Neposílejte si zprávu, potichu si ji pro sebe Å™eknÄ›te." #: actions/newmessage.php:181 msgid "Message sent" -msgstr "" +msgstr "Zpráva odeslána" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." -msgstr "" +msgstr "Přímá zpráva pro %s odeslána." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" -msgstr "" +msgstr "Ajax Chyba" #: actions/newnotice.php:69 msgid "New notice" msgstr "Nové sdÄ›lení" -#: actions/newnotice.php:217 -#, fuzzy +#: actions/newnotice.php:227 msgid "Notice posted" -msgstr "SdÄ›lení" +msgstr "SdÄ›lení posláno" #: actions/noticesearch.php:68 #, php-format @@ -2456,17 +2460,17 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"Hledej sdÄ›lení na %%site.name%% podle obsahu. Minimální délka musí být " -"alespoň 3 znaky" +"Hledej sdÄ›lení na %%site.name%% podle obsahu. OddÄ›lte výrazy mezerami; musí " +"mít alespoň 3 znaky" #: actions/noticesearch.php:78 msgid "Text search" -msgstr "Vyhledávání textu" +msgstr "Text vyhledávání" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr " Hledej \"%s\" ve Streamu" +msgstr "Výsledky hledání \"%1$s\" na %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2474,6 +2478,8 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"BuÄte první kdo [příspÄ›je](%%%%action.newnotice%%%%?status_textarea=%s) na " +"toto téma!" #: actions/noticesearch.php:124 #, php-format @@ -2481,195 +2487,190 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" +"ProÄ si ne [zaregistrovat úÄet](%%%%action.register%%%%) a být první, kdo " +"[příspÄ›je](%%%%action.newnotice %%%%?status_textarea =%s) na toto téma!" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "Mikroblog od %s" +msgstr "Hlášky s \"%s\"" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "VÅ¡echny položky obsahující \"%s\"" +msgstr "Aktualizace odpovídající hledanému výrazu \"%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 "" +"Tento uživatel neumožňuje poÅ¡Å¥ouchnutí nebo nepotvrdil(a) nebo nenestavil(a) " +"svůj e-mail." #: actions/nudge.php:94 msgid "Nudge sent" -msgstr "" +msgstr "PoÅ¡Å¥ouchnutí posláno" #: actions/nudge.php:97 msgid "Nudge sent!" -msgstr "" +msgstr "PoÅ¡Å¥ouchnutí posláno!" #: actions/oauthappssettings.php:59 msgid "You must be logged in to list your applications." -msgstr "" +msgstr "Musíte být pÅ™ihlášen k vypsání seznamu aplikací." #: actions/oauthappssettings.php:74 msgid "OAuth applications" -msgstr "" +msgstr "OAuth aplikace" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Aplikace které jste se zaregistrovali" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "JeÅ¡tÄ› jste nezaregistrovali žádné aplikace." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" +msgstr "Propojené aplikace" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "TÄ›mto aplikacím jste povolili přístup ke svému ůÄtu." #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste uživatel této aplikace." #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." -msgstr "" +msgstr "Nelze zruÅ¡it přístup aplikace %s." #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "Žádným aplikacím jste nepovolili používat váš úÄet." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " -msgstr "" +msgstr "Vývojáři mohou upravovat nastavení registrace jejich aplikací " -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "SdÄ›lení nemá profil" +msgstr "Uživatel 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" +msgstr "status %1 na %2" #. 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 "PÅ™ipojit" +msgstr "Typ obsahu %s není podporován." #. 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 "Only %s URLs over plain HTTP please." #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:183 actions/oembed.php:202 lib/apiaction.php:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." -msgstr "" +msgstr "Nepodporovaný formát dat." #: actions/opensearch.php:64 msgid "People Search" -msgstr "" +msgstr "Hledání lidí" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "" +msgstr "Hledání oznámení" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Nastavení" +msgstr "Další nastavení" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "" +msgstr "Správa různých dalších možností." #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr " (Služba zdarma)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "Zkrácovat URL s" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "" +msgstr "Služba automatického zkracování, kterou použít." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "Nastavené Profilu" +msgstr "Zobrazit vzhledy profilu" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "" +msgstr "Zobrazit nebo skrýt vzhledy profilu." #: actions/othersettings.php:153 -#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "UmístÄ›ní příliÅ¡ dlouhé (maximálnÄ› 255 znaků)" +msgstr "adresa služby zkracování URL je příliÅ¡ dlouhá (max. 50 znaků)." #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "Nové sdÄ›lení" +msgstr "Nebylo zadáno uživatelské ID." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "Nové sdÄ›lení" +msgstr "PÅ™ihlaÅ¡ovací token nezadán." #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Nebylo vráceno žádné URL profilu od servu." +msgstr "Nepožadován pÅ™ihlaÅ¡ovací token." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "Neplatný obsah sdÄ›lení" +msgstr "Neplatný pÅ™ihlaÅ¡ovací token." #: actions/otp.php:104 msgid "Login token expired." -msgstr "" +msgstr "PÅ™ihlaÅ¡ovací token vyprÅ¡el." #: actions/outbox.php:58 #, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "" +msgstr "Odeslaná poÅ¡ta uživatele %1$s - strana %2$d" #: actions/outbox.php:61 #, php-format msgid "Outbox for %s" -msgstr "" +msgstr "Odeslané uživatele %s" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." msgstr "" +"Toto je váš outbox, který obsahuje seznam soukromých zpráv které jste " +"odeslali." #: actions/passwordsettings.php:58 msgid "Change password" msgstr "ZmÄ›nit heslo" #: actions/passwordsettings.php:69 -#, fuzzy msgid "Change your password." -msgstr "ZmÄ›nit heslo" +msgstr "Změňte své heslo." #: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy msgid "Password change" -msgstr "Heslo uloženo" +msgstr "ZmÄ›na hesla" #: actions/passwordsettings.php:104 msgid "Old password" @@ -2684,9 +2685,9 @@ 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" +msgstr "Potvrdit" #: actions/passwordsettings.php:113 actions/recoverpassword.php:240 msgid "Same as password above" @@ -2696,21 +2697,21 @@ 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 "" +msgstr "Heslo musí být alespoň 6 znaků dlouhé" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "Hesla nesouhlasí" #: actions/passwordsettings.php:165 msgid "Incorrect old password" -msgstr "Neplatné heslo" +msgstr "Nesprávné staré heslo" #: actions/passwordsettings.php:181 msgid "Error saving user; invalid." -msgstr "Chyba pÅ™i ukládaní uživatele; neplatný" +msgstr "Chyba pÅ™i ukládaní uživatele; neplatný." #: actions/passwordsettings.php:186 actions/recoverpassword.php:381 msgid "Can't save new password." @@ -2721,167 +2722,157 @@ 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 "" +msgstr "Cesty" #: actions/pathsadminpanel.php:70 msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "Nastavení cest a serveru pro tuto stránku StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "Adresář témat není Äitelný: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "Nelze zapisovat do adresáře avatarů: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "Nelze zapisovat do adresáře pozadí: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "Locales adresář není Äitelný: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "Neplatný SSL server. Maximální délka je 255 znaků." #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" -msgstr "" +msgstr "Stránky" #: actions/pathsadminpanel.php:238 -#, fuzzy msgid "Server" -msgstr "Obnovit" +msgstr "Server" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "" +msgstr "Hostname (jméno) serveru stránek." #: actions/pathsadminpanel.php:242 msgid "Path" -msgstr "" +msgstr "Cesta" #: actions/pathsadminpanel.php:242 -#, fuzzy msgid "Site path" -msgstr "Nové sdÄ›lení" +msgstr "Cesta ke stránkám (za jménem serveru)" #: actions/pathsadminpanel.php:246 msgid "Path to locales" -msgstr "" +msgstr "Cesta k locales" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" -msgstr "" +msgstr "Cesta k adresáři locales" #: actions/pathsadminpanel.php:250 msgid "Fancy URLs" -msgstr "" +msgstr "Hezké URL" #: actions/pathsadminpanel.php:252 msgid "Use fancy (more readable and memorable) URLs?" -msgstr "" +msgstr "Použijte Fancy (více Äitelné a zapamatovatelné) URL?" #: actions/pathsadminpanel.php:259 msgid "Theme" -msgstr "" +msgstr "Téma" #: actions/pathsadminpanel.php:264 msgid "Theme server" -msgstr "" +msgstr "server s tématy" #: actions/pathsadminpanel.php:268 msgid "Theme path" -msgstr "" +msgstr "cesta k tématu" #: actions/pathsadminpanel.php:272 msgid "Theme directory" -msgstr "" +msgstr "adresář tématu" #: actions/pathsadminpanel.php:279 -#, fuzzy msgid "Avatars" -msgstr "Obrázek" +msgstr "Avatary" #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "Nastavení" +msgstr "Server s avatary" #: actions/pathsadminpanel.php:288 -#, fuzzy msgid "Avatar path" -msgstr "Obrázek nahrán" +msgstr "Cesta k avatarům" #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "Obrázek nahrán" +msgstr "Adresář avatarů" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" -msgstr "" +msgstr "Pozadí" #: actions/pathsadminpanel.php:305 msgid "Background server" -msgstr "" +msgstr "Server s pozadím" #: actions/pathsadminpanel.php:309 msgid "Background path" -msgstr "" +msgstr "Cesta k pozadí" #: actions/pathsadminpanel.php:313 msgid "Background directory" -msgstr "" +msgstr "Adresář pozadí" #: actions/pathsadminpanel.php:320 msgid "SSL" -msgstr "" +msgstr "SSL" #: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy msgid "Never" -msgstr "Obnovit" +msgstr "Nikdy" #: actions/pathsadminpanel.php:324 -#, fuzzy msgid "Sometimes" -msgstr "SdÄ›lení" +msgstr "NÄ›kdy" #: actions/pathsadminpanel.php:325 msgid "Always" -msgstr "" +msgstr "Vždy" #: actions/pathsadminpanel.php:329 msgid "Use SSL" -msgstr "" +msgstr "Použít SSL" #: actions/pathsadminpanel.php:330 msgid "When to use SSL" -msgstr "" +msgstr "Kdy použít SSL" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Obnovit" +msgstr "SSL server" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" -msgstr "" +msgstr "Server kam smÄ›rovat SSL žádosti" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Nové sdÄ›lení" +msgstr "Uložit cesty" #: actions/peoplesearch.php:52 #, php-format @@ -2897,24 +2888,23 @@ msgid "People search" msgstr "Hledání lidí" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Není platnou mailovou adresou." +msgstr "Není platný ÄlovÄ›kotag: %s." #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Mikroblog od %s" +msgstr "Uživatelé kteří se sami otagovali %1$s - strana %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Neplatný obsah sdÄ›lení" +msgstr "Neplatná velikost" #: actions/postnotice.php:101 #, php-format msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." -msgstr "" +msgstr "Licence hlášky ‘%1$s’ není kompatibilní s licencí webu ‘%2$s’." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2928,68 +2918,67 @@ msgstr "" "více dozvÄ›dÄ›t." #: actions/profilesettings.php:99 -#, fuzzy msgid "Profile information" -msgstr "Neznámý profil" +msgstr "Nastavené Profilu" #: actions/profilesettings.php:108 lib/groupeditform.php:154 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 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "PopiÅ¡ sebe a své zájmy ve 140 znacích" +msgstr "PopiÅ¡te sebe a své zájmy" -#: 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." #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" -msgstr "" +msgstr "SdÄ›lit mou aktuální polohu pÅ™i posílání hlášek" #: 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 "" +msgstr "Tagy" #: actions/profilesettings.php:147 msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" -msgstr "" +msgstr "Otagujte se (písmena, Äísla, -, . a _), oddÄ›lené Äárkami nebo mezerami" #: actions/profilesettings.php:151 msgid "Language" @@ -2997,56 +2986,56 @@ msgstr "Jazyk" #: actions/profilesettings.php:152 msgid "Preferred language" -msgstr "" +msgstr "Preferovaný jazyk" #: actions/profilesettings.php:161 msgid "Timezone" -msgstr "" +msgstr "ÄŒasové pásmo" #: actions/profilesettings.php:162 msgid "What timezone are you normally in?" -msgstr "" +msgstr "V jaké Äasové zónÄ› se obyÄejnÄ› nacházíte?" #: actions/profilesettings.php:167 msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" +"Automaticky se pÅ™ihlásit k odbÄ›ru toho kdo se pÅ™ihlásil ke mnÄ› (nejlepší pro " +"ne-lidi)" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "Text je příliÅ¡ dlouhý (maximální délka je 140 zanků)" +msgstr "UmístÄ›ní příliÅ¡ dlouhé (maximálnÄ› %d znaků)" #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." -msgstr "" +msgstr "ÄŒasové pásmo není vybráno." #: actions/profilesettings.php:241 msgid "Language is too long (max 50 chars)." -msgstr "" +msgstr "Jazyk je příliÅ¡ dlouhý (max. 50 znaků)." #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "Neplatná adresa '%s'" +msgstr "Neplatná velikost" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." -msgstr "" +msgstr "Nelze aktualizovat nastavení automatického pÅ™ihlaÅ¡ování." #: actions/profilesettings.php:363 -#, fuzzy msgid "Couldn't save location prefs." -msgstr "Nelze uložit profil" +msgstr "Nelze uložit nastavení umístÄ›ní." #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Nelze uložit profil" #: actions/profilesettings.php:383 -#, fuzzy msgid "Couldn't save tags." -msgstr "Nelze uložit profil" +msgstr "Nelze uložit tagy." #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 @@ -3056,35 +3045,32 @@ msgstr "Nastavení uloženo" #: actions/public.php:83 #, php-format msgid "Beyond the page limit (%s)." -msgstr "" +msgstr "PÅ™es limit stránky (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." -msgstr "" +msgstr "NepodaÅ™ilo se získat veÅ™ejný proud." #: actions/public.php:130 -#, fuzzy, php-format +#, php-format msgid "Public timeline, page %d" -msgstr "VeÅ™ejné zprávy" +msgstr "VeÅ™ejná Äasová osa, strana %d" #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" msgstr "VeÅ™ejné zprávy" #: actions/public.php:160 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "VeÅ™ejný Stream Feed" +msgstr "VeÅ™ejný Stream Feed (RSS 1.0)" #: actions/public.php:164 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "VeÅ™ejný Stream Feed" +msgstr "VeÅ™ejný Stream Feed (RSS 2.0)" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "VeÅ™ejný Stream Feed" +msgstr "VeÅ™ejný Stream Feed (Atom)" #: actions/public.php:188 #, php-format @@ -3092,16 +3078,18 @@ msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"Tohle je veÅ™ejná Äasová osa %%site.name%%, ale nikdo zatím nic nenapsal." #: actions/public.php:191 msgid "Be the first to post!" -msgstr "" +msgstr "PoÅ¡lete nÄ›co jako první!" #: actions/public.php:195 #, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to post!" msgstr "" +"ProÄ ne [zaregistrovat úÄet](%%action.register%%) a poslat nÄ›co jako první!" #: actions/public.php:242 #, php-format @@ -3111,6 +3099,10 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" +"Toto je %%site.name%%, [mikro-blogovací](http://drbz.cz/i/napoveda-" +"faq#mikroblog) služba založená na Free Software nástroji [StatusNet](http://" +"status.net/). [Zaregistrujte se](%%action.register%%) a sdílejte hlášky o " +"sobÄ› s přáteli, rodinou a kolegy! ([ÄŒtÄ›te více](%%doc.help%%))" #: actions/public.php:247 #, php-format @@ -3119,25 +3111,27 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" +"Toto je %%site.name%%, [mikro-blogovací](http://drbz.cz/i/napoveda-" +"faq#mikroblog) služba založená na Free Software nástroji [StatusNet](http://" +"status.net/)." #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "VeÅ™ejný Stream Feed" +msgstr "VeÅ™ejný tag cloud" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "" +msgstr "Poslední nejpopulárnÄ›jší znaÄky na %s " #: actions/publictagcloud.php:69 #, php-format msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." -msgstr "" +msgstr "Nikdo jeÅ¡tÄ› neposlal oznámení s [tagem](%%doc.tags%%)." #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "" +msgstr "PoÅ¡lete nÄ›co jako první!" #: actions/publictagcloud.php:75 #, php-format @@ -3145,10 +3139,11 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"ProÄ ne [zaregistrovat úÄet](%%action.register%%) a poslat nÄ›co jako první!" #: actions/publictagcloud.php:134 msgid "Tag cloud" -msgstr "" +msgstr "Tag cloud" #: actions/recoverpassword.php:36 msgid "You are already logged in!" @@ -3164,7 +3159,7 @@ msgstr "Není obnovujícím kódem" #: actions/recoverpassword.php:73 msgid "Recovery code for unknown user." -msgstr "Obnovyt kód pro neznámého uživatele" +msgstr "Obnovovací kód pro neznámého uživatele." #: actions/recoverpassword.php:86 msgid "Error with confirmation code." @@ -3176,25 +3171,27 @@ msgstr "Tento potvrzující kód je příliÅ¡ starý Prosím zkuste znovu" #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." -msgstr "" +msgstr "Nemohu aktualizovat uživatele s potvrzenou e-mailovou adresu." #: 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 "" +"Pokud jste zapomnÄ›li nebo ztratili své heslo, můžeme zaslat nové na e-" +"mailovou adresu, kterou jste uložili ve vaÅ¡em úÄtu." #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " -msgstr "" +msgstr "Byl jste identifikován. Vložte níže nové heslo. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "" +msgstr "Obnovení hesla" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "" +msgstr "Zadej pÅ™ezdívku nebo emailovou adresu" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3210,19 +3207,19 @@ msgstr "Resetovat heslo" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "Obnovit" +msgstr "Obnovit heslo" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" -msgstr "Žádost o obnovu hesla" +msgstr "Zažádáno o obnovu hesla" #: actions/recoverpassword.php:213 msgid "Unknown action" -msgstr "" +msgstr "Neznámá akce" #: actions/recoverpassword.php:236 msgid "6 or more characters, and don't forget it!" -msgstr "6 a více znaků, a nezapomeňte" +msgstr "6 a více znaků, a nezapomeňte ho!" #: actions/recoverpassword.php:243 msgid "Reset" @@ -3234,7 +3231,7 @@ msgstr "Zadej pÅ™ezdívku nebo emailovou adresu" #: actions/recoverpassword.php:282 msgid "No user with that email address or username." -msgstr "" +msgstr "Žádný uživatel s touto e-mailovou adresu nebo uživatelským jménem." #: actions/recoverpassword.php:299 msgid "No registered email address for that user." @@ -3249,7 +3246,7 @@ msgid "" "Instructions for recovering your password have been sent to the email " "address registered to your account." msgstr "" -"Návod jak obnovit heslo byl odeslát na vaší emailovou adresu zaregistrovanou " +"Návod jak obnovit heslo byl odeslán na vaší emailovou adresu zaregistrovanou " "u vaÅ¡eho úÄtu." #: actions/recoverpassword.php:357 @@ -3264,7 +3261,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" @@ -3272,81 +3269,104 @@ 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 "" +msgstr "Litujeme, jen pozvaní se mohou registrovat." -#: actions/register.php:92 -#, fuzzy +#: actions/register.php:99 msgid "Sorry, invalid invitation code." -msgstr "Chyba v ověřovacím kódu" +msgstr "Litujeme, neplatný kód pozvánky." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" msgstr "Registrace úspěšná" -#: actions/register.php:114 actions/register.php:507 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 "" +msgstr "Registrace není povolena." -#: 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 "" +"Pomocí tohoto formuláře můžete vytvoÅ™it nový úÄet. Můžete pak posílat " +"oznámení a propojit se s přáteli a kolegy. " -#: actions/register.php:425 +#: actions/register.php:432 msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -msgstr "" +msgstr "1-64 znaků nebo Äísel, bez teÄek, Äárek a mezer. Nutné." -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." -msgstr "" +msgstr "6 a více znaků. Nutné." -#: actions/register.php:434 +#: actions/register.php:441 msgid "Same as password above. Required." -msgstr "" +msgstr "Stejné jako heslo uvedeno výše. Povinné." #. 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 "" +msgstr "Delší jméno, nejlépe vaÅ¡e \"skuteÄné\" jméno" -#: actions/register.php:494 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "Chápu, že obsah a data %1$S jsou soukromé a důvÄ›rné." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "Můj text a soubory jsou copyrightovány %1$s." + +#. 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 "Můj text a soubory zůstanou pod mým vlastním copyrightem." + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. +#: actions/register.php:535 +msgid "All rights reserved." +msgstr "VÅ¡echna práva vyhrazena." + +#. 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 "" -" až na tyto privátní data: heslo, emailová adresa, IM adresa, telefonní " -"Äíslo." +"Můj text a soubory jsou k dispozici pod %s výjimkou tÄ›chto soukromých dat: " +"heslo, e-mailová adresa, IM adresa a telefonní Äíslo." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3364,12 +3384,28 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" +"Gratulujeme, %1$s! A Vítejte v %%%%site.name%%%%. Odtud možná budete " +"chtít ...\n" +"\n" +"* Jít na [profil](%2$s) a poslat první zprávu.\n" +"* PÅ™idat [Jabber / GTalk adresu](%%%%action.imsetting %%%%) abyste mohli " +"zasílat oznámení prostÅ™ednictvím okamžitých zpráv (IM).\n" +"* [Hledat lidi](%%%%action.peoplesearch%%%%), které znáte, nebo kteří " +"sdílejí vaÅ¡e zájmy.\n" +"* Aktualizací [nastavení profilu](%%%%action.profilesettings%%%%) o vás více " +"říci ostatním.\n" +"* ProÄíst si [online nápovÄ›du](%%%%doc.help%%%%) pro objevení funkcí které " +"jste možná pÅ™ehlédli.\n" +"\n" +"Díky za registraci a doufáme, že se vám používání této služby bude líbít." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" msgstr "" +"(MÄ›li byste za okamžik obdržet e-mailem zprávu s instrukcemi, jak potvrdit " +"svou e-mailovou adresu.)" #: actions/remotesubscribe.php:98 #, php-format @@ -3380,20 +3416,19 @@ msgid "" msgstr "" "Pro odebírání, se musíte [pÅ™ihlásit](%%action.login%%), nebo [registrovat](%%" "action.register%%) nový úÄet. Pokud již máte úÄet na [kompatibilních " -"mikroblozích](%%doc.openmublog%%), vložte níže asdresu " +"mikroblozích](%%doc.openmublog%%), vložte níže adresu." #: actions/remotesubscribe.php:112 msgid "Remote subscribe" msgstr "Vzdálený odbÄ›r" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "OdbÄ›r autorizován" +msgstr "PÅ™ihlásit se ke vzdálenému uživateli" #: actions/remotesubscribe.php:129 msgid "User nickname" -msgstr "PÅ™ezdívka" +msgstr "PÅ™ezdívka uživatele" #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" @@ -3417,47 +3452,42 @@ msgid "Invalid profile URL (bad format)" msgstr "Neplatná adresa profilu (Å¡patný formát)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Není platnou adresou profilu (není YADIS dokumentem)." +msgstr "" +"Není platnou adresou profilu (není YADIS dokumentem nebo definováno neplatné " +"XRDS)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." -msgstr "" +msgstr "To je místní profil! Pro pÅ™ihlášení k odbÄ›ru se pÅ™ihlášte." #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." msgstr "Nelze získat Å™etÄ›zec požadavku." #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." -msgstr "" +msgstr "Pouze pÅ™ihlášení uživatelé mohou opakovat oznámení." #: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy msgid "No notice specified." -msgstr "Nové sdÄ›lení" +msgstr "Oznámení neuvedeno." #: actions/repeat.php:76 -#, fuzzy msgid "You can't repeat your own notice." -msgstr "Nemůžete se registrovat, pokud nesouhlasíte s licencí." +msgstr "Nemůžete opakovat své vlastní oznámení." #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "Již jste pÅ™ihlášen" +msgstr "Již jste zopakoval toto oznámení." -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "VytvoÅ™it" +msgstr "Opakované" #: actions/repeat.php:119 -#, fuzzy msgid "Repeated!" -msgstr "VytvoÅ™it" +msgstr "Opakované!" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3466,31 +3496,33 @@ msgid "Replies to %s" msgstr "OdpovÄ›di na %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "OdpovÄ›di na %s" +msgstr "OdpovÄ›di na %1$s, strana %2$d" #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed odpovÄ›dí pro %s (RSS 1.0)" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed odpovÄ›dí pro %s (RSS 2.0)" #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed odpovÄ›dí pro %s (Atom)" #: 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 "" +"Toto je Äasová osa ukazující odpovÄ›di na %1$s, ale %2$s, jeÅ¡tÄ› neobdržel " +"žádná oznámení." #: actions/replies.php:204 #, php-format @@ -3498,111 +3530,105 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" +"Můžete zapojit ostatní uživatele v rozhovoru, pÅ™ihlaste se k více lidem nebo " +"se [pÅ™ipojit do skupin](%%action.groups%%)." #: 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 "" +"Můžete se pokusit uživatele [%1$s postrÄit](../%2$s) nebo [jim nÄ›co poslat]" +"(%%%%action.newnotice%%%%?status_textarea=%3$s)." #: actions/repliesrss.php:72 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s on %2$s!" -msgstr "OdpovÄ›di na %s" +msgstr "OdpovÄ›di na %1$s na %2$s!" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Neodeslal jste nám profil" +msgstr "Nemůžete ruÅ¡it uživatelské role na této stránce." #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "Uživatel nemá profil." +msgstr "Uživatel nemá tuto roli." -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "Obrázek nahrán" +msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "Neodeslal jste nám profil" +msgstr "Nemůžete sandboxovat uživatele na této stránce." #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "Uživatel nemá profil." +msgstr "Uživatel je již sandboxován." #. 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 "Sessions" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "Nastavení sessions pro tuto stránku StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" -msgstr "" +msgstr "Zpracovávat sessions" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." -msgstr "" +msgstr "Máme sami zpracovávat sessions?" #: actions/sessionsadminpanel.php:181 msgid "Session debugging" -msgstr "" +msgstr "Debugování sessions" #: actions/sessionsadminpanel.php:183 msgid "Turn on debugging output for sessions." -msgstr "" +msgstr "Zapnout výstup pro debugování sessions" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "Nastavení" +msgstr "Uložit Nastavení webu" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." -msgstr "" +msgstr "Musíte být pÅ™ihlášeni pro zobrazení aplikace." #: actions/showapplication.php:157 -#, fuzzy msgid "Application profile" -msgstr "SdÄ›lení nemá profil" +msgstr "Profil aplikace" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 msgid "Icon" -msgstr "" +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 -#, fuzzy msgid "Name" -msgstr "PÅ™ezdívka" +msgstr "Název" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "UmístÄ›ní" +msgstr "Organizace" #. 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" +msgstr "Popis" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "Statistiky" @@ -3611,117 +3637,125 @@ msgstr "Statistiky" #, php-format msgid "Created by %1$s - %2$s access by default - %3$d users" msgstr "" +"VytvoÅ™il %1$s - s \"%2$s\" přístupem ve výchozím nastavení - %3$d uživatelů" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Akce aplikace" #: actions/showapplication.php:236 msgid "Reset key & secret" -msgstr "" +msgstr "Resetovat klÃ­Ä a tajemství" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Info o aplikaci" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "SpotÅ™ebitelský klíÄ" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "SpotÅ™ebitelské tajemství" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "Adresa Å™etÄ›zce požadavku" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "URL Access tokenu" #: actions/showapplication.php:283 msgid "Authorize URL" -msgstr "" +msgstr "AuthorizaÄní URL" #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." -msgstr "" +msgstr "Poznámka: podpora HMAC-SHA1 podpisů. Nepodporujeme plaintext." #: actions/showapplication.php:309 msgid "Are you sure you want to reset your consumer key and secret?" msgstr "" +"Jste si jisti, že chcete resetovat svůj spotÅ™ebitelský klÃ­Ä a tajemství?" #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "%s a přátelé" +msgstr "Oblíbená oznámení uživatele %1$s, strana %2$d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "NepodaÅ™ilo se získat oblíbená oznámení." #: actions/showfavorites.php:171 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "Feed přítel uživatele: %s" +msgstr "Feed oblíbených oznámení uživatele %s (RSS 1.0)" #: actions/showfavorites.php:178 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "Feed přítel uživatele: %s" +msgstr "Feed oblíbených oznámení uživatele %s (RSS 2.0)" #: actions/showfavorites.php:185 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "Feed přítel uživatele: %s" +msgstr "Feed oblíbených oznámení uživatele %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 "" +"Nemáte dosud vybraná žádná oblíbená oznámení. Abyste si je založili na " +"pozdÄ›ji nebo na nÄ› upoutali pozornost, kliknÄ›te na tlaÄítko Oblíbené na " +"oznámeních" #: 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 jeÅ¡tÄ› nemá žádná oblíbená oznámení. NapiÅ¡te neco zajímavého co by si " +"pÅ™idali do oblíbených :)" #: 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 jeÅ¡tÄ› nemá žádná oblíbená oznámení. ProÄ se ne [zaregistrovat](%%%%action." +"register%%%%) a neposlat neco zajímavého co by si pÅ™idali do oblíbených :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." -msgstr "" +msgstr "Toto je způsob, jak sdílet to, co se vám líbí." #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format msgid "%s group" -msgstr "" +msgstr "skupina %s" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "VÅ¡echny odbÄ›ry" +msgstr "skupina %1$s, str. %2$d" #: actions/showgroup.php:227 -#, fuzzy msgid "Group profile" -msgstr "Žádné takové oznámení." +msgstr "Profil skupiny" #: actions/showgroup.php:272 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:178 msgid "URL" -msgstr "" +msgstr "URL" #: actions/showgroup.php:283 actions/tagother.php:128 #: actions/userauthorization.php:187 lib/userprofile.php:195 @@ -3730,53 +3764,51 @@ msgstr "Poznámka" #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" -msgstr "" +msgstr "Aliasy" #: actions/showgroup.php:302 msgid "Group actions" -msgstr "" +msgstr "Akce skupiny" #: actions/showgroup.php:338 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed sdÄ›lení skupiny %s (RSS 1.0" #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed sdÄ›lení skupiny %s (RSS 2.0)" #: actions/showgroup.php:350 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (Atom)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed sdÄ›lení skupiny %s (Atom)" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "Feed sdÄ›lení pro %s" +msgstr "FOAF pro skupinu %s" -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 -#, fuzzy +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" -msgstr "ÄŒlenem od" +msgstr "ÄŒlenové" #: 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 "" +msgstr "(nic)" #: actions/showgroup.php:404 msgid "All members" -msgstr "" +msgstr "VÅ¡ichni Älenové" -#: actions/showgroup.php:447 -#, fuzzy +#: actions/showgroup.php:439 msgid "Created" -msgstr "VytvoÅ™it" +msgstr "VytvoÅ™eno" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3785,8 +3817,13 @@ msgid "" "their life and interests. [Join now](%%%%action.register%%%%) to become part " "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** je skupina uživatelů na %%site.name%%, [mikro-blogovací](http://drbz." +"cz/i/napoveda-faq#mikroblog) službÄ› založené na Free Software nástroji " +"[StatusNet](http://status.net/). Její Älenové sdílejí krátké zprávy o svém " +"životÄ› a zájmech. [Zaregistrujte se](%%action.register%%) a staňte se Älenem " +"této skupiny a mnoha dalších! ([ÄŒtÄ›te více](%%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." @@ -3794,86 +3831,93 @@ msgid "" "[StatusNet](http://status.net/) tool. Its members share short messages about " "their life and interests. " msgstr "" +"**%s** je skupina uživatelů na %%site.name%%, [mikro-blogovací](http://drbz." +"cz/i/napoveda-faq#mikroblog) službÄ› založené na Free Software nástroji " +"[StatusNet](http://status.net/). Její Älenové sdílejí krátké zprávy o svém " +"životÄ› a zájmech. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" -msgstr "" +msgstr "Adminové" #: actions/showmessage.php:81 msgid "No such message." -msgstr "" +msgstr "Žádné takové zprávy." #: actions/showmessage.php:98 msgid "Only the sender and recipient may read this message." -msgstr "" +msgstr "Pouze odesílatel a příjemce může pÅ™eÄíst tuto zprávu." #: actions/showmessage.php:108 #, php-format msgid "Message to %1$s on %2$s" -msgstr "" +msgstr "Zpráva pro %1$s na %2$s" #: actions/showmessage.php:113 #, php-format msgid "Message from %1$s on %2$s" -msgstr "" +msgstr "Zpráva od %1$s na %2$s" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "SdÄ›lení" +msgstr "Oznámení smazáno." #: actions/showstream.php:73 #, php-format msgid " tagged %s" -msgstr "" +msgstr "oznaÄen %s" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s a přátelé" +msgstr "%1$s, strana %2$d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení pro %1$s otagovaných %2$s (RSS 1.0)" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení pro %1$s (RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení pro %1$s (RSS 2.0)" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení pro %1$s (Atom)" #: actions/showstream.php:148 #, php-format msgid "FOAF for %s" -msgstr "" +msgstr "FOAF pro %s" #: actions/showstream.php:200 #, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." -msgstr "" +msgstr "Toto je Äasová osa pro %1$s, ale %2$s zatím niÄím nepÅ™ispÄ›li." #: 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 "" +"VidÄ›li jste v poslední dobÄ› zajímavého? Nemáte zatím žádné oznámení, teÄ by " +"byl dobrý Äas zaÄít:)" #: 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 "" +"Můžete se pokusit uživatele %1$s postrÄit nebo [jim nÄ›co poslat](%%%%action." +"newnotice%%%%?status_textarea=%2$s)." #: actions/showstream.php:243 #, php-format @@ -3883,6 +3927,10 @@ msgid "" "[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to " "follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" +"**%s** má úÄet na %%site.name%%, [mikro-blogovací](http://drbz.cz/i/napoveda-" +"faq#mikroblog) službÄ› založené na Free Software nástroji [StatusNet](http://" +"status.net/). [Zaregistrujte se](%%action.register%%) a sledujte oznámení od " +"**%s**a mnoha dalších! ([ÄŒtÄ›te více](%%doc.help%%))" #: actions/showstream.php:248 #, php-format @@ -3891,222 +3939,211 @@ msgid "" "wikipedia.org/wiki/Micro-blogging) service based on the Free Software " "[StatusNet](http://status.net/) tool. " msgstr "" +"**%s** má úÄet na %%site.name%%, [mikro-blogovací](http://drbz.cz/i/napoveda-" +"faq#mikroblog) službÄ› založené na Free Software nástroji [StatusNet](http://" +"status.net/). " #: actions/showstream.php:305 -#, fuzzy, php-format +#, php-format msgid "Repeat of %s" -msgstr "OdpovÄ›di na %s" +msgstr "Opakování %s" #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." -msgstr "" +msgstr "Na tomto webu nemůžete ztiÅ¡ovat uživatele." #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "Uživatel nemá profil." +msgstr "Uživatel je už umlÄen." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" -msgstr "" +msgstr "Základní nastavení pro tuto stránku StatusNet" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." -msgstr "" +msgstr "Název webu musí mít nenulovou délku." #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "Není platnou mailovou adresou." +msgstr "Musíte mít platnou kontaktní emailovou adresu." #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." -msgstr "" +msgstr "Neznámý jazyk \"%s\"." #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "Minimální limit textu je 0 (bez omezení)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." -msgstr "" +msgstr "DuplikaÄní limit musí být jedna nebo více sekund." #: actions/siteadminpanel.php:221 msgid "General" -msgstr "" +msgstr "Obecné" #: actions/siteadminpanel.php:224 -#, fuzzy msgid "Site name" -msgstr "Nové sdÄ›lení" +msgstr "Název stránky" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "" +msgstr "Název vaší stránky, jako \"Mikroblog VašíSpoleÄnosti\"" #: actions/siteadminpanel.php:229 msgid "Brought by" -msgstr "" +msgstr "PÅ™ineseno" #: actions/siteadminpanel.php:230 msgid "Text used for credits link in footer of each page" -msgstr "" +msgstr "Text pro dÄ›kovný odkaz (credits) v zápatí každé stránky." #: actions/siteadminpanel.php:234 msgid "Brought by URL" -msgstr "" +msgstr "PÅ™ineseno URL" #: actions/siteadminpanel.php:235 msgid "URL used for credits link in footer of each page" -msgstr "" +msgstr "Text pro dÄ›kovný odkaz (credits) v zápatí každé stránky." #: actions/siteadminpanel.php:239 -#, fuzzy msgid "Contact email address for your site" -msgstr "Žádný registrovaný email pro tohoto uživatele." +msgstr "Kontaktní e-mailová adresa pro vaÅ¡e stránky" #: actions/siteadminpanel.php:245 -#, fuzzy msgid "Local" -msgstr "UmístÄ›ní" +msgstr "Místní" #: actions/siteadminpanel.php:256 msgid "Default timezone" -msgstr "" +msgstr "Výchozí Äasové pásmo" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "" +msgstr "Výchozí Äasové pásmo pro web, obvykle UTC." #: actions/siteadminpanel.php:262 msgid "Default language" -msgstr "" +msgstr "Výchozí jazyk" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" -msgstr "" +msgstr "Jazyk stránky když není k dispozici autodetekce z nastavení prohlížeÄe" #: actions/siteadminpanel.php:271 msgid "Limits" -msgstr "" +msgstr "Omezení" #: actions/siteadminpanel.php:274 msgid "Text limit" -msgstr "" +msgstr "Omezení textu" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "" +msgstr "Maximální poÄet znaků v oznámení." #: actions/siteadminpanel.php:278 msgid "Dupe limit" -msgstr "" +msgstr "Limit duplikace" #: actions/siteadminpanel.php:278 msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" +"Jak dlouho uživatel musí Äekat (v sekundách) než může poslat totéž znovu." #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Nové sdÄ›lení" +msgstr "Oznámení stránky" #: actions/sitenoticeadminpanel.php:67 msgid "Edit site-wide message" -msgstr "" +msgstr "Upravit celo-webovou zprávu" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "Problém pÅ™i ukládání sdÄ›lení" +msgstr "Problém pÅ™i ukládání sdÄ›lení stránky" #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "" +msgstr "Max délka pro celo-webové oznámení je 255 znaků." #: actions/sitenoticeadminpanel.php:176 -#, fuzzy msgid "Site notice text" -msgstr "Nové sdÄ›lení" +msgstr "Text sdÄ›lení stránky" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" -msgstr "" +msgstr "Celo-webové sdÄ›lení (255 znaků max., s HTML)" #: actions/sitenoticeadminpanel.php:198 -#, fuzzy msgid "Save site notice" -msgstr "Nové sdÄ›lení" +msgstr "Uložit oznámení stránky" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "IM nastavení" +msgstr "nastavení SMS" #. 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 "" +msgstr "Z %%site.name%% můžete pÅ™ijímat SMS e-mailem." #. 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 "Tato stránka není k dispozici v typu média která pÅ™ijímáte." +msgstr "SMS není k dispozici." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM adresa" +msgstr "SMS adresa" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 msgid "Current confirmed SMS-enabled phone number." -msgstr "" +msgstr "Aktuální potvrzené SMS-schopné telefonní Äíslo." #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 msgid "Awaiting confirmation on this phone number." -msgstr "" +msgstr "ÄŒeká na potvrzení na tomto telefonním Äísle." #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 msgid "Confirmation code" -msgstr "" +msgstr "Potvrzovací kód" #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 msgid "Enter the code you received on your phone." -msgstr "" +msgstr "Zadejte kód, který jste obdrželi na telefonu." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" -msgstr "Heslo znovu" +msgstr "Potvrdit" #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "Žádné telefonní Äíslo." +msgstr "SMS telefonní Äíslo" #. 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 "Telefonní Äíslo, Nepoužívej interpunkci nebo mezery, s pÅ™edÄíslím" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Nastavení" +msgstr "Nastavení SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4114,12 +4151,13 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" +"Posílejte mi oznámení prostÅ™ednictvím SMS. Chápu že mi můj telefonní " +"provider může naůÄtovat nesmyslnÄ› vysoké Äástky." #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Nastavení uloženo" +msgstr "Nastavení SMS uloženo." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4129,58 +4167,57 @@ msgstr "Žádné telefonní Äíslo." #. TRANS: Message given saving SMS phone number without having selected a carrier. #: actions/smssettings.php:344 msgid "No carrier selected." -msgstr "" +msgstr "Nevybrán poskytovatel." #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 msgid "That is already your phone number." -msgstr "" +msgstr "Toto je již vaÅ¡e telefonní Äíslo." #. 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 "" +msgstr "Toto telefonní Äíslo již patří jinému uživateli" #. 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 "Tento potvrzující kód vám nepatří!" +msgstr "" +"Ověřující kód byl poslán na vložené telefonní Äíslo, s instrukcemi jak ho " +"použít." #. 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 "Toto je Å¡patné ověřovací Äíslo." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "PotvrÄ zruÅ¡ení" +msgstr "SMS potvrzení zruÅ¡eno." #. 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 "To není vaÅ¡e telefonní Äíslo." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Žádné telefonní Äíslo." +msgstr "SMS Telefonní Äíslo bylo odstranÄ›no." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" -msgstr "" +msgstr "Mobilní operátor" #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 msgid "Select a carrier" -msgstr "" +msgstr "Vyberte operátora" #. TRANS: Form instructions for mobile carrier dropdown menu in SMS settings. #. TRANS: %s is an administrative contact's e-mail address. @@ -4190,130 +4227,129 @@ 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 "" +"Mobilní operátor vášeho telefonu. Pokud znáte operátora, který pÅ™ijímá SMS " +"pÅ™es e-mail, ale zde není uveden, poÅ¡lete e-mail a dejte nám vÄ›dÄ›t na% s." #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 msgid "No code entered" -msgstr "" +msgstr "Nezadán kód" #. 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 "Snímky (snapshoty)" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "OdbÄ›ry" +msgstr "Konfigurace snímků" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." -msgstr "" +msgstr "Neplatná hodnota run. (kdy provádÄ›t snapshoty)" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." -msgstr "" +msgstr "Frekvence snímků musí být Äíslo." #: actions/snapshotadminpanel.php:144 msgid "Invalid snapshot report URL." -msgstr "" +msgstr "Neplatná URL na reportování snímků" #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" -msgstr "" +msgstr "NáhodnÄ› pÅ™i dodávání stránek" #: actions/snapshotadminpanel.php:201 msgid "In a scheduled job" -msgstr "" +msgstr "V naplánovaném úkolu" #: actions/snapshotadminpanel.php:206 msgid "Data snapshots" -msgstr "" +msgstr "Snímky dat" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" -msgstr "" +msgstr "Kdy posílat statistická data na status.net servery" #: actions/snapshotadminpanel.php:217 msgid "Frequency" -msgstr "" +msgstr "Frekvence" #: actions/snapshotadminpanel.php:218 msgid "Snapshots will be sent once every N web hits" -msgstr "" +msgstr "Snímky budou odeslány jednou za N web hitů" #: actions/snapshotadminpanel.php:226 msgid "Report URL" -msgstr "" +msgstr "Reportovací URL" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "Na tuto adresu budou poslány snímky" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "Nastavení" +msgstr "Uložit nastavení snímkování" #: actions/subedit.php:70 -#, fuzzy msgid "You are not subscribed to that profile." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste pÅ™ihlášen k tomuto profilu." -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "Nelze vytvoÅ™it odebírat" +msgstr "Nelze uložit odebírání" #: actions/subscribe.php:77 msgid "This action only accepts POST requests." -msgstr "" +msgstr "Tato akce pÅ™ijímá pouze POST požadavky." #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "Žádné takové oznámení." +msgstr "Žádný takový profil." #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Neodeslal jste nám profil" +msgstr "" +"Touto akcí se nemůžete se pÅ™ihlásit k odbÄ›ru vzdáleného OMB 0.1 profilu." #: actions/subscribe.php:145 -#, fuzzy msgid "Subscribed" -msgstr "Odebírat" +msgstr "Prihlášen" #: actions/subscribers.php:50 -#, fuzzy, php-format +#, php-format msgid "%s subscribers" -msgstr "OdbÄ›ratelé" +msgstr "OdbÄ›ratelé %s" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "VÅ¡echny odbÄ›ry" +msgstr "odbÄ›ratelé %1$s, strana %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." -msgstr "Toto jsou lidé, kteří naslouchají vaÅ¡im sdÄ›lením " +msgstr "Toto jsou lidé, kteří naslouchají vaÅ¡im sdÄ›lením." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "Toto jsou lidé, kteří naslouchají %s sdÄ›lením" +msgstr "Toto jsou lidé, kteří naslouchají sdÄ›lením od %s." #: actions/subscribers.php:108 msgid "" "You have no subscribers. Try subscribing to people you know and they might " "return the favor" msgstr "" +"Nemáte žádné sledovatele. Zkuste zaÄít sledovat lidi, které znáte, a oni by " +"vám tu laskavost mohli vrátit" #: actions/subscribers.php:110 #, php-format msgid "%s has no subscribers. Want to be the first?" -msgstr "" +msgstr "Uživatele %s nikdo nesleduje. Chcete být první?" #: actions/subscribers.php:114 #, php-format @@ -4321,16 +4357,18 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"Uživatele %s nikdo nesleduje. ProÄ ne [zaregistrovat úÄet](%%action.register%" +"%) a nebýt první?" #: actions/subscriptions.php:52 -#, fuzzy, php-format +#, php-format msgid "%s subscriptions" -msgstr "VÅ¡echny odbÄ›ry" +msgstr "OdbÄ›ry uživatele %s" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "VÅ¡echny odbÄ›ry" +msgstr "OdbÄ›ry uživatele %1$s, strana %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4339,7 +4377,7 @@ msgstr "Toto jsou lidé, jejiž sdÄ›lením nasloucháte" #: actions/subscriptions.php:69 #, php-format msgid "These are the people whose notices %s listens to." -msgstr "Toto jsou lidé, jejiž sdÄ›lením %s naslouchá" +msgstr "Toto jsou lidé, jejímž sdÄ›lením %s naslouchá" #: actions/subscriptions.php:126 #, php-format @@ -4350,147 +4388,145 @@ msgid "" "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can " "automatically subscribe to people you already follow there." msgstr "" +"MomentálnÄ› nenasloucháte níÄím oznámením, zkuste se pÅ™ihlásit k lidem které " +"znáte. Zkuste [Vyhledávání lidí](%%action.peoplesearch%%), podívejte se po " +"Älenech skupin které vás zajímají a do [nejlepších uživatelú](%%action." +"featured%%). Pokud jste uživatelem [Twitteru](%%action.twittersettings%%), " +"můžete se automaticky pÅ™ihlásit k lidem které už tam sledujete." #: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format +#, php-format msgid "%s is not listening to anyone." -msgstr "%1 od teÄ naslouchá tvým sdÄ›lením v %2" +msgstr "%s nikoho nesleduje." #: actions/subscriptions.php:208 -#, fuzzy msgid "Jabber" -msgstr "Žádné Jabber ID." +msgstr "Jabber" #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 msgid "SMS" -msgstr "" +msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Mikroblog od %s" +msgstr "Oznámení oznaÄená %1$s, strana %2$d" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení oznaÄených %s (RSS 1.0)" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení oznaÄených %s (RSS 2.0)" #: actions/tag.php:99 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Feed sdÄ›lení pro %s" +msgstr "Feed oznámení oznaÄených %s (Atom)" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "Žádný takový dokument." +msgstr "Žádný argument ID." #: actions/tagother.php:65 #, php-format msgid "Tag %s" -msgstr "" +msgstr "Otagujte %s" #: actions/tagother.php:77 lib/userprofile.php:76 -#, fuzzy msgid "User profile" -msgstr "Uživatel nemá profil." +msgstr "Uživatelský profil" #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" -msgstr "" +msgstr "Fotka" #: actions/tagother.php:141 msgid "Tag user" -msgstr "" +msgstr "Otagujte uživatele" #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" msgstr "" +"Tagy pro tohoto uživatele (písmena, Äíslice, -,., a _), oddÄ›lené Äárkou nebo " +"mezerou" #: actions/tagother.php:193 msgid "" "You can only tag people you are subscribed to or who are subscribed to you." msgstr "" +"Můžete oznaÄovat pouze lidi, ke kterým jste pÅ™ihlášen nebo kteří jsou " +"pÅ™ihlášeni k vám." #: actions/tagother.php:200 -#, fuzzy msgid "Could not save tags." -msgstr "Nelze uložin informace o obrázku" +msgstr "Nelze uložit nálepky" #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." msgstr "" +"Použijte tento formulář k pÅ™idání nálepek na vaÅ¡e posluchaÄe nebo ty které " +"posloucháte." #: actions/tagrss.php:35 -#, fuzzy msgid "No such tag." -msgstr "Žádné takové oznámení." - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" +msgstr "Žádná taková nálepka." #: actions/unblock.php:59 -#, fuzzy msgid "You haven't blocked that user." -msgstr "Již jste pÅ™ihlášen" +msgstr "Nemáte zablokováno tohoto uživatele." #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "Uživatel nemá profil." +msgstr "Uživatel není sandboxován." #: actions/unsilence.php:72 -#, fuzzy msgid "User is not silenced." -msgstr "Uživatel nemá profil." +msgstr "Uživatel není umlÄen." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Nebylo vráceno žádné URL profilu od servu." +msgstr "CHybí ID profilu v žádosti." #: actions/unsubscribe.php:98 -#, fuzzy msgid "Unsubscribed" -msgstr "Odhlásit" +msgstr "Odhlášeno" #: 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 "" +"Licence naslouchaného '%1$s' není kompatibilní s licencí stránky '%2$s'." #. TRANS: User admin panel title #: actions/useradminpanel.php:59 msgctxt "TITLE" msgid "User" -msgstr "" +msgstr "Uživatel" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "" +msgstr "Nastavení uživatelů pro tuto stránku StatusNet." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." -msgstr "" +msgstr "Neplatný bio limit. Musí být Äíslo." #: actions/useradminpanel.php:155 msgid "Invalid welcome text. Max length is 255 characters." -msgstr "" +msgstr "Neplatné uvítací text. Max délka je 255 znaků." #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "" +msgstr "Neplatné výchozí pÅ™ihlášení: '%1$s' není uživatel." #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 @@ -4500,63 +4536,59 @@ msgstr "Profil" #: actions/useradminpanel.php:222 msgid "Bio Limit" -msgstr "" +msgstr "Limit Bia" #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." -msgstr "" +msgstr "Maximální poÄet znaků bia profilu." #: actions/useradminpanel.php:231 msgid "New users" -msgstr "" +msgstr "Noví uživatelé" #: actions/useradminpanel.php:235 msgid "New user welcome" -msgstr "" +msgstr "Uvítání nového uživatele" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Uvítání nových uživatel (Max 255 znaků)." #: actions/useradminpanel.php:241 -#, fuzzy msgid "Default subscription" -msgstr "VÅ¡echny odbÄ›ry" +msgstr "Výchozí odbÄ›r" #: actions/useradminpanel.php:242 -#, fuzzy msgid "Automatically subscribe new users to this user." -msgstr "OdbÄ›r autorizován" +msgstr "Automaticky pÅ™ihlásit nové uživatele k tomuto uživateli." #: actions/useradminpanel.php:251 -#, fuzzy msgid "Invitations" -msgstr "UmístÄ›ní" +msgstr "Pozvánky" #: actions/useradminpanel.php:256 msgid "Invitations enabled" -msgstr "" +msgstr "Pozvánky povoleny" #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." -msgstr "" +msgstr "Zda chcete uživatelům umožnit pozvat nové uživatele." #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "Autorizovaný odbÄ›r" +msgstr "Autorizujte pÅ™ihlášení" #: 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 "" "Prosím zkontrolujte tyto detailu, a ujistÄ›te se že opravdu chcete odebírat " -"sdÄ›lení tohoto uživatele. Pokud ne, ask to subscribe to somone's notices, " -"kliknÄ›te na \"ZruÅ¡it\"" +"sdÄ›lení tohoto uživatele. Pokud jste právÄ› nepožádali o pÅ™ihlášení k tomuto " +"uživteli, 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" @@ -4566,36 +4598,33 @@ msgstr "PÅ™ijmout" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 -#, fuzzy msgid "Subscribe to this user" -msgstr "OdbÄ›r autorizován" +msgstr "PÅ™ihlásit se k tomuto uživateli" #: actions/userauthorization.php:219 msgid "Reject" msgstr "Odmítnout" #: actions/userauthorization.php:220 -#, fuzzy msgid "Reject this subscription" -msgstr "VÅ¡echny odbÄ›ry" +msgstr "Odmítnout toto pÅ™ihlášení" #: actions/userauthorization.php:232 msgid "No authorization request!" -msgstr "Žádné potvrení!" +msgstr "Žádná žádost o autorizaci!" #: actions/userauthorization.php:254 msgid "Subscription authorized" msgstr "OdbÄ›r autorizován" #: 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 "" -"OdbÄ›r byl potvrzen, ale neproÅ¡la žádná callback adresa. Zkontrolujte v " -"nápovÄ›dÄ› jak správnÄ› postupovat pÅ™i potvrzování odbÄ›ru. Váš Å™etÄ›zec odbÄ›ru " +"OdbÄ›r byl autorizován, ale nepÅ™iÅ¡la žádná callback adresa. Zkontrolujte v " +"nápovÄ›dÄ› jak správnÄ› postupovat pÅ™i autorizování odbÄ›ru. Váš Å™etÄ›zec odbÄ›ru " "je:" #: actions/userauthorization.php:266 @@ -4603,823 +4632,887 @@ msgid "Subscription rejected" msgstr "OdbÄ›r odmítnut" #: 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 "" -"Odebírání bylo zamítnuto, ale neproÅ¡la žádná callback adresa. Zkontrolujte v " -"nápovÄ›dÄ› jak správnÄ› postupovat pÅ™i zamítání odbÄ›ru" +"Odebírání bylo zamítnuto, ale nepÅ™iÅ¡la žádná callback adresa. Zkontrolujte v " +"nápovÄ›dÄ› jak správnÄ› postupovat pro plné zamítnutí odbÄ›ru." #: actions/userauthorization.php:303 #, php-format msgid "Listener URI ‘%s’ not found here." -msgstr "" +msgstr "Naslouchací URI ‘%s’ zde nebyl nalezen." #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "Naslouchací URI ‘%s’ je příliÅ¡ dlouhý." #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "Naslouchací URI ‘%s’ je místní uživatel." #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "URL profilu '%s' je pro místního uživatele." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "URL avataru ‘%s’ není platný." #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "Nelze pÅ™eÄíst adresu obrázku '%s'" +msgstr "Nelze naÄíst avatara z URL '%s'" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Neplatný typ obrázku pro '%s'" +msgstr "Å patný typ obrázku na URL '%s'" #: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy msgid "Profile design" -msgstr "Nastavené Profilu" +msgstr "Vzhled profilu" #: 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 "" +"PÅ™izpůsobit vzhled vaÅ¡eho profilu obrázkem na pozadí a barevnou paletou " +"vaÅ¡eho výbÄ›ru." #: actions/userdesignsettings.php:282 msgid "Enjoy your hotdog!" -msgstr "" +msgstr "Užijte si svůj párek v rohlíku!" #. 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 "VÅ¡echny odbÄ›ry" +msgstr "skupiny uživatele %1$s, strana %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" -msgstr "" +msgstr "Vyhledat další skupiny" #: actions/usergroups.php:159 -#, fuzzy, php-format +#, php-format msgid "%s is not a member of any group." -msgstr "Neodeslal jste nám profil" +msgstr "%s není Älenem žádné skupiny." #: actions/usergroups.php:164 #, php-format msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." msgstr "" +"Zkuste [vyhledávat skupiny](%%action.groupsearch%%) a pÅ™ipojit se k nim." #. 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 "" +msgstr "Oznámení od %1$s na %2$s!" -#: actions/version.php:73 -#, fuzzy, php-format +#: actions/version.php:75 +#, php-format msgid "StatusNet %s" -msgstr "Statistiky" +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 "" +"Tato webová stránka je pohánÄ›na a běží na programu %1$S verze %2$s, " +"Copyright 2008-2010 StatusNet, Inc a pÅ™ispÄ›vatelé." -#: actions/version.php:161 +#: actions/version.php:163 msgid "Contributors" -msgstr "" +msgstr "PÅ™ispÄ›vatelé" -#: 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 je svobodný software: můžete jej šířit a / nebo modifikovat podle " +"podmínek GNU Affero General Public License, vydávané Free Software " +"Foundation, a to buÄ ve verzi 3 této licence anebo (podle vaÅ¡eho uvážení) " +"kterékoli pozdÄ›jší verze. " -#: 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 "" +"Tento program je rozÅ¡iÅ™ován v nadÄ›ji, že bude užiteÄný, avÅ¡ak BEZ JAKÉKOLI " +"ZÃRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO " +"URÄŒITà ÚČEL. Podívejte se na GNU Affero General Public License pro bližší " +"informace. " -#: 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 "" +"MÄ›li byste obdržet kopii GNU Affero General Public License spolu s tímto " +"programem. Pokud ne, jdÄ›te na %s." -#: actions/version.php:189 +#: actions/version.php:191 msgid "Plugins" -msgstr "" +msgstr "Pluginy" #. 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:805 msgid "Version" -msgstr "Osobní" +msgstr "Verze" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" -msgstr "" +msgstr "AutoÅ™i" -#: 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 "Nemůžu zpracovat URL '%s'" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin si myslí, že je nÄ›co nemožné." + +#. 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 "" +"Žádný soubor nesmí být vÄ›tší než %1$d bajtů a soubor, který jste poslal mÄ›l %" +"2$d bajtů. Zkuste nahrát menší verzi." -#: 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 "" +msgstr "Takto velký soubor by pÅ™ekroÄil vaÅ¡i uživatelskou kvótu %d bajtů." -#: 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 "" +msgstr "Takto velký soubor by pÅ™ekroÄil vaÅ¡i mÄ›síÄní kvótu %d bajtů." -#: classes/Group_member.php:41 -#, fuzzy +#. 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 "Neplatné jméno souboru." + +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." -msgstr "Žádné takové oznámení." +msgstr "NepodaÅ™ilo se pÅ™ipojit ke skupinÄ›." -#: 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 "Nelze aktualizovat uživatele" +msgstr "Není souÄástí skupiny." -#: 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 "Žádné takové oznámení." +msgstr "NepodaÅ™ilo se opustit skupinu." -#: 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 "Nelze aktualizovat uživatele" +msgstr "Nelze aktualizovat místní skupinu." -#: 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 "Nelze uložin informace o obrázku" +msgstr "Nelze vytvoÅ™it pÅ™ihlaÅ¡ovací token 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 "Nenalezeno jméno databáze ani 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 "" +msgstr "Nemůžete posílat přímé zprávy (banned)" -#: 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 "Nemohu vložit zprávu." -#: 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 "" +msgstr "Nelze aktualizovat zprávu novým 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 "Nenalezen profil (%1$d) pro oznámení (%2$d)." #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Chyba v DB pÅ™i vkládání odpovÄ›di: %s" +msgstr "Chyba databáze pÅ™i vkládání nálepky: %s" -#: classes/Notice.php:245 -#, fuzzy +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 msgid "Problem saving notice. Too long." -msgstr "Problém pÅ™i ukládání sdÄ›lení" +msgstr "Problém ukládání sdÄ›lení. PříliÅ¡ dlouhé." -#: classes/Notice.php:249 -#, fuzzy +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 msgid "Problem saving notice. Unknown user." -msgstr "Problém pÅ™i ukládání sdÄ›lení" +msgstr "Problém pÅ™i ukládání sdÄ›lení. Neznámý uživatel." -#: 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:276 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" +"PříliÅ¡ mnoho oznámení příliÅ¡ rychle, odpoÄiňte si a zkuste to znovu za " +"nÄ›kolik 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" +"PříliÅ¡ mnoho stejných zpráv příliÅ¡ rychle, odpoÄiňte si a zkuste to znovu za " +"nÄ›kolik minut." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 msgid "You are banned from posting notices on this site." -msgstr "" +msgstr "Máte zakázáno (banned) posílat upozornÄ›ní na tomto webu." -#: 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problém pÅ™i ukládání sdÄ›lení" -#: classes/Notice.php:965 -#, fuzzy +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "saveKnownGroups obdrželo Å¡patný typ." + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 msgid "Problem saving group inbox." -msgstr "Problém pÅ™i ukládání sdÄ›lení" +msgstr "Problém pÅ™i ukládání skupinového inboxu" #. 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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" -msgstr "" +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 "Nelze zruÅ¡it roli \"%1$s\" pro uživatele #%2$d, neexistuje." + +#. 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 "Nelze zruÅ¡it roli \"%1$s\" pro uživatele #%2$d, chyba databáze." + +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "ChybÄ›jící profil." + +#. TRANS: Exception thrown when a tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +msgstr "Nelze uložit tag." + +#. 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 "Byl jste vykázán (banned) z pÅ™ihlaÅ¡ování se." -#: classes/Subscription.php:78 +#. TRANS: Exception thrown when trying to subscribe while already subscribed. +#: classes/Subscription.php:80 msgid "Already subscribed!" -msgstr "" +msgstr "Již pÅ™ihlášen!" -#: classes/Subscription.php:82 -#, fuzzy +#. 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živatel nemá profil." +msgstr "Uživatel vás zablokoval." -#: classes/Subscription.php:167 -#, fuzzy +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" msgstr "NepÅ™ihlášen!" -#: classes/Subscription.php:173 -#, fuzzy -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 "Nelze smazat odebírání sebe sama" + +#. 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 "Nelze smazat OMB token pÅ™ihlášení." + +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." msgstr "Nelze smazat odebírání" -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Nelze smazat odebírání" - -#: classes/Subscription.php:211 -msgid "Couldn't 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 "" +msgstr "Vítejte na %1$s, @%2$s!" -#: classes/User_group.php:480 -#, fuzzy +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." -msgstr "Nelze uložin informace o obrázku" +msgstr "Nelze vytvoÅ™it skupinu." -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Nelze vytvoÅ™it odebírat" +msgstr "Nelze nastavit URI skupiny." -#: classes/User_group.php:510 -#, fuzzy +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." -msgstr "Nelze vytvoÅ™it odebírat" +msgstr "Nelze nastavit Älenství ve skupinÄ›." -#: 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 "Nelze vytvoÅ™it odebírat" +msgstr "Nelze uložit místní info skupiny." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" -msgstr "" +msgstr "Změňte nastavení profilu" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 -#, fuzzy msgid "Upload an avatar" -msgstr "Nahrávání obrázku selhalo." +msgstr "Nahrát avatar" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 msgid "Change your password" -msgstr "" +msgstr "Změňte své heslo" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:130 msgid "Change email handling" -msgstr "" +msgstr "ZmÄ›nit manipulaci emailu" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 -#, fuzzy msgid "Design your profile" -msgstr "Uživatel nemá profil." +msgstr "Změňte vzhled svého profilu" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 msgid "Other options" -msgstr "" +msgstr "Další možnosti" #. TRANS: Link description in user account settings menu. #: lib/accountsettingsaction.php:146 msgid "Other" -msgstr "" +msgstr "Jiné" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%1 statusů na %2" +msgstr "%1$s - %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" -msgstr "" +msgstr "stránka bez názvu" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" -msgstr "" +msgstr "Primární navigace na webu" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" -msgstr "" +msgstr "Osobní profil a Äasová osa přátel" #. TRANS: Main menu option when logged in for access to personal profile and friends timeline -#: lib/action.php:435 -#, fuzzy +#: lib/action.php:458 msgctxt "MENU" msgid "Personal" msgstr "Osobní" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "ZmÄ›nit heslo" +msgstr "Změňte svůj e-mail, avatar, heslo, profil" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Nelze pÅ™esmÄ›rovat na server: %s" +msgstr "PÅ™ipojení ke službám" #. 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:468 msgid "Connect" msgstr "PÅ™ipojit" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 msgctxt "TOOLTIP" msgid "Change site configuration" -msgstr "OdbÄ›ry" +msgstr "ZmÄ›na konfigurace webu" #. TRANS: Main menu option when logged in and site admin for access to site configuration -#: lib/action.php:451 +#: lib/action.php:474 msgctxt "MENU" msgid "Admin" -msgstr "" +msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "" +msgstr "PozvÄ›te přátele a kolegy, aby se k vám pÅ™ipojili na %s" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 -#, fuzzy +#: lib/action.php:481 msgctxt "MENU" msgid "Invite" -msgstr "Neplatná velikost" +msgstr "Pozvat" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "" +msgstr "Odhlášení z webu" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 -#, fuzzy +#: lib/action.php:490 msgctxt "MENU" msgid "Logout" -msgstr "Odhlásit" +msgstr "Odhlásit se" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "VytvoÅ™it nový úÄet" +msgstr "Zaregistrujte se" #. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy +#: lib/action.php:498 msgctxt "MENU" msgid "Register" msgstr "Registrovat" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "" +msgstr "PÅ™ihlásit se na stránky" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "PÅ™ihlásit" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "Pomoci mi!" +msgstr "NápovÄ›da" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "NápovÄ›da" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "" +msgstr "Vyhledávání osob nebo textu" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 msgctxt "MENU" msgid "Search" 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 -#, fuzzy +#: lib/action.php:538 lib/adminpanelaction.php:400 msgid "Site notice" -msgstr "Nové sdÄ›lení" +msgstr "SdÄ›lení" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:605 msgid "Local views" -msgstr "" +msgstr "Místní zobrazení" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, fuzzy +#: lib/action.php:675 msgid "Page notice" -msgstr "Nové sdÄ›lení" +msgstr "SdÄ›lení stránky" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "OdbÄ›ry" +msgstr "Sekundární navigace na webu" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "NápovÄ›da" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "O nás" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" -msgstr "" +msgstr "TOS (pravidla použití služby)" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Soukromí" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Zdroj" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" -msgstr "" +msgstr "Odznak" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 msgid "StatusNet software license" -msgstr "" +msgstr "Licence softwaru StatusNet" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" "**%%site.name%%** je služba microblogů, kterou pro vás poskytuje [%%site." -"broughtby%%](%%site.broughtbyurl%%). " +"broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, 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 "" -"Běží na [StatusNet](http://status.net/) mikroblogovací program, verze %s, " -"dostupná pod [GNU Affero General Public License](http://www.fsf.org/" +"Běží na mikroblogovacím programu [StatusNet](http://status.net/), verze %s, " +"dostupném pod [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 -#, fuzzy +#: lib/action.php:866 msgid "Site content license" -msgstr "Nové sdÄ›lení" +msgstr "Licence k obsahu stránek" #. TRANS: Content license displayed when license is set to 'private'. #. TRANS: %1$s is the site name. -#: lib/action.php:847 +#: lib/action.php:873 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +msgstr "Obsah a data z %1$S jsou soukromé a důvÄ›rné." #. TRANS: Content license displayed when license is set to 'allrightsreserved'. #. TRANS: %1$s is the copyright owner. -#: lib/action.php:854 +#: lib/action.php:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." -msgstr "" +msgstr "Obsah a data copyright %1$s. VÅ¡echna práva vyhrazena." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:884 msgid "Content and data copyright by contributors. All rights reserved." -msgstr "" +msgstr "Obsah a data copyright pÅ™ispÄ›vatelů. VÅ¡echna práva vyhrazena." #. 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +msgstr "VÅ¡echen obsah a data %1$s jsou k dispozici v rámci licence %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1236 msgid "Pagination" -msgstr "" +msgstr "Stránková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 -#, fuzzy +#: lib/action.php:1247 msgid "After" -msgstr "« NovÄ›jší" +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 -#, fuzzy +#: lib/action.php:1257 msgid "Before" -msgstr "Starší »" +msgstr "PÅ™ed" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." -msgstr "" +msgstr "OÄekávám koÅ™enový element feedu, ale dostal jsem celý XML dokument." #: lib/activityutils.php:208 msgid "Can't handle remote content yet." -msgstr "" +msgstr "JeÅ¡tÄ› neumí zpracovat vzdálený obsah." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "Neumí zacházet s vloženým XML obsahem." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." -msgstr "" +msgstr "Neumí zacházet s vloženým Base64 obsahem." #. 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 "Nemůžete provádÄ›t zmÄ›ny na této stránce." #. 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 "" +msgstr "ZmÄ›ny, tohoto panelu nejsou povoleny." #. TRANS: Client error message. #: lib/adminpanelaction.php:229 msgid "showForm() not implemented." -msgstr "" +msgstr "showForm () není implementována." #. TRANS: Client error message #: lib/adminpanelaction.php:259 msgid "saveSettings() not implemented." -msgstr "" +msgstr "saveSettings () není implementována." #. 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 "" +msgstr "Nelze smazat nastavení vzhledu." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Základní konfigurace webu" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" -msgstr "Nové sdÄ›lení" +msgstr "Stránky" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy +#: lib/adminpanelaction.php:358 msgid "Design configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Nastavení vzhledu" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Vzhled" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Akce uživatele" #. 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 "Uživatel" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Nastavení přístupu" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy +#: lib/adminpanelaction.php:382 msgid "Paths configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Naastavení cest" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Nastavení sessions" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Nové sdÄ›lení" +msgstr "Upravit oznámení stránky" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "Potvrzení emailové adresy" +msgstr "Konfigurace snímků" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" +"API droj vyžaduje přístup pro Ätení a zápis, ale vy máte přístup pouze pro " +"Ätení." #. TRANS: Form legend. #: lib/applicationeditform.php:137 msgid "Edit application" -msgstr "" +msgstr "Upravit aplikaci" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "Ikona pro tuto aplikaci" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "PopiÅ¡ sebe a své zájmy ve 140 znacích" +msgstr "PopiÅ¡te vaÅ¡i aplikaci v %d znacích" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "PopiÅ¡ sebe a své zájmy ve 140 znacích" +msgstr "PopiÅ¡te vaÅ¡i aplikaci" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "Adresa vaÅ¡ich stránek, blogu nebo profilu na jiných stránkách." +msgstr "URL domovské stránky této aplikace" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 -#, fuzzy msgid "Source URL" -msgstr "Zdroj" +msgstr "Zdrojové URL" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "Organizace odpovÄ›dná za tuto aplikaci" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "Adresa vaÅ¡ich stránek, blogu nebo profilu na jiných stránkách." +msgstr "URL homepage organizace" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "URL pro pÅ™esmÄ›rování po autentikaci" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 msgid "Browser" -msgstr "" +msgstr "ProhlížeÄ" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:295 msgid "Desktop" -msgstr "" +msgstr "Desktop" #. TRANS: Form guide. #: lib/applicationeditform.php:297 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "Typ aplikace, prohlížeÄ nebo desktop" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 msgid "Read-only" -msgstr "" +msgstr "pouze pro Ätení" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:339 msgid "Read-write" -msgstr "" +msgstr "Ätení a zápis" #. TRANS: Form guide. #: lib/applicationeditform.php:341 msgid "Default access for this application: read-only, or read-write" -msgstr "" +msgstr "Výchozí přístup pro tuto aplikaci: pouze pro Ätení, nebo Äíst-psát" #. TRANS: Submit button title #: lib/applicationeditform.php:359 @@ -5429,35 +5522,34 @@ msgstr "ZruÅ¡it" #. TRANS: Application access type #: lib/applicationlist.php:136 msgid "read-write" -msgstr "" +msgstr "Äíst-psát" #. TRANS: Application access type #: lib/applicationlist.php:138 msgid "read-only" -msgstr "" +msgstr "pouze pro Ätení" #. 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 "" +msgstr "Schváleno %1$s - přístup \"%2$s\"" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Odstranit" +msgstr "Obnovit" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 msgid "Attachments" -msgstr "" +msgstr "Přílohy" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 msgid "Author" -msgstr "" +msgstr "Autor" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 @@ -5466,286 +5558,310 @@ msgstr "Poskytovatel" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "" +msgstr "Notices where this attachment appears" #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" -msgstr "" +msgstr "OznaÄení této přílohy" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" -msgstr "Heslo uloženo" +msgstr "ZmÄ›na hesla se nezdaÅ™ila" -#: lib/authenticationplugin.php:235 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "Heslo uloženo" +msgstr "ZmÄ›na hesla není povolena" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" -msgstr "" +msgstr "Výsledky příkazu" #: lib/channel.php:229 lib/mailhandler.php:142 msgid "Command complete" -msgstr "" +msgstr "Příkaz dokonÄen" #: lib/channel.php:240 msgid "Command failed" -msgstr "" +msgstr "Příkaz selhal" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "Vzdálený profil s nesouhlasícím profilem" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Oznámení s tímto id neexistuje." -#: lib/command.php:99 lib/command.php:596 -#, fuzzy -msgid "User has no last notice" -msgstr "Uživatel nemá profil." +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "Uživatel nemá žádné poslední oznámení" #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Nelze aktualizovat uživatele" +msgid "Could not find a user with nickname %s." +msgstr "Nelze nalézt uživatele s pÅ™ezdívkou %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 -msgid "Could not find a local user with nickname %s" -msgstr "Nelze aktualizovat uživatele" +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "Nelze nalézt místního uživatele s pÅ™ezdívkou %s" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Je nám líto, ale tento příkaz dosud nebyl implementován." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" -msgstr "" +msgstr "To nemá moc smyslu postrkovat sám sebe!" #. 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 "OdpovÄ›di na %s" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "Šťouchnutí posláno %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"Odbírám: %1$s \n" +"OdbÄ›ratelé: %2$s \n" +"Hlášky: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." -msgstr "" +msgstr "Oznámení oznaÄené jako oblíbené." -#: lib/command.php:323 -#, fuzzy -msgid "You are already a member of that group" -msgstr "Již jste pÅ™ihlášen" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 -#, fuzzy, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Nelze pÅ™esmÄ›rovat na server: %s" +#: lib/command.php:360 +#, php-format +msgid "%1$s joined group %2$s." +msgstr "%1$s se pÅ™ipojil(a) ke skupinÄ› %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "Nelze vytvoÅ™it OpenID z: %s" +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s opustil(a) skupinu %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 -#, fuzzy, php-format +#: lib/command.php:434 +#, php-format msgid "Fullname: %s" -msgstr "Celé jméno" +msgstr "Celé jméno %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:438 lib/mail.php:268 #, php-format msgid "Location: %s" -msgstr "" +msgstr "Poloha: %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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" -msgstr "" +msgstr "Domovská stránka: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" -msgstr "" +msgstr "O uživateli: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " "same server." msgstr "" +"%s je vzdálený profil, přímé zprávy můžete odesílat pouze pro uživatele na " +"stejném serveru." #. 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "Zpráva je příliÅ¡ dlouhá - maximum je %1$d znaků, poslal jsi %2$d." -#. 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 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." -msgstr "" - -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Nemůžete se registrovat, pokud nesouhlasíte s licencí." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Odstranit toto oznámení" +msgstr "Chyba pÅ™i odesílání přímé zprávy." #. 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 "SdÄ›lení" +#: lib/command.php:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "Oznámení od %s opakováno." -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Problém pÅ™i ukládání sdÄ›lení" +msgstr "Chyba nastavení uživatele" -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "Oznámení je příliÅ¡ dlouhé - maximum je %1$d znaků, poslal jsi %2$d." -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "OdpovÄ›di na %s" +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 +#, php-format +msgid "Reply to %s sent." +msgstr "OdpovÄ›Ä %s odeslána." -#: lib/command.php:573 -#, fuzzy +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." -msgstr "Problém pÅ™i ukládání sdÄ›lení" +msgstr "Problém pÅ™i ukládání sdÄ›lení." -#: lib/command.php:620 -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 "Neodeslal jste nám profil" - -#: 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 "" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "UveÄte jméno uživatele ke kterému se pÅ™ihlásit." +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "" +msgid "Can't subscribe to OMB profiles by command." +msgstr "Nelze se pÅ™ihlásit k odbÄ›ru OMB profilů příkazem." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "PÅ™ihlášeno k %s." + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "UveÄte jméno uživatele od kterého se odhlásit." + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 +#, php-format +msgid "Unsubscribed from %s." +msgstr "Odhlášeno od %s." + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." -msgstr "" +msgstr "Příkaz jeÅ¡tÄ› nebyl implementován." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "" +msgstr "Oznámení vypnuta." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." -msgstr "" +msgstr "Nelze vypnout oznámení." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." -msgstr "" +msgstr "Oznámení zapnuta." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." -msgstr "" +msgstr "Nelze zapnout oznámení." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Příkaz login je vypnut." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "Tento odkaz je použitelný pouze jednou a je platný pouze 2 minuty: %s." -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Odhlásit" +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 +#, php-format +msgid "Unsubscribed %s." +msgstr "%s odhlášen." -#: lib/command.php:778 -#, fuzzy +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste pÅ™ihlášen k nikomu." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "Neodeslal jste nám profil" -msgstr[1] "Neodeslal jste nám profil" -msgstr[2] "" +msgstr[0] "Jste pÅ™ihlášeni k této osobÄ›:" +msgstr[1] "Jste pÅ™ihlášeni k tÄ›mto lidem:" +msgstr[2] "Jste pÅ™ihlášeni k tÄ›mto lidem:" -#: lib/command.php:800 -#, fuzzy +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "Vzdálený odbÄ›r" +msgstr "Nikdo k vám není pÅ™ihlášen." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "Vzdálený odbÄ›r" -msgstr[1] "Vzdálený odbÄ›r" -msgstr[2] "" +msgstr[0] "Tato osoba je k vám pÅ™ihlášena:" +msgstr[1] "Tito lidé jsou k vám pÅ™ihlášeni:" +msgstr[2] "Tito lidé jsou k vám pÅ™ihlášeni:" -#: lib/command.php:822 -#, fuzzy +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." -msgstr "Neodeslal jste nám profil" +msgstr "Nejste Älenem žádné skupiny." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" -msgstr[0] "Neodeslal jste nám profil" -msgstr[1] "Neodeslal jste nám profil" +msgstr[0] "Jste Älenem této skupiny:" +msgstr[1] "Jste Älenem tÄ›chto skupin:" msgstr[2] "" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5786,170 +5902,203 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"Příkazy:\n" +"on - zapnout oznámení\n" +"off - vypnout oznámení\n" +"help - zobrazí tuto nápovÄ›du\n" +"follow <nickname> - PÅ™ihlásit se k uživatel\n" +"groups - seznam skupin, ke kterým jste pÅ™ipojen\n" +"subscriptions - seznam lidí, které sledujete\n" +"subscribers - seznam osob, které vás sledují\n" +"leave <pÅ™ezdívka> - Odhlásit se od uživatele\n" +"d <pÅ™ezdívka> <text> - Přímá zpráva uživateli\n" +"get <pÅ™ezdívka> - Dostanete poslední upozornÄ›ní od uživatele\n" +"whois <pÅ™ezdívka> - Získat informace o profilu uživatele\n" +"lose <pÅ™ezdívka> - Donutit uživatele pÅ™estat vás sledovat\n" +"fav <pÅ™ezdívka> - PÅ™idejte uživatelovo poslední oznámení jako 'Oblíbené'\n" +"fav #<notice_id> - PÅ™idat upozornÄ›ní s daným id jako 'Oblíbené'\n" +"repeat #<notice_id> - Opakovat oznámení s daným id\n" +"repeat <pÅ™ezdívka> - Opakovat poslední oznámení od uživatele\n" +"reply #<notice_id> - OdpovÄ›Ä na oznámení s daným id\n" +"reply <pÅ™ezdívka> - OdpovÄ›Ä na poslední oznámení od uživatele\n" +"join <skupina> - PÅ™ipojit se ke skupinÄ›\n" +"login - Získat odkaz pro pÅ™ihlášení k webovému rozhraní\n" +"drop <skupina> - Opustit skupinu\n" +"stats - získejte VaÅ¡e statistiky\n" +"stop - stejné jako 'off'\n" +"quit - stejné jako 'off'\n" +"sub <pÅ™ezdívka> - Stejné jako 'follow'\n" +"unsub <pÅ™ezdívka> - Stejné jako 'leave'\n" +"last <pÅ™ezdívka> - Stejné jako 'get'\n" +"on <pÅ™ezdívka> - Dosud neimplementován.\n" +"off <pÅ™ezdívka> - Dosud neimplementován.\n" +"nudge <pÅ™ezdívka> - PÅ™ipomenout uživateli aby nÄ›co poslal.\n" +"invite <telefonní Äíslo> - Dosud neimplementován.\n" +"track <word> - Dosud neimplementován.\n" +"untrack <word> -Dosud neimplementován.\n" +"track off - Dosud neimplementován.\n" +"untrack all - Dosud neimplementován.\n" +"tracks - Dosud neimplementován.\n" +"tracking - Dosud neimplementován.\n" #: lib/common.php:135 -#, fuzzy msgid "No configuration file found. " -msgstr "Žádný potvrzující kód." +msgstr "Žádný konfiguraÄní soubor nalezen. " #: lib/common.php:136 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "Díval jsem se po konfiguraÄních souborech na tÄ›chto místech: " #: lib/common.php:138 msgid "You may wish to run the installer to fix this." -msgstr "" +msgstr "Možná budete chtít spustit instalaÄní program abyste to vyÅ™eÅ¡ili." #: lib/common.php:139 msgid "Go to the installer." -msgstr "" +msgstr "Jdi na instalaci." #: lib/connectsettingsaction.php:110 msgid "IM" -msgstr "" +msgstr "IM" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "" +msgstr "Aktualizace z a na instant messenger (IM)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "" +msgstr "Aktualizace z a na SMS" #: lib/connectsettingsaction.php:120 -#, fuzzy msgid "Connections" -msgstr "PÅ™ipojit" +msgstr "PÅ™ipojení" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Autorizované propojené aplikace" #: lib/dberroraction.php:60 msgid "Database error" -msgstr "" +msgstr "Chyba databáze" #: lib/designsettings.php:105 -#, fuzzy msgid "Upload file" -msgstr "Upload" +msgstr "Nahrát soubor" #: lib/designsettings.php:109 -#, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "Je to příliÅ¡ dlouhé. Maximální sdÄ›lení délka je 140 znaků" +msgstr "" +"Můžete nahrát váš osobní obrázek na pozadí. Maximální velikost souboru je 2 " +"MB." #: lib/designsettings.php:418 msgid "Design defaults restored." -msgstr "" +msgstr "Obnoveno výchozí nastavení vzhledu." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" -msgstr "" +msgstr "Odebrat toto oznámení z oblíbených" #: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy msgid "Favor this notice" -msgstr "Žádné takové oznámení." +msgstr "PÅ™idat toto oznámení do oblíbených" #: lib/favorform.php:140 msgid "Favor" -msgstr "" +msgstr "Oblíbit" #: 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" -msgstr "" +msgstr "Exportovat data" #: lib/galleryaction.php:121 msgid "Filter tags" -msgstr "" +msgstr "Filtrovat tagy" #: lib/galleryaction.php:131 msgid "All" -msgstr "" +msgstr "VÅ¡echny" #: lib/galleryaction.php:139 msgid "Select tag to filter" -msgstr "" +msgstr "Zvolte znaÄku k filtrování" #: lib/galleryaction.php:140 msgid "Tag" -msgstr "" +msgstr "ZnaÄka" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "" +msgstr "Vyberte si znaÄku k zúžení seznamu" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "Jdi" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "" +msgstr "Dát tomuto uživateli roli \"%s\"" #: lib/groupeditform.php:163 -#, fuzzy msgid "URL of the homepage or blog of the group or topic" -msgstr "Adresa vaÅ¡ich stránek, blogu nebo profilu na jiných stránkách." +msgstr "URL domovské stránky nebo blogu skupiny nebo tématu" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "PopiÅ¡ sebe a své zájmy ve 140 znacích" +msgstr "PopiÅ¡te skupinu nebo téma" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "PopiÅ¡ sebe a své zájmy ve 140 znacích" +msgstr "PopiÅ¡te skupinu nebo téma ve %d znacích" #: lib/groupeditform.php:179 -#, fuzzy msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "Místo. MÄ›sto, stát." +msgstr "" +"UmístÄ›ní skupiny, pokud je nÄ›jaké, ve stylu \"mÄ›sto, stát (nebo region), zemÄ›" +"\"" #: lib/groupeditform.php:187 #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" -msgstr "" +msgstr "Další pÅ™ezdívky pro skupinu, oddÄ›lené Äárkou nebo mezerou, max %d" #: lib/groupnav.php:85 msgid "Group" -msgstr "" +msgstr "Skupina" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "Žádný takový uživatel." +msgstr "Zablokován" #: lib/groupnav.php:102 -#, fuzzy, php-format +#, php-format msgid "%s blocked users" -msgstr "Žádný takový uživatel." +msgstr "%s blokovaní uživatelé" #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Editovat vlastnosti skupiny %s" #: lib/groupnav.php:113 msgid "Logo" @@ -5958,25 +6107,25 @@ msgstr "Logo" #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "" +msgstr "PÅ™idat nebo upravit logo %s" #: lib/groupnav.php:120 #, php-format msgid "Add or edit %s design" -msgstr "" +msgstr "PÅ™idat nebo upravit vzhled %s" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" -msgstr "" +msgstr "Skupiny s nejvíce Äleny" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" -msgstr "" +msgstr "Skupiny s nejvíce příspÄ›vky" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "" +msgstr "ZnaÄky v oznámeních skupiny %s" #. TRANS: Client exception 406 #: lib/htmloutputter.php:104 @@ -5988,9 +6137,9 @@ msgid "Unsupported image file format." msgstr "Nepodporovaný formát obrázku." #: lib/imagefile.php:88 -#, fuzzy, php-format +#, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "Je to příliÅ¡ dlouhé. Maximální sdÄ›lení délka je 140 znaků" +msgstr "Ten soubor je příliÅ¡ velký. Maximální velikost souboru je %s." #: lib/imagefile.php:93 msgid "Partial upload." @@ -6005,48 +6154,44 @@ msgid "Not an image or corrupt file." msgstr "Není obrázkem, nebo jde o poÅ¡kozený soubor." #: lib/imagefile.php:122 -#, fuzzy msgid "Lost our file." -msgstr "Žádné takové oznámení." +msgstr "Ztratili jsme náš soubor." #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" -msgstr "" +msgstr "Neznámý typ souboru" #: lib/imagefile.php:244 msgid "MB" -msgstr "" +msgstr "MB" #: lib/imagefile.php:246 msgid "kB" -msgstr "" +msgstr "kB" #: lib/jabber.php:387 #, php-format msgid "[%s]" -msgstr "" +msgstr "[%s]" #: lib/jabber.php:567 #, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "Neznámý zdroj inboxu %d." #: lib/joinform.php:114 msgid "Join" -msgstr "PÅ™idat se" +msgstr "PÅ™ipojit se" #: lib/leaveform.php:114 -#, fuzzy msgid "Leave" -msgstr "Uložit" +msgstr "Opustit" #: lib/logingroupnav.php:80 -#, fuzzy msgid "Login with a username and password" -msgstr "Neplatné jméno nebo heslo" +msgstr "PÅ™ihlásit se pomocí svého uživatelského jména a hesla." #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" msgstr "VytvoÅ™it nový úÄet" @@ -6072,16 +6217,38 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" +"Ahoj,% s.\n" +"\n" +"NÄ›kdo právÄ› vložil tuto e-mailovou adresu na %s.\n" +"\n" +"Pokud jsi to byl ty, a chceÅ¡ potvrdit své zadání, použij níže uvedenou " +"adresu:\n" +"\n" +"%s\n" +"\n" +"Pokud ne, tak tuto zprávu ignoruj.\n" +"\n" +"Díky za tvůj Äas,\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 "%1 od teÄ naslouchá tvým sdÄ›lením v %2" +msgstr "%1$s od teÄ naslouchá tvým sdÄ›lením 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 "" +"Pokud si myslíte, že tento úÄet je zneužíván, můžete ho zablokovat ze svého " +"seznamu pÅ™ihlášených a reportovat jako spam adminům na %s" #. 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" @@ -6094,27 +6261,31 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1 naslouchá vaÅ¡im sdÄ›lením na %s. \n" +"%1$s nyní naslouchá vasim oznámením na %2$s.\n" "\n" -"\t%3\n" +"%3$s\n" "\n" -"S úctou váš,\n" -"%4$s.\n" +"%4$s%5$s%6$s\n" +"Váš,\n" +"%7$s.\n" +"\n" +"----\n" +"Zmeňte vaší e-mailovouadresu nebo nastavení upozornÄ›ní na %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 "O mÄ›" +msgstr "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 "" +msgstr "Nová e-mailová adresa pro psaní na %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" @@ -6126,32 +6297,40 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" +"Máte novou posílací aadresu na %1$s.\n" +"\n" +"K poslání nového oznámení poÅ¡lete e-mail na %2$s.\n" +"\n" +"Instrukce naleznete na %3$s.\n" +"\n" +"Váš,\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 "" +msgstr "status %s" #. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 +#: lib/mail.php:460 msgid "SMS confirmation" -msgstr "" +msgstr "SMS potvrzení" #. 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 "" +msgstr "%s: potvrÄte že vlastníte toto telefonní Äíslo tímto kódem:" #. 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 Vás poÅ¡Å¥ouchl" #. 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 " @@ -6166,15 +6345,26 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" +"%1$s (%2$s) by zajímalo, co poslední dobou dÄ›láte a poÅ¡touchl vás, abyste " +"poslali nÄ›jaké novinky.\n" +"\n" +"Takže Å¡up na stránky a nÄ›co poÅ¡lete :)\n" +"\n" +"%3$s\n" +"\n" +"Neodpovídejte na tento e-mail, nedostane se k nim.\n" +"\n" +"S pozdravem,\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 "Nová soukromá zpráva od %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" @@ -6192,15 +6382,29 @@ msgid "" "With kind regards,\n" "%5$s\n" msgstr "" +"%1$s (%2$s) vám poslal soukromou zprávu:\n" +"\n" +"-------------------------------------------------- ----\n" +"%3$s\n" +"-------------------------------------------------- ----\n" +"\n" +"Můžete odpovÄ›dÄ›t zde:\n" +"\n" +"%4$s\n" +"\n" +"Neodpovídejte na tento e-mail, nedostane se k nim.\n" +"\n" +"S pozdravem\n" +"%5$s\n" #. 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 od teÄ naslouchá tvým sdÄ›lením v %2" +msgstr "%s (@%s) pÅ™idal vaÅ¡e oznámení jako oblíbené" #. 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" @@ -6220,23 +6424,43 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" +"%1$s (@%7$s) právÄ› pÅ™idal vaÅ¡e oznámení z %2$s jako jedno ze svých " +"oblíbených. \n" +"\n" +" URL VaÅ¡eho oznámení je: \n" +"\n" +" %3$s \n" +"\n" +" Text VaÅ¡eho oznámení je: \n" +"\n" +" %4$s \n" +"\n" +" Můžete vidÄ›t seznam %1$S oblíbených zde: \n" +"\n" +" %5$s \n" +"\n" +" Váš, \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 "" +"Celý rozhovor si můžete pÅ™eÄíst zde: \n" +"\n" +" %s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +msgstr "%s (@%s) poslal oznámení žádající o vaÅ¡i pozornost" #. 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" @@ -6262,25 +6486,50 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) právÄ› poslal oznámení žádající o vaÅ¡i pozornost ('@-odpovÄ›Ä') " +"na %2$s.\n" +"\n" +"Oznámení je zde:\n" +"\n" +"%3$s\n" +"\n" +"Stojí v nÄ›m:\n" +"\n" +"%4$s\n" +"\n" +"%5$smůžete odpovÄ›Äet zde:\n" +"\n" +"%6$s\n" +"\n" +"Seznam vÅ¡ech @-odpovÄ›dí pro vás je zde:\n" +"\n" +"%7$s\n" +"\n" +"Váš,\n" +"%2$s\n" +"\n" +"P.S. Tato upozornÄ›ní můžete vypnout zde: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "" +msgstr "Pouze uživatel může pÅ™eÄíst své vlastní schránky." #: 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 "" +"Nemáte žádné soukromé zprávy. Můžete poslat soukromou zprávu, aby se " +"zapojili ostatní uživatelé v rozhovoru. Lidé mohou posílat zprávy jen pro " +"vaÅ¡e oÄi." -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " od " +msgstr "od" #: lib/mailhandler.php:37 msgid "Could not parse message." -msgstr "" +msgstr "Nelze zpracovat zprávu." #: lib/mailhandler.php:42 msgid "Not a registered user." @@ -6288,187 +6537,186 @@ msgstr "Není registrovaný uživatel." #: lib/mailhandler.php:46 msgid "Sorry, that is not your incoming email address." -msgstr "" +msgstr "Je nám líto, toto není vaÅ¡e příchozí e-mailová adresa." #: lib/mailhandler.php:50 msgid "Sorry, no incoming email allowed." -msgstr "" +msgstr "Je nám líto, žádný příchozí e-mail není dovolen." #: lib/mailhandler.php:228 -#, fuzzy, php-format +#, php-format msgid "Unsupported message type: %s" -msgstr "Nepodporovaný formát obrázku." +msgstr "Nepodporovaný typ zprávy: %s" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." -msgstr "" +msgstr "Nastala chyba v databázi pÅ™i ukládání souboru. Prosím zkuste to znovu." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." msgstr "" +"Velkost uploadovaného souboru pÅ™ekraÄuje upload_max_filesize limit v php.ini." #: lib/mediafile.php:147 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." msgstr "" +"Velkost uploadovaného souboru pÅ™ekraÄuje MAX_FILE_SIZE limit, které bylo " +"uvedeno v HTML formuláři." #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "" +msgstr "Nahrávaný soubor byl nahrán pouze ÄásteÄnÄ›." #: lib/mediafile.php:159 msgid "Missing a temporary folder." -msgstr "" +msgstr "Chybí doÄasný adresář." #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "NepodaÅ™ilo se zapsat soubor na disk." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +msgstr "Nahrávání souboru zastaveno rozšířením PHP." -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: lib/mediafile.php:179 lib/mediafile.php:217 msgid "File exceeds user's quota." -msgstr "" +msgstr "Soubor pÅ™ekraÄuje kvótu uživatele." -#: 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 "Soubor nemohl být pÅ™esunut do cílového adresáře." -#: 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 "Nelze aktualizovat uživatele" +msgstr "Nelze urÄit typ MIME souboru." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." -msgstr "" +msgstr "Zkuste použít jiný formát %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 není typ souboru podporovan na tomto serveru." #: lib/messageform.php:120 msgid "Send a direct notice" -msgstr "" +msgstr "PoÅ¡lete přímou zprávu" #: lib/messageform.php:146 msgid "To" -msgstr "" +msgstr "Komu:" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" -msgstr "6 a více znaků" +msgstr "Zbývá znaků" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Odeslat" #: lib/noticeform.php:160 -#, fuzzy msgid "Send a notice" -msgstr "Nové sdÄ›lení" +msgstr "Poslat oznámení" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" -msgstr "Co se dÄ›je %s?" +msgstr "Co se dÄ›je, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" -msgstr "" +msgstr "PÅ™ipojit" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" -msgstr "" +msgstr "PÅ™iložit soubor" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Nelze uložit profil" - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Nelze uložit profil" +msgstr "Sdílet mé umístÄ›ní" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "Nesdílet moje umístÄ›ní" + +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" msgstr "" +"Je nám líto, naÄítání vaší geo lokace trvá déle, než se oÄekávalo, zkuste to " +"prosím znovu pozdÄ›ji" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" -msgstr "" +msgstr "S" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" -msgstr "" +msgstr "J" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" -msgstr "" +msgstr "V" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" -msgstr "" +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 "" +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 "v" -#: lib/noticelist.php:567 -#, fuzzy +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" -msgstr "Žádný obsah!" +msgstr "v kontextu" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "VytvoÅ™it" - -#: lib/noticelist.php:629 -msgid "Reply to this notice" -msgstr "" +msgstr "Opakováno" #: lib/noticelist.php:630 -#, fuzzy -msgid "Reply" -msgstr "odpovÄ›Ä" +msgid "Reply to this notice" +msgstr "OdpovÄ›dÄ›t na toto oznámení" -#: lib/noticelist.php:674 -#, fuzzy +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "OdpovÄ›dÄ›t" + +#: lib/noticelist.php:675 msgid "Notice repeated" -msgstr "SdÄ›lení" +msgstr "SdÄ›lení opakováno" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "" +msgstr "PoÅ¡Å¥uchovat tohoto uživatele" #: lib/nudgeform.php:128 msgid "Nudge" -msgstr "" +msgstr "PoÅ¡Å¥ouchnout" #: lib/nudgeform.php:128 msgid "Send a nudge to this user" -msgstr "" +msgstr "Poslat poÅ¡Å¥ouchnutí tomuto uživateli" #: lib/oauthstore.php:283 msgid "Error inserting new profile" @@ -6476,7 +6724,7 @@ msgstr "Chyba pÅ™i vkládání nového profilu" #: lib/oauthstore.php:291 msgid "Error inserting avatar" -msgstr "Chyba pÅ™i kládání obrázku" +msgstr "Chyba pÅ™i vkládání avataru" #: lib/oauthstore.php:306 msgid "Error updating remote profile" @@ -6487,9 +6735,8 @@ msgid "Error inserting remote profile" msgstr "Chyba pÅ™i vkládaní vzdáleného profilu" #: lib/oauthstore.php:345 -#, fuzzy msgid "Duplicate notice" -msgstr "Nové sdÄ›lení" +msgstr "Odstranit toto oznámení" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." @@ -6509,28 +6756,28 @@ msgstr "Oblíbené" #: lib/personalgroupnav.php:125 msgid "Inbox" -msgstr "" +msgstr "DoruÄená poÅ¡ta" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" -msgstr "" +msgstr "VaÅ¡e příchozí zprávy" #: lib/personalgroupnav.php:130 msgid "Outbox" -msgstr "" +msgstr "Odeslaná poÅ¡ta" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "" +msgstr "VaÅ¡e odeslané zprávy" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "" +msgstr "ZnaÄky v oznámeních %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" -msgstr "" +msgstr "Neznámé" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6550,7 +6797,7 @@ msgstr "VÅ¡ichni odbÄ›ratelé" #: lib/profileaction.php:191 msgid "User ID" -msgstr "" +msgstr "ID uživatele" #: lib/profileaction.php:196 msgid "Member since" @@ -6559,15 +6806,15 @@ msgstr "ÄŒlenem od" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "" +msgstr "Denní průmÄ›r" #: lib/profileaction.php:264 msgid "All groups" -msgstr "" +msgstr "VÅ¡echny skupiny" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." -msgstr "" +msgstr "Neimplementovaná metoda." #: lib/publicgroupnav.php:78 msgid "Public" @@ -6575,183 +6822,216 @@ msgstr "VeÅ™ejné" #: lib/publicgroupnav.php:82 msgid "User groups" -msgstr "" +msgstr "Skupin uživatel" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" -msgstr "" +msgstr "Nedávné znaÄky" #: lib/publicgroupnav.php:88 msgid "Featured" -msgstr "" +msgstr "DoporuÄení" #: lib/publicgroupnav.php:92 -#, fuzzy msgid "Popular" -msgstr "Hledání lidí" +msgstr "Populární" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Žádný takový dokument." +msgstr "Chybí argument return-to." #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "Odstranit toto oznámení" +msgstr "Opakovat toto oznámení?" #: lib/repeatform.php:132 msgid "Yes" msgstr "Ano" #: lib/repeatform.php:132 -#, fuzzy msgid "Repeat this notice" -msgstr "Odstranit toto oznámení" +msgstr "Opakovat toto oznámení" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Žádný takový uživatel." +msgstr "Odebrat uživateli roli \"%s\"" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." -msgstr "" +msgstr "Nenastaven uživatel pro jednouživatelský mód" #: lib/sandboxform.php:67 msgid "Sandbox" -msgstr "" +msgstr "Sandbox" #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "Žádný takový uživatel." +msgstr "Sandboxovat tohoto uživatele" #: lib/searchaction.php:120 -#, fuzzy msgid "Search site" -msgstr "Hledat" +msgstr "Prohledat stránky" #: lib/searchaction.php:126 msgid "Keyword(s)" -msgstr "" +msgstr "KlíÄová slova" #: lib/searchaction.php:127 msgid "Search" msgstr "Hledat" #: lib/searchaction.php:162 -#, fuzzy msgid "Search help" -msgstr "Hledat" +msgstr "NápovÄ›da k hledání" #: lib/searchgroupnav.php:80 msgid "People" -msgstr "" +msgstr "Lidé" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "" +msgstr "Najít lidi na této stránce" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "" +msgstr "Najít v obsahu oznámení" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "" +msgstr "Najít skupiny na této stránce" #: lib/section.php:89 msgid "Untitled section" -msgstr "" +msgstr "Oddíl bez názvu" #: lib/section.php:106 msgid "More..." -msgstr "" +msgstr "Další…" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "Nové sdÄ›lení" +msgstr "UÅ¥iÅ¡it" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "Žádný takový uživatel." +msgstr "UtiÅ¡it tohoto uživatele" #: lib/subgroupnav.php:83 -#, fuzzy, php-format +#, php-format msgid "People %s subscribes to" -msgstr "Vzdálený odbÄ›r" +msgstr "Lidé ke kterým je %s pÅ™ihlášen" #: lib/subgroupnav.php:91 -#, fuzzy, php-format +#, php-format msgid "People subscribed to %s" -msgstr "Vzdálený odbÄ›r" +msgstr "Lidé pÅ™ihlášení k %s" #: lib/subgroupnav.php:99 #, php-format msgid "Groups %s is a member of" -msgstr "" +msgstr "Skupiny kterých je %s Älenem" #: lib/subgroupnav.php:105 msgid "Invite" -msgstr "" +msgstr "Pozvat" #: lib/subgroupnav.php:106 #, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "" +msgstr "PozvÄ›te přátele a kolegy, aby se k vám pÅ™ipojili na %s" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "" +msgstr "Mrak Å¡títků kterými se uživatelé sami oznaÄili" #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "" +msgstr "Mrak Å¡títků kterými jsou uživatelé oznaÄeni" #: lib/tagcloudsection.php:56 msgid "None" +msgstr "Nic" + +#: lib/themeuploader.php:50 +msgid "This server cannot handle theme uploads without ZIP support." +msgstr "Tento server nemůže zpracovat nahrání tématu bez podpory ZIP." + +#: lib/themeuploader.php:58 lib/themeuploader.php:61 +msgid "The theme file is missing or the upload failed." +msgstr "Chybí soubor tématu nebo se nepodaÅ™ilo nahrání." + +#: lib/themeuploader.php:91 lib/themeuploader.php:102 +#: lib/themeuploader.php:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Chyba pÅ™i ukládání tématu." + +#: lib/themeuploader.php:147 +msgid "Invalid theme: bad directory structure." +msgstr "Neplatné téma: Å¡patná adresářová struktura." + +#: lib/themeuploader.php:166 +#, php-format +msgid "Uploaded theme is too large; must be less than %d bytes uncompressed." msgstr "" +"Nahrané téma je příliÅ¡ velké, nezkomprimované musí být menší než %d bajtů." + +#: lib/themeuploader.php:178 +msgid "Invalid theme archive: missing file css/display.css" +msgstr "Neplatný archiv tématu: chybí soubor css/display.css" + +#: lib/themeuploader.php:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"Téma obsahuje neplatné jméno souboru nebo složky. Zůstaňte u písmen ASCII, " +"Äíslic, podtržítka a mínusu." + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "Téma obsahuje nebezpeÄné přípony souborů, může být nebezpeÄné." + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Téma obsahuje soubor typu '.%s', což není povoleno." + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Chyba pÅ™i otevírání archivu tématu." #: lib/topposterssection.php:74 msgid "Top posters" -msgstr "" +msgstr "Nejlepší pisálci" #: lib/unsandboxform.php:69 msgid "Unsandbox" -msgstr "" +msgstr "Odsandboxovat" #: lib/unsandboxform.php:80 -#, fuzzy msgid "Unsandbox this user" -msgstr "Žádný takový uživatel." +msgstr "Odsandboxovat tohoto uživatele" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "ZruÅ¡it utiÅ¡ení" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "Žádný takový uživatel." +msgstr "ZruÅ¡it utiÅ¡ení tohoto uživatele" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" -msgstr "" +msgstr "Odhlásit se od tohoto uživatele" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" msgstr "Odhlásit" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Uživatel nemá profil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Upravit avatar" @@ -6762,20 +7042,19 @@ msgstr "Akce uživatele" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "Probíhá mazání uživatele..." #: lib/userprofile.php:263 -#, fuzzy msgid "Edit profile settings" -msgstr "Nastavené Profilu" +msgstr "Upravit nastavení profilu" #: lib/userprofile.php:264 msgid "Edit" -msgstr "" +msgstr "Editovat" #: lib/userprofile.php:287 msgid "Send a direct message to this user" -msgstr "" +msgstr "Odeslat přímou zprávu tomuto uživateli" #: lib/userprofile.php:288 msgid "Message" @@ -6783,88 +7062,82 @@ msgstr "Zpráva" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +msgstr "Moderovat" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "Uživatel nemá profil." +msgstr "Role uživatele" #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" -msgstr "" +msgstr "Administrátor" #: lib/userprofile.php:367 msgctxt "role" msgid "Moderator" -msgstr "" +msgstr "Moderátor" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "asi pÅ™ed rokem" #: lib/webcolor.php:82 -#, fuzzy, php-format +#, php-format msgid "%s is not a valid color!" -msgstr "Stránka není platnou URL." +msgstr "%s není platná barva!" #: 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 "" +msgstr "%s není platná barva! Použijte 3 nebo 6 hex znaků." diff --git a/locale/da/LC_MESSAGES/statusnet.po b/locale/da/LC_MESSAGES/statusnet.po new file mode 100644 index 0000000000..2deacb309d --- /dev/null +++ b/locale/da/LC_MESSAGES/statusnet.po @@ -0,0 +1,5029 @@ +# Translation of StatusNet to Danish +# +# Author@translatewiki.net: Brion +# 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-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:39+0000\n" +"Language-Team: Danish\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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" + +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:498 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 "" +"Du kan forsøge at [puffe %1$s](../%2$s) fra hans eller hendes profil eller " +"[skriv noget som fanger hans eller hendes opmærksomhed](%%%%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 "" +"Hvorfor ikke [registrere en konto ](%%%%action.register%%%%) og derefter " +"puffe %s eller sende en meddelelse til hans eller hendes opmærksomhed." + +#. 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." + +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 +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 "Kunne ikke følge bruger: bruger profil ikke fundet." + +#: 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 "To gyldige bruger ID'er eller skærm-navne skal angives." + +#: 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." + +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 +msgid "You are already a member of that group." +msgstr "Du er allerede medlem af denne gruppe." + +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 +msgid "You have been blocked from that group by the admin." +msgstr "Du er blevet blokeret fra denne gruppe af administratoren." + +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, 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." + +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 +msgid "Upload failed." +msgstr "Upload 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:463 +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." + +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 +msgid "Cannot repeat your own notice." +msgstr "Kan ikke gentage din egen meddelelse." + +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 +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 "Klienten programmet skal give en \"status\" parameter med en værdi." + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:157 +#: 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:181 +#, 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 "API metode under udvikling." + +#: 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:657 +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." + +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. +#: 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:170 +#: lib/command.php:383 +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:1307 +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:657 +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 "%1$s gruppe medlemmer, side %2$d" + +#: actions/groupmembers.php:118 +msgid "A list of the users in this group." +msgstr "En liste over brugerne i denne gruppe." + +#: actions/groupmembers.php:182 lib/groupnav.php:107 +msgid "Admin" +msgstr "Administrator" + +#: actions/groupmembers.php:392 lib/blockform.php:69 +msgid "Block" +msgstr "Bloker" + +#: actions/groupmembers.php:487 +msgid "Make user an admin of the group" +msgstr "Gør bruger til administrator af gruppen" + +#: actions/groupmembers.php:519 +msgid "Make Admin" +msgstr "Gør til administrator" + +#: actions/groupmembers.php:519 +msgid "Make this user an admin" +msgstr "Gør denne bruger til administrator" + +#. 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 "%s tidslinie" + +#. 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 "Opdateringer fra medlemmer af %1$s pÃ¥ %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 "Grupper" + +#: actions/groups.php:64 +#, php-format +msgid "Groups, page %d" +msgstr "Grupper, side %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 "" +"%%%%Site.name%%%% grupperne hjælper dig med at finde og snakke med folk med " +"samme interesser. NÃ¥r du har tilmeldt sig en gruppe, kan du sende besked til " +"alle andre medlemmer ved hjælp af syntaksen \"! Gruppenavn\". Kan du ikke se " +"en gruppe, du kan lide? Prøv at [søger efter en] (%%%%action.groupsearch%%%" +"%) eller [start din egen gruppe!] (%%%%action.newgroup%%%%)" + +#: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 +msgid "Create a new group" +msgstr "Opret en ny gruppe" + +#: 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 "" +"Søg efter grupper pÃ¥ %%site.name%% efter navn, beliggenhed eller " +"beskrivelse. Adskil søge vilkÃ¥r med mellemrum, de skal mindst være 3 " +"karakterer eller derover." + +#: actions/groupsearch.php:58 +msgid "Group search" +msgstr "Gruppe søgning" + +#: actions/groupsearch.php:79 actions/noticesearch.php:117 +#: actions/peoplesearch.php:83 +msgid "No results." +msgstr "Ingen resultater." + +#: 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 "" +"Hvis du ikke kan finde den gruppe du leder efter, kan du [oprette den] (%%" +"action.newgroup%%) selv." + +#: actions/groupsearch.php:85 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and [create the group](%%" +"action.newgroup%%) yourself!" +msgstr "" +"Hvorfor ikke [registrere en konto] (%%action.register%%) og [oprette " +"gruppen] (%%action.newgroup%%) selv!" + +#: actions/groupunblock.php:91 +msgid "Only an admin can unblock group members." +msgstr "Kun en administrator kan fjerne en blokering af gruppens medlemmer." + +#: actions/groupunblock.php:95 +msgid "User is not blocked from group." +msgstr "Brugeren er ikke blokeret fra gruppen." + +#: actions/groupunblock.php:128 actions/unblock.php:86 +msgid "Error removing the block." +msgstr "Fejl ved fjernelse af blokkering." + +#. TRANS: Title for instance messaging settings. +#: actions/imsettings.php:60 +msgid "IM settings" +msgstr "Chatindstillinger" + +#. 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 "" +"Du kan sende og modtage meddelelser via Jabber/GTalk [instant messages] (%%" +"doc.im%%). Konfigurer din adresse og indstillinger nedenfor." + +#. 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 "Chatbeskeder ikke tilgængelig." + +#. 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 "Chatbesked adresse" + +#: actions/imsettings.php:113 +msgid "Current confirmed Jabber/GTalk address." +msgstr "Nuværende bekræftet Jabber / GTalk adresse." + +#. 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 "" +"Afventer bekræftelse pÃ¥ denne adresse. Tjek din Jabber/GTalk konto for en " +"besked med yderligere instruktioner. (Har du tilføje %s til din venneliste?)" + +#. 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 eller GTalk-adresse, som \"UserName@example.org\". Først skal du " +"sørge for at tilføje %s til din venneliste i din IM klient eller pÃ¥ GTalk." + +#. TRANS: Form legend for IM preferences form. +#: actions/imsettings.php:155 +msgid "IM preferences" +msgstr "Chat indstillinger" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:160 +msgid "Send me notices through Jabber/GTalk." +msgstr "Send mig meddelelser via Jabber / GTalk." + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:166 +msgid "Post a notice when my Jabber/GTalk status changes." +msgstr "Send en note, nÃ¥r min Jabber / GTalk status ændringer." + +#. 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 "Send mig svar gennem Jabber / GTalk fra folk, jeg ikke abonnerer pÃ¥." + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:179 +msgid "Publish a MicroID for my Jabber/GTalk address." +msgstr "Udgiv et MicroID for min Jabber / GTalk adresse." + +#. TRANS: Confirmation message for successful IM preferences save. +#: actions/imsettings.php:287 actions/othersettings.php:180 +msgid "Preferences saved." +msgstr "Indstillinger gemt." + +#. TRANS: Message given saving IM address without having provided one. +#: actions/imsettings.php:309 +msgid "No Jabber ID." +msgstr "Ingen Jabber ID." + +#. TRANS: Message given saving IM address that cannot be normalised. +#: actions/imsettings.php:317 +msgid "Cannot normalize that Jabber ID" +msgstr "Kan ikke normalisere denne Jabber ID" + +#. TRANS: Message given saving IM address that not valid. +#: actions/imsettings.php:322 +msgid "Not a valid Jabber ID" +msgstr "Ikke et gyldigt Jabber ID" + +#. TRANS: Message given saving IM address that is already set. +#: actions/imsettings.php:326 +msgid "That is already your Jabber ID." +msgstr "Det er allerede din 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 tilhører allerede en anden bruger." + +#. 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 "" +"En bekræftelse kode blev sendt til den IM-adresse, du har tilføjet. Du skal " +"godkende %s for at sende beskeder til dig." + +#. TRANS: Message given canceling IM address confirmation for the wrong IM address. +#: actions/imsettings.php:388 +msgid "That is the wrong IM address." +msgstr "Det er den forkerte IM-adresse." + +#. TRANS: Server error thrown on database error canceling IM address confirmation. +#: actions/imsettings.php:397 +msgid "Couldn't delete IM confirmation." +msgstr "Kunne ikke slette IM bekræftelse." + +#. TRANS: Message given after successfully canceling IM address confirmation. +#: actions/imsettings.php:402 +msgid "IM confirmation cancelled." +msgstr "IM bekræftelse afbrudt." + +#. 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 "Det er ikke din Jabber ID." + +#. TRANS: Message given after successfully removing a registered IM address. +#: actions/imsettings.php:447 +msgid "The IM address was removed." +msgstr "IM-adresse blev fjernet." + +#: actions/inbox.php:59 +#, php-format +msgid "Inbox for %1$s - page %2$d" +msgstr "Indbakke for %1$s - side %2$d" + +#: actions/inbox.php:62 +#, php-format +msgid "Inbox for %s" +msgstr "Indbakke for %s" + +#: actions/inbox.php:115 +msgid "This is your inbox, which lists your incoming private messages." +msgstr "Dette er din indbakke, der viser dine indgÃ¥ende private beskeder." + +#: actions/invite.php:39 +msgid "Invites have been disabled." +msgstr "Invitationer er blevet deaktiveret." + +#: actions/invite.php:41 +#, php-format +msgid "You must be logged in to invite other users to use %s." +msgstr "Du skal være logget ind for at invitere andre brugere til at bruge %s." + +#: actions/invite.php:72 +#, php-format +msgid "Invalid email address: %s" +msgstr "Ugyldig e-mail-adresse: %s" + +#: actions/invite.php:110 +msgid "Invitation(s) sent" +msgstr "Invitation(er), sendt" + +#: actions/invite.php:112 +msgid "Invite new users" +msgstr "Inviter nye brugere" + +#: actions/invite.php:128 +msgid "You are already subscribed to these users:" +msgstr "Du er allerede tilmeldt disse brugere:" + +#. 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:430 +#, 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 "" +"Disse mennesker er allerede brugere, og du blev automatisk tilmeldt til dem:" + +#: actions/invite.php:144 +msgid "Invitation(s) sent to the following people:" +msgstr "Invitation(er) sendt til følgende personer:" + +#: 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 "" +"Du vil fÃ¥ besked, nÃ¥r din inviterede acceptere invitationen og tilmelder sig " +"pÃ¥ netstedet. Tak for at du hjælper os med at vokse!" + +#: actions/invite.php:162 +msgid "" +"Use this form to invite your friends and colleagues to use this service." +msgstr "" +"Brug denne formular til at invitere dine venner og kolleger til at bruge " +"denne service." + +#: actions/invite.php:187 +msgid "Email addresses" +msgstr "Email-adresser" + +#: actions/invite.php:189 +msgid "Addresses of friends to invite (one per line)" +msgstr "Adresser pÃ¥ venner som skal inviteres (en pr linje)" + +#: actions/invite.php:192 +msgid "Personal message" +msgstr "Personlig besked" + +#: actions/invite.php:194 +msgid "Optionally add a personal message to the invitation." +msgstr "Hvis du vil, kan du tilføje en personlig besked til invitationen." + +#. TRANS: Send button for inviting friends +#: actions/invite.php:198 +msgctxt "BUTTON" +msgid "Send" +msgstr "Send" + +#. 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 har inviteret dig til at slutte sig til dem pÃ¥ %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 har inviteret dig til at slutte sig til sig pÃ¥ %2$s (%3$s). \n" +"\n" +"%2$s er en mikro-blogging-tjeneste, hvor du kan holde dig opdateret med folk " +"du kender og folk, der interesserer dig. \n" +"\n" +"Du kan ogsÃ¥ dele nyheder om dig selv, dine tanker, eller dit liv online med " +"folk, der kender dig. Det er ogsÃ¥ godt til at møde nye mennesker, der deler " +"dine interesser. \n" +"\n" +"%1$s skrev: \n" +"\n" +"%4$s \n" +"\n" +"Du kan se %1$s's profil side pÃ¥ %2$s her: \n" +"\n" +" %5$s \n" +"\n" +"Hvis du gerne vil prøve tjenesten, skal du klikke pÃ¥ linket nedenfor for at " +"acceptere invitationen. \n" +"\n" +" %6$s \n" +"\n" +"Hvis ikke, kan du ignorere denne besked. Tak for din tÃ¥lmodighed og din " +"tid. \n" +"\n" +"Med venlig hilsen,\n" +"%2$s\n" + +#: actions/joingroup.php:60 +msgid "You must be logged in to join a group." +msgstr "Du skal være logget ind for at deltage i en gruppe." + +#: actions/joingroup.php:88 actions/leavegroup.php:88 +msgid "No nickname or ID." +msgstr "Ingen brugernavn eller ID." + +#: actions/joingroup.php:141 +#, php-format +msgid "%1$s joined group %2$s" +msgstr "%1$s blev medlem af gruppe n %2$s" + +#: actions/leavegroup.php:60 +msgid "You must be logged in to leave a group." +msgstr "Du skal være logget pÃ¥ for at forlade en gruppe." + +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 +msgid "You are not a member of that group." +msgstr "Du er ikke medlem af denne gruppe." + +#: actions/leavegroup.php:137 +#, php-format +msgid "%1$s left group %2$s" +msgstr "%1$s forlod gruppe %2$s" + +#: actions/login.php:102 actions/otp.php:62 actions/register.php:144 +msgid "Already logged in." +msgstr "Allerede logget ind" + +#: actions/login.php:148 +msgid "Incorrect username or password." +msgstr "Forkert brugernavn eller password." + +#: actions/login.php:154 actions/otp.php:120 +msgid "Error setting user. You are probably not authorized." +msgstr "Fejl ved indstilling af bruger. Du har sandsynligvis ikke tilladelse." + +#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79 +msgid "Login" +msgstr "Log ind" + +#: actions/login.php:249 +msgid "Login to site" +msgstr "Login til webstedet" + +#: actions/login.php:258 actions/register.php:485 +msgid "Remember me" +msgstr "Husk mig" + +#: actions/login.php:259 actions/register.php:487 +msgid "Automatically login in the future; not for shared computers!" +msgstr "Automatisk login fremover, ikke for computere, der deles!" + +#: actions/login.php:269 +msgid "Lost or forgotten password?" +msgstr "Mistet eller glemt password?" + +#: actions/login.php:288 +msgid "" +"For security reasons, please re-enter your user name and password before " +"changing your settings." +msgstr "" +"Af sikkerhedsmæssige Ã¥rsager bedes du indtaste dit brugernavn og din " +"adgangskode før du ændrer dine indstillinger." + +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Log ind med dit brugernavn og password." + +#: actions/login.php:295 +#, php-format +msgid "" +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "" +"Har du ikke et brugernavn endnu? [Register] (%% action.register%%) en ny " +"konto." + +#: actions/makeadmin.php:92 +msgid "Only an admin can make another user an admin." +msgstr "Kun en admin kan gøre en anden bruger til admin." + +#: actions/makeadmin.php:96 +#, php-format +msgid "%1$s is already an admin for group \"%2$s\"." +msgstr "%1$s er allerede administrator for gruppen «%2$s»." + +#: actions/makeadmin.php:133 +#, php-format +msgid "Can't get membership record for %1$s in group %2$s." +msgstr "Kan ikke finde medlemskab oplysninger for %1$s i gruppen %2$s." + +#: actions/makeadmin.php:146 +#, php-format +msgid "Can't make %1$s an admin for group %2$s." +msgstr "Kan ikke gøre %1$s til admin for gruppen %2$s." + +#: actions/newapplication.php:52 +msgid "New Application" +msgstr "Nyt program" + +#: actions/newapplication.php:64 +msgid "You must be logged in to register an application." +msgstr "Du skal være logget ind for at registrere et program." + +#: actions/newapplication.php:143 +msgid "Use this form to register a new application." +msgstr "Brug denne formular til at registrere et nyt program." + +#: actions/newapplication.php:176 +msgid "Source URL is required." +msgstr "Kilde-URL er pÃ¥krævet." + +#: actions/newapplication.php:258 actions/newapplication.php:267 +msgid "Could not create application." +msgstr "Kunne ikke oprette programmet." + +#: actions/newgroup.php:53 +msgid "New group" +msgstr "Ny gruppe" + +#: actions/newgroup.php:110 +msgid "Use this form to create a new group." +msgstr "Brug denne formular for at oprette en ny gruppe." + +#: actions/newmessage.php:71 actions/newmessage.php:231 +msgid "New message" +msgstr "Ny besked" + +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 +msgid "You can't send a message to this user." +msgstr "Du kan ikke sende en besked til denne bruger." + +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 +msgid "No content!" +msgstr "Ingen indhold!" + +#: actions/newmessage.php:158 +msgid "No recipient specified." +msgstr "Ingen modtager specificeret." + +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 +msgid "" +"Don't send a message to yourself; just say it to yourself quietly instead." +msgstr "" +"Du kan ikke sende en besked til dig selv, bare sig det stille til dig selv i " +"stedet." + +#: actions/newmessage.php:181 +msgid "Message sent" +msgstr "Beskeden er sendt" + +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 +#, php-format +msgid "Direct message to %s sent." +msgstr "Direkte besked til %s sendt." + +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 +msgid "Ajax Error" +msgstr "Ajax Fejl" + +#: actions/newnotice.php:69 +msgid "New notice" +msgstr "Ny meddelelse" + +#: actions/newnotice.php:227 +msgid "Notice posted" +msgstr "Meddelelse gemt" + +#: 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 "" +"Søg efter indhold af meddelelser pÃ¥ %%site.name%%. Separer søgetermer med " +"mellemrum, de skal være 3 karakterer eller derover." + +#: actions/noticesearch.php:78 +msgid "Text search" +msgstr "Tekst søgning" + +#: actions/noticesearch.php:91 +#, php-format +msgid "Search results for \"%1$s\" on %2$s" +msgstr "Søgeresultater for \"%1$s\" pÃ¥ %2$s" + +#: actions/noticesearch.php:121 +#, php-format +msgid "" +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" +msgstr "" +"Vær den første til at [skrive om dette emne] (%%%%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 "" +"Hvorfor ikke [registrere en konto] (%%%%action.register%%%%) og vær den " +"første til at [skrive om dette emne ] (%%%%action.newnotice%%%%?" +"status_textarea=%s) !" + +#: actions/noticesearchrss.php:96 +#, php-format +msgid "Updates with \"%s\"" +msgstr "Opdateringer med \"%s\"" + +#: actions/noticesearchrss.php:98 +#, php-format +msgid "Updates matching search term \"%1$s\" on %2$s!" +msgstr "Opdateringer matcher søgeordet \"%1$s\" pÃ¥ %2$s!" + +#: actions/nudge.php:85 +msgid "" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." +msgstr "" +"Denne bruger tillader ikke at blive puffet, eller har ikke bekræftet eller " +"indstillet sin e-mail endnu." + +#: actions/nudge.php:94 +msgid "Nudge sent" +msgstr "Puf sendt" + +#: actions/nudge.php:97 +msgid "Nudge sent!" +msgstr "Puf sendt!" + +#: actions/oauthappssettings.php:59 +msgid "You must be logged in to list your applications." +msgstr "Du skal være logget ind for at liste dine applikationer." + +#: actions/oauthappssettings.php:74 +msgid "OAuth applications" +msgstr "OAuth programmer" + +#: actions/oauthappssettings.php:85 +msgid "Applications you have registered" +msgstr "Programmer, du har registreret" + +#: actions/oauthappssettings.php:135 +#, php-format +msgid "You have not registered any applications yet." +msgstr "Du har ikke registreret nogen programmer endnu." + +#: actions/oauthconnectionssettings.php:72 +msgid "Connected applications" +msgstr "Tilsluttede programmer" + +#: actions/oauthconnectionssettings.php:83 +msgid "You have allowed the following applications to access you account." +msgstr "Du har tilladt følgende programmer at fÃ¥ adgang din konto." + +#: actions/oauthconnectionssettings.php:175 +msgid "You are not a user of that application." +msgstr "Du er ikke bruger af dette program." + +#: actions/oauthconnectionssettings.php:186 +#, php-format +msgid "Unable to revoke access for app: %s." +msgstr "" + +#: actions/oauthconnectionssettings.php:211 +msgid "Developers can edit the registration settings for their applications " +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 "" + +#: 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/otp.php:90 +msgid "No login token requested." +msgstr "" + +#: actions/passwordsettings.php:104 +msgid "Old password" +msgstr "Gammel adgangskode" + +#: actions/passwordsettings.php:108 actions/recoverpassword.php:235 +msgid "New password" +msgstr "Ny adgangskode" + +#: 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 "Bekræft" + +#: actions/passwordsettings.php:117 +msgid "Change" +msgstr "Ændre" + +#: 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:181 +msgid "Error saving user; invalid." +msgstr "" + +#. TRANS: Menu item for site administration +#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384 +msgid "Paths" +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:238 +msgid "Site's server hostname." +msgstr "" + +#: actions/pathsadminpanel.php:242 +msgid "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 "Tema" + +#: actions/pathsadminpanel.php:264 +msgid "Theme server" +msgstr "" + +#: actions/pathsadminpanel.php:272 +msgid "Theme directory" +msgstr "" + +#: actions/pathsadminpanel.php:320 +msgid "SSL" +msgstr "" + +#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 +msgid "Never" +msgstr "Aldrig" + +#: actions/pathsadminpanel.php:325 +msgid "Always" +msgstr "Altid" + +#: 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/postnotice.php:101 +#, php-format +msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." +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: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 "Hjemmeside" + +#: 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 "Lokation" + +#: 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:235 actions/siteadminpanel.php:151 +msgid "Timezone not selected." +msgstr "" + +#: actions/public.php:83 +#, php-format +msgid "Beyond the page limit (%s)." +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:191 +msgid "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/recoverpassword.php:66 +msgid "Not a recovery code." +msgstr "" + +#: actions/recoverpassword.php:73 +msgid "Recovery code for unknown user." +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:193 +msgid "Your nickname on this server, or your registered email address." +msgstr "" + +#: actions/recoverpassword.php:208 +msgid "Reset password" +msgstr "Nulstil adgangskode" + +#: 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 "Afbryd" + +#: 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:365 +msgid "Password must be 6 chars or more." +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:205 +msgid "You can't register if you don't agree to the license." +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 "" + +#. 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: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/repeat.php:57 +msgid "Only logged-in users can repeat notices." +msgstr "" + +#: 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 "" + +#. TRANS: Menu item for site administration +#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 +#: lib/adminpanelaction.php:392 +msgid "Sessions" +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 "" + +#. TRANS: Form input field label for application icon. +#: actions/showapplication.php:159 lib/applicationeditform.php:182 +msgid "Icon" +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:236 +msgid "Reset key & secret" +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/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:243 +msgid "This is a way to share what you like." +msgstr "" + +#: actions/showgroup.php:272 actions/tagother.php:118 +#: actions/userauthorization.php:175 lib/userprofile.php:178 +msgid "URL" +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/showmessage.php:98 +msgid "Only the sender and recipient may read this message." +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: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/siteadminpanel.php:133 +msgid "Site name must have non-zero length." +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: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: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:113 +msgid "Max length for the site-wide notice is 255 chars." +msgstr "" + +#: actions/sitenoticeadminpanel.php:178 +msgid "Site-wide notice text (255 chars max; HTML okay)" +msgstr "" + +#. TRANS: Form guide in IM settings form. +#: actions/smssettings.php:133 +msgid "Awaiting confirmation on this phone number." +msgstr "" + +#. TRANS: Form field instructions in SMS settings form. +#: actions/smssettings.php:144 +msgid "Enter the code you received on your phone." +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: 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: 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: 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:133 +msgid "Snapshot frequency must be a number." +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/subscribe.php:77 +msgid "This action only accepts POST requests." +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: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/subscriptions.php:52 +#, php-format +msgid "%s subscriptions" +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:222 lib/connectsettingsaction.php:115 +msgid "SMS" +msgstr "" + +#: actions/tagother.php:65 +#, php-format +msgid "Tag %s" +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/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: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:235 +msgid "New user welcome" +msgstr "" + +#: actions/useradminpanel.php:241 +msgid "Default subscription" +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:232 +msgid "No authorization request!" +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: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: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:282 +msgid "Enjoy your hotdog!" +msgstr "" + +#: actions/usergroups.php:132 +msgid "Search for more groups" +msgstr "" + +#: actions/usergroups.php:164 +#, php-format +msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." +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 "" + +#: 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: 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: 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: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 +msgid "Problem saving notice. Too long." +msgstr "" + +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 +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:276 +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:283 +msgid "" +"Too many duplicate messages too quickly; take a breather and post again in a " +"few minutes." +msgstr "" + +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:358 classes/Notice.php:385 +msgid "Problem saving notice." +msgstr "" + +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 +msgid "Problem saving group inbox." +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 trying to subscribe while already subscribed. +#: classes/Subscription.php:80 +msgid "Already subscribed!" +msgstr "" + +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 +msgid "Not subscribed!" +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: 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:130 +msgid "Change email handling" +msgstr "" + +#. TRANS: Link description in user account settings menu. +#: lib/accountsettingsaction.php:146 +msgid "Other" +msgstr "" + +#. TRANS: Page title for a page without a title set. +#: lib/action.php:164 +msgid "Untitled page" +msgstr "" + +#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. +#: lib/action.php:449 +msgid "Primary site navigation" +msgstr "" + +#. TRANS: Tooltip for main menu option "Personal" +#: lib/action.php:455 +msgctxt "TOOLTIP" +msgid "Personal profile and friends timeline" +msgstr "" + +#. TRANS: Tooltip for main menu option "Account" +#: lib/action.php:460 +msgctxt "TOOLTIP" +msgid "Change your email, avatar, password, profile" +msgstr "" + +#. TRANS: Tooltip for main menu option "Services" +#: lib/action.php:465 +msgctxt "TOOLTIP" +msgid "Connect to services" +msgstr "" + +#. TRANS: Tooltip for menu option "Admin" +#: lib/action.php:471 +msgctxt "TOOLTIP" +msgid "Change site configuration" +msgstr "" + +#. TRANS: Tooltip for main menu option "Help" +#: lib/action.php:507 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "" + +#: lib/action.php:510 +msgctxt "MENU" +msgid "Help" +msgstr "" + +#. TRANS: Tooltip for main menu option "Search" +#: lib/action.php:513 +msgctxt "TOOLTIP" +msgid "Search for people or text" +msgstr "" + +#. TRANS: DT element for local views block. String is hidden in default CSS. +#: lib/action.php:605 +msgid "Local views" +msgstr "" + +#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. +#: lib/action.php:778 +msgid "Secondary site navigation" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to help on StatusNet. +#: lib/action.php:784 +msgid "Help" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. +#: lib/action.php:790 +msgid "FAQ" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to Terms of Service. +#: lib/action.php:795 +msgid "TOS" +msgstr "" + +#. TRANS: Secondary navigation menu option. +#: lib/action.php:802 +msgid "Source" +msgstr "" + +#: lib/action.php:810 +msgid "Badge" +msgstr "" + +#. TRANS: DT element for StatusNet software license. +#: lib/action.php:839 +msgid "StatusNet software license" +msgstr "" + +#. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. +#: lib/action.php:843 +#, 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:846 +#, 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:850 +#, 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:866 +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:873 +#, 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:880 +#, 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:884 +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:897 +#, php-format +msgid "All %1$s content and data are available under the %2$s license." +msgstr "" + +#. TRANS: Pagination message to go to a page displaying information more in the +#. TRANS: present than the currently displayed information. +#: lib/action.php:1247 +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:1257 +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 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: Menu item title/tooltip +#: lib/adminpanelaction.php:350 +msgid "Basic site configuration" +msgstr "" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:358 +msgid "Design 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: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 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: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: 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: DT element label in attachment list item. +#: lib/attachmentlist.php:265 +msgid "Author" +msgstr "" + +#: lib/attachmentnoticesection.php:67 +msgid "Notices where this attachment appears" +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:229 lib/mailhandler.php:142 +msgid "Command complete" +msgstr "" + +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 +msgid "Sorry, this command is not yet implemented." +msgstr "" + +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 +msgid "It does not make a lot of sense to nudge yourself!" +msgstr "" + +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 +#, php-format +msgid "" +"Subscriptions: %1$s\n" +"Subscribers: %2$s\n" +"Notices: %3$s" +msgstr "" + +#. TRANS: Whois output. %s is the full name of the queried user. +#: lib/command.php:434 +#, php-format +msgid "Fullname: %s" +msgstr "" + +#. TRANS: Whois output. %s is the bio information of the queried user. +#: lib/command.php:446 +#, php-format +msgid "About: %s" +msgstr "" + +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 +#, 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:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" + +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 +msgid "Error sending direct message." +msgstr "" + +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" + +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" + +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 +msgid "Can't subscribe to OMB profiles by command." +msgstr "" + +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "" + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 +msgid "Command not yet implemented." +msgstr "" + +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 +msgid "Can't turn off notification." +msgstr "" + +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "" + +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 +#, php-format +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" + +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 +#, php-format +msgid "Unsubscribed %s." +msgstr "" + +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 +msgid "No one is subscribed to you." +msgstr "" + +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 +msgid "This person is subscribed to you:" +msgid_plural "These people are subscribed to you:" +msgstr[0] "" +msgstr[1] "" + +#: lib/command.php:905 +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: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/dberroraction.php:60 +msgid "Database error" +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: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:114 +#, php-format +msgid "Add or edit %s logo" +msgstr "" + +#: lib/groupnav.php:120 +#, php-format +msgid "Add or edit %s design" +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: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: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/logingroupnav.php:86 +msgid "Sign up for a new account" +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 "" + +#: 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: 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: 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: 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: 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:42 +msgid "Not a registered user." +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: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:146 +msgid "To" +msgstr "" + +#: lib/messageform.php:159 lib/noticeform.php:186 +msgid "Available characters" +msgstr "" + +#: lib/noticeform.php:174 +#, php-format +msgid "What's up, %s?" +msgstr "" + +#: lib/noticeform.php:193 +msgid "Attach" +msgstr "" + +#: lib/noticeform.php:197 +msgid "Attach a file" +msgstr "" + +#: lib/noticeform.php:213 +msgid "Share my location" +msgstr "" + +#: lib/noticeform.php:217 +msgid "" +"Sorry, retrieving your geo location is taking longer than expected, please " +"try again later" +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:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "" + +#: lib/oauthstore.php:291 +msgid "Error inserting avatar" +msgstr "" + +#: lib/personalgroupnav.php:104 +msgid "Replies" +msgstr "" + +#: lib/personalgroupnav.php:125 +msgid "Inbox" +msgstr "" + +#: lib/personalgroupnav.php:130 +msgid "Outbox" +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 "" + +#. TRANS: Average count of posts made per day since account registration +#: lib/profileaction.php:235 +msgid "Daily average" +msgstr "" + +#: lib/profileformaction.php:123 +msgid "Unimplemented method." +msgstr "" + +#: lib/publicgroupnav.php:78 +msgid "Public" +msgstr "" + +#: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 +msgid "Recent tags" +msgstr "" + +#: lib/router.php:709 +msgid "No single user defined for single-user mode." +msgstr "" + +#: lib/sandboxform.php:67 +msgid "Sandbox" +msgstr "" + +#: lib/searchaction.php:120 +msgid "Search site" +msgstr "" + +#: lib/searchaction.php:126 +msgid "Keyword(s)" +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/section.php:89 +msgid "Untitled section" +msgstr "" + +#: lib/section.php:106 +msgid "More..." +msgstr "" + +#: lib/silenceform.php:67 +msgid "Silence" +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/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/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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/topposterssection.php:74 +msgid "Top posters" +msgstr "" + +#: lib/unsandboxform.php:69 +msgid "Unsandbox" +msgstr "" + +#: lib/unsilenceform.php:67 +msgid "Unsilence" +msgstr "" + +#: lib/unsubscribeform.php:137 +msgid "Unsubscribe" +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:264 +msgid "Edit" +msgstr "" + +#: lib/userprofile.php:326 +msgid "Moderate" +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:1102 +msgid "a few seconds ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1105 +msgid "about a minute ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1109 +#, 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:1112 +msgid "about an hour ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1116 +#, 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:1119 +msgid "about a day ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1123 +#, 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:1126 +msgid "about a month ago" +msgstr "" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1130 +#, 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:1133 +msgid "about a year ago" +msgstr "" + +#: lib/webcolor.php:123 +#, php-format +msgid "%s is not a valid color! Use 3 or 6 hex chars." +msgstr "" diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po index f8a75b1a91..8d6d9a9a74 100644 --- a/locale/de/LC_MESSAGES/statusnet.po +++ b/locale/de/LC_MESSAGES/statusnet.po @@ -1,12 +1,15 @@ # Translation of StatusNet to German # +# Author@translatewiki.net: Apmon # Author@translatewiki.net: Bavatar +# Author@translatewiki.net: Brion +# Author@translatewiki.net: Kghbln # 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 +18,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:26+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:44+0000\n" "Language-Team: German\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: de\n" "X-Message-Group: out-statusnet\n" @@ -28,7 +31,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,38 +94,38 @@ 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 -#, fuzzy msgid "No such page." msgstr "Seite nicht vorhanden" -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -130,41 +133,41 @@ 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:114 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." msgstr "" -"Dies ist die Zeitleiste für %s und Freunde aber bisher hat niemand etwas " +"Dies ist die Zeitleiste von %s und Freunden, 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 " @@ -174,85 +177,85 @@ 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?" +"Warum [registrierst du nicht ein Benutzerkonto](%%%%action.register%%%%) und " +"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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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." 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." @@ -272,7 +275,7 @@ msgstr "Konnte Profil nicht speichern." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -314,7 +317,7 @@ msgstr "Freigeben des Benutzers fehlgeschlagen." #: actions/apidirectmessage.php:89 #, php-format msgid "Direct messages from %s" -msgstr "Direkte Nachricht an %s" +msgstr "Direkte Nachrichten von %s" #: actions/apidirectmessage.php:93 #, php-format @@ -324,57 +327,58 @@ msgstr "Alle von %s gesendeten direkten Nachrichten" #: actions/apidirectmessage.php:101 #, php-format msgid "Direct messages to %s" -msgstr "Direkte Nachricht an %s" +msgstr "Direkte Nachrichten an %s" #: actions/apidirectmessage.php:105 #, php-format msgid "All the direct messages sent to %s" msgstr "Alle an %s gesendeten direkten Nachrichten" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Fehlender Nachrichtentext!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "" -"Die Nachricht ist zu lang. Die maximale Nachrichtenlänge ist 140 Zeichen." +"Die Nachricht ist zu lang. Die maximale Nachrichtenlänge ist %d Zeichen." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Empfänger nicht gefunden." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -389,9 +393,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." @@ -401,127 +405,137 @@ 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." +"Homepage ist keine gültige URL. URLs 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Ungültiges Stichwort: „%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." +msgstr "Alias kann nicht das gleiche wie der Spitzname 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 -#, 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 "Gruppe nicht gefunden!" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "Konnte Benutzer %s nicht der Gruppe %s hinzufügen." +msgstr "Konnte Benutzer %1$s nicht der Gruppe %2$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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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" +msgstr "Gruppen von %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 "Gruppen in denen %s Mitglied ist" +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 +546,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 @@ -554,7 +568,7 @@ msgstr "Benutzername oder Passwort falsch." #: actions/apioauthauthorize.php:159 msgid "Database error deleting OAuth application user." -msgstr "Datenbank Fehler beim Löschen des OAuth Anwendungs Nutzers." +msgstr "Datenbankfehler beim Löschen des OAuth Anwendungs Nutzers." #: actions/apioauthauthorize.php:185 msgid "Database error inserting OAuth application user." @@ -606,12 +620,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:463 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 +633,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 +650,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." @@ -649,70 +663,78 @@ msgstr "Du kannst den Status eines anderen Benutzers nicht löschen." msgid "No such notice." msgstr "Unbekannte Nachricht." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Du kannst deine eigenen Nachrichten nicht wiederholen." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nicht gefunden." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 +749,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 +816,7 @@ msgid "Preview" msgstr "Vorschau" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Löschen" @@ -831,17 +857,17 @@ 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 " "will not be notified of any @-replies from them." msgstr "" -"Bist du sicher, dass du den Benutzer blockieren willst? Die Verbindung zum " +"Bist du sicher, dass du den Benutzer blockieren willst? Die Verbindung zum " "Benutzer wird gelöscht, dieser kann dich in Zukunft nicht mehr abonnieren " "und bekommt keine @-Antworten." @@ -850,17 +876,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 "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" @@ -869,23 +894,24 @@ 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 -#, 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 "Diesen Benutzer blockieren" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Konnte Blockierungsdaten nicht speichern." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -895,8 +921,8 @@ msgstr "Konnte Blockierungsdaten nicht speichern." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Keine derartige Gruppe." @@ -928,9 +954,9 @@ msgstr "Diesen Benutzer freigeben" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Versenden an " +msgstr "Versenden an %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -946,7 +972,7 @@ msgstr "Dieser Bestätigungscode ist nicht für dich!" #. 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 "Nicht erkannter Adresstyp %s" @@ -1009,7 +1035,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:1307 msgid "There was a problem with your session token." msgstr "Es gab ein Problem mit deinem Sessiontoken." @@ -1042,7 +1068,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." @@ -1073,7 +1099,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Nachricht löschen" @@ -1113,105 +1139,121 @@ 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 -#, fuzzy, php-format +#: 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" "$s." msgstr "" -"Du kannst ein Hintergrundbild für Deine Gruppe hochladen. Die maximale " +"Du kannst ein Hintergrundbild für deine Gruppe hochladen. Die maximale " "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 @@ -1221,7 +1263,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" @@ -1236,7 +1278,7 @@ msgstr "Zu Favoriten hinzufügen" #: actions/doc.php:158 #, php-format msgid "No such document \"%s\"" -msgstr "Unbekanntes Dokument \"%s\"" +msgstr "Unbekanntes Dokument „%s“" #: actions/editapplication.php:54 msgid "Edit Application" @@ -1278,7 +1320,7 @@ msgstr "Homepage ist zu lang." #: actions/editapplication.php:200 actions/newapplication.php:185 msgid "Source URL is not valid." msgstr "" -"Homepage ist keine gültige URL. URL’s müssen ein Präfix wie http enthalten." +"Homepage ist keine gültige URL. URLs müssen ein Präfix wie http enthalten." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." @@ -1298,7 +1340,7 @@ msgstr "Antwort ist zu lang" #: actions/editapplication.php:225 actions/newapplication.php:215 msgid "Callback URL is not valid." -msgstr "Antwort URL ist nicht gültig" +msgstr "Antwort-URL ist nicht gültig" #: actions/editapplication.php:258 msgid "Could not update application." @@ -1336,7 +1378,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." @@ -1375,7 +1418,6 @@ msgstr "Aktuelle bestätigte E-Mail-Adresse." #: 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 "Entfernen" @@ -1385,7 +1427,7 @@ msgid "" "Awaiting confirmation on this address. Check your inbox (and spam box!) for " "a message with further instructions." msgstr "" -"Warte auf die Bestätigung dieser Adresse. Prüfe Deinen Nachrichteneingang " +"Warte auf die Bestätigung dieser Adresse. Prüfe deinen Nachrichteneingang " "(auch den Spam-Ordner) auf eine Nachricht mit weiteren Instruktionen." #. TRANS: Button label to cancel an e-mail address confirmation procedure. @@ -1394,7 +1436,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 "Abbrechen" @@ -1409,7 +1450,6 @@ msgstr "E-Mail-Adresse, beispielsweise „Benutzername@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 "Hinzufügen" @@ -1424,7 +1464,7 @@ msgstr "Eingehende E-Mail" #. 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 "Schicke ein E-Mail an diese Adresse um eine Nachricht zu posten." +msgstr "Schicke eine E-Mail an diese Adresse um eine Nachricht zu posten." #. TRANS: Instructions for incoming e-mail address input form. #. TRANS: Instructions for incoming SMS e-mail address input form. @@ -1437,16 +1477,14 @@ 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 "Neu" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Einstellungen" +msgstr "E-Mail Einstellungen" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1487,9 +1525,8 @@ msgstr "MicroID für meine E-Mail-Adresse veröffentlichen." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Design-Einstellungen gespeichert." +msgstr "E-Mail-Einstellungen gespeichert." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1502,7 +1539,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." @@ -1545,15 +1582,13 @@ msgstr "Keine ausstehende Bestätigung, die abgebrochen werden kann." #. 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 "Das ist die falsche IM-Adresse." +msgstr "Dies ist die falsche E-Mail Adresse" #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Bestätigung abgebrochen." +msgstr "E-Mail-Bestätigung abgebrochen." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1563,9 +1598,8 @@ msgstr "Dies ist nicht deine E-Mail-Adresse." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Die Adresse wurde entfernt." +msgstr "Die E-Mail-Adresse wurde entfernt." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1630,7 +1664,7 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to add a " "notice to your favorites!" msgstr "" -"Warum [registrierst Du nicht einen Account](%%%%action.register%%%%) und " +"Warum [registrierst du nicht einen Account](%%%%action.register%%%%) und " "bist der erste der eine Nachricht favorisiert!" #: actions/favoritesrss.php:111 actions/showfavorites.php:77 @@ -1661,7 +1695,7 @@ msgstr "Eine Auswahl toller Benutzer auf %s" #: actions/file.php:34 msgid "No notice ID." -msgstr "Keine Nachrichten ID" +msgstr "Keine Nachrichten-ID" #: actions/file.php:38 msgid "No notice." @@ -1704,9 +1738,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "Service nutzt unbekannte OMB-Protokollversion." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Fehler beim Aktualisieren des entfernten Profils" +msgstr "Fehler beim Aktualisieren des entfernten Profils." #: actions/getfile.php:79 msgid "No such file." @@ -1730,17 +1763,17 @@ msgstr "Auf dieser Seite können keine Benutzerrollen gewährt werden." #: actions/grantrole.php:82 msgid "User already has this role." -msgstr "Nutzer hat diese Aufgabe bereits" +msgstr "Nutzer hat bereits diese Aufgabe" #: 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." @@ -1772,10 +1805,9 @@ msgid "" "will be removed from the group, unable to post, and unable to subscribe to " "the group in the future." msgstr "" -"Bist du sicher, dass du den Benutzer \"%1$s\" in der Gruppe \"%2$s\" " -"blockieren willst? Er wird aus der Gruppe gelöscht, kann keine Beiträge mehr " -"abschicken und wird auch in Zukunft dieser Gruppe nicht mehr beitreten " -"können." +"Bist du sicher, dass du den Benutzer „%1$s“ in der Gruppe „%2$s“ blockieren " +"willst? Er wird aus der Gruppe gelöscht, kann keine Beiträge mehr abschicken " +"und wird auch in Zukunft dieser Gruppe nicht mehr beitreten können." #. TRANS: Submit button title for 'No' when blocking a user from a group. #: actions/groupblock.php:182 @@ -1789,7 +1821,7 @@ msgstr "Diesen Nutzer von der Gruppe sperren" #: actions/groupblock.php:206 msgid "Database error blocking user from group." -msgstr "Datenbank Fehler beim Versuch den Nutzer aus der Gruppe zu blockieren." +msgstr "Datenbankfehler beim Versuch den Nutzer aus der Gruppe zu blockieren." #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." @@ -1829,7 +1861,7 @@ msgstr "Gruppen-Logo" msgid "" "You can upload a logo image for your group. The maximum file size is %s." msgstr "" -"Du kannst ein Logo für Deine Gruppe hochladen. Die maximale Dateigröße ist %" +"Du kannst ein Logo für deine Gruppe hochladen. Die maximale Dateigröße ist %" "s." #: actions/grouplogo.php:365 @@ -1882,7 +1914,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" @@ -1912,11 +1944,11 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" -"Finde und rede mit Gleichgesinnten in %%%%site.name%%%% Gruppen. Nachdem du " -"einer Gruppe beigetreten bis kannst du mit \\\"!Gruppenname\\\" eine " -"Nachricht an alle Gruppenmitglieder schicken. Du kannst nach einer [Gruppe " -"suchen](%%%%action.groupsearch%%%%) oder deine eigene [Gruppe aufmachen!](%%%" -"%action.newgroup%%%%)" +"Finde und rede mit Gleichgesinnten in %%%%site.name%%%%-Gruppen. Nachdem du " +"einer Gruppe beigetreten bist kannst du mit „!Gruppenname“ eine Nachricht an " +"alle Gruppenmitglieder schicken. Du kannst nach einer [Gruppe suchen](%%%%" +"action.groupsearch%%%%) oder deine eigene [Gruppe aufmachen!](%%%%action." +"newgroup%%%%)" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 msgid "Create a new group" @@ -1956,7 +1988,7 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" -"Warum [registrierst Du nicht einen Account](%%action.register%%) und [legst " +"Warum [registrierst du nicht einen Account](%%action.register%%) und [legst " "diese Gruppe selbst an](%%action.newgroup%%)?" #: actions/groupunblock.php:91 @@ -2029,9 +2061,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Einstellungen" +msgstr "IM-Einstellungen" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2068,7 +2099,7 @@ msgstr "Keine Jabber-ID" #. TRANS: Message given saving IM address that cannot be normalised. #: actions/imsettings.php:317 msgid "Cannot normalize that Jabber ID" -msgstr "Konnte diese Jabber ID nicht normalisieren" +msgstr "Konnte diese Jabber-ID nicht normalisieren" #. TRANS: Message given saving IM address that not valid. #: actions/imsettings.php:322 @@ -2078,12 +2109,12 @@ msgstr "Ungültige Jabber-ID" #. TRANS: Message given saving IM address that is already set. #: actions/imsettings.php:326 msgid "That is already your Jabber ID." -msgstr "Diese JabberID hast du schon angegeben." +msgstr "Diese Jabber-ID hast du schon angegeben." #. 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 "Diese Jabber ID wird bereits von einem anderen Benutzer verwendet." +msgstr "Diese Jabber-ID wird bereits von einem anderen Benutzer verwendet." #. TRANS: Message given saving valid IM address that is to be confirmed. #. TRANS: %s is the IM address set for the site. @@ -2103,27 +2134,24 @@ msgstr "Das ist die falsche IM-Adresse." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Konnte E-Mail-Bestätigung nicht löschen." +msgstr "Konnte die IM-Bestätigung nicht löschen." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Bestätigung abgebrochen." +msgstr "IM-Bestätigung abgebrochen." #. 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 "Dies ist nicht deine JabberID." +msgstr "Dies ist nicht deine Jabber-ID." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Die Adresse wurde entfernt." +msgstr "Die IM-Adresse wurde entfernt." #: actions/inbox.php:59 #, php-format @@ -2146,7 +2174,7 @@ msgid "Invites have been disabled." msgstr "Einladungen wurden deaktiviert." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." msgstr "Du musst angemeldet sein, um andere Benutzer zu %s einzuladen" @@ -2169,7 +2197,7 @@ msgstr "Du hast diese Benutzer bereits abonniert:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2178,7 +2206,7 @@ msgstr "%1$s (%2$s)" msgid "" "These people are already users and you were automatically subscribed to them:" msgstr "" -"Diese Leute sind bereits registrierte Benutzer und Du hast Sie automatisch " +"Diese Leute sind bereits registrierte Benutzer und du hast Sie automatisch " "abonniert." #: actions/invite.php:144 @@ -2206,7 +2234,7 @@ msgstr "E-Mail-Adressen" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" msgstr "" -"Adressen von Freunden, die Du einladen möchtest. (Jeweils eine Adresse pro " +"Adressen von Freunden, die du einladen möchtest. (Jeweils eine Adresse pro " "Zeile)" #: actions/invite.php:192 @@ -2229,7 +2257,7 @@ msgstr "Senden" #: actions/invite.php:228 #, php-format msgid "%1$s has invited you to join them on %2$s" -msgstr "%1$s hat Dich eingeladen, auch bei %2$s mitzumachen." +msgstr "%1$s hat dich eingeladen, auch bei %2$s mitzumachen." #. 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,12 +2290,12 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" -"%1$s hat Dich eingeladen, auch bei %2$s mitzumachen. (%3$s).\n" +"%1$s hat dich eingeladen, auch bei %2$s mitzumachen. (%3$s).\n" "\n" -"%2$s ist ein Microblogging-Service der Dich über Deine Freunde auf dem " -"Laufenden hält und Deine Freunde über Dich informiert. \n" +"%2$s ist ein Microblogging-Service, der dich über deine Freunde auf dem " +"Laufenden hält und deine Freunde über dich informiert. \n" "\n" -"Du kannst Neuigkeiten über Dich und Deine Gedanken verbreiten. Lerne neue " +"Du kannst Neuigkeiten über dich und deine Gedanken verbreiten. Lerne neue " "Leute mit ähnlichen Interessen kennen. \n" "\n" "%1$s sagte:\n" @@ -2278,12 +2306,12 @@ msgstr "" "\n" "%5$s\n" "\n" -"Wenn Du den Service ausprobieren möchtest klicke den Link unten an, um die " +"Wenn du den Service ausprobieren möchtest, klicke den Link unten an, um die " "Einladung anzunehmen.\n" "\n" "%6$s\n" "\n" -"Wenn nicht, ignoriere diese Nachricht. Danke für Deine Geduld und Deine " +"Wenn nicht, ignoriere diese Nachricht. Danke für deine Geduld und deine " "Zeit\n" "\n" "Schöne Grüße von %2$s\n" @@ -2296,9 +2324,7 @@ msgstr "Du musst angemeldet sein, um Mitglied einer Gruppe zu werden." msgid "No nickname or ID." msgstr "Kein Benutzername oder 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s ist der Gruppe %2$s beigetreten" @@ -2307,51 +2333,50 @@ msgstr "%1$s ist der Gruppe %2$s beigetreten" msgid "You must be logged in to leave a group." msgstr "Du musst angemeldet sein, um aus einer Gruppe auszutreten." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Du bist kein Mitglied dieser Gruppe." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." +"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." @@ -2359,14 +2384,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Melde dich mit Nutzernamen und Passwort an. Du hast noch keinen Nutzernamen? " -"[Registriere](%%action.register%%) ein neues Konto." +"Du hast noch keinen Nutzernamen? [Registriere](%%action.register%%) ein " +"neues Konto." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2375,7 +2403,7 @@ msgstr "Nur Administratoren können andere Nutzer zu Administratoren ernennen." #: actions/makeadmin.php:96 #, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "%1$s ist bereits Administrator der Gruppe \"%2$s\"." +msgstr "%1$s ist bereits Administrator der Gruppe „%2$s“." #: actions/makeadmin.php:133 #, php-format @@ -2388,9 +2416,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "Konnte %1$s nicht zum Administrator der Gruppe %2$s machen" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Kein aktueller Status" +msgstr "Kein aktueller Status." #: actions/newapplication.php:52 msgid "New Application" @@ -2418,18 +2445,21 @@ msgstr "Neue Gruppe" #: actions/newgroup.php:110 msgid "Use this form to create a new group." -msgstr "Benutzer dieses Formular, um eine neue Gruppe zu erstellen." +msgstr "Benutze dieses Formular, um eine neue Gruppe zu erstellen." #: actions/newmessage.php:71 actions/newmessage.php:231 msgid "New message" msgstr "Neue Nachricht" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Du kannst diesem Benutzer keine Nachricht schicken." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Kein Inhalt!" @@ -2437,7 +2467,8 @@ msgstr "Kein Inhalt!" msgid "No recipient specified." msgstr "Kein Empfänger angegeben." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2447,12 +2478,14 @@ msgstr "" msgid "Message sent" msgstr "Nachricht gesendet" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Direkte Nachricht an %s abgeschickt" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax-Fehler" @@ -2460,7 +2493,7 @@ msgstr "Ajax-Fehler" msgid "New notice" msgstr "Neue Nachricht" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Nachricht hinzugefügt" @@ -2481,7 +2514,7 @@ msgstr "Volltextsuche" #: actions/noticesearch.php:91 #, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "Suchergebnisse für \"%1$s\" auf %2$s" +msgstr "Suchergebnisse für „%1$s“ auf %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2498,7 +2531,7 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" -"Warum [registrierst Du nicht einen Account](%%%%action.register%%%%) und " +"Warum [registrierst du nicht einen Account](%%%%action.register%%%%) und " "bist der erste der [auf diese Nachricht antwortet](%%%%action.newnotice%%%%?" "status_textarea=%s)!" @@ -2514,10 +2547,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,45 +2592,44 @@ msgid "You are not a user of that application." msgstr "Du bist kein Benutzer dieses Programms." #: actions/oauthconnectionssettings.php:186 -#, fuzzy, php-format +#, php-format msgid "Unable to revoke access for app: %s." -msgstr "Kann Zugang dieses Programm nicht entfernen: " +msgstr "Kann Zugang dieses Programm nicht entfernen: %s." #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." msgstr "" -"Du hast noch kein Programm die Erlaubnis gegeben dein Profil zu benutzen." +"Du hast noch keinem Programm die Erlaubnis gegeben dein Profil zu benutzen." #: actions/oauthconnectionssettings.php:211 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 -#, fuzzy +#: 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" +msgstr "Status von %1$s auf %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 "Content-Typ " +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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Kein unterstütztes Datenformat." @@ -2635,7 +2667,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)." @@ -2701,7 +2733,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" @@ -2713,11 +2745,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." @@ -2738,33 +2770,33 @@ 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" #: actions/pathsadminpanel.php:70 msgid "Path and server settings for this StatusNet site." -msgstr "Pfad- und Serverangaben für diese StatusNet Seite." +msgstr "Pfad- und Serverangaben für diese StatusNet-Website." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Theme-Verzeichnis nicht lesbar: %s" +msgstr "Theme-Verzeichnis nicht lesbar: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Avatar-Verzeichnis ist nicht beschreibbar: %s" +msgstr "Avatar-Verzeichnis ist nicht beschreibbar: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Hintergrund Verzeichnis ist nicht beschreibbar: %s" +msgstr "Hintergrund-Verzeichnis ist nicht beschreibbar: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Sprachverzeichnis nicht lesbar: %s" +msgstr "Sprachverzeichnis nicht lesbar: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2780,7 +2812,7 @@ msgstr "Server" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "Server Name der Seite" +msgstr "Server-Name der Seite" #: actions/pathsadminpanel.php:242 msgid "Path" @@ -2852,7 +2884,7 @@ msgstr "Pfad zu den Hintergrundbildern" #: actions/pathsadminpanel.php:313 msgid "Background directory" -msgstr "Hintergrund Verzeichnis" +msgstr "Hintergrund-Verzeichnis" #: actions/pathsadminpanel.php:320 msgid "SSL" @@ -2905,9 +2937,9 @@ msgid "People search" msgstr "Suche nach anderen Nutzern" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Ungültiger Personen-Tag: %s" +msgstr "Ungültiger Personen-Tag: %s." #: actions/peopletag.php:142 #, php-format @@ -2915,16 +2947,15 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "Benutzer die sich selbst mit %1$s getagged haben - Seite %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Ungültiger Nachrichteninhalt" +msgstr "Ungültiger Nachrichteninhalt." #: actions/postnotice.php:101 #, php-format msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -"Die Nachrichtenlizenz '%1$s' ist nicht kompatibel mit der Lizenz der Seite '%" -"2$s'." +"Die Nachrichtenlizenz „%1$s“ ist nicht kompatibel mit der Lizenz der Seite „%" +"2$s“." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2945,50 +2976,50 @@ 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“" +msgstr "Wo du bist, beispielsweise „Stadt, Region, Land“" #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" -msgstr "Teile meine aktuelle Position wenn ich Nachrichten sende" +msgstr "Teile meine aktuelle Position, wenn ich Nachrichten sende" #: actions/profilesettings.php:145 actions/tagother.php:149 #: actions/tagother.php:209 lib/subscriptionlist.php:106 @@ -3026,7 +3057,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)" @@ -3066,9 +3097,9 @@ msgid "Settings saved." msgstr "Einstellungen gespeichert." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "Jenseits des Seitenlimits (%s)" +msgstr "Jenseits des Seitenlimits (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3106,7 +3137,7 @@ msgstr "" #: actions/public.php:191 msgid "Be the first to post!" -msgstr "Sei der erste der etwas schreibt!" +msgstr "Sei der erste, der etwas schreibt!" #: actions/public.php:195 #, php-format @@ -3125,7 +3156,7 @@ msgid "" "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" "Das ist %%site.name%%, ein [Mikroblogging](http://de.wikipedia.org/wiki/" -"Mikroblogging) Dienst auf Basis der freien Software [StatusNet](http://" +"Mikroblogging)-Dienst auf Basis der freien Software [StatusNet](http://" "status.net/). [Melde dich jetzt an](%%action.register%%) und tausche " "Nachrichten mit deinen Freunden, Familie oder Kollegen aus! ([Mehr " "Informationen](%%doc.help%%))" @@ -3159,7 +3190,7 @@ msgstr "" #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "Sei der Erste der etwas schreibt!" +msgstr "Sei der erste, der etwas schreibt!" #: actions/publictagcloud.php:75 #, php-format @@ -3167,7 +3198,7 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" -"Warum [registrierst Du nicht einen Account](%%%%action.register%%%%) und " +"Warum [registrierst du nicht einen Account](%%%%action.register%%%%) und " "bist der erste der eine Nachricht abschickt!" #: actions/publictagcloud.php:134 @@ -3207,7 +3238,7 @@ 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 "" -"Wenn du dein Passwort vergessen hast kannst du dir ein neues an deine " +"Wenn du dein Passwort vergessen hast, kannst du dir ein neues an deine " "hinterlegte Email schicken lassen." #: actions/recoverpassword.php:158 @@ -3216,11 +3247,11 @@ msgstr "Du wurdest identifiziert. Gib ein neues Passwort ein. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "Password-Wiederherstellung" +msgstr "Passwort-Wiederherstellung" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "Spitzname oder e-mail Adresse" +msgstr "Spitzname oder E-Mail-Adresse" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." @@ -3290,7 +3321,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." @@ -3298,88 +3329,110 @@ 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:507 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 -#, fuzzy +#: 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 "" -"Hier kannst du einen neuen Zugang einrichten. Danach kannst du Nachrichten " -"und Links an deine Freunde und Kollegen schicken. " +"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" +msgstr "Längerer Name, bevorzugt dein bürgerlicher Name" -#: actions/register.php:494 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Mir ist bewusst, dass Inhalte und Daten von %1$s privat und vertraulich sind." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +msgstr "Meine Texte und Dateien verbleiben unter meinem eigenen Urheberrecht." + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. +#: actions/register.php:535 +msgid "All rights reserved." +msgstr "Alle Rechte vorbehalten." + +#. 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 "" -"außer folgende private Daten: Passwort, E-Mail-Adresse, IM-Adresse und " -"Telefonnummer." +"Abgesehen von folgenden Daten: Passwort, Email Adresse, IM-Adresse und " +"Telefonnummer, sind all meine Texte und Dateien unter %s verfügbar." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3410,9 +3463,9 @@ msgstr "" "* die [Dokumentation](%%%%doc.help%%%%) lesen um mehr über weitere Features " "zu erfahren\n" "\n" -"Danke für deine Anmeldung, wir hoffen das dir der Service gefällt." +"Danke für deine Anmeldung, wir hoffen, dass dir der Service gefällt." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3484,7 +3537,7 @@ msgstr "Nur angemeldete Nutzer können Nachrichten wiederholen." #: actions/repeat.php:64 actions/repeat.php:71 msgid "No notice specified." -msgstr "Keine Nachricht angegeen." +msgstr "Keine Nachricht angegeben." #: actions/repeat.php:76 msgid "You can't repeat your own notice." @@ -3494,7 +3547,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Wiederholt" @@ -3532,10 +3585,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 @@ -3549,12 +3602,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 @@ -3569,7 +3621,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" @@ -3583,7 +3635,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" @@ -3614,7 +3666,7 @@ msgstr "Site-Einstellungen speichern" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." -msgstr "Du musst angemeldet sein, um aus dieses Programm zu betrachten." +msgstr "Du musst angemeldet sein, um dieses Programm zu betrachten." #: actions/showapplication.php:157 msgid "Application profile" @@ -3626,7 +3678,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" @@ -3637,12 +3689,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" @@ -3666,11 +3718,11 @@ msgstr "Programminformation" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "Anwender-Schlüssel" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "Anwender-Geheimnis" #: actions/showapplication.php:273 msgid "Request token URL" @@ -3678,7 +3730,7 @@ msgstr "Anfrage-Token Adresse" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "Zugriffs-Token Adresse" +msgstr "Zugriffs-Token-Adresse" #: actions/showapplication.php:283 msgid "Authorize URL" @@ -3689,8 +3741,8 @@ msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" -"Hinweis: Wir unterstützen HMAC-SHA1 Signaturen. Wir unterstützen keine " -"Klartext Signaturen." +"Hinweis: Wir unterstützen HMAC-SHA1-Signaturen. Wir unterstützen keine " +"Klartext-Signaturen." #: actions/showapplication.php:309 msgid "Are you sure you want to reset your consumer key and secret?" @@ -3699,7 +3751,7 @@ msgstr "Bist du sicher, dass du den Schlüssel zurücksetzen willst?" #: actions/showfavorites.php:79 #, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "%1$ss favorisierte Nachrichten, Seite %2$d" +msgstr "Favorisierte Nachrichten von %1$s, Seite %2$d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." @@ -3732,24 +3784,26 @@ 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 doch einfach " +"eine interessante Nachricht, damit sich daran etwas ändert :)" #: 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." -msgstr "Dies ist ein Weg Dinge zu teilen die dir gefallen." +msgstr "Dies ist ein Weg, Dinge zu teilen, die dir gefallen." #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format @@ -3803,7 +3857,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" @@ -3817,11 +3871,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." @@ -3836,7 +3890,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." @@ -3846,10 +3900,10 @@ msgid "" msgstr "" "**%s** ist eine Benutzergruppe auf %%%%site.name%%%%, einem [Mikro-blogging-" "Dienst](http://de.wikipedia.org/wiki/Mikro-blogging) basierend auf der " -"Freien Software [StatusNet](http://status.net/). Seine Mitglieder erstellen " -"kurze Nachrichten über Ihr Leben und Interessen. " +"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" @@ -3914,7 +3968,7 @@ msgstr "FOAF von %s" #, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." msgstr "" -"Dies ist die Zeitleiste für %1$s und Freunde aber bisher hat niemand etwas " +"Dies ist die Zeitleiste von %1$s und Freunden, aber bisher hat niemand etwas " "gepostet." #: actions/showstream.php:205 @@ -3922,17 +3976,17 @@ msgid "" "Seen anything interesting recently? You haven't posted any notices yet, now " "would be a good time to start :)" msgstr "" -"In letzter Zeit irgendwas interessantes erlebt? Du hast noch nichts " +"In letzter Zeit irgendwas Interessantes erlebt? Du hast noch nichts " "geschrieben, jetzt wäre doch ein guter Zeitpunkt los zu legen :)" #: 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 @@ -3956,7 +4010,7 @@ msgid "" "[StatusNet](http://status.net/) tool. " msgstr "" "**%s** hat ein Konto auf %%%%site.name%%%%, einem [Mikro-blogging-Dienst]" -"(http://de.wikipedia.org/wiki/Mikro-blogging) basierend auf der Freien " +"(http://de.wikipedia.org/wiki/Mikro-blogging) basierend auf der freien " "Software [StatusNet](http://status.net/). " #: actions/showstream.php:305 @@ -3974,11 +4028,11 @@ msgstr "Nutzer ist bereits ruhig gestellt." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" -msgstr "Grundeinstellungen für diese StatusNet Seite." +msgstr "Grundeinstellungen für diese StatusNet-Seite." #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." -msgstr "Der Seiten Name darf nicht leer sein." +msgstr "Der Seitenname darf nicht leer sein." #: actions/siteadminpanel.php:141 msgid "You must have a valid contact email address." @@ -3994,7 +4048,6 @@ msgid "Minimum text limit is 0 (unlimited)." msgstr "Minimale Textlänge ist 0 Zeichen (unbegrenzt)" #: actions/siteadminpanel.php:171 -#, fuzzy msgid "Dupe limit must be one or more seconds." msgstr "Duplikatlimit muss mehr als 1 Sekunde sein" @@ -4008,7 +4061,7 @@ msgstr "Seitenname" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "Der Name deiner Seite, sowas wie \"DeinUnternehmen Mircoblog\"" +msgstr "Der Name deiner Seite, sowas wie „DeinUnternehmen-Microblog“" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -4026,11 +4079,11 @@ msgstr "Erstellt von Adresse" #: actions/siteadminpanel.php:235 msgid "URL used for credits link in footer of each page" msgstr "" -"Adresse die für den Credit-Link im Fußbereich auf jeder Seite benutzt wird" +"Adresse, die für den Credit-Link im Fußbereich auf jeder Seite benutzt wird" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "Kontakt-E-Mail-Adresse für Deine Site." +msgstr "Kontakt-E-Mail-Adresse für deine Site." #: actions/siteadminpanel.php:245 msgid "Local" @@ -4038,11 +4091,11 @@ msgstr "Lokal" #: actions/siteadminpanel.php:256 msgid "Default timezone" -msgstr "Standard Zeitzone" +msgstr "Standard-Zeitzone" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "Standard Zeitzone für die Seite (meistens UTC)." +msgstr "Standard-Zeitzone für die Seite (meistens UTC)." #: actions/siteadminpanel.php:262 msgid "Default language" @@ -4073,7 +4126,7 @@ msgstr "Wiederholungslimit" #: actions/siteadminpanel.php:278 msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -"Wie lange muss ein Benutzer warten bis er eine identische Nachricht " +"Wie lange muss ein Benutzer warten, bis er eine identische Nachricht " "abschicken kann (in Sekunden)." #: actions/sitenoticeadminpanel.php:56 @@ -4089,9 +4142,8 @@ msgid "Unable to save site notice." msgstr "Konnte Seitenbenachrichtigung nicht speichern" #: actions/sitenoticeadminpanel.php:113 -#, fuzzy msgid "Max length for the site-wide notice is 255 chars." -msgstr "Maximale Länge von Systembenachrichtigungen ist 255 Zeichen" +msgstr "Maximale Länge von Systembenachrichtigungen ist 255 Zeichen." #: actions/sitenoticeadminpanel.php:176 msgid "Site notice text" @@ -4115,7 +4167,7 @@ msgstr "SMS-Einstellungen" #: actions/smssettings.php:74 #, php-format msgid "You can receive SMS messages through email from %%site.name%%." -msgstr "Du kannst SMS per E-Mail empfangen von %%site.name%%." +msgstr "Du kannst SMS von %%site.name%% per E-Mail empfangen." #. TRANS: Message given in the SMS settings if SMS is not enabled on the site. #: actions/smssettings.php:97 @@ -4124,9 +4176,8 @@ msgstr "SMS ist nicht verfügbar." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM-Adresse" +msgstr "SMS-Adresse" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4150,7 +4201,6 @@ msgstr "Gib den Code ein, den du auf deinem Handy via SMS bekommen hast." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Bestätigen" @@ -4167,9 +4217,8 @@ msgstr "Telefonnummer, keine Sonder- oder Leerzeichen mit Vorwahl" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Einstellungen" +msgstr "SMS-Einstellungen" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4177,14 +4226,13 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" -"Schicke mir Nachrichten per SMS; ich weiss, dass mir dadurch hohe Kosten bei " +"Schicke mir Nachrichten per SMS; ich weiß, dass mir dadurch hohe Kosten bei " "meinem Netzbetreiber entstehen können." #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Einstellungen gesichert." +msgstr "SMS-Einstellungen gesichert." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4212,9 +4260,9 @@ 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 "" -"Ein Bestätigungscode wurde an die von Ihnen angegebene Telefonnummer " -"gesandt. Ãœberprüfen Sie bitte Ihren Posteingang (auch den Spamordner!) auf " -"den Code und die Anweisungen, um ihn zu benutzen." +"Ein Bestätigungscode wurde an die von dir angegebene Telefonnummer gesandt. " +"Ãœberprüfe bitte deinen Posteingang (auch den Spamordner!) auf den Code und " +"die Anweisungen, um ihn zu benutzen." #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4223,9 +4271,8 @@ msgstr "Die Bestätigungsnummer ist falsch." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Bestätigung abgebrochen." +msgstr "SMS-Bestätigung abgebrochen." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4235,9 +4282,8 @@ msgstr "Dies ist nicht deine Telefonnummer." #. 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-Telefonnummer" +msgstr "SMS-Telefonnummer wurde entfernt." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4268,41 +4314,41 @@ 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" #: actions/snapshotadminpanel.php:65 msgid "Manage snapshot configuration" -msgstr "Verwalten Snapshot-Konfiguration" +msgstr "Snapshot-Konfiguration verwalten" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." -msgstr "" +msgstr "Der Wert zum Ausführen von Snapshots ist ungültig." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." -msgstr "" +msgstr "Die Snapshot-Frequenz muss eine Zahl sein." #: actions/snapshotadminpanel.php:144 msgid "Invalid snapshot report URL." -msgstr "" +msgstr "Ungültige Snapshot-Berichts-URL." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" -msgstr "" +msgstr "Zufällig während Webseitenbesuchen" #: actions/snapshotadminpanel.php:201 msgid "In a scheduled job" -msgstr "" +msgstr "Als zeitlich geplanten Auftrag" #: actions/snapshotadminpanel.php:206 msgid "Data snapshots" -msgstr "" +msgstr "Daten-Snapshot" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" -msgstr "Wann sollen Statistiken zum status.net Server geschickt werden" +msgstr "Wann sollen Statistiken zum status.net-Server geschickt werden" #: actions/snapshotadminpanel.php:217 msgid "Frequency" @@ -4310,7 +4356,7 @@ msgstr "Frequenz" #: actions/snapshotadminpanel.php:218 msgid "Snapshots will be sent once every N web hits" -msgstr "" +msgstr "Snapshots werden alle N Webseitenbesuche gesendet" #: actions/snapshotadminpanel.php:226 msgid "Report URL" @@ -4318,7 +4364,7 @@ msgstr "URL melden" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "An diese Adresse werden Snapshots gesendet" #: actions/snapshotadminpanel.php:248 msgid "Save snapshot settings" @@ -4328,7 +4374,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." @@ -4365,15 +4412,15 @@ msgstr "Dies sind die Leute, die deine Nachrichten lesen." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "Dies sind die Leute, die %ss Nachrichten lesen." +msgstr "Dies sind die Leute, die Nachrichten von %s lesen." #: actions/subscribers.php:108 msgid "" "You have no subscribers. Try subscribing to people you know and they might " "return the favor" msgstr "" -"Du hast keine Abonnenten. Warum abonnierst Du nicht Leute, die Du kennst? " -"Sie werden Dir diesen Gefallen vielleicht auch tun." +"Du hast keine Abonnenten. Warum abonnierst du nicht Leute, die du kennst? " +"Sie werden dir diesen Gefallen vielleicht auch tun." #: actions/subscribers.php:110 #, php-format @@ -4386,7 +4433,7 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" -"% hat keine Abonnenten. Warum [registrierst Du nicht einen Account](%%%%" +"% hat keine Abonnenten. Warum [registrierst du nicht einen Account](%%%%" "action.register%%%%) und bist der erste?" #: actions/subscriptions.php:52 @@ -4419,8 +4466,8 @@ msgid "" msgstr "" "Du hast momentan noch niemanden abonniert. Benutze die [Personensuche](%%" "action.peoplesearch%%) um nach Freunden zu suchen oder besuche die [Beliebte " -"Benutzer](%%action.featured%%) Seite. Wenn du ein [Twitter Benutzer](%%" -"action.twittersettings%%) bist kannst du auch automatisch deine Twitter " +"Benutzer](%%action.featured%%) Seite. Wenn du ein [Twitter-Benutzer](%%" +"action.twittersettings%%) bist, kannst du auch automatisch deine Twitter-" "Freunde abonnieren." #: actions/subscriptions.php:128 actions/subscriptions.php:132 @@ -4458,7 +4505,7 @@ msgstr "Nachrichten Feed für Tag %s (Atom)" #: actions/tagother.php:39 msgid "No ID argument." -msgstr "Kein ID Argument." +msgstr "Kein ID-Argument." #: actions/tagother.php:65 #, php-format @@ -4507,10 +4554,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." @@ -4524,7 +4567,6 @@ msgid "User is not silenced." msgstr "Der Benutzer ist nicht ruhig gestellt." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." msgstr "Keine Profil-ID in der Anfrage." @@ -4537,8 +4579,8 @@ msgstr "Abbestellt" msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -"Die Benutzerlizenz ‘%1$s’ ist nicht kompatibel mit der Lizenz der Seite ‘%2" -"$s’." +"Die Benutzerlizenz „%1$s“ ist nicht kompatibel mit der Lizenz der Seite „%2" +"$s“." #. TRANS: User admin panel title #: actions/useradminpanel.php:59 @@ -4548,7 +4590,7 @@ msgstr "Benutzer" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "Nutzer Einstellungen dieser StatusNet Seite." +msgstr "Nutzer-Einstellungen dieser StatusNet-Seite." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4561,7 +4603,7 @@ msgstr "Willkommens-Nachricht ungültig. Maximale Länge sind 255 Zeichen." #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "Ungültiges Abonnement: '%1$s' ist kein Benutzer" +msgstr "Ungültiges Abonnement: „%1$s“ ist kein Benutzer" #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 @@ -4571,11 +4613,11 @@ msgstr "Profil" #: actions/useradminpanel.php:222 msgid "Bio Limit" -msgstr "Bio Limit" +msgstr "Bio-Limit" #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." -msgstr "Maximale Länge in Zeichen der Profil Bio." +msgstr "Maximale Länge in Zeichen der Profil-Bio." #: actions/useradminpanel.php:231 msgid "New users" @@ -4591,7 +4633,7 @@ msgstr "Willkommens-Nachricht für neue Nutzer (maximal 255 Zeichen)." #: actions/useradminpanel.php:241 msgid "Default subscription" -msgstr "Standard Abonnement" +msgstr "Standard-Abonnement" #: actions/useradminpanel.php:242 msgid "Automatically subscribe new users to this user." @@ -4623,7 +4665,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" @@ -4679,27 +4721,27 @@ msgstr "" #: actions/userauthorization.php:303 #, php-format msgid "Listener URI ‘%s’ not found here." -msgstr "" +msgstr "Eine Listener-URI „%s“ wurde hier nicht gefunden." #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "Die URI „%s“ für den Stream ist zu lang." #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "Die URI „%s“ für den Stream ist ein lokaler Benutzer." #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "Profiladresse '%s' ist für einen lokalen Benutzer." +msgstr "Profiladresse „%s“ ist für einen lokalen Benutzer." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "Avatar Adresse '%s' ist nicht gültig." +msgstr "Avataradresse „%s“ ist nicht gültig." #: actions/userauthorization.php:350 #, php-format @@ -4753,18 +4795,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, " @@ -4773,11 +4815,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 " @@ -4789,7 +4831,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 " @@ -4801,7 +4843,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 " @@ -4810,95 +4852,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:805 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 -msgid "You are banned from sending direct messages." -msgstr "Direktes senden von Nachrichten wurde blockiert" +#. 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 "Nirgendwo einen Datenbanknamen oder DSN gefunden." -#: classes/Message.php:61 +#. 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" + +#. 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4906,73 +4995,118 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problem bei Speichern der Nachricht." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 -#, fuzzy -msgid "Not subscribed!" -msgstr "Nicht abonniert!" +#. 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:173 -msgid "Couldn't delete self-subscription." +#. 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." + +#. 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/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Konnte OMB-Abonnement nicht löschen." - -#: classes/Subscription.php:211 -msgid "Couldn't 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." +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." @@ -5012,200 +5146,200 @@ msgid "Other" msgstr "Sonstige" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Hauptnavigation" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Eigene" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Verbinden" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Einladen" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Abmelden" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrieren" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Auf der Seite anmelden" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Anmelden" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hilf mir!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Hilfe" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Suche nach Leuten oder Text" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 msgid "Secondary site navigation" msgstr "Unternavigation" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Hilfe" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Ãœber" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "AGB" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privatsphäre" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Quellcode" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Plakette" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." @@ -5214,13 +5348,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5232,20 +5366,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:866 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:873 #, 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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5253,51 +5387,51 @@ msgstr "" "vorbehalten." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +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:1236 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:1247 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:1257 msgid "Before" msgstr "Vorher" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." -msgstr "" +msgstr "Root-Element eines Feeds erwartet, aber ganzes XML-Dokument erhalten." #: lib/activityutils.php:208 msgid "Can't handle remote content yet." msgstr "Fremdinhalt kann noch nicht eingebunden werden." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "Kann eingebundenen XML Inhalt nicht verarbeiten." +msgstr "Kann eingebundenen XML-Inhalt nicht verarbeiten." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." -msgstr "Eingebundener Base64 Inhalt kann noch nicht verarbeitet werden." +msgstr "Eingebundener Base64-Inhalt kann noch nicht verarbeitet werden." #. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights. #: lib/adminpanelaction.php:98 @@ -5323,67 +5457,67 @@ msgstr "saveSettings() noch nicht implementiert." #. TRANS: the admin panel Design. #: lib/adminpanelaction.php:284 msgid "Unable to delete design setting." -msgstr "Konnte die Design Einstellungen nicht löschen." +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" +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" +msgstr "Snapshot-Konfiguration" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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." @@ -5472,13 +5606,11 @@ msgstr "Abbrechen" #. TRANS: Application access type #: lib/applicationlist.php:136 -#, fuzzy msgid "read-write" msgstr "Lese/Schreibzugriff" #. TRANS: Application access type #: lib/applicationlist.php:138 -#, fuzzy msgid "read-only" msgstr "Schreibgeschützt" @@ -5486,14 +5618,13 @@ msgstr "Schreibgeschützt" #: lib/applicationlist.php:144 #, php-format msgid "Approved %1$s - \"%2$s\" access." -msgstr "" +msgstr "Genehmigte %1$s - „%2$s“ Zugriff." #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Entfernen" +msgstr "Widerrufen" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5518,11 +5649,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" @@ -5538,44 +5669,53 @@ msgstr "Befehl ausgeführt" msgid "Command failed" msgstr "Befehl fehlgeschlagen" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." msgstr "Nachricht mit dieser ID existiert nicht" -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." msgstr "Benutzer hat keine letzte Nachricht" #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Die bestätigte E-Mail-Adresse konnte nicht gespeichert werden." +msgid "Could not find a user with nickname %s." +msgstr "Konnte keinen Nutzer mit dem Namen %s finden" #. 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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" +msgid "Could not find a local user with nickname %s." msgstr "Konnte keinen lokalen Nutzer mit dem Nick %s finden" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Leider ist dieser Befehl noch nicht implementiert." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Es macht keinen Sinn dich selbst anzustupsen!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Stups an %s geschickt" +msgid "Nudge sent to %s." +msgstr "Stups an %s abgeschickt" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5586,55 +5726,53 @@ msgstr "" "Abonnenten: %2$s\n" "Mitteilungen: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Nachricht als Favorit markiert." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Du bist bereits Mitglied dieser Gruppe" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Konnte Benutzer %s nicht der Gruppe %s hinzufügen." +msgid "%1$s joined group %2$s." +msgstr "%1$s ist der Gruppe %2$s beigetreten." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s hat die Gruppe %2$s verlassen." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Homepage: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Ãœber: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5645,143 +5783,169 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" "Nachricht zu lang - maximal %1$d Zeichen erlaubt, du hast %2$d gesendet." -#. 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 "Direkte Nachricht an %s abgeschickt" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Fehler beim Senden der Nachricht" -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Du kannst deine eigenen Nachrichten nicht wiederholen." - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Nachricht bereits wiederholt" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Nachricht von %s wiederholt" +msgid "Notice from %s repeated." +msgstr "Nachricht von %s wiederholt." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Fehler beim Wiederholen der Nachricht" -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Nachricht zu lange - maximal %d Zeichen erlaubt, du hast %d gesendet" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" +"Nachricht zu lange - maximal %1$d Zeichen erlaubt, du hast %2$ gesendet" -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" +msgid "Reply to %s sent." msgstr "Antwort an %s gesendet" -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Problem beim Speichern der Nachricht." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "Gib den Namen des Benutzers an, den du abonnieren möchtest" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." -msgstr "OMB Profile können nicht mit einem Kommando abonniert werden." +msgstr "OMB-Profile können nicht mit einem Kommando abonniert werden." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "%s abonniert" +msgid "Subscribed to %s." +msgstr "%s abboniert" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "Gib den Namen des Benutzers ein, den du nicht mehr abonnieren möchtest" -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "%s nicht mehr abonniert" +msgid "Unsubscribed from %s." +msgstr "Abgemeldet von %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Befehl noch nicht implementiert." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Benachrichtigung deaktiviert." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Konnte Benachrichtigung nicht deaktivieren." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Benachrichtigung aktiviert." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Konnte Benachrichtigung nicht aktivieren." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Anmeldung ist abgeschaltet" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Die Anmeldung ist deaktiviert" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "Der Link ist nur einmal benutzbar und für eine Dauer von 2 Minuten: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "Der Link ist nur einmal und für eine Dauer von 2 Minuten gültig: %s" -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" +msgid "Unsubscribed %s." msgstr "%s nicht mehr abonniert" -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Du hast niemanden abonniert." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "Du hast diese Benutzer bereits abonniert:" +msgstr[0] "Du hast diesen Benutzer bereits abonniert:" msgstr[1] "Du hast diese Benutzer bereits abonniert:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "Niemand hat Dich abonniert." +msgstr "Niemand hat dich abonniert." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "Die Gegenseite konnte Dich nicht abonnieren." -msgstr[1] "Die Gegenseite konnte Dich nicht abonnieren." +msgstr[0] "Die Gegenseite konnte dich nicht abonnieren." +msgstr[1] "Die Gegenseite konnte dich nicht abonnieren." -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Du bist in keiner Gruppe Mitglied." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Du bist Mitglied dieser Gruppe:" msgstr[1] "Du bist Mitglied dieser Gruppen:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5914,7 +6078,7 @@ msgstr "" #: lib/designsettings.php:418 msgid "Design defaults restored." -msgstr "Standard Design wieder hergestellt." +msgstr "Standard-Design wieder hergestellt." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" @@ -5975,7 +6139,7 @@ msgstr "Los geht's" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "Teile dem Benutzer die \"%s\" Rolle zu" +msgstr "Teile dem Benutzer die „%s“-Rolle zu" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" @@ -5993,8 +6157,7 @@ msgstr "Beschreibe die Gruppe oder das Thema in %d Zeichen" #: lib/groupeditform.php:179 msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "" -"Ort der Gruppe, optional, beispielsweise „Stadt, Gebiet (oder Region), Land“" +msgstr "Ort der Gruppe, optional, beispielsweise „Stadt, Region, Land“" #: lib/groupeditform.php:187 #, php-format @@ -6058,9 +6221,9 @@ msgid "Unsupported image file format." msgstr "Bildformat wird nicht unterstützt." #: lib/imagefile.php:88 -#, fuzzy, php-format +#, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "Du kannst ein Logo für Deine Gruppe hochladen." +msgstr "Du kannst ein Logo für deine Gruppe hochladen." #: lib/imagefile.php:93 msgid "Partial upload." @@ -6068,7 +6231,7 @@ msgstr "Unvollständiges Hochladen." #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." -msgstr "Systemfehler beim hochladen der Datei." +msgstr "Systemfehler beim Hochladen der Datei." #: lib/imagefile.php:109 msgid "Not an image or corrupt file." @@ -6098,7 +6261,7 @@ msgstr "[%s]" #: lib/jabber.php:567 #, php-format msgid "Unknown inbox source %d." -msgstr "Unbekannte inbox Quelle %d." +msgstr "Unbekannte inbox-Quelle %d." #: lib/joinform.php:114 msgid "Join" @@ -6142,7 +6305,7 @@ msgstr "" "\n" "jemand hat diese E-Mail-Adresse gerade auf %s eingegeben.\n" "\n" -"Falls Du es warst und Du Deinen Eintrag bestätigen möchtest, benutze\n" +"Falls du es warst und du deinen Eintrag bestätigen möchtest, benutze\n" "bitte diese URL:\n" "\n" "%s\n" @@ -6158,8 +6321,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" @@ -6182,23 +6355,23 @@ msgstr "" "%7$s.\n" "\n" "----\n" -"Du kannst Deine E-Mail-Adresse und die Benachrichtigungseinstellungen auf %8" +"Du kannst deine E-Mail-Adresse und die Benachrichtigungseinstellungen auf %8" "$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" @@ -6220,30 +6393,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 "%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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "Warte auf die Bestätigung dieser Telefonnummer." +msgstr "" +"%s: bestätige mit folgendem Code, dass es sich um deine Telefonnummer " +"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 " @@ -6258,10 +6433,10 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" -"%1$s (%2$s) fragt sicht, was Du zur Zeit wohl so machst und lädt Dich ein, " +"%1$s (%2$s) fragt sicht, was du zur Zeit wohl so machst und lädt dich ein, " "etwas Neues zu posten.\n" "\n" -"Lass von Dir hören :)\n" +"Lass von dir hören :)\n" "\n" "%3$s\n" "\n" @@ -6271,13 +6446,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" @@ -6295,7 +6470,7 @@ msgid "" "With kind regards,\n" "%5$s\n" msgstr "" -"%1$s (%2$s) hat Dir eine private Nachricht geschickt:\n" +"%1$s (%2$s) hat dir eine private Nachricht geschickt:\n" "\n" "------------------------------------------------------\n" "%3$s\n" @@ -6311,13 +6486,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" @@ -6349,22 +6524,25 @@ 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 "" +"Die komplette Unterhaltung kann hier gelesen werden:\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) 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" @@ -6390,6 +6568,29 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) hat dir gerade eine Nachricht (eine '@-Antwort') auf %2$s " +"gesendet.\n" +"\n" +"Die Nachricht findest du hier:\n" +"\n" +"%3$s\n" +"\n" +"Sie lautet:\n" +"\n" +"%4$s\n" +"\n" +"%5$sHier kannst du auf die Nachricht antworten:\n" +"\n" +"%6$s\n" +"\n" +"Eine Liste aller @-Antworten an dich findest du hier:\n" +"\n" +"%7$s\n" +"\n" +"Hochachtungsvoll dein,\n" +"%2$s\n" +"\n" +"P.S. Diese E-Mail Benachrichtigung kannst du hier deaktivieren: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6402,9 +6603,9 @@ msgid "" msgstr "" "Du hast keine privaten Nachrichten. Du kannst anderen private Nachrichten " "schicken, um sie in eine Konversation zu verwickeln. Andere Leute können Dir " -"Nachrichten schicken, die nur Du sehen kannst." +"Nachrichten schicken, die nur du sehen kannst." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "von" @@ -6432,13 +6633,13 @@ msgstr "Nachrichten-Typ %s wird nicht unterstützt." #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" -"Beim Speichern der Datei trat ein Datenbank Fehler auf. Bitte versuche es " +"Beim Speichern der Datei trat ein Datenbankfehler auf. Bitte versuche es " "noch einmal." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." msgstr "" -"Die Größe der hoch geladenen Datei überschreitet die upload_max_filesize " +"Die Größe der hochgeladenen Datei überschreitet die upload_max_filesize " "Angabe in der php.ini." #: lib/mediafile.php:147 @@ -6446,8 +6647,8 @@ msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." msgstr "" -"Die Größe der hoch geladenen Datei überschreitet die MAX_FILE_SIZE Angabe, " -"die im HTML Formular angegeben wurde." +"Die Größe der hochgeladenen Datei überschreitet die MAX_FILE_SIZE Angabe, " +"die im HTML-Formular angegeben wurde." #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." @@ -6465,24 +6666,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." @@ -6495,11 +6696,11 @@ msgstr "Versende eine direkte Nachricht" msgid "To" msgstr "An" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Verfügbare Zeichen" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Senden" @@ -6508,81 +6709,85 @@ msgstr "Senden" msgid "Send a notice" msgstr "Nachricht senden" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Was ist los, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Anhängen" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Datei anhängen" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Teile meinen Aufenthaltsort" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Teile meinen Aufenthaltsort nicht" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" msgstr "" -"Es tut uns Leid, aber die Abfrage deiner GPS Position hat zu lange gedauert. " +"Es tut uns leid, aber die Abfrage deiner GPS-Position hat zu lange gedauert. " "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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "Web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "im Zusammenhang" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Wiederholt von" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Auf diese Nachricht antworten" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Antworten" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Nachricht wiederholt" @@ -6655,7 +6860,7 @@ msgstr "Deine gesendeten Nachrichten" msgid "Tags in %s's notices" msgstr "Stichworte in %ss Nachrichten" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Unbekannter Befehl" @@ -6692,7 +6897,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." @@ -6716,10 +6921,9 @@ msgstr "Beliebte Benutzer" msgid "Popular" msgstr "Beliebte Beiträge" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Kein id Argument." +msgstr "Kein Rückkehr Argument." #: lib/repeatform.php:107 msgid "Repeat this notice?" @@ -6736,9 +6940,9 @@ msgstr "Diese Nachricht wiederholen" #: lib/revokeroleform.php:91 #, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Widerrufe die \"%s\" Rolle von diesem Benutzer" +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." @@ -6788,7 +6992,7 @@ msgstr "Abschnitt ohne Titel" #: lib/section.php:106 msgid "More..." -msgstr "Mehr..." +msgstr "Mehr …" #: lib/silenceform.php:67 msgid "Silence" @@ -6825,17 +7029,65 @@ msgstr "Lade Freunde und Kollegen ein dir auf %s zu folgen" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "" +msgstr "Personen-Tagwolke, wie man sich selbst markiert hat." #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "" +msgstr "Personen-Tag, wie markiert wurde" #: lib/tagcloudsection.php:56 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Speicherung des Themes fehlgeschlagen." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "Theme enthält unsichere Dateierweiterungen; könnte unsicher sein." + +#: lib/themeuploader.php:241 +#, 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:259 +msgid "Error opening theme archive." +msgstr "Fehler beim Öffnen des Theme-Archives." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Top-Schreiber" @@ -6864,11 +7116,6 @@ msgstr "Lösche dein Abonnement von diesem Benutzer" msgid "Unsubscribe" msgstr "Abbestellen" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "Benutzer %s (%d) hat kein Profil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Avatar bearbeiten" @@ -6879,11 +7126,11 @@ msgstr "Benutzeraktionen" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "Löschung des Nutzers in Arbeit..." +msgstr "Löschung des Nutzers in Arbeit …" #: lib/userprofile.php:263 msgid "Edit profile settings" -msgstr "Profil Einstellungen ändern" +msgstr "Profil-Einstellungen ändern" #: lib/userprofile.php:264 msgid "Edit" @@ -6916,56 +7163,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "vor einem Jahr" @@ -6978,9 +7225,3 @@ msgstr "%s ist keine gültige Farbe!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s ist keine gültige Farbe! Verwenden Sie 3 oder 6 Hex-Zeichen." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Nachricht zu lang - maximal %1$d Zeichen erlaubt, du hast %2$d gesendet." diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po index 8fc8ac6c41..7923464797 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:29+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:46+0000\n" "Language-Team: Greek\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,38 +86,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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:114 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,102 +169,48 @@ 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:120 -#: actions/apitimelinehome.php:121 -#, php-format -msgid "Updates from %1$s and friends on %2$s!" -msgstr "" - -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 -#: 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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Απέτυχε η ενημέÏωση του χÏήστη." - -#: 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 "" - -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Απέτυχε η αποθήκευση του Ï€Ïοφίλ." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -284,20 +230,10 @@ msgstr "" msgid "Unable to save your design settings." msgstr "" -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Απέτυχε η ενημέÏωση του χÏήστη." - #: actions/apiblockcreate.php:105 msgid "You cannot block yourself!" msgstr "Δεν μποÏείτε να κάνετε φÏαγή στον εαυτό σας!" -#: actions/apiblockcreate.php:126 -msgid "Block user failed." -msgstr "" - #: actions/apiblockdestroy.php:114 msgid "Unblock user failed." msgstr "" @@ -322,47 +258,36 @@ msgstr "" msgid "All the direct messages sent to %s" msgstr "" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "" -#: actions/apidirectmessagenew.php:146 -msgid "Recipient user not found." -msgstr "" - -#: actions/apidirectmessagenew.php:150 +#: 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 -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 -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 "" +"Δε μποÏÏŽ να ακολουθήσω το χÏήστη: ο χÏήστης %s είναι ήδη στη λίστα σου." #: actions/apifriendshipscreate.php:118 #, php-format @@ -371,143 +296,109 @@ 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." +#: 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." +#: actions/apifriendshipsshow.php:142 +msgid "Could not find target user." msgstr "Απέτυχε η ενημέÏωση του χÏήστη." -#: actions/apifriendshipsshow.php:142 -#, fuzzy -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/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 -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 "Μήνυμα" +msgstr "" -#: actions/apigroupcreate.php:275 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 -#, 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 -msgid "You are already a member of that group." -msgstr "" - -#: actions/apigroupjoin.php:119 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ" +msgstr "Δεν ήταν δυνατή η δημιουÏγία ομάδας." -#: actions/apigroupleave.php:114 -msgid "You are not a member of this group." -msgstr "" - -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 #, 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 -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/apigrouplist.php:108 #, php-format -msgid "%s groups" +msgid "%1$s groups %2$s is a member of." msgstr "" -#: actions/apigrouplistall.php:95 +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "ομάδες του χÏήστη %s" @@ -517,21 +408,20 @@ msgid "No oauth_token parameter provided." msgstr "" #: 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 @@ -544,14 +434,12 @@ msgid "Invalid nickname / password!" msgstr "" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s" +msgstr "" #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s" +msgstr "" #: actions/apioauthauthorize.php:214 #, php-format @@ -594,12 +482,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:463 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 +495,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,131 +512,78 @@ 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 "" -#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 -#: actions/deletenotice.php:52 actions/shownotice.php:92 -msgid "No such notice." -msgstr "" - -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." - -#: actions/apistatusesretweet.php:91 -#, fuzzy -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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, php-format -msgid "That's too long. Max notice size is %d chars." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 -msgid "Not found." -msgstr "" - -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, 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:107 actions/publicrss.php:103 -#, php-format -msgid "%s public timeline" -msgstr "" - -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" -#: actions/apitimelineretweetedtome.php:111 -#, php-format -msgid "Repeated to %s" -msgstr "" - #: actions/apitimelineretweetsofme.php:114 #, php-format 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/attachment.php:73 -msgid "No such attachment." -msgstr "" - -#: 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 "" - -#: actions/avatarbynickname.php:64 -msgid "No size." -msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Η μέθοδος του ΑΡΙ είναι υπό κατασκευή." #: actions/avatarbynickname.php:69 msgid "Invalid size." msgstr "" -#. TRANS: Link description in user account settings menu. -#: actions/avatarsettings.php:67 actions/showgroup.php:230 -#: lib/accountsettingsaction.php:118 -msgid "Avatar" -msgstr "" - #: actions/avatarsettings.php:78 #, php-format msgid "You can upload your personal avatar. The maximum file size is %s." @@ -776,18 +611,10 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "ΔιαγÏαφή" -#: actions/avatarsettings.php:166 actions/grouplogo.php:236 -msgid "Upload" -msgstr "" - -#: actions/avatarsettings.php:231 actions/grouplogo.php:289 -msgid "Crop" -msgstr "" - #: actions/avatarsettings.php:305 msgid "No file uploaded." msgstr "" @@ -796,33 +623,15 @@ msgstr "" msgid "Pick a square area of the image to be your avatar" msgstr "" -#: actions/avatarsettings.php:347 actions/grouplogo.php:380 -msgid "Lost our file data." -msgstr "" - -#: actions/avatarsettings.php:370 -msgid "Avatar updated." -msgstr "" - #: actions/avatarsettings.php:373 msgid "Failed updating avatar." msgstr "" #: actions/avatarsettings.php:397 -#, fuzzy msgid "Avatar deleted." -msgstr "Ρυθμίσεις OpenID" +msgstr "Η κατάσταση διεγÏάφη." -#: actions/block.php:69 -#, fuzzy -msgid "You already blocked that user." -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." - -#: actions/block.php:105 actions/block.php:128 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,43 +643,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/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 -msgid "Block this user" -msgstr "" - -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -880,21 +671,20 @@ msgstr "" #: 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 -#, fuzzy +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 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 "%1$s και φίλοι, σελίδα 2%$d" #: actions/blockedfromgroup.php:115 msgid "A list of the users blocked from joining this group." @@ -908,39 +698,16 @@ msgstr "" msgid "Unblock" msgstr "" -#: actions/blockedfromgroup.php:320 lib/unblockform.php:80 -msgid "Unblock this user" -msgstr "" - -#. TRANS: Title for mini-posting window loaded from bookmarklet. -#: actions/bookmarklet.php:51 -#, fuzzy, php-format -msgid "Post to %s" -msgstr "ομάδες του χÏήστη %s" - -#: actions/confirmaddress.php:75 -msgid "No confirmation code." -msgstr "" - #: actions/confirmaddress.php:80 msgid "Confirmation code not found." msgstr "Ο κωδικός επιβεβαίωσης δεν βÏέθηκε." -#: actions/confirmaddress.php:85 -msgid "That confirmation code is not for you!" -msgstr "" - #. 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 "" -#. TRANS: Client error for an already confirmed email/jabbel/sms address. -#: actions/confirmaddress.php:96 -msgid "That address has already been confirmed." -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. #. TRANS: Server error thrown on database error updating IM preferences. @@ -963,9 +730,8 @@ msgid "Couldn't delete email confirmation." msgstr "Απέτυχε η διαγÏαφή email επιβεβαίωσης." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Επιβεβαίωση διεÏθυνσης" +msgstr "ΤÏέχουσα επιβεβαιωμένη email διεÏθυνση." #: actions/confirmaddress.php:161 #, php-format @@ -976,38 +742,12 @@ msgstr "" msgid "Conversation" msgstr "Συζήτηση" -#: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 -#: lib/profileaction.php:229 lib/searchgroupnav.php:82 -msgid "Notices" -msgstr "" - -#: actions/deleteapplication.php:63 -#, fuzzy -msgid "You must be logged in to delete an application." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: actions/deleteapplication.php:71 -#, fuzzy -msgid "Application not found." -msgstr "Ο κωδικός επιβεβαίωσης δεν βÏέθηκε." - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Ομάδες με τα πεÏισσότεÏα μέλη" - #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." msgstr "" -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "Δεν υπάÏχει τέτοιο σελίδα." - #: actions/deleteapplication.php:149 msgid "" "Are you sure you want to delete this application? This will clear all data " @@ -1015,33 +755,14 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." - #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -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 -#: 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:63 -#: lib/settingsaction.php:72 -msgid "Not logged in." -msgstr "" +msgstr "ΔιαγÏάψτε αυτόν τον χÏήστη" #: actions/deletenotice.php:71 -#, fuzzy msgid "Can't delete this notice." -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." +msgstr "Είσαι σίγουÏος ότι θες να διαγÏάψεις αυτό το μήνυμα;" #: actions/deletenotice.php:103 msgid "" @@ -1059,19 +780,8 @@ msgstr "Είσαι σίγουÏος ότι θες να διαγÏάψεις αυ #. TRANS: Submit button title for 'No' when deleting a notice. #: actions/deletenotice.php:151 -#, fuzzy msgid "Do not delete this notice" -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." - -#. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 -msgid "Delete this notice" -msgstr "" - -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "Απέτυχε η ενημέÏωση του χÏήστη." +msgstr "ΔιαγÏαφή μηνÏματος" #: actions/deleteuser.php:74 msgid "You can only delete local users." @@ -1103,48 +813,45 @@ 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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Η αÏχική σελίδα δεν είναι έγκυÏο URL." - -#: actions/designadminpanel.php:376 -#, fuzzy -msgid "Change logo" -msgstr "Αλλάξτε τον κωδικό σας" - -#: actions/designadminpanel.php:381 -msgid "Site logo" msgstr "" -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" -msgstr "Αλλαγή" +#: actions/designadminpanel.php:426 +msgid "Change logo" +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" @@ -1152,70 +859,63 @@ 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/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 "" - -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "" @@ -1229,21 +929,6 @@ msgstr "" msgid "No such document \"%s\"" msgstr "" -#: actions/editapplication.php:54 -#, fuzzy -msgid "Edit Application" -msgstr "Δεν υπάÏχει τέτοιο σελίδα." - -#: actions/editapplication.php:66 -msgid "You must be logged in to edit an application." -msgstr "" - -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." -msgstr "Δεν υπάÏχει τέτοιο σελίδα." - #: actions/editapplication.php:161 msgid "Use this form to edit your application." msgstr "" @@ -1252,39 +937,14 @@ msgstr "" msgid "Name is required." msgstr "" -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Το ονοματεπώνυμο είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ (μέγιστο 255 χαÏακτ.)." - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Το ψευδώνυμο είναι ήδη σε χÏήση. Δοκιμάστε κάποιο άλλο." - -#: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy -msgid "Description is required." -msgstr "ΠεÏιγÏαφή" - #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "Η αÏχική σελίδα δεν είναι έγκυÏο URL." - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "" -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "Η τοποθεσία είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· (μέγιστο 255 χαÏακτ.)." - #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." msgstr "" @@ -1298,18 +958,8 @@ msgid "Callback URL is not valid." msgstr "" #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: actions/editgroup.php:56 -#, php-format -msgid "Edit %s group" -msgstr "" - -#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -msgid "You must be logged in to create a group." -msgstr "" +msgstr "Απέτυχε η ενημέÏωση του χÏήστη." #: actions/editgroup.php:107 actions/editgroup.php:172 #: actions/groupdesignsettings.php:107 actions/grouplogo.php:109 @@ -1321,9 +971,9 @@ msgid "Use this form to edit the group." msgstr "" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "Το βιογÏαφικό είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ (μέγιστο 140 χαÏακτ.)." +msgstr "Η πεÏιγÏαφή είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· (μέγιστο %d χαÏακτ.)." #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format @@ -1331,14 +981,13 @@ msgid "Invalid alias: \"%s\"" msgstr "" #: actions/editgroup.php:258 -#, fuzzy msgid "Could not update group." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "Δεν ήταν δυνατή η δημιουÏγία ομάδας." -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "Δεν ήταν δυνατή η δημιουÏγία ομάδας." #: actions/editgroup.php:280 msgid "Options saved." @@ -1346,9 +995,8 @@ msgstr "" #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Ρυθμίσεις Email" +msgstr "Ρυθμίσεις του άβαταÏ" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1357,13 +1005,6 @@ msgstr "Ρυθμίσεις Email" msgid "Manage how you get email from %%site.name%%." msgstr "" -#. 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 "ΔιευθÏνσεις email" - #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." @@ -1382,24 +1023,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 "" -"Αναμένωντας επιβεβαίωση σε αυτή τη διεÏθυνση. Έλεγξε το mail σου (και το " -"φάκελο spam!) για μήνυμα με πεÏαιτέÏω οδηγίες. " - -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "ΑκÏÏωση" +"Έχει αποσταλεί ένας κωδικός επιβεβαίωσης στην διεÏθυνση email που " +"Ï€Ïοσθέσατε. Ελέγξτε τα εισεÏχόμενα (και τον φάκελο ανεπιθÏμητης " +"αλληλογÏαφίας) για τον κωδικό και για το πως να τον χÏησιμοποιήσετε." #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 @@ -1411,10 +1041,9 @@ msgstr "ΔιεÏθυνση email, Ï€.χ: \"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. @@ -1443,9 +1072,8 @@ msgstr "" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "ΠÏοτιμήσεις" +msgstr "ΔιευθÏνσεις email" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1477,43 +1105,11 @@ msgstr "" msgid "I want to post notices by email." msgstr "Θέλω να δημοσιεÏω ενημεÏώσεις μέσω email" -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:219 -msgid "Publish a MicroID for my email address." -msgstr "" - -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Οι Ï€Ïοτιμήσεις αποθηκεÏτηκαν" - -#. TRANS: Message given saving e-mail address without having provided one. -#: actions/emailsettings.php:353 -msgid "No email address." -msgstr "" - #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 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/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 -msgid "That is already your email address." -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 "" - #. 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. @@ -1532,41 +1128,10 @@ msgstr "" "Ï€Ïοσθέσατε. Ελέγξτε τα εισεÏχόμενα (και τον φάκελο ανεπιθÏμητης " "αλληλογÏαφίας) για τον κωδικό και για το πως να τον χÏησιμοποιήσετε." -#. 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 "" - -#. 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 "Εισάγετε ψευδώνυμο ή διεÏθυνση email." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -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 "" - -#. TRANS: Message given after successfully removing a registered e-mail address. -#: actions/emailsettings.php:479 -#, fuzzy -msgid "The email address was removed." -msgstr "Η διεÏθυνση του εισεÏχόμενου email αφαιÏέθηκε." - -#: actions/emailsettings.php:493 actions/smssettings.php:568 -msgid "No incoming email address." -msgstr "" +msgstr "Επιβεβαίωση διεÏθυνσης email" #. TRANS: Server error thrown on database error removing incoming e-mail address. #. TRANS: Server error thrown on database error adding incoming e-mail address. @@ -1580,11 +1145,6 @@ msgstr "Απέτυχε η ενημέÏωση εγγÏαφής του χÏήστ msgid "Incoming email address removed." msgstr "Η διεÏθυνση του εισεÏχόμενου email αφαιÏέθηκε." -#. 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 "" - #: actions/favor.php:79 msgid "This notice is already a favorite!" msgstr "" @@ -1593,16 +1153,6 @@ msgstr "" msgid "Disfavor favorite" msgstr "" -#: actions/favorited.php:65 lib/popularnoticesection.php:91 -#: lib/publicgroupnav.php:93 -msgid "Popular notices" -msgstr "" - -#: actions/favorited.php:67 -#, php-format -msgid "Popular notices, page %d" -msgstr "" - #: actions/favorited.php:79 msgid "The most popular notices on the site right now." msgstr "" @@ -1624,41 +1174,19 @@ msgid "" "notice to your favorites!" msgstr "" -#: actions/favoritesrss.php:111 actions/showfavorites.php:77 -#: lib/personalgroupnav.php:115 -#, php-format -msgid "%s's favorite notices" -msgstr "" - #: actions/favoritesrss.php:115 #, php-format msgid "Updates favored by %1$s on %2$s!" msgstr "" -#: actions/featured.php:69 lib/featureduserssection.php:87 -#: lib/publicgroupnav.php:89 -msgid "Featured users" -msgstr "" - -#: actions/featured.php:71 -#, php-format -msgid "Featured users, page %d" -msgstr "" - #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" msgstr "" -#: actions/file.php:34 -#, fuzzy -msgid "No notice ID." -msgstr "Μήνυμα" - #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Μήνυμα" +msgstr "ΔιαγÏαφή μηνÏματος" #: actions/file.php:42 msgid "No attachments." @@ -1676,10 +1204,6 @@ msgstr "" msgid "User being listened to does not exist." msgstr "" -#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 -msgid "You can use the local subscription!" -msgstr "" - #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." msgstr "" @@ -1689,42 +1213,32 @@ msgid "You are not authorized." msgstr "" #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Απέτυχε η μετατÏοπή αιτοÏμενων tokens σε tokens Ï€Ïόσβασης." +msgstr "" #: 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 "Απέτυχε η αποθήκευση του Ï€Ïοφίλ." - #: actions/getfile.php:79 -#, fuzzy msgid "No such file." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "Κανένας τέτοιος χÏήστης." #: actions/getfile.php:83 -#, fuzzy msgid "Cannot read file." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +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 "" #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "Ομάδες με τα πεÏισσότεÏα μέλη" +msgstr "" #: actions/grantrole.php:82 msgid "User already has this role." @@ -1732,13 +1246,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 "" @@ -1755,10 +1269,6 @@ msgstr "" msgid "User is already blocked from group." msgstr "" -#: actions/groupblock.php:100 -msgid "User is not a member of group." -msgstr "" - #: actions/groupblock.php:134 actions/groupmembers.php:360 msgid "Block user from group" msgstr "" @@ -1771,11 +1281,6 @@ msgid "" "the group in the future." msgstr "" -#. 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 "" - #. TRANS: Submit button title for 'Yes' when blocking a user from a group. #: actions/groupblock.php:189 msgid "Block this user from this group" @@ -1803,21 +1308,6 @@ msgid "" "palette of your choice." 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 "Απέτυχε η ενημέÏωση του χÏήστη." - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy -msgid "Design preferences saved." -msgstr "Οι Ï€Ïοτιμήσεις αποθηκεÏτηκαν" - -#: actions/grouplogo.php:142 actions/grouplogo.php:195 -msgid "Group logo" -msgstr "" - #: actions/grouplogo.php:153 #, php-format msgid "" @@ -1828,25 +1318,10 @@ msgstr "" msgid "Pick a square area of the image to be the logo." msgstr "" -#: actions/grouplogo.php:399 -#, fuzzy -msgid "Logo updated." -msgstr "ΑποσÏνδεση" - #: actions/grouplogo.php:401 msgid "Failed updating logo." msgstr "" -#: actions/groupmembers.php:100 lib/groupnav.php:92 -#, php-format -msgid "%s group members" -msgstr "" - -#: 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 "" @@ -1863,11 +1338,6 @@ msgstr "" msgid "Make user an admin of the group" msgstr "" -#: actions/groupmembers.php:519 -#, fuzzy -msgid "Make Admin" -msgstr "ΔιαχειÏιστής" - #: actions/groupmembers.php:519 msgid "Make this user an admin" msgstr "" @@ -1876,7 +1346,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" @@ -1887,16 +1357,6 @@ msgstr "χÏονοδιάγÏαμμα του χÏήστη %s" 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 "" @@ -1908,9 +1368,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 @@ -1956,9 +1415,8 @@ msgstr "" #. TRANS: Title for instance messaging settings. #: 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. @@ -1972,33 +1430,19 @@ 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 "Η αÏχική σελίδα δεν είναι έγκυÏο URL." +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 "ΔιευθÏνσεις email" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." msgstr "ΤÏέχουσα επιβεβαιωμένη Jabber/GTalk διεÏθυνση." -#. TRANS: Form note in IM settings form. -#. TRANS: %s is the IM address set for the site. -#: actions/imsettings.php:124 -#, fuzzy, 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 "" -"Αναμένωντας επιβεβαίωση σε αυτή τη διεÏθυνση. Έλεγξε το Jabber/GTalk " -"λογαÏιασμό σου για μήνυμα με πεÏαιτέÏω οδηγίες. (ΠÏόσθεσες το χÏήστη %s στη " -"λίστα φίλων?)" - #. TRANS: IM address input field instructions in IM settings form. #. TRANS: %s is the IM address set for the site. #: actions/imsettings.php:140 @@ -2010,9 +1454,8 @@ 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 @@ -2029,41 +1472,21 @@ msgstr "" 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 "Αδυναμία κανονικοποίησης του Jabber ID" -#. 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 @@ -2080,35 +1503,12 @@ msgstr "" msgid "That is the wrong IM address." msgstr "" -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Απέτυχε η διαγÏαφή email επιβεβαίωσης." - -#. TRANS: Message given after successfully canceling IM address confirmation. -#: actions/imsettings.php:402 -#, fuzzy -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 -#, fuzzy -msgid "The IM address was removed." -msgstr "Η διεÏθυνση του εισεÏχόμενου email αφαιÏέθηκε." - -#: 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" @@ -2123,32 +1523,8 @@ 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 "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: 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 @@ -2166,11 +1542,6 @@ 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" msgstr "ΔιευθÏνσεις email" @@ -2179,10 +1550,6 @@ msgstr "ΔιευθÏνσεις email" 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 "" @@ -2236,65 +1603,42 @@ 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 "Μήνυμα" - -#. 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 "" +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: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 -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,15 +1646,11 @@ msgstr "" "Για λόγους ασφαλείας, παÏακαλώ εισάγετε ξανά το όνομα χÏήστη και τον κωδικό " "σας, Ï€Ïιν αλλάξετε τις Ïυθμίσεις σας." -#: actions/login.php:270 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2322,28 +1662,14 @@ 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 "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: actions/makeadmin.php:146 -#, fuzzy, php-format -msgid "Can't make %1$s an admin for group %2$s." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "" #: actions/microsummary.php:69 msgid "No current status." msgstr "" -#: actions/newapplication.php:52 -#, fuzzy -msgid "New Application" -msgstr "Δεν υπάÏχει τέτοιο σελίδα." - -#: actions/newapplication.php:64 -msgid "You must be logged in to register an application." -msgstr "" - #: actions/newapplication.php:143 msgid "Use this form to register a new application." msgstr "" @@ -2353,61 +1679,34 @@ msgid "Source URL is required." msgstr "" #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: actions/newgroup.php:53 -msgid "New group" -msgstr "" +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 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 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 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 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 "" @@ -2420,9 +1719,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 @@ -2444,13 +1743,13 @@ msgid "Updates with \"%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 @@ -2465,32 +1764,14 @@ msgstr "" msgid "You must be logged in to list your applications." msgstr "" -#: actions/oauthappssettings.php:74 -msgid "OAuth applications" -msgstr "" - #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Δεν είστε μέλος καμίας ομάδας." - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2504,46 +1785,31 @@ msgstr "" msgid "Developers can edit the registration settings for their applications " msgstr "" -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy -msgid "Notice has no profile." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: actions/oembed.php:86 actions/shownotice.php:175 +#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') +#: actions/oembed.php:159 #, php-format -msgid "%1$s's status on %2$s" +msgid "Content type %s not supported." msgstr "" -#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png') -#: actions/oembed.php:158 -#, 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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 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 -#, fuzzy msgid "Other settings" -msgstr "Ρυθμίσεις OpenID" +msgstr "Ρυθμίσεις του άβαταÏ" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2557,51 +1823,30 @@ msgstr "" 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 -#, fuzzy -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 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." 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" @@ -2616,18 +1861,8 @@ msgid "Change password" msgstr "Αλλαγή κωδικοÏ" #: actions/passwordsettings.php:69 -#, fuzzy msgid "Change your password." -msgstr "Αλλαγή κωδικοÏ" - -#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy -msgid "Password change" -msgstr "Ο κωδικός αποθηκεÏτηκε." - -#: actions/passwordsettings.php:104 -msgid "Old password" -msgstr "" +msgstr "Αλλάξτε τον κωδικό σας" #: actions/passwordsettings.php:108 actions/recoverpassword.php:235 msgid "New password" @@ -2638,7 +1873,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 "Επιβεβαίωση" @@ -2650,11 +1885,7 @@ msgstr "" msgid "Change" msgstr "Αλλαγή" -#: actions/passwordsettings.php:154 actions/register.php:230 -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 "Οι κωδικοί δεν ταυτίζονται." @@ -2675,7 +1906,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 "" @@ -2684,24 +1915,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 "Η αÏχική σελίδα δεν είναι έγκυÏο URL." +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Η αÏχική σελίδα δεν είναι έγκυÏο URL." +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Η αÏχική σελίδα δεν είναι έγκυÏο URL." +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Η αÏχική σελίδα δεν είναι έγκυÏο URL." +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2712,9 +1943,8 @@ msgid "Site" msgstr "" #: actions/pathsadminpanel.php:238 -#, fuzzy msgid "Server" -msgstr "ΑποχώÏηση" +msgstr "" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." @@ -2724,10 +1954,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -msgid "Site path" -msgstr "" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2761,33 +1987,21 @@ msgid "Theme directory" msgstr "" #: actions/pathsadminpanel.php:279 -#, fuzzy msgid "Avatars" -msgstr "Ρυθμίσεις OpenID" +msgstr "Ρυθμίσεις του άβαταÏ" #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "Ρυθμίσεις OpenID" +msgstr "Ρυθμίσεις του άβαταÏ" #: actions/pathsadminpanel.php:288 -#, fuzzy msgid "Avatar path" -msgstr "Ρυθμίσεις OpenID" - -#: actions/pathsadminpanel.php:292 -#, fuzzy -msgid "Avatar directory" -msgstr "Ρυθμίσεις OpenID" +msgstr "Ρυθμίσεις του άβαταÏ" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" msgstr "" -#: actions/pathsadminpanel.php:305 -msgid "Background server" -msgstr "" - #: actions/pathsadminpanel.php:309 msgid "Background path" msgstr "" @@ -2800,11 +2014,6 @@ msgstr "" msgid "SSL" msgstr "" -#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy -msgid "Never" -msgstr "ΑποχώÏηση" - #: actions/pathsadminpanel.php:324 msgid "Sometimes" msgstr "" @@ -2821,11 +2030,6 @@ msgstr "" msgid "When to use SSL" msgstr "" -#: actions/pathsadminpanel.php:335 -#, fuzzy -msgid "SSL server" -msgstr "ΑποχώÏηση" - #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" @@ -2841,10 +2045,6 @@ msgid "" "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." @@ -2856,19 +2056,14 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "" #: 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 "" -#: 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." @@ -2882,47 +2077,38 @@ 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 "ΠεÏιγÏάψτε την ομάδα ή το θέμα χÏησιμοποιώντας μέχÏι %d χαÏακτήÏες" -#: actions/profilesettings.php:125 actions/register.php:464 -#, 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 -msgid "Where you are, like \"City, State (or Region), Country\"" -msgstr "" - #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" msgstr "" @@ -2954,27 +2140,15 @@ msgstr "" msgid "What timezone are you normally in?" msgstr "" -#: actions/profilesettings.php:167 -#, fuzzy -msgid "" -"Automatically subscribe to whoever subscribes to me (best for non-humans)" -msgstr "" -"Αυτόματα γίνε συνδÏομητής σε όσους γίνονται συνδÏομητές σε μένα (χÏήση " -"κυÏίως από λογισμικό και όχι ανθÏώπους)" - -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, 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." 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\"" @@ -2985,42 +2159,27 @@ msgid "Couldn't update user for autosubscribe." msgstr "Απέτυχε η ενημέÏωση του χÏήστη για την αυτόματη συνδÏομή." #: actions/profilesettings.php:363 -#, fuzzy msgid "Couldn't save location prefs." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "Απέτυχε η αποθήκευση του Ï€Ïοφίλ." #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Απέτυχε η αποθήκευση του Ï€Ïοφίλ." #: actions/profilesettings.php:383 -#, fuzzy 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 "" +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 "" @@ -3030,15 +2189,7 @@ msgid "Public Stream Feed (RSS 2.0)" msgstr "" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Δημόσια Ïοή %s" - -#: 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 @@ -3093,18 +2244,6 @@ msgid "" "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 "" @@ -3113,10 +2252,6 @@ msgstr "" 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 "" @@ -3125,24 +2260,10 @@ msgstr "" msgid "Could not update user with confirmed email address." msgstr "Απέτυχε η ενημέÏωση χÏήστη μέσω επιβεβαιωμένης email διεÏθυνσης." -#: 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 "" @@ -3151,14 +2272,6 @@ msgstr "" 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 "" @@ -3171,10 +2284,6 @@ msgstr "" msgid "6 or more characters, and don't forget it!" msgstr "6 ή πεÏισσότεÏοι χαÏακτήÏες και μην το ξεχάσετε!" -#: actions/recoverpassword.php:243 -msgid "Reset" -msgstr "" - #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." msgstr "Εισάγετε ψευδώνυμο ή διεÏθυνση email." @@ -3187,10 +2296,6 @@ msgstr "" 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 " @@ -3211,89 +2316,89 @@ msgstr "Ο κωδικός Ï€Ïέπει να είναι 6 χαÏακτήÏες ή msgid "Password and confirmation do not match." msgstr "Ο κωδικός και η επιβεβαίωση του δεν ταυτίζονται." -#: actions/recoverpassword.php:388 actions/register.php:248 -msgid "Error setting user." -msgstr "" - #: 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 -msgid "Registration successful" -msgstr "" - -#: actions/register.php:114 actions/register.php:507 lib/logingroupnav.php:85 -msgid "Register" -msgstr "" - -#: actions/register.php:135 -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 -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:494 -#, fuzzy, php-format +#: 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 "" -"εκτός από τα εξής Ï€Ïοσωπικά δεδομένα: κωδικός Ï€Ïόσβασης, διεÏθυνση email, " -"διεÏθυνση IM, τηλεφωνικό νοÏμεÏο." -#: actions/register.php:542 -#, 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" @@ -3310,23 +2415,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"ΣυγχαÏητήÏια, %s! και καλωσήÏθες στο %%%%site.name%%%%. Από εδώ μποÏείς " -"να...\n" -"\n" -"* Πας στο [your profile](%s) και να στείλεις το Ï€Ïώτο σου μήνυμα.\n" -"* ΠÏοσθέσεις ένα [Jabber/GTalk address](%%%%action.imsettings%%%%) ώστε να " -"δέχεσε μηνÏματα στο instant messager σου.\n" -"* [Search for people](%%%%action.peoplesearch%%%%) που μποÏεί να ξέÏεις ή " -"που έχουν τα ίδια ενδιαφέÏοντα με σένα. \n" -"* ΕνημεÏώσεις το Ï€Ïοφίλ σου [profile settings](%%%%action.profilesettings%%%" -"%) για να μάθουν οι άλλοι πεÏισσότεÏα για σένα. \n" -"* Διαβάσεις τα [online docs](%%%%doc.help%%%%) για λειτουÏγίες που μποÏεί να " -"μην έχεις μάθει ακόμα. \n" -"\n" -"ΕυχαÏιστοÏμε που εγγÏάφηκες και ευχόμαστε να πεÏάσεις καλά με την υπηÏεσία " -"μας." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3342,19 +2432,6 @@ msgid "" "microblogging site](%%doc.openmublog%%), enter your profile URL below." msgstr "" -#: actions/remotesubscribe.php:112 -msgid "Remote subscribe" -msgstr "" - -#: actions/remotesubscribe.php:124 -#, fuzzy -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 "Το ψευδώνυμο του χÏήστη που θέλετε να παÏακολουθήσετε" @@ -3367,11 +2444,6 @@ msgstr "" 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 "" @@ -3385,70 +2457,43 @@ msgid "That’s a local profile! Login to subscribe." msgstr "" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "Απέτυχε η μετατÏοπή αιτοÏμενων tokens σε tokens Ï€Ïόσβασης." +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 "Μήνυμα" - #: 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:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "ΔημιουÏγία" +msgstr "Επαναλαμβάνεται από" #: actions/repeat.php:119 -#, fuzzy 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 "" +msgstr "Επαναλαμβάνεται από" #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "Ροή φίλων του/της %s" +msgstr "Ροή φίλων του/της %s (RSS 1.0)" #: actions/replies.php:152 -#, fuzzy, php-format +#, 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" - -#: 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." -msgstr "" +msgid "Replies feed for %s (Atom)" +msgstr "Ροή φίλων του/της %s (Atom)" #: actions/replies.php:204 #, php-format @@ -3460,8 +2505,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 @@ -3470,18 +2515,16 @@ 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 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 msgid "You cannot sandbox users on this site." @@ -3493,7 +2536,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 "" @@ -3519,13 +2562,8 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "Ρυθμίσεις OpenID" - -#: actions/showapplication.php:82 -msgid "You must be logged in to view an application." -msgstr "" +msgstr "Αποθήκευση Ïυθμίσεων Ï€Ïόσβασης" #: actions/showapplication.php:157 msgid "Application profile" @@ -3536,30 +2574,12 @@ msgstr "" msgid "Icon" msgstr "" -#. TRANS: Form input field label for application name. -#: actions/showapplication.php:169 actions/version.php:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Ψευδώνυμο" - #. TRANS: Form input field label. -#: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy -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 -#: 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" @@ -3603,34 +2623,25 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Είσαι σίγουÏος ότι θες να διαγÏάψεις αυτό το μήνυμα;" - #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "%s και οι φίλοι του/της" - -#: actions/showfavorites.php:132 -msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "%1$s και φίλοι, σελίδα 2%$d" #: actions/showfavorites.php:171 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "Ροή φίλων του/της %s" +msgstr "Ροή φίλων του/της %s (RSS 1.0)" #: actions/showfavorites.php:178 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "Ροή φίλων του/της %s" +msgstr "Ροή φίλων του/της %s (RSS 2.0)" #: actions/showfavorites.php:185 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "Ροή φίλων του/της %s" +msgstr "Ροή φίλων του/της %s (Atom)" #: actions/showfavorites.php:206 msgid "" @@ -3641,94 +2652,54 @@ 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 "" -#: actions/showgroup.php:82 lib/groupnav.php:86 -#, php-format -msgid "%s group" -msgstr "" - #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ" +msgstr "%1$s και φίλοι, σελίδα 2%$d" #: 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 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 -#, 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 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: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 +2709,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." @@ -3747,14 +2718,10 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: 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 "" @@ -3770,9 +2737,8 @@ msgid "Message from %1$s on %2$s" msgstr "" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "Ρυθμίσεις OpenID" +msgstr "Η κατάσταση διεγÏάφη." #: actions/showstream.php:73 #, php-format @@ -3780,40 +2746,20 @@ msgid " tagged %s" msgstr "" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s και οι φίλοι του/της" +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" - -#: 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 "" +msgstr "Ροή φίλων του/της %s (RSS 1.0)" #: 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 " @@ -3823,8 +2769,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 @@ -3844,15 +2790,6 @@ msgid "" "[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 "" @@ -3866,9 +2803,8 @@ msgid "Site name must have non-zero length." msgstr "" #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "Αδυναμία κανονικοποίησης αυτής της email διεÏθυνσης" +msgstr "Εισάγετε ψευδώνυμο ή διεÏθυνση email." #: actions/siteadminpanel.php:159 #, php-format @@ -3911,11 +2847,6 @@ msgstr "" 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 "Η διεÏθυνση του εισεÏχόμενου email αφαιÏέθηκε." - #: actions/siteadminpanel.php:245 msgid "Local" msgstr "Τοπικός" @@ -3956,42 +2887,26 @@ msgstr "" msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -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 -#, fuzzy -msgid "Site notice text" -msgstr "ΔιαγÏαφή μηνÏματος" - #: 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 "Ρυθμίσεις OpenID" +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. @@ -4002,15 +2917,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 "Η αÏχική σελίδα δεν είναι έγκυÏο URL." +msgstr "" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "ΔιεÏθυνση ΙΜ" +msgstr "ΔιευθÏνσεις email" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4022,38 +2935,20 @@ msgstr "ΤÏέχων επιβεβαιωμένο, μέσω SMS, νοÏμεÏο κ 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 -#, fuzzy -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 -#, fuzzy msgid "SMS preferences" -msgstr "ΠÏοτιμήσεις" +msgstr "Οι Ï€Ïοτιμήσεις αποθηκεÏτηκαν" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4062,22 +2957,6 @@ msgid "" "from my carrier." msgstr "" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -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." @@ -4090,32 +2969,14 @@ msgstr "" #. 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 "" -"Έχει αποσταλεί ένας κωδικός επιβεβαίωσης στο τηλεφωνικό νοÏμεÏο που " +"Έχει αποσταλεί ένας κωδικός επιβεβαίωσης στην διεÏθυνση email που " "Ï€Ïοσθέσατε. Ελέγξτε τα εισεÏχόμενα (και τον φάκελο ανεπιθÏμητης " "αλληλογÏαφίας) για τον κωδικό και για το πως να τον χÏησιμοποιήσετε." -#. 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 -#, fuzzy -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." @@ -4140,22 +3001,12 @@ msgid "" "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:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" -#: actions/snapshotadminpanel.php:65 -#, fuzzy -msgid "Manage snapshot configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." msgstr "" @@ -4176,10 +3027,6 @@ msgstr "" 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 "" @@ -4201,45 +3048,30 @@ msgid "Snapshots will be sent to this URL" msgstr "" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "Ρυθμίσεις OpenID" +msgstr "Αποθήκευση Ïυθμίσεων Ï€Ïόσβασης" -#: actions/subedit.php:70 -msgid "You are not subscribed to that profile." -msgstr "" - -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "" #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +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 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s και οι φίλοι του/της" +msgstr "%1$s και φίλοι, σελίδα 2%$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4269,14 +3101,14 @@ msgid "" msgstr "" #: actions/subscriptions.php:52 -#, fuzzy, php-format +#, php-format msgid "%s subscriptions" -msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ" +msgstr "Όλες οι συνδÏομές" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, 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." @@ -4310,25 +3142,10 @@ msgstr "" 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 -#, fuzzy, php-format -msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Ροή φίλων του/της %s" - -#: actions/tag.php:99 #, php-format -msgid "Notice feed for tag %s (Atom)" -msgstr "" +msgid "Notice feed for tag %s (RSS 2.0)" +msgstr "Ροή φίλων του/της %s (RSS 2.0)" #: actions/tagother.php:39 msgid "No ID argument." @@ -4364,26 +3181,16 @@ msgid "" 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." msgstr "" -#: actions/tagrss.php:35 -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." @@ -4397,10 +3204,6 @@ msgstr "" 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 "" @@ -4430,12 +3233,6 @@ msgstr "" 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 "" @@ -4448,34 +3245,18 @@ msgstr "" 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 -#, fuzzy -msgid "Default subscription" -msgstr "Όλες οι συνδÏομές" - #: actions/useradminpanel.php:242 -#, fuzzy msgid "Automatically subscribe new users to this user." -msgstr "" -"Αυτόματα γίνε συνδÏομητής σε όσους γίνονται συνδÏομητές σε μένα (χÏήση " -"κυÏίως από λογισμικό και όχι ανθÏώπους)" +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 "" @@ -4491,10 +3272,6 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 -msgid "License" -msgstr "" - #: actions/userauthorization.php:217 msgid "Accept" msgstr "Αποδοχή" @@ -4509,18 +3286,13 @@ msgid "Reject" msgstr "" #: actions/userauthorization.php:220 -#, fuzzy msgid "Reject this subscription" -msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ" +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 " @@ -4590,19 +3362,14 @@ 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 "%1$s και φίλοι, σελίδα 2%$d" #: 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." @@ -4613,29 +3380,24 @@ 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 -#, 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 " @@ -4643,7 +3405,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 " @@ -4651,179 +3413,211 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -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 "" -#: classes/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -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 "Δεν ήταν δυνατή η δημιουÏγία ομάδας." -#: 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 -msgid "Could not insert message." -msgstr "" - -#: classes/Message.php:71 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s" +msgstr "" -#: classes/Notice.php:245 +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 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 -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 -#, fuzzy -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 "Απέτυχε η εισαγωγή νέας συνδÏομής." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't 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 "Απέτυχε η εισαγωγή νέας συνδÏομής." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't 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 "Απέτυχε η εισαγωγή νέας συνδÏομής." -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ" +msgstr "Δεν ήταν δυνατή η δημιουÏγία ομάδας." -#: classes/User_group.php:510 -#, fuzzy +#. 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 @@ -4850,239 +3644,153 @@ msgstr "" 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:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "ΠÏοσωπικά" - -#. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy -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:465 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:468 msgid "Connect" msgstr "ΣÏνδεση" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -#, fuzzy -msgctxt "MENU" -msgid "Admin" -msgstr "ΔιαχειÏιστής" - -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format -msgctxt "TOOLTIP" -msgid "Invite friends and colleagues to join you on %s" -msgstr "ΠÏοσκάλεσε φίλους και συναδέλφους σου να γίνουν μέλη στο %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:481 msgctxt "MENU" msgid "Invite" -msgstr "Μήνυμα" +msgstr "Μόνο με Ï€Ïόσκληση" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" -msgstr "ΑποσÏνδεση" +msgstr "Λογότυπο" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" -msgstr "ΠεÏιγÏαφή" +msgstr "ΕγγÏαφή" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "ΣÏνδεση" - #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "Βοηθήστε με!" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" msgstr "Βοήθεια" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:516 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 -msgid "Site notice" -msgstr "" - -#. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 -msgid "Local views" -msgstr "" - -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -msgid "Page notice" -msgstr "" - #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Βοήθεια" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "ΠεÏί" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Συχνές εÏωτήσεις" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" -#. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 -msgid "Privacy" -msgstr "" - #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Επικοινωνία" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"To **%%site.name%%** είναι μία υπηÏεσία microblogging (μικÏο-ιστολογίου) που " -"έφεÏε κοντά σας το [%%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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5091,54 +3799,49 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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 -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:1247 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:1257 msgid "Before" msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5146,11 +3849,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5180,103 +3883,32 @@ msgstr "" msgid "Unable to delete design setting." msgstr "" -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 +#: lib/adminpanelaction.php:360 msgctxt "MENU" -msgid "Site" +msgid "Design" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy -msgctxt "MENU" -msgid "Design" -msgstr "ΠÏοσωπικά" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" +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 -msgid "Access configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "ΔιαγÏαφή μηνÏματος" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "Επιβεβαίωση διεÏθυνσης email" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "ΠεÏιγÏάψτε την ομάδα ή το θέμα μέχÏι %d χαÏακτήÏες" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:213 -#, fuzzy -msgid "Describe your application" -msgstr "ΠεÏιγÏάψτε την ομάδα ή το θέμα" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:224 -msgid "URL of the homepage of this application" -msgstr "" +msgstr "ΠεÏιγÏάψτε την ομάδα ή το θέμα χÏησιμοποιώντας μέχÏι %d χαÏακτήÏες" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 @@ -5378,66 +4010,47 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Ο κωδικός αποθηκεÏτηκε." - -#: lib/authenticationplugin.php:235 -#, fuzzy +#: 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" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." msgstr "" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." 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 -#, fuzzy, php-format -msgid "Could not find a user with nickname %s" -msgstr "Απέτυχε η ενημέÏωση χÏήστη μέσω επιβεβαιωμένης email διεÏθυνσης." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Απέτυχε η ενημέÏωση χÏήστη μέσω επιβεβαιωμένης email διεÏθυνσης." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" +msgid "Nudge sent to %s." msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5445,56 +4058,13 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "" -#: lib/command.php:323 -#, fuzzy -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 -#, fuzzy, 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 -#, fuzzy, 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 -#, fuzzy, 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:263 -#, 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 -#, 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 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5503,146 +4073,125 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "" -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." - -#: lib/command.php:519 -#, fuzzy -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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "Ρυθμίσεις OpenID" - -#: lib/command.php:531 -msgid "Error repeating notice." -msgstr "" - -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" +msgid "Reply to %s sent." msgstr "" -#: lib/command.php:573 -msgid "Error saving notice." +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "" - -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Subscribed to %s" +msgid "Unsubscribed from %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 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "" -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "" -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "" -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Απέτυχε η συνδÏομή." - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Δεν επιτÏέπεται να κάνεις συνδÏομητές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ¿Ï… άλλους." - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Δεν επιτÏέπεται να κάνεις συνδÏομητές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ¿Ï… άλλους." msgstr[1] "Δεν επιτÏέπεται να κάνεις συνδÏομητές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ¿Ï… άλλους." -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Δεν επιτÏέπεται να κάνεις συνδÏομητές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ¿Ï… άλλους." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Δεν επιτÏέπεται να κάνεις συνδÏομητές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ¿Ï… άλλους." msgstr[1] "Δεν επιτÏέπεται να κάνεις συνδÏομητές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ¿Ï… άλλους." -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Δεν είστε μέλος καμίας ομάδας." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Ομάδες με τα πεÏισσότεÏα μέλη" msgstr[1] "Ομάδες με τα πεÏισσότεÏα μέλη" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5684,11 +4233,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Ο κωδικός επιβεβαίωσης δεν βÏέθηκε." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5713,23 +4257,13 @@ msgstr "" msgid "Updates by SMS" msgstr "" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "ΣÏνδεση" - -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "" #: lib/designsettings.php:105 -#, fuzzy msgid "Upload file" -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "ΠÏοφίλ χÏήστη" #: lib/designsettings.php:109 msgid "" @@ -5740,14 +4274,6 @@ msgstr "" 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 "" @@ -5776,10 +4302,6 @@ msgstr "" msgid "Filter tags" msgstr "" -#: lib/galleryaction.php:131 -msgid "All" -msgstr "" - #: lib/galleryaction.php:139 msgid "Select tag to filter" msgstr "" @@ -5828,15 +4350,6 @@ msgstr "" 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" @@ -5851,11 +4364,6 @@ msgstr "Λογότυπο" msgid "Add or edit %s logo" msgstr "ΠÏοσθήκη ή επεξεÏγασία λογότυπου για την ομάδα %s" -#: lib/groupnav.php:120 -#, fuzzy, php-format -msgid "Add or edit %s design" -msgstr "ΠÏοσθήκη ή επεξεÏγασία λογότυπου για την ομάδα %s" - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Ομάδες με τα πεÏισσότεÏα μέλη" @@ -5864,11 +4372,6 @@ msgstr "Ομάδες με τα πεÏισσότεÏα μέλη" 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" @@ -5896,9 +4399,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" @@ -5967,8 +4469,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" @@ -5984,21 +4493,19 @@ msgid "" msgstr "" #. 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\n" -"\n" +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" @@ -6012,30 +4519,19 @@ 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 -msgid "SMS confirmation" -msgstr "" - -#. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 -#, 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 " @@ -6052,13 +4548,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" @@ -6078,13 +4574,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" @@ -6106,7 +4602,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" @@ -6114,13 +4610,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" @@ -6157,14 +4653,10 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "από" -#: lib/mailhandler.php:37 -msgid "Could not parse message." -msgstr "" - #: lib/mailhandler.php:42 msgid "Not a registered user." msgstr "" @@ -6212,141 +4704,108 @@ 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 "" -#: 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 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Διαθέσιμοι χαÏακτήÏες" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "" -#: lib/noticeform.php:160 -msgid "Send a notice" -msgstr "" - -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." +msgstr "" -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ." - -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 -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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Επαναλαμβάνεται από" -#: lib/noticelist.php:629 -msgid "Reply to this notice" -msgstr "" - -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "" -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "Ρυθμίσεις OpenID" - -#: 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 "" @@ -6363,11 +4822,6 @@ msgstr "" msgid "Error inserting remote profile" msgstr "" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "ΔιαγÏαφή μηνÏματος" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Απέτυχε η εισαγωγή νέας συνδÏομής." @@ -6405,26 +4859,14 @@ msgstr "" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: 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 "" @@ -6438,11 +4880,7 @@ msgstr "Μέλος από" msgid "Daily average" msgstr "" -#: lib/profileaction.php:264 -msgid "All groups" -msgstr "" - -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6466,30 +4904,28 @@ 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" msgstr "Îαι" #: lib/repeatform.php:132 -#, fuzzy msgid "Repeat this notice" -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." +msgstr "ΔιαγÏαφή μηνÏματος" #: lib/revokeroleform.php:91 #, 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 "" @@ -6498,9 +4934,8 @@ msgid "Sandbox" msgstr "" #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." +msgstr "Γίνε συνδÏομητής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη" #: lib/searchaction.php:120 msgid "Search site" @@ -6518,14 +4953,6 @@ msgstr "" 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 "" @@ -6547,28 +4974,8 @@ msgid "Silence" msgstr "" #: lib/silenceform.php:78 -#, fuzzy 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 "" +msgstr "ΔιαγÏάψτε αυτόν τον χÏήστη" #: lib/subgroupnav.php:106 #, php-format @@ -6589,48 +4996,63 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "" + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +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 -#, fuzzy msgid "Unsandbox this user" -msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος." - -#: lib/unsilenceform.php:67 -msgid "Unsilence" -msgstr "" +msgstr "Γίνε συνδÏομητής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη" #: lib/unsilenceform.php:78 -#, fuzzy 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 "" +msgstr "ΔιαγÏάψτε αυτόν τον χÏήστη" #: lib/userprofile.php:237 msgid "User deletion in progress..." @@ -6652,15 +5074,6 @@ msgstr "" msgid "Message" msgstr "Μήνυμα" -#: lib/userprofile.php:326 -msgid "Moderate" -msgstr "" - -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "ΠÏοφίλ χÏήστη" - #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" @@ -6672,56 +5085,56 @@ msgid "Moderator" msgstr "Συντονιστής" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "" @@ -6729,13 +5142,3 @@ msgstr "" #, php-format msgid "%s is not a valid color!" msgstr "Το %s δεν είναι ένα έγκυÏο χÏώμα!" - -#: 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/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po index 38feccec76..e828b02149 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:32+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:55+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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" @@ -44,7 +45,6 @@ msgstr "Prohibit anonymous users (not logged in) from viewing site?" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" msgstr "Private" @@ -81,44 +81,43 @@ msgstr "Save access settings" #: 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 "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 -#, fuzzy msgid "No such page." -msgstr "No such page" +msgstr "No such page." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -126,40 +125,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:114 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 " @@ -169,89 +168,83 @@ 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 +#: 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 "" -"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)." -#: 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 "" "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." #. 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" "You must specify a parameter named 'device' with a value of one of: sms, im, " -"none" - -#: actions/apiaccountupdatedeliverydevice.php:132 -#, fuzzy -msgid "Could not update user." -msgstr "Couldn't update user." +"none." #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 @@ -263,14 +256,9 @@ msgstr "Couldn't update user." msgid "User has no profile." msgstr "User has no profile." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Couldn't save profile." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,47 +317,48 @@ msgstr "Direct messages to %s" msgid "All the direct messages sent to %s" msgstr "All the direct messages sent to %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "No message text!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "That's too long. Max message size is %d chars." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Recipient user not found." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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." +msgid "Could not follow user: profile not found." +msgstr "Could not follow user: profile not found." #: actions/apifriendshipscreate.php:118 #, php-format @@ -384,9 +373,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 "Two valid IDs or screen_names must be supplied." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -396,120 +385,126 @@ 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "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 -#, 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 "Group not found!" +msgstr "Group not found." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "Groups %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" @@ -524,15 +519,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 @@ -598,12 +593,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:463 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 @@ -611,8 +606,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" @@ -628,11 +623,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." @@ -641,67 +636,73 @@ msgstr "You may not delete another user's status." msgid "No such notice." msgstr "No such notice." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Cannot repeat your own notice." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Not found." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s updates from everyone!" @@ -716,16 +717,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." @@ -778,7 +783,7 @@ msgid "Preview" msgstr "Preview" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Delete" @@ -791,9 +796,8 @@ msgid "Crop" msgstr "Crop" #: actions/avatarsettings.php:305 -#, fuzzy msgid "No file uploaded." -msgstr "No profile specified." +msgstr "No file uploaded." #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" @@ -819,11 +823,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 " @@ -838,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 "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" @@ -857,23 +860,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -883,8 +887,8 @@ msgstr "Failed to save block information." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "No such group." @@ -916,9 +920,9 @@ msgstr "Unblock this user" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Post to " +msgstr "Post to %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -934,9 +938,9 @@ msgstr "That confirmation code is not for you!" #. 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 "Unrecognised address type %s" +msgstr "Unrecognized address type %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -997,7 +1001,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:1307 msgid "There was a problem with your session token." msgstr "There was a problem with your session token." @@ -1031,7 +1035,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." @@ -1062,7 +1066,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Delete this notice" @@ -1102,45 +1106,49 @@ 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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "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: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" @@ -1150,57 +1158,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 @@ -1210,7 +1226,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" @@ -1324,7 +1340,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" @@ -1363,7 +1380,6 @@ msgstr "Current confirmed e-mail address." #: 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 "Remove" @@ -1382,7 +1398,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 "Cancel" @@ -1397,7 +1412,6 @@ msgstr "E-mail address, like \"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 "Add" @@ -1423,16 +1437,14 @@ msgstr "Make a new e-mail address for posting to - cancels the old one." #. 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 "New" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferences" +msgstr "Email preferences" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1471,9 +1483,8 @@ msgstr "Publish a MicroID for my e-mail address." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Design preferences saved." +msgstr "Email preferences saved." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1486,7 +1497,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." @@ -1528,15 +1539,13 @@ msgstr "No pending confirmation to cancel." #. 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 "That is the wrong IM address." +msgstr "That is the wrong email address." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Confirmation cancelled." +msgstr "Email confirmation cancelled." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1546,9 +1555,8 @@ msgstr "That is not your e-mail address." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "The address was removed." +msgstr "The email address was removed." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1686,7 +1694,6 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "Remote service uses unknown version of OMB protocol." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." msgstr "Error updating remote profile." @@ -1699,33 +1706,30 @@ msgid "Cannot read file." msgstr "Cannot read file." #: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy msgid "Invalid role." -msgstr "Invalid token." +msgstr "Invalid role." #: actions/grantrole.php:66 actions/revokerole.php:66 msgid "This role is reserved and cannot be set." -msgstr "" +msgstr "This role is reserved and cannot be set." #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "You cannot sandbox users on this site." +msgstr "You cannot grant user roles on this site." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "User is already silenced." +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." @@ -1865,7 +1869,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" @@ -1929,6 +1933,8 @@ msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." msgstr "" +"If you can't find the group you're looking for, you can [create it](%%action." +"newgroup%%) yourself." #: actions/groupsearch.php:85 #, php-format @@ -1936,10 +1942,12 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"Why not [register an account](%%action.register%%) and [create the group](%%" +"action.newgroup%%) yourself!" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "Only an admin can unblock group members." #: actions/groupunblock.php:95 msgid "User is not blocked from group." @@ -2005,9 +2013,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferences" +msgstr "IM preferences" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2078,15 +2085,13 @@ msgstr "That is the wrong IM address." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Couldn't delete e-mail confirmation." +msgstr "Couldn't delete IM confirmation." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Confirmation cancelled." +msgstr "IM confirmation cancelled." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2096,9 +2101,8 @@ msgstr "That is not your Jabber ID." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "The address was removed." +msgstr "The IM address was removed." #: actions/inbox.php:59 #, php-format @@ -2114,14 +2118,10 @@ msgstr "Inbox for %s" 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 -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 "You must be logged in to invite other users to use %s" +msgstr "You must be logged in to invite other users to use %s." #: actions/invite.php:72 #, php-format @@ -2142,7 +2142,7 @@ msgstr "You are already subscribed to these users:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2189,7 +2189,6 @@ msgstr "Optionally add a personal message to the invitation." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" msgstr "Send" @@ -2266,9 +2265,7 @@ msgstr "You must be logged in to join a group." msgid "No nickname or ID." msgstr "No nickname or 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s joined group %2$s" @@ -2277,50 +2274,49 @@ msgstr "%1$s joined group %2$s" msgid "You must be logged in to leave a group." msgstr "You must be logged in to leave a group." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "You are not a member of that group." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2328,18 +2324,20 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." -msgstr "" +msgstr "Only and admin can make another user an admin." #: actions/makeadmin.php:96 #, php-format @@ -2357,9 +2355,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "Can't make %1$s an admin for group %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "No current status" +msgstr "No current status." #: actions/newapplication.php:52 msgid "New Application" @@ -2393,12 +2390,15 @@ msgstr "Use this form to create a new group." msgid "New message" msgstr "New message" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "You can't send a message to this user." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "No content!" @@ -2406,7 +2406,8 @@ msgstr "No content!" msgid "No recipient specified." msgstr "No recipient specified." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2416,12 +2417,14 @@ msgstr "" msgid "Message sent" msgstr "Message sent" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Could not create application." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax Error" @@ -2429,7 +2432,7 @@ msgstr "Ajax Error" msgid "New notice" msgstr "New notice" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Notice posted" @@ -2481,9 +2484,10 @@ 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." +"This user does not allow nudges or has not confirmed or set their email " +"address yet." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2503,20 +2507,16 @@ msgstr "OAuth applications" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Applications you have registered" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "You have not registered any applications yet." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" - -#: actions/oauthconnectionssettings.php:83 -msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "Connected applications" #: actions/oauthconnectionssettings.php:175 msgid "You are not a user of that application." @@ -2535,31 +2535,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 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "content type " +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Not a supported data format." @@ -2595,10 +2594,6 @@ msgstr "Automatic shortening service to use." msgid "View profile designs" msgstr "View profile designs" -#: 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 "URL shortening service is too long (max 50 chars)." @@ -2662,7 +2657,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" @@ -2674,11 +2669,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." @@ -2699,33 +2694,29 @@ 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 -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 "Theme directory not readable: %s" +msgstr "Theme directory not readable: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Theme directory not readable: %s" +msgstr "Avatar directory not writable: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Theme directory not readable: %s" +msgstr "Background directory not writable: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Theme directory not readable: %s" +msgstr "Locales directory not readable: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2771,18 +2762,6 @@ msgstr "" 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 "Avatars" @@ -2799,22 +2778,6 @@ msgstr "Avatar path" msgid "Avatar directory" msgstr "Avatar directory" -#: 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 "SSL" @@ -2831,10 +2794,6 @@ msgstr "Sometimes" msgid "Always" msgstr "" -#: actions/pathsadminpanel.php:329 -msgid "Use SSL" -msgstr "" - #: actions/pathsadminpanel.php:330 msgid "When to use SSL" msgstr "" @@ -2865,9 +2824,9 @@ msgid "People search" msgstr "People Search" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Not a valid people tag: %s" +msgstr "Not a valid people tag: %s." #: actions/peopletag.php:142 #, php-format @@ -2875,9 +2834,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "Users self-tagged with %1$s - page %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Invalid notice content" +msgstr "Invalid notice content." #: actions/postnotice.php:101 #, php-format @@ -2902,43 +2860,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\"" @@ -2980,7 +2938,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)." @@ -3049,23 +3007,10 @@ msgstr "Public Stream Feed (RSS 2.0)" msgid "Public Stream Feed (Atom)" msgstr "Public Stream Feed (Atom)" -#: 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 "" @@ -3108,13 +3053,6 @@ msgstr "" 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 "Tag cloud" @@ -3159,10 +3097,6 @@ msgstr "" 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 "Nickname or e-mail address" @@ -3235,7 +3169,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." @@ -3243,80 +3177,102 @@ 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:507 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:494 -#, fuzzy, php-format +#: 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 "" -" except this private data: password, email address, IM address, and phone " -"number." +"My text and files are available under %s except this private data: password, " +"email address, IM address, and phone number." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3349,7 +3305,7 @@ msgstr "" "\n" "Thanks for signing up and we hope you enjoy using this service." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3429,7 +3385,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repeated" @@ -3467,10 +3423,10 @@ msgstr "Notice feed 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 "" -"This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"This is the timeline showing replies to %1$s but %2$s has not received a " +"notice to them yet." #: actions/replies.php:204 #, php-format @@ -3482,11 +3438,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 "" -"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)." #: actions/repliesrss.php:72 #, php-format @@ -3494,16 +3450,14 @@ msgid "Replies to %1$s on %2$s!" msgstr "Replies to %1$s on %2$s!" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "You cannot silence users on this site." +msgstr "You cannot revoke user roles on this site." #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "User without matching profile." +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" @@ -3515,12 +3469,6 @@ msgstr "You cannot sandbox users on this site." msgid "User is already sandboxed." msgstr "User is already sandboxed." -#. TRANS: Menu item for site administration -#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 -msgid "Sessions" -msgstr "" - #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." msgstr "Session settings for this StatusNet site." @@ -3560,7 +3508,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" @@ -3571,12 +3519,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" @@ -3586,18 +3534,10 @@ msgstr "Statistics" 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 "" @@ -3663,22 +3603,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 hasn't added any notices to his favourites yet. Post something " -"interesting they would add to their favourites :)" +"%s has not added any favourite notices yet. Post something interesting they " +"would add to their favourites." #: 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 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 :)" +"%s has not added any favourite notices yet. Why not [register an account](%%%" +"%action.register%%%%) and then post something interesting they would add to " +"their favourites." #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3736,7 +3676,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" @@ -3750,11 +3690,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." @@ -3769,7 +3709,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." @@ -3782,7 +3722,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" @@ -3857,20 +3797,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)." -msgstr "" -"You can try to nudge %1$s or [post something to his or her attention](%%%%" -"action.newnotice%%%%?status_textarea=%2$s)." - -#: 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%%%%))" +"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 them](%%%%action.newnotice%%%" +"%?status_textarea=%2$s)." #: actions/showstream.php:248 #, php-format @@ -3897,9 +3828,8 @@ msgid "User is already silenced." msgstr "User is already silenced." #: actions/siteadminpanel.php:69 -#, fuzzy msgid "Basic settings for this StatusNet site" -msgstr "Design settings for this StausNet site." +msgstr "Basic settings for this StatusNet site" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." @@ -3915,9 +3845,8 @@ msgid "Unknown language \"%s\"." msgstr "" #: actions/siteadminpanel.php:165 -#, fuzzy msgid "Minimum text limit is 0 (unlimited)." -msgstr "Minimum text limit is 140 characters." +msgstr "Minimum text limit is 0 (unlimited)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3959,18 +3888,13 @@ msgstr "Contact e-mail address for your site" msgid "Local" msgstr "Local" -#: 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 "Default site language" +msgstr "Default language" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" @@ -3997,37 +3921,32 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Site notice" +msgstr "Site Notice" #: actions/sitenoticeadminpanel.php:67 -#, fuzzy msgid "Edit site-wide message" -msgstr "New message" +msgstr "Edit site-wide message" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "Unable to save your design settings!" +msgstr "Unable to save site notice." #: 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 "Site notice" +msgstr "Site notice text" #: 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 "Site notice" +msgstr "Save site notice" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 @@ -4043,15 +3962,13 @@ msgstr "You can receive SMS messages through e-mail from %%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 "This page is not available in a " +msgstr "SMS is not available." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM address" +msgstr "SMS address" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4075,7 +3992,6 @@ msgstr "Enter the code you received on your phone." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Confirm" @@ -4092,9 +4008,8 @@ msgstr "Phone number, no punctuation or spaces, with area code" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferences" +msgstr "SMS preferences" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4107,9 +4022,8 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Preferences saved." +msgstr "SMS preferences saved." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4147,9 +4061,8 @@ msgstr "That is the wrong confirmation number." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Confirmation cancelled." +msgstr "SMS confirmation cancelled." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4159,9 +4072,8 @@ msgstr "That is not your phone number." #. 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 phone number" +msgstr "The SMS phone number was removed." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4191,27 +4103,18 @@ 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 "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Change site configuration" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Manage snapshot configuration" #: 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 "" @@ -4220,10 +4123,6 @@ msgstr "" 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 "" @@ -4236,24 +4135,20 @@ msgstr "" 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 "Save site settings" +msgstr "Save snapshot settings" #: actions/subedit.php:70 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." @@ -4297,11 +4192,8 @@ 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 "" +"You have no subscribers. Try subscribing to people you know and they might " +"return the favour" #: actions/subscribers.php:114 #, php-format @@ -4309,6 +4201,8 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"%s has no subscribers. Why not [register an account](%%%%action.register%%%" +"%) and be the first?" #: actions/subscriptions.php:52 #, php-format @@ -4420,10 +4314,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." @@ -4437,9 +4327,8 @@ msgid "User is not silenced." msgstr "User is not silenced." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "No profile id in request." +msgstr "No profile ID in request." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4454,15 +4343,10 @@ msgstr "" #. TRANS: User admin panel title #: actions/useradminpanel.php:59 -#, fuzzy msgctxt "TITLE" msgid "User" msgstr "User" -#: actions/useradminpanel.php:70 -msgid "User settings for this StatusNet site." -msgstr "" - #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." msgstr "" @@ -4494,14 +4378,6 @@ msgstr "" msgid "New users" msgstr "New users" -#: 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 "Default subscription" @@ -4536,7 +4412,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" @@ -4609,11 +4485,6 @@ msgstr "" 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’." @@ -4665,29 +4536,25 @@ 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 -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 " @@ -4699,7 +4566,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 " @@ -4711,7 +4578,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 " @@ -4720,90 +4587,132 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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: 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. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format -msgid "Database error inserting hashtag: %s" -msgstr "DB error inserting hashtag: %s" +#. 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 "" -#: classes/Notice.php:245 +#. TRANS: Server exception. %s are the error details. +#: classes/Notice.php:193 +#, php-format +msgid "Database error inserting hashtag: %s" +msgstr "Database error inserting hashtag: %s" + +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4811,73 +4720,97 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problem saving notice." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 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 -msgid "Already subscribed!" -msgstr "" - -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." msgstr "User has blocked you." -#: classes/Subscription.php:167 -#, fuzzy -msgid "Not subscribed!" -msgstr "Not subscribed!" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Could not delete self-subscription." -#: classes/Subscription.php:173 -msgid "Couldn't delete self-subscription." -msgstr "Couldn't delete self-subscription." +#. 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 "Could not delete subscription OMB token." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "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 "Could not delete subscription." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Couldn't delete subscription." - -#: classes/User.php:363 +#. TRANS: Notice given on user registration. +#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname. +#: classes/User.php:365 #, php-format msgid "Welcome to %1$s, @%2$s!" msgstr "Welcome to %1$s, @%2$s!" -#: classes/User_group.php:480 +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." msgstr "Could not create group." -#: classes/User_group.php:489 +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." msgstr "Could not set group URI." -#: classes/User_group.php:510 +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." msgstr "Could not set group membership." -#: classes/User_group.php:524 +#. TRANS: Server exception thrown when saving local group information failed. +#: classes/User_group.php:544 msgid "Could not save local group info." msgstr "Could not save local group info." @@ -4917,217 +4850,200 @@ msgid "Other" msgstr "Other" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Primary site navigation" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -#, fuzzy +#: lib/action.php:458 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "Change your e-mail, avatar, password, profile" +msgstr "Change your email, avatar, password, profile" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 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:468 msgid "Connect" msgstr "Connect" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -#, fuzzy +#: lib/action.php:474 msgctxt "MENU" msgid "Admin" msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, 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 -#, fuzzy +#: lib/action.php:481 msgctxt "MENU" msgid "Invite" msgstr "Invite" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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 -#, fuzzy +#: lib/action.php:490 msgctxt "MENU" msgid "Logout" msgstr "Logout" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy +#: lib/action.php:498 msgctxt "MENU" msgid "Register" msgstr "Register" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Login to the site" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Login" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Help me!" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Help" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Search for people or text" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Help" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "About" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "F.A.Q." #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacy" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Source" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contact" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Badge" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." @@ -5136,13 +5052,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5154,54 +5070,54 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +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:1236 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:1247 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:1257 msgid "Before" msgstr "Before" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5209,11 +5125,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5244,81 +5160,67 @@ 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 -#, fuzzy +#: 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 -#, fuzzy +#: 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 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Site notice" +msgstr "Edit site notice" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "Paths configuration" +msgstr "Snapshots configuration" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 @@ -5408,21 +5310,10 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" msgstr "Revoke" -#. 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" @@ -5432,15 +5323,11 @@ msgstr "Provider" msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -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 "Password changing failed" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" msgstr "Password changing is not allowed" @@ -5456,44 +5343,21 @@ msgstr "Command complete" msgid "Command failed" msgstr "Command failed" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Notice with that id does not exist" - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "User has no last notice" - -#. 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 "Could not find a user with nickname %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 -msgid "Could not find a local user with nickname %s" -msgstr "Could not find a user with nickname %s" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Sorry, this command is not yet implemented." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Nudge sent to %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5501,55 +5365,39 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Notice marked as fave." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "You are already a member of that group." - -#. 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 "Could not join user %1$s to group %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 "Could not remove user %1$s to group %2$s." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Homepage: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "About: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5558,143 +5406,125 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "Message too long - maximum is %1$d characters, you sent %2$d." -#. 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 "Direct message to %s sent" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Error sending direct message." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Cannot repeat your own notice." - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Already repeated that notice." - -#. 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 "Notice from %s repeated" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Error repeating notice." -#: lib/command.php:562 -#, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Notice too long - maximum is %d characters, you sent %d" - -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "Reply to %s sent" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Error saving notice." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Specify the name of the user to subscribe to" - -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "You are not subscribed to that profile." - -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Subscribed to %s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Unsubscribed from %s" +msgid "Can't subscribe to OMB profiles by command." +msgstr "Can't subscribe to OMB profiles by command." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Command not yet implemented." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notification off." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Can't turn off notification." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notification on." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Can't turn on notification." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, php-format -msgid "Unsubscribed %s" -msgstr "Unsubscribed %s" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "You are not subscribed to anyone." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "You are already subscribed to these users:" msgstr[1] "You are already subscribed to these users:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "No one is subscribed to you." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Could not subscribe other to you." msgstr[1] "Could not subscribe other to you." -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "You are not a member of any groups." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "You are not a member of that group." msgstr[1] "You are not a member of that group." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5735,6 +5565,44 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"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" #: lib/common.php:135 msgid "No configuration file found. " @@ -5770,7 +5638,7 @@ msgstr "Connections" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Authorised connected applications" #: lib/dberroraction.php:60 msgid "Database error" @@ -5786,10 +5654,6 @@ msgid "" msgstr "" "You can upload your personal background image. The maximum file size is 2MB." -#: lib/designsettings.php:418 -msgid "Design defaults restored." -msgstr "" - #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" msgstr "Disfavour this notice" @@ -6017,8 +5881,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" @@ -6044,19 +5915,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" @@ -6078,30 +5949,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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "Awaiting confirmation on this phone number." +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 " @@ -6118,13 +5989,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" @@ -6144,13 +6015,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" @@ -6172,7 +6043,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" @@ -6180,13 +6051,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6223,7 +6089,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "from" @@ -6278,24 +6144,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 "" @@ -6308,11 +6174,11 @@ msgstr "Send a direct notice" msgid "To" msgstr "To" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Available characters" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Send" @@ -6321,79 +6187,83 @@ msgstr "Send" msgid "Send a notice" msgstr "Send a notice" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "What's up, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Share my location" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Do not share my location" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 "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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "in context" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repeated by" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Reply to this notice" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Reply" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Notice repeated" @@ -6466,7 +6336,7 @@ msgstr "Your sent messages" msgid "Tags in %s's notices" msgstr "Tags in %s's notices" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Unknown" @@ -6503,7 +6373,7 @@ msgstr "" msgid "All groups" msgstr "All groups" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6527,7 +6397,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." @@ -6544,11 +6414,11 @@ msgid "Repeat this notice" msgstr "Repeat this notice" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Block this user from this group" +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 "" @@ -6646,22 +6516,50 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Top posters" -#: lib/unsandboxform.php:69 -msgid "Unsandbox" -msgstr "" - #: lib/unsandboxform.php:80 msgid "Unsandbox this user" msgstr "Unsandbox this user" -#: lib/unsilenceform.php:67 -msgid "Unsilence" -msgstr "" - #: lib/unsilenceform.php:78 msgid "Unsilence this user" msgstr "Unsilence this user" @@ -6674,11 +6572,6 @@ msgstr "Unsubscribe from this user" msgid "Unsubscribe" msgstr "Unsubscribe" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "User has no profile." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Edit Avatar" @@ -6697,7 +6590,7 @@ msgstr "Edit profile settings" #: lib/userprofile.php:264 msgid "Edit" -msgstr "" +msgstr "Edit" #: lib/userprofile.php:287 msgid "Send a direct message to this user" @@ -6709,75 +6602,73 @@ msgstr "Message" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +msgstr "Moderate" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "User profile" +msgstr "User role" #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" -msgstr "Admins" +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:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "about a year ago" @@ -6790,8 +6681,3 @@ msgstr "%s is not a valid colour!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s is not a valid colour! Use 3 or 6 hex chars." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Message too long - maximum is %1$d characters, you sent %2$d." diff --git a/locale/eo/LC_MESSAGES/statusnet.po b/locale/eo/LC_MESSAGES/statusnet.po new file mode 100644 index 0000000000..16e5ae58b6 --- /dev/null +++ b/locale/eo/LC_MESSAGES/statusnet.po @@ -0,0 +1,5660 @@ +# 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-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:33:49+0000\n" +"Language-Team: Esperanto\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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." + +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:498 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." + +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 +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." + +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 +msgid "You are already a member of that group." +msgstr "Vi estas jam grupano." + +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 +msgid "You have been blocked from that group by the admin." +msgstr "La administranto blokis vin de tiu grupo." + +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, 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." + +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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:463 +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." + +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 +msgid "Cannot repeat your own notice." +msgstr "Vi ne povas ripeti vian propran avizon." + +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 +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:157 +#: lib/mailhandler.php:60 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "Tro longas. Longlimo por avizo 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:181 +#, php-format +msgid "Max notice size is %d chars, including attachment URL." +msgstr "Longlimo por avizo 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." + +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. +#: 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:170 +#: lib/command.php:383 +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:1307 +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, per 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:430 +#, 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." + +#: actions/joingroup.php:141 +#, 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." + +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 +msgid "You are not a member of that group." +msgstr "Vi ne estas grupano." + +#: actions/leavegroup.php:137 +#, 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" + +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 +msgid "You can't send a message to this user." +msgstr "Vi ne povas sendi mesaÄon al la uzanto." + +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 +msgid "No content!" +msgstr "Neniu enhavo!" + +#: actions/newmessage.php:158 +msgid "No recipient specified." +msgstr "Neniu ricevonto speifiÄas." + +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 +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" + +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 +#, php-format +msgid "Direct message to %s sent." +msgstr "Rekta mesaÄo al %s sendiÄis." + +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 +msgid "Ajax Error" +msgstr "Eraro de Ajax" + +#: actions/newnotice.php:69 +msgid "New notice" +msgstr "Nova avizo" + +#: actions/newnotice.php:227 +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 ankoraÅ­ neniun aplikaĵon registris." + +#: 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 "Bonvolu, nur %s-URL per plata HTTP." + +#. TRANS: Client error on an API request with an unsupported data format. +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 +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 +msgid "This is your outbox, which lists private messages you have sent." +msgstr "" +"Tio ĉi estas via elirkesto, kie listiÄas privataj mesaÄoj, kiujn vi sendis." + +#: 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 +#, php-format +msgid "Theme directory not readable: %s." +msgstr "Desegno adresaro ne havebla: %s." + +#: actions/pathsadminpanel.php:163 +#, php-format +msgid "Avatar directory not writable: %s." +msgstr "Avatara adresaro ne skribebla: %s." + +#: actions/pathsadminpanel.php:169 +#, php-format +msgid "Background directory not writable: %s." +msgstr "Fona adresaro ne skribebla: %s." + +#: actions/pathsadminpanel.php:177 +#, php-format +msgid "Locales directory not readable: %s." +msgstr "Lokaĵara adresaro ne havebla: %s." + +#: actions/pathsadminpanel.php:183 +msgid "Invalid SSL server. The maximum length is 255 characters." +msgstr "Nevalida SSL-servilo. La longlimo estas 225 literoj." + +#: 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 "Tajlora URL" + +#: actions/pathsadminpanel.php:252 +msgid "Use fancy (more readable and memorable) URLs?" +msgstr "Ĉu uzi tajloran (pli facile legebla kaj memorebla) URL?" + +#: 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 %d 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 50 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 +#, 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 "" +"Tie ĉi estas %%site.name%%, [mikrobloga](http://en.wikipedia.org/wiki/Micro-" +"blogging) servo surbaze de ilaro de Libera Molvaro [StatusNet](http://status." +"net/). [AniÄu](%%action.register%%) por konigi novaĵon pri vi mem al viaj " +"amikoj, familianoj, kaj kolegoj! ([Pli](%%doc.help%%))" + +#: 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 "Jen la plej popularaj entikedoj lastatempaj ĉe %s " + +#: actions/publictagcloud.php:69 +#, php-format +msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." +msgstr "Neniu jam afiÅis avizon kun [haketentikedon](%%doc.tags%%)." + +#: actions/publictagcloud.php:72 +msgid "Be the first to post one!" +msgstr "Estu la unua afiÅanto!" + +#: actions/publictagcloud.php:75 +#, 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 +msgid "Tag cloud" +msgstr "Entikedo-nubo" + +#: actions/recoverpassword.php:36 +msgid "You are already logged in!" +msgstr "Vi jam ensalutis." + +#: actions/recoverpassword.php:62 +msgid "No such recovery code." +msgstr "Ne estas tia rehava kodo." + +#: actions/recoverpassword.php:66 +msgid "Not a recovery code." +msgstr "Ne rehava kodo." + +#: actions/recoverpassword.php:73 +msgid "Recovery code for unknown user." +msgstr "Rehava kodo por nekonata uzanto." + +#: actions/recoverpassword.php:86 +msgid "Error with confirmation code." +msgstr "Eraras pro komfirma kodo." + +#: actions/recoverpassword.php:97 +msgid "This confirmation code is too old. Please start again." +msgstr "Tiu komfirmnumero tro malnovas. Bonvolu rekomenci." + +#: actions/recoverpassword.php:111 +msgid "Could not update user with confirmed email address." +msgstr "Malsukcesas Äisdatigi uzanton per komfirmita 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 "" +"Se vi forgesas aÅ­ perdas vian pasvorton, ni povas sendi novan pasvorton al " +"la retpoÅtadreso konservita je via konto." + +#: 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 +msgid "Password recovery" +msgstr "Pasvorton rehavi." + +#: actions/recoverpassword.php:191 +msgid "Nickname or email address" +msgstr "Alinomo aÅ­ retpoÅtadreso." + +#: actions/recoverpassword.php:193 +msgid "Your nickname on this server, or your registered email address." +msgstr "Via alinomo ĉe tiu ĉi servilo, aÅ­ via registrita retpoÅadreso." + +#: actions/recoverpassword.php:199 actions/recoverpassword.php:200 +msgid "Recover" +msgstr "Rehavi" + +#: 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 "PetiÄas pasvorton rehavado" + +#: actions/recoverpassword.php:213 +msgid "Unknown action" +msgstr "Nekonata ago" + +#: 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 +msgid "Enter a nickname or email address." +msgstr "Alinomo aÅ­ retpoÅtadreso." + +#: actions/recoverpassword.php:282 +msgid "No user with that email address or username." +msgstr "Ne estas uzanto kun tiu retpoÅtadreso aÅ­ uzantnomo." + +#: actions/recoverpassword.php:299 +msgid "No registered email address for that user." +msgstr "Neniu registrita retpoÅtadreso apartenas al la uzanto." + +#: actions/recoverpassword.php:313 +msgid "Error saving address confirmation." +msgstr "Eraras pro komfirma kodo." + +#: actions/recoverpassword.php:338 +msgid "" +"Instructions for recovering your password have been sent to the email " +"address registered to your account." +msgstr "" +"Gvidoj rehavi vian pasvorton jam sendiÄas al la retpoÅtadreso registrita je " +"via konto." + +#: actions/recoverpassword.php:357 +msgid "Unexpected password reset." +msgstr "Neatendita pasvorto-rekomencigo." + +#: actions/recoverpassword.php:365 +msgid "Password must be 6 chars or more." +msgstr "Pasvorto devas enhavi 6 signojn aÅ­ pli." + +#: actions/recoverpassword.php:369 +msgid "Password and confirmation do not match." +msgstr "Pasvorto kaj komfirmo ne kongruas." + +#: actions/recoverpassword.php:395 +msgid "New password successfully saved. You are now logged in." +msgstr "Nova pasvorto sukcese konserviÄas. Vi nun estas ensalutinta." + +#: actions/register.php:92 actions/register.php:196 actions/register.php:412 +msgid "Sorry, only invited people can register." +msgstr "Pardonon, nur invito rajtas registri." + +#: actions/register.php:99 +msgid "Sorry, invalid invitation code." +msgstr "Pardonon, nevalida invitkodo." + +#: 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 "" +"Per tiu ĉi formularo vi povas krei novan konton. Poste povos vi afiÅi avizon " +"kaj komuniki kun amikoj kaj kolegoj. " + +#: actions/register.php:432 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." +msgstr "" +"1-64 minusklaj literoj aÅ­ ciferoj, neniu interpunkcio aÅ­ spaco. Bezonate." + +#: actions/register.php:437 +msgid "6 or more characters. Required." +msgstr "6 aÅ­ pli da literoj. Bezonate." + +#: actions/register.php:441 +msgid "Same as password above. Required." +msgstr "Same kiel supra pasvorto. Bezonate." + +#. 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 "Uzu nur por Äisdatigo, anonco, kaj rehavi pasvorton." + +#: actions/register.php:457 +msgid "Longer name, preferably your \"real\" name" +msgstr "Pli longa nomo, prefere via \"vera\" nomo." + +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Mi komprenas ke enhavo kaj datumo de %1$s estas privataj kaj sekretigita." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "Mia teksto kaj dosiero estas aÅ­torrajtigita de %1$s." + +#. 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 "Mia teksto kaj dosiero restu en mia propra aÅ­torrajto." + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. +#: actions/register.php:535 +msgid "All rights reserved." +msgstr "Ĉiuj rajtoj rezervitaj." + +#. 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 "" +"Mia teksto kaj dosiero estas atingebla per %s krom jene: pasvorto, " +"retpoÅtadreso, tujmesaÄilo-adreso, kaj telefonnumero." + +#: 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 "" +"Gratulon, %1$s! Kaj bovenon al %%%%site.name%%%%. Nun eble vi volus...\n" +"\n" +"* Al [via profilo](%2$s) kaj afiÅi vian unuan mesaÄon.\n" +"* Aldoni [Jabber/GTalk-adreson](%%%%action.imsettings%%%%) por afiÅi avizon " +"per tujmesaÄilo.\n" +"* [SerÅi personon](%%%%action.peoplesearch%%%%), kiun vi konas aÅ­ havas " +"similan Åatokupon kiel vi. \n" +"* Äœisdatigi vian [profila agordon](%%%%action.profilesettings%%%%) por " +"sciigi pli pri vi. \n" +"* Relegi la [enretaĵojn](%%%%doc.help%%%%) pri iu funkcio, kiun vi ne " +"rimarkus. \n" +"\n" +"Dankon pro registri kaj ni esperas al vi Äuo de uzi ĉi servon." + +#: actions/register.php:607 +msgid "" +"(You should receive a message by email momentarily, with instructions on how " +"to confirm your email address.)" +msgstr "" +"(Vi ricevos tuj mesaÄon retpoÅtan, kun gvidon konfirmi vian retpoÅtadreson.)" + +#: 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 "" +"Por aboni, [ensalutu](%%action.login%%), aÅ­ [krei konton](%%action.register%" +"%). Se vi jam havas konton ĉe iu [kongrua mikroblogilo-retejo](%%doc." +"openmublog%%), entajpu vian profilan URL jene." + +#: actions/remotesubscribe.php:112 +msgid "Remote subscribe" +msgstr "Defore aboni" + +#: actions/remotesubscribe.php:124 +msgid "Subscribe to a remote user" +msgstr "Aboni foran uzanton" + +#: actions/remotesubscribe.php:129 +msgid "User nickname" +msgstr "Uzanta alinomo" + +#: actions/remotesubscribe.php:130 +msgid "Nickname of the user you want to follow" +msgstr "Alnomo de la uzanto, kiun vi volas aboni." + +#: actions/remotesubscribe.php:133 +msgid "Profile URL" +msgstr "Profila URL" + +#: actions/remotesubscribe.php:134 +msgid "URL of your profile on another compatible microblogging service" +msgstr "URL de via profilo ĉe alia kongrua mikroblogilo-servo" + +#: 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 "Nevalida profila URL (fuÅa formato)" + +#: actions/remotesubscribe.php:168 +msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." +msgstr "" +"Ne valida profila URL (ne estas YADIS-dokumento aÅ­ difiniÄas nevalida XRDS)." + +#: actions/remotesubscribe.php:176 +msgid "That’s a local profile! Login to subscribe." +msgstr "Tio estas loka profilo! Ensalutu por aboni." + +#: actions/remotesubscribe.php:183 +msgid "Couldn’t get a request token." +msgstr "Malsukcesis akiri pet-ĵetonon." + +#: actions/repeat.php:57 +msgid "Only logged-in users can repeat notices." +msgstr "Nur ensalutinto rajtas ripeti avizon." + +#: actions/repeat.php:64 actions/repeat.php:71 +msgid "No notice specified." +msgstr "Neniu profilo specifiÄas." + +#: 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 +#, php-format +msgid "Replies to %s" +msgstr "Respondoj al %s" + +#: actions/replies.php:128 +#, php-format +msgid "Replies to %1$s, page %2$d" +msgstr "Respondoj al %1$s, paÄo %2$d" + +#: actions/replies.php:145 +#, php-format +msgid "Replies feed for %s (RSS 1.0)" +msgstr "Responda fluo al %s (RSS 1.0)" + +#: actions/replies.php:152 +#, php-format +msgid "Replies feed for %s (RSS 2.0)" +msgstr "Responda fluo al %s (RSS 2.0)" + +#: actions/replies.php:159 +#, php-format +msgid "Replies feed for %s (Atom)" +msgstr "Responda fluo al %s (Atom)" + +#: 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 them yet." +msgstr "" +"Tie ĉi estus tempstrio montranta respondojn al %1$s, sed %2$s ankoraÅ­ " +"ricevas neniun avizon." + +#: 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 "" +"Vi povas komenci interparoladon kun aliaj uzantoj, aboni pli da personoj aÅ­ " +"[aniÄi al grupoj](%%action.groups%%)." + +#: 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 "" +"Vi povas provi [puÅeti %1$s](../%2$s) aÅ­[afiÅi ion al li](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." + +#: actions/repliesrss.php:72 +#, php-format +msgid "Replies to %1$s on %2$s!" +msgstr "Respondoj al %1$s ĉe %2$s!" + +#: actions/revokerole.php:75 +msgid "You cannot revoke user roles on this site." +msgstr "Vi ne rajtas revoki de uzanto rolon ĉe ĉi tiu retejo." + +#: actions/revokerole.php:82 +msgid "User doesn't have this role." +msgstr "La uzanto ne havas la rolon." + +#: actions/rsd.php:146 actions/version.php:159 +msgid "StatusNet" +msgstr "StatusNet" + +#. TRANS: Menu item for site administration +#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 +#: lib/adminpanelaction.php:392 +msgid "Sessions" +msgstr "Seancoj" + +#: actions/sessionsadminpanel.php:65 +msgid "Session settings for this StatusNet site." +msgstr "Seancaj agordoj por tiu ĉi StatusNet-retejo" + +#: actions/sessionsadminpanel.php:175 +msgid "Handle sessions" +msgstr "Trakti seancojn" + +#: actions/sessionsadminpanel.php:177 +msgid "Whether to handle sessions ourselves." +msgstr "Ĉu traktu seancojn ni mem." + +#: actions/sessionsadminpanel.php:181 +msgid "Session debugging" +msgstr "Seanca sencimigado" + +#: actions/sessionsadminpanel.php:183 +msgid "Turn on debugging output for sessions." +msgstr "Åœalti sencimigadan eligon por seanco." + +#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 +#: actions/useradminpanel.php:294 +msgid "Save site settings" +msgstr "Konservi retejan agordon" + +#: actions/showapplication.php:82 +msgid "You must be logged in to view an application." +msgstr "Ensalutu por vidi la aplikaĵon." + +#: actions/showapplication.php:157 +msgid "Application profile" +msgstr "Aplikaĵa profilo" + +#. TRANS: Form input field label for application icon. +#: actions/showapplication.php:159 lib/applicationeditform.php:182 +msgid "Icon" +msgstr "Ikono" + +#. 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 "Statistiko" + +#: actions/showapplication.php:203 +#, php-format +msgid "Created by %1$s - %2$s access by default - %3$d users" +msgstr "Kreita de %1$s - %2$s defaÅ­lta aliroj - %3$d uzantoj" + +#: actions/showapplication.php:213 +msgid "Application actions" +msgstr "Aplikaĵa ago" + +#: actions/showapplication.php:236 +msgid "Reset key & secret" +msgstr "" + +#: actions/showapplication.php:261 +msgid "Application info" +msgstr "Aplikaĵa informo" + +#: 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 "Rajtigi URL" + +#: actions/showapplication.php:288 +msgid "" +"Note: We support HMAC-SHA1 signatures. We do not support the plaintext " +"signature method." +msgstr "" +"Rimarku: Ni subtenas HMAC-SHA1-subskribo. Ni ne subtenas platteksta " +"subskribado-metodon." + +#: actions/showfavorites.php:79 +#, php-format +msgid "%1$s's favorite notices, page %2$d" +msgstr "Åœatataj avizoj de %s, paÄo %2$d" + +#: actions/showfavorites.php:132 +msgid "Could not retrieve favorite notices." +msgstr "Malsukcesis ricevi Åataton." + +#: actions/showfavorites.php:171 +#, php-format +msgid "Feed for favorites of %s (RSS 1.0)" +msgstr "Fluo pri Åatato de %s (RSS 1.0)" + +#: actions/showfavorites.php:178 +#, php-format +msgid "Feed for favorites of %s (RSS 2.0)" +msgstr "Fluo pri Åatato de %s (RSS 2.0)" + +#: actions/showfavorites.php:185 +#, php-format +msgid "Feed for favorites of %s (Atom)" +msgstr "Fluo pri Åatato 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 "" +"Vi ne jam Åatis iun ajn avizon. Alklaku la Åati-klavon apud avizo Åatita por " +"poste trovi Äin kaj atentigi al Äi." + +#: 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 "" +"%s ankoraÅ­ ne aldonis iun ajn Åatatan avizon. Sendu ion, kion ili Åatos. :)" + +#: 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 "" +"%s ankoraÅ­ ne aldonis iun ajn Åatatan avizon. Kial ne [krei konton](%%%%" +"action.register%%%%) kaj sendi ion, kion ili Åatos. :)" + +#: actions/showfavorites.php:243 +msgid "This is a way to share what you like." +msgstr "Tiel vi povas diskonigi vian Åataton." + +#: actions/showgroup.php:82 lib/groupnav.php:86 +#, php-format +msgid "%s group" +msgstr "Grupo %s" + +#: actions/showgroup.php:84 +#, php-format +msgid "%1$s group, page %2$d" +msgstr "Grupo %1$s, paÄo %2$d" + +#: actions/showgroup.php:227 +msgid "Group profile" +msgstr "Grupa profilo" + +#: 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 +msgid "Aliases" +msgstr "Alnomo" + +#: actions/showgroup.php:302 +msgid "Group actions" +msgstr "Grupaj agoj" + +#: actions/showgroup.php:338 +#, php-format +msgid "Notice feed for %s group (RSS 1.0)" +msgstr "Avizofluo de grupo %s (RSS 1.0)" + +#: actions/showgroup.php:344 +#, php-format +msgid "Notice feed for %s group (RSS 2.0)" +msgstr "Avizofluo de grupo %s (RSS 2.0)" + +#: actions/showgroup.php:350 +#, php-format +msgid "Notice feed for %s group (Atom)" +msgstr "Avizofluo de grupo %s (Atom)" + +#: actions/showgroup.php:355 +#, php-format +msgid "FOAF for %s group" +msgstr "Foramiko de grupo %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 +msgid "(None)" +msgstr "(nenio)" + +#: actions/showgroup.php:404 +msgid "All members" +msgstr "Ĉiuj grupanoj" + +#: actions/showgroup.php:439 +msgid "Created" +msgstr "Kreita" + +#: 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 "" +"**%s** estas uzanto-grupo ĉe %%site.name%%, [mikrobloga](http://en.wikipedia." +"org/wiki/Micro-blogging) servo surbaze de ilaro de Libera Molvaro [StatusNet]" +"(http://status.net/). [AniÄu](%%action.register%%) por fariÄi parto de tiu " +"ĉi grupo kaj multe pli! ([Pli](%%doc.help%%))" + +#: 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** estas grupo de uzantoj ĉe %%%%*site.*name%%%%, [mikrobloga servo]" +"(*http://estas.*wikipedia.*org/*wiki/*Microblogging) baze de ilaro de Libera " +"Molvaro [StatusNet](*http://*status.*net/), kie anoj konigas mesaÄetojn pri " +"siaj vivoj kaj Åatokupoj. " + +#: actions/showgroup.php:489 +msgid "Admins" +msgstr "Administrantoj" + +#: actions/showmessage.php:81 +msgid "No such message." +msgstr "Ne estas tiu mesaÄo." + +#: actions/showmessage.php:98 +msgid "Only the sender and recipient may read this message." +msgstr "Nur la sendinto kaj ricevinto rajtas legi la mesaÄon." + +#: actions/showmessage.php:108 +#, php-format +msgid "Message to %1$s on %2$s" +msgstr "MesaÄo al %1$s ĉe %2$s" + +#: actions/showmessage.php:113 +#, php-format +msgid "Message from %1$s on %2$s" +msgstr "MesaÄo de %1$s ĉe %2$s" + +#: actions/shownotice.php:90 +msgid "Notice deleted." +msgstr "Avizo viÅiÄas" + +#: actions/showstream.php:73 +#, php-format +msgid " tagged %s" +msgstr " Etikedigita %s" + +#: actions/showstream.php:79 +#, php-format +msgid "%1$s, page %2$d" +msgstr "%1$s, paÄo %2$d" + +#: actions/showstream.php:122 +#, php-format +msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" +msgstr "Avizofluo pri %1$s etikedigita %2$s (RSS 1.0)" + +#: actions/showstream.php:129 +#, php-format +msgid "Notice feed for %s (RSS 1.0)" +msgstr "Avizofluo pri %1$s (RSS 1.0)" + +#: actions/showstream.php:136 +#, php-format +msgid "Notice feed for %s (RSS 2.0)" +msgstr "Avizofluo pri %1$s (RSS 2.0)" + +#: actions/showstream.php:143 +#, php-format +msgid "Notice feed for %s (Atom)" +msgstr "Avizofluo pri %1$s (Atom)" + +#: actions/showstream.php:148 +#, php-format +msgid "FOAF for %s" +msgstr "Foramiko de %s" + +#: actions/showstream.php:200 +#, php-format +msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." +msgstr "Tie ĉi estus tempstrio de %1$s sed %2$s ankoraÅ­ afiÅis nenion." + +#: 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 "" +"Ĉu okazas io interesa lastatempe? Vi ne afiÅis ion ajn, nun taÅ­gas komenci :)" + +#: 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 "" +"Vi povas provi [puÅeti %1$s] aÅ­ [afiÅi ion al li](%%%%action.newnotice%%%%?" +"status_textarea=%2$s)." + +#: 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 "" +"**%s** havas konton ĉe %%site.name%%, [mikrobloga](http://en.wikipedia.org/" +"wiki/Micro-blogging) servo surbaze de ilaro de Libera Molvaro [StatusNet]" +"(http://status.net/). [AniÄu](%%action.register%%) por sekvi avizojn de **%" +"s** kaj multe pli! ([Pli](%%doc.help%%))" + +#: actions/showstream.php:248 +#, php-format +msgid "" +"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en." +"wikipedia.org/wiki/Micro-blogging) service based on the Free Software " +"[StatusNet](http://status.net/) tool. " +msgstr "" +"**%s** havas konton ĉe %%site.name%%, [mikrobloga](http://en.wikipedia.org/" +"wiki/Micro-blogging) servo surbaze de ilaro de Libera Molvaro [StatusNet]" +"(http://status.net/). " + +#: actions/showstream.php:305 +#, php-format +msgid "Repeat of %s" +msgstr "Ripeto de %s" + +#: actions/silence.php:65 actions/unsilence.php:65 +msgid "You cannot silence users on this site." +msgstr "Vi ne rajtas silentigi uzanton ĉe ĉi tiu retejo." + +#: actions/silence.php:72 +msgid "User is already silenced." +msgstr "La uzanto jam silentiÄas." + +#: actions/siteadminpanel.php:69 +msgid "Basic settings for this StatusNet site" +msgstr "Baza agordo por ĉi tiu StatusNet-retejo." + +#: actions/siteadminpanel.php:133 +msgid "Site name must have non-zero length." +msgstr "La sita nomo devas pli ol nula longeco" + +#: actions/siteadminpanel.php:141 +msgid "You must have a valid contact email address." +msgstr "Vi devas havi validan kontakteblan retpoÅtadreson" + +#: actions/siteadminpanel.php:159 +#, php-format +msgid "Unknown language \"%s\"." +msgstr "Nekonata lingvo \"%s\"." + +#: actions/siteadminpanel.php:165 +msgid "Minimum text limit is 0 (unlimited)." +msgstr "Teksto estu almenaÅ­ 0 literojn (senlime)." + +#: 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 +msgid "Site name" +msgstr "Nomo de retejo" + +#: actions/siteadminpanel.php:225 +msgid "The name of your site, like \"Yourcompany Microblog\"" +msgstr "Nomo de via retejo, ekzemple \"Viafirmo Mikroblogo\"" + +#: actions/siteadminpanel.php:229 +msgid "Brought by" +msgstr "Eblige de" + +#: actions/siteadminpanel.php:235 +msgid "URL used for credits link in footer of each page" +msgstr "URL por danko-ligilo je subaĵo sur ĉiu paÄo" + +#: actions/siteadminpanel.php:239 +msgid "Contact email address for your site" +msgstr "Kontakta retpoÅtadreso por via retejo" + +#: actions/siteadminpanel.php:245 +msgid "Local" +msgstr "Loka" + +#: actions/siteadminpanel.php:256 +msgid "Default timezone" +msgstr "DefaÅ­lta horzono" + +#: actions/siteadminpanel.php:257 +msgid "Default timezone for the site; usually UTC." +msgstr "DefaÅ­lta horzono de la retejo; kutime UTC." + +#: actions/siteadminpanel.php:262 +msgid "Default language" +msgstr "DefaÅ­lta lingvo" + +#: actions/siteadminpanel.php:263 +msgid "Site language when autodetection from browser settings is not available" +msgstr "" + +#: actions/siteadminpanel.php:271 +msgid "Limits" +msgstr "Limoj" + +#: 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:113 +msgid "Max length for the site-wide notice is 255 chars." +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 "Konservi retejan agordon" + +#. TRANS: Form guide in IM settings form. +#: actions/smssettings.php:133 +msgid "Awaiting confirmation on this phone number." +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 "Konfirmi" + +#. 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: Message given saving SMS phone number without having provided one. +#: actions/smssettings.php:338 +msgid "No phone number." +msgstr "Mankas la telefononumero." + +#. 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: Menu item for site administration +#: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196 +#: lib/adminpanelaction.php:408 +msgid "Snapshots" +msgstr "" + +#: actions/snapshotadminpanel.php:133 +msgid "Snapshot frequency must be a number." +msgstr "" + +#: actions/snapshotadminpanel.php:200 +msgid "Randomly during web hit" +msgstr "" + +#: actions/snapshotadminpanel.php:201 +msgid "In a scheduled job" +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 +msgid "Save snapshot settings" +msgstr "Konservi retejan agordon" + +#: actions/subscribe.php:77 +msgid "This action only accepts POST requests." +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 "Abonita" + +#: 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/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:208 +msgid "Jabber" +msgstr "Jabber" + +#: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 +msgid "SMS" +msgstr "SMS" + +#: actions/tagother.php:81 actions/userauthorization.php:132 +#: lib/userprofile.php:103 +msgid "Photo" +msgstr "Foto" + +#: actions/tagother.php:193 +msgid "" +"You can only tag people you are subscribed to or who are subscribed to you." +msgstr "" + +#. TRANS: User admin panel title +#: actions/useradminpanel.php:59 +msgctxt "TITLE" +msgid "User" +msgstr "Uzanto" + +#: 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 "Nevalida bonvena teksto. La longlimo estas 225 literoj." + +#: actions/useradminpanel.php:165 +#, php-format +msgid "Invalid default subscripton: '%1$s' is not user." +msgstr "Nevalida defaÅ­lta abono: '%1$s' ne estas uzanto." + +#. 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 "Longlimo de biografio" + +#: actions/useradminpanel.php:223 +msgid "Maximum length of a profile bio in characters." +msgstr "Longlimo de profila biografio, je literoj" + +#: actions/useradminpanel.php:231 +msgid "New users" +msgstr "Novuloj" + +#: actions/useradminpanel.php:235 +msgid "New user welcome" +msgstr "Bonveno al novuloj" + +#: actions/useradminpanel.php:236 +msgid "Welcome text for new users (Max 255 chars)." +msgstr "Bonvena teksto al novaj uzantoj (apenaÅ­ 255 literoj)." + +#: actions/useradminpanel.php:241 +msgid "Default subscription" +msgstr "DefaÅ­lta abono" + +#: actions/useradminpanel.php:242 +msgid "Automatically subscribe new users to this user." +msgstr "AÅ­tomate aboni novajn uzantojn al ĉi tiu uzanto." + +#: actions/useradminpanel.php:251 +msgid "Invitations" +msgstr "Invitoj" + +#: actions/useradminpanel.php:256 +msgid "Invitations enabled" +msgstr "Invito ebliÄis" + +#: actions/useradminpanel.php:258 +msgid "Whether to allow users to invite new users." +msgstr "Ĉu permesi al uzantoj inviti novan uzantojn." + +#: actions/userauthorization.php:105 +msgid "Authorize subscription" +msgstr "Rajtigi abonon" + +#: 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 "" +"Bonvolu kontroli la detalojn por certigi ĉu vi deziras aboni la avizoj de ĉi " +"tiu uzanto. Se ne simple alklaku “Rifuzi\"." + +#: 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 +msgid "Subscribe to this user" +msgstr "Aboni la uzanton" + +#: actions/userauthorization.php:219 +msgid "Reject" +msgstr "Malakcepti" + +#: actions/userauthorization.php:220 +msgid "Reject this subscription" +msgstr "Rifuzi la abonon" + +#: actions/userauthorization.php:232 +msgid "No authorization request!" +msgstr "Ne bezonas permesado!" + +#: actions/userauthorization.php:254 +msgid "Subscription authorized" +msgstr "Abono permesiÄis" + +#: 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 "" +"La abono permesiÄis, sed ne pasiÄis revoka URL. Legu gvidon de la retejo pro " +"detaloj pri kiel rajtigi abonon. Via abono-ĵetono jenas:" + +#: actions/userauthorization.php:266 +msgid "Subscription rejected" +msgstr "Abono rifuziÄis" + +#: 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 "" +"La abono rifuziÄis sed ne pasiÄis revoka URL. Legu gvidon de la retejo pro " +"detaloj pri kiel rajtigi abonon. Via abono-ĵetono jenas:" + +#: actions/userauthorization.php:303 +#, php-format +msgid "Listener URI ‘%s’ not found here." +msgstr "URL de aboninto ‘%s’ ne troviÄas tie ĉi." + +#: actions/userauthorization.php:308 +#, php-format +msgid "Listenee URI ‘%s’ is too long." +msgstr "URL de abonito ‘%s’ tro longas." + +#: actions/userauthorization.php:314 +#, php-format +msgid "Listenee URI ‘%s’ is a local user." +msgstr "URL de abonito ‘%s’ estas de loka uzanto." + +#: actions/userauthorization.php:329 +#, php-format +msgid "Profile URL ‘%s’ is for a local user." +msgstr "Profila URL ‘%s’ estas de loka uzanto." + +#: actions/userauthorization.php:345 +#, php-format +msgid "Avatar URL ‘%s’ is not valid." +msgstr "VizaÄbilda URL ‘%s' ne estas valida." + +#: actions/userauthorization.php:350 +#, php-format +msgid "Can’t read avatar URL ‘%s’." +msgstr "Malsukcesis legi vizaÄbildan URL ‘%s’." + +#: actions/userauthorization.php:355 +#, php-format +msgid "Wrong image type for avatar URL ‘%s’." +msgstr "MalÄusta bildotipo por vizaÄbilda URL ‘%s'." + +#: actions/userdesignsettings.php:76 lib/designsettings.php:65 +msgid "Profile design" +msgstr "Profila desegno" + +#: 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 "Agodi kiel aspektu via profilo, per elekto de fonbildo kaj koloraro." + +#: actions/userdesignsettings.php:282 +msgid "Enjoy your hotdog!" +msgstr "Äœuu vian kolbasobulkon!" + +#. 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 "Grupoj %1$s, paÄo %2$d" + +#: actions/usergroups.php:132 +msgid "Search for more groups" +msgstr "Serĉi pli da grupoj" + +#: actions/usergroups.php:159 +#, php-format +msgid "%s is not a member of any group." +msgstr "%S ne estas ano de iu ajn grupo." + +#: actions/usergroups.php:164 +#, php-format +msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." +msgstr "Provu [serĉi grupojn](%%*action.*groupsearch%%) kaj aniÄi." + +#. 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 "ÄœisdatiÄoj de %1$s ĉe %2$s!" + +#: actions/version.php:75 +#, php-format +msgid "StatusNet %s" +msgstr "StatusNet %s" + +#: 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 "" +"La retejon ebligis %1$s de versio %2$s, aÅ­torrajto 2008-2010 StatusNet, Inc. " +"kaj kontribuintoj." + +#: 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 "" +"StatusNet estas libera molvaro: vi rajtas redistribui Äin kaj/aÅ­ modifi Äin " +"sub la condiĉoj de la GNU-a Affero Äœenerala Publika Licenco kiel eldonite de " +"la Fundamento por Libera-Molvaro. Kaj versio 3 de la Licenco kaj (viaelekte) " +"ĉiu posta versio taÅ­gas. " + +#: 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 "" +"Ĉi tiu programo distribuiÄis kun espero ke Äi estus utila, sed SEN AJNA " +"GARANTIO; ne eĉ suba garantio de FUNKCIPOVO aÅ­ TAŬGECO POR IU CERTA CELO. " +"Legu la GNU Affero Äœenerala Publika Licenco pro pli da detaloj. " + +#: 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 "" +"Vi laÅ­e jam ricevis eldonon de GNU-a Affero Äœenerala Publika Licenco. " +"Nekaze, legu %s." + +#: actions/version.php:191 +msgid "Plugins" +msgstr "Kromprogramo" + +#. TRANS: Secondary navigation menu option leading to version information on the StatusNet site. +#: actions/version.php:198 lib/action.php:805 +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 "Malsukcesis trakti URL '%s'" + +#. TRANS: Server exception thrown when... Robin thinks something is impossible! +#: classes/File.php:175 +msgid "Robin thinks something is impossible." +msgstr "Robin pensas ke io neeblas." + +#. 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 "" +"Grandlimo por sendota dosiero estas %1$d bajtoj, tamen tio, kion vi volis " +"sendi grandas %2$d bajtojn. Provu per versio pli malgranda." + +#. 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 "Dosiero tiel granda superos vian uzantan kvoton kun %d bajtoj." + +#. 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 "Dosiero tiel granda superos vian monatan kvoton kun %d bajtoj." + +#. 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: 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: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 +msgid "Problem saving notice. Too long." +msgstr "" + +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 +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:276 +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:283 +msgid "" +"Too many duplicate messages too quickly; take a breather and post again in a " +"few minutes." +msgstr "" + +#. TRANS: Server exception thrown when a notice cannot be saved. +#. TRANS: Server exception thrown when a notice cannot be updated. +#: classes/Notice.php:358 classes/Notice.php:385 +msgid "Problem saving notice." +msgstr "" + +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 +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:1759 +#, 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: 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: Link title attribute in user account settings menu. +#: lib/accountsettingsaction.php:130 +msgid "Change email handling" +msgstr "" + +#. 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:148 +#, 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:164 +msgid "Untitled page" +msgstr "" + +#. TRANS: Tooltip for main menu option "Personal" +#: lib/action.php:455 +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:458 +msgctxt "MENU" +msgid "Personal" +msgstr "Persona" + +#. TRANS: Tooltip for main menu option "Services" +#: lib/action.php:465 +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:468 +msgid "Connect" +msgstr "Konekti" + +#. TRANS: Tooltip for menu option "Admin" +#: lib/action.php:471 +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:474 +msgctxt "MENU" +msgid "Admin" +msgstr "Administri" + +#. TRANS: Tooltip for main menu option "Invite" +#: lib/action.php:478 +#, 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:481 +msgctxt "MENU" +msgid "Invite" +msgstr "Inviti" + +#. TRANS: Main menu option when logged in to log out the current user +#: lib/action.php:490 +msgctxt "MENU" +msgid "Logout" +msgstr " Elsaluti" + +#. TRANS: Tooltip for main menu option "Register" +#: lib/action.php:495 +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:498 +msgctxt "MENU" +msgid "Register" +msgstr "RegistriÄi" + +#. TRANS: Tooltip for main menu option "Help" +#: lib/action.php:507 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "Helpu min!" + +#: lib/action.php:510 +msgctxt "MENU" +msgid "Help" +msgstr "Helpo" + +#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. +#: lib/action.php:778 +msgid "Secondary site navigation" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to help on StatusNet. +#: lib/action.php:784 +msgid "Help" +msgstr "Helpo" + +#. TRANS: Secondary navigation menu option leading to text about StatusNet site. +#: lib/action.php:787 +msgid "About" +msgstr "Enkonduko" + +#. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. +#: lib/action.php:790 +msgid "FAQ" +msgstr "Oftaj demandoj" + +#. TRANS: Secondary navigation menu option leading to Terms of Service. +#: lib/action.php:795 +msgid "TOS" +msgstr "" + +#. TRANS: Secondary navigation menu option leading to privacy policy. +#: lib/action.php:799 +msgid "Privacy" +msgstr "Privateco" + +#. TRANS: Secondary navigation menu option. +#: lib/action.php:802 +msgid "Source" +msgstr "Fontkodo" + +#. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. +#: lib/action.php:808 +msgid "Contact" +msgstr "Kontakto" + +#: lib/action.php:810 +msgid "Badge" +msgstr "Insigno" + +#. TRANS: DT element for StatusNet software license. +#: lib/action.php:839 +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:843 +#, 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:846 +#, 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:850 +#, 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: Content license displayed when license is set to 'allrightsreserved'. +#. TRANS: %1$s is the copyright owner. +#: lib/action.php:880 +#, 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:884 +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:897 +#, php-format +msgid "All %1$s content and data are available under the %2$s license." +msgstr "" + +#. TRANS: Pagination message to go to a page displaying information more in the +#. TRANS: present than the currently displayed information. +#: lib/action.php:1247 +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:1257 +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. +#: lib/adminpanelaction.php:229 +msgid "showForm() not implemented." +msgstr "" + +#. TRANS: Client error message +#: lib/adminpanelaction.php:259 +msgid "saveSettings() not implemented." +msgstr "" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:352 +msgctxt "MENU" +msgid "Site" +msgstr "Retejo" + +#. TRANS: Menu item for site administration +#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115 +msgid "User" +msgstr "Uzanto" + +#. TRANS: Client error 401. +#: lib/apiauth.php:113 +msgid "API resource requires read-write access, but you only have read access." +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: 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 "" + +#: lib/attachmentnoticesection.php:67 +msgid "Notices where this attachment appears" +msgstr "" + +#: lib/channel.php:229 lib/mailhandler.php:142 +msgid "Command complete" +msgstr "" + +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 +msgid "Sorry, this command is not yet implemented." +msgstr "" + +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 +msgid "It does not make a lot of sense to nudge yourself!" +msgstr "" + +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 +#, php-format +msgid "" +"Subscriptions: %1$s\n" +"Subscribers: %2$s\n" +"Notices: %3$s" +msgstr "" + +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 +#, 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:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" + +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 +msgid "Error sending direct message." +msgstr "" + +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" + +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" + +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 +msgid "Can't subscribe to OMB profiles by command." +msgstr "" + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 +msgid "Command not yet implemented." +msgstr "" + +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 +msgid "Can't turn off notification." +msgstr "" + +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "" + +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 +#, php-format +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" + +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 +msgid "No one is subscribed to you." +msgstr "" + +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 +msgid "This person is subscribed to you:" +msgid_plural "These people are subscribed to you:" +msgstr[0] "" +msgstr[1] "" + +#: lib/command.php:905 +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: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/dberroraction.php:60 +msgid "Database error" +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:139 +msgid "Select tag to filter" +msgstr "" + +#: 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:168 +msgid "Describe the group or topic" +msgstr "" + +#: lib/groupeditform.php:187 +#, php-format +msgid "Extra nicknames for the group, comma- or space- separated, max %d" +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/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: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: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/leaveform.php:114 +msgid "Leave" +msgstr "Forlasi" + +#: lib/logingroupnav.php:86 +msgid "Sign up for a new account" +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 "" + +#: 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: 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: 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: 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: 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: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/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: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:146 +msgid "To" +msgstr "Al" + +#: lib/messageform.php:159 lib/noticeform.php:186 +msgid "Available characters" +msgstr "Haveblaj karakteroj" + +#: lib/messageform.php:178 lib/noticeform.php:237 +msgctxt "Send button for sending notice" +msgid "Send" +msgstr "Sendi" + +#: lib/noticeform.php:174 +#, php-format +msgid "What's up, %s?" +msgstr "" + +#: lib/noticeform.php:193 +msgid "Attach" +msgstr "" + +#: lib/noticeform.php:197 +msgid "Attach a file" +msgstr "" + +#: lib/noticeform.php:213 +msgid "Share my location" +msgstr "" + +#: lib/noticeform.php:217 +msgid "" +"Sorry, retrieving your geo location is taking longer than expected, please " +"try again later" +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 "al" + +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "" + +#: lib/personalgroupnav.php:125 +msgid "Inbox" +msgstr "" + +#: lib/personaltagcloudsection.php:56 +#, php-format +msgid "Tags in %s's notices" +msgstr "" + +#. TRANS: Average count of posts made per day since account registration +#: lib/profileaction.php:235 +msgid "Daily average" +msgstr "" + +#: 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/repeatform.php:132 +msgid "Yes" +msgstr "Jes" + +#: lib/router.php:709 +msgid "No single user defined for single-user mode." +msgstr "" + +#: lib/sandboxform.php:67 +msgid "Sandbox" +msgstr "" + +#: lib/searchaction.php:120 +msgid "Search site" +msgstr "" + +#: lib/searchaction.php:126 +msgid "Keyword(s)" +msgstr "" + +#: lib/searchaction.php:162 +msgid "Search help" +msgstr "" + +#: lib/searchgroupnav.php:81 +msgid "Find people on this site" +msgstr "" + +#: lib/searchgroupnav.php:83 +msgid "Find content of notices" +msgstr "" + +#: 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/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/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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/topposterssection.php:74 +msgid "Top posters" +msgstr "" + +#: lib/unsandboxform.php:69 +msgid "Unsandbox" +msgstr "" + +#: lib/unsubscribeform.php:137 +msgid "Unsubscribe" +msgstr "Malaboni" + +#: lib/userprofile.php:234 lib/userprofile.php:248 +msgid "User actions" +msgstr "Nekonata ago" + +#: lib/userprofile.php:237 +msgid "User deletion in progress..." +msgstr "" + +#: lib/userprofile.php:264 +msgid "Edit" +msgstr "Redakti" + +#: lib/userprofile.php:288 +msgid "Message" +msgstr "MesaÄo" + +#: lib/userprofile.php:326 +msgid "Moderate" +msgstr "Moderigi" + +#: 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:1102 +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:1105 +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:1109 +#, 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:1112 +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:1116 +#, 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:1119 +msgid "about a day ago" +msgstr "antaÅ­ ĉirkaÅ­ unu tago" + +#: lib/webcolor.php:123 +#, php-format +msgid "%s is not a valid color! Use 3 or 6 hex chars." +msgstr "" diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po index 39c2e95b80..a2d80329e3 100644 --- a/locale/es/LC_MESSAGES/statusnet.po +++ b/locale/es/LC_MESSAGES/statusnet.po @@ -1,8 +1,10 @@ # Translation of StatusNet to Spanish # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Crazymadlover # Author@translatewiki.net: Locos epraix # Author@translatewiki.net: McDutchie +# Author@translatewiki.net: Patcito # Author@translatewiki.net: PerroVerd # Author@translatewiki.net: Peter17 # Author@translatewiki.net: Translationista @@ -13,12 +15,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:36+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-09 17:36:47+0000\n" "Language-Team: Spanish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: es\n" "X-Message-Group: out-statusnet\n" @@ -26,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" @@ -88,37 +90,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -126,33 +129,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:114 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." @@ -160,7 +163,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 " @@ -170,77 +173,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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." @@ -248,7 +251,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." @@ -268,7 +271,7 @@ msgstr "No se pudo guardar el perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -327,47 +330,48 @@ msgstr "Mensajes directos a %s" msgid "All the direct messages sent to %s" msgstr "Todos los mensajes directos enviados a %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "¡Sin texto de mensaje!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Demasiado largo. Tamaño máx. de los mensajes es %d caracteres." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "No se encuentra usuario receptor." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -382,9 +386,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." @@ -394,125 +398,136 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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." @@ -523,15 +538,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 @@ -600,12 +615,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:463 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 @@ -613,8 +628,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" @@ -630,11 +645,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." @@ -643,69 +658,75 @@ msgstr "No puedes borrar el estado de otro usuario." msgid "No such notice." msgstr "No existe ese aviso." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "No puedes repetir tus propias notificaciones." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "No encontrado." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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!" @@ -720,16 +741,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." @@ -782,7 +807,7 @@ msgid "Preview" msgstr "Vista previa" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Borrar" @@ -822,11 +847,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 " @@ -841,7 +866,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 +875,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" @@ -859,7 +884,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" @@ -867,14 +892,16 @@ 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -884,8 +911,8 @@ msgstr "No se guardó información de bloqueo." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "No existe ese grupo." @@ -999,7 +1026,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:1307 msgid "There was a problem with your session token." msgstr "Hubo problemas con tu clave de sesión." @@ -1033,7 +1060,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." @@ -1064,7 +1091,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Borrar este aviso" @@ -1104,45 +1131,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" @@ -1152,57 +1187,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 @@ -1212,7 +1255,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" @@ -1326,7 +1369,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." @@ -1485,7 +1529,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" @@ -1622,7 +1666,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 @@ -1713,13 +1757,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" @@ -1862,7 +1906,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" @@ -2143,7 +2187,7 @@ msgstr "Ya estás suscrito a estos usuarios:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2266,63 +2310,60 @@ msgstr "Debes estar conectado para unirte a un grupo." msgid "No nickname or ID." msgstr "Ningún nombre de usuario o 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 +#: actions/joingroup.php:141 #, 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." msgstr "Debes estar conectado para dejar un grupo." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "No eres miembro de este grupo." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2330,14 +2371,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Inicia sesión con tu usuario y contraseña. ¿Aún no tienes usuario? [Crea](%%" -"action.register%%) una cuenta." +"Aún no tienes nombre de usuario? [Registrar](%%action.register%%) una nueva " +"cuenta." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2395,12 +2439,15 @@ msgstr "Usa este formulario para crear un grupo nuevo." msgid "New message" msgstr "Nuevo Mensaje " -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "No puedes enviar mensaje a este usuario." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "¡Ningún contenido!" @@ -2408,7 +2455,8 @@ msgstr "¡Ningún contenido!" msgid "No recipient specified." msgstr "No se especificó receptor." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "No te auto envíes un mensaje; dícetelo a ti mismo." @@ -2417,12 +2465,14 @@ msgstr "No te auto envíes un mensaje; dícetelo a ti mismo." msgid "Message sent" msgstr "Mensaje enviado" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Se ha enviado un mensaje directo a %s." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Error de Ajax" @@ -2430,7 +2480,7 @@ msgstr "Error de Ajax" msgid "New notice" msgstr "Nuevo aviso" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Mensaje publicado" @@ -2484,10 +2534,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" @@ -2541,30 +2591,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "No es un formato de dato soportado" @@ -2668,7 +2718,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" @@ -2680,11 +2730,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" @@ -2705,7 +2755,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" @@ -2911,43 +2961,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\"" @@ -2991,7 +3041,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)." @@ -3260,7 +3310,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." @@ -3268,39 +3318,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:507 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. " @@ -3308,36 +3358,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Entiendo que el contenido y los datos de %1$s son privados y confidenciales." + +#: 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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Todos los derechos reservados." + +#. 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, " @@ -3347,7 +3421,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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3380,7 +3454,7 @@ msgstr "" "\n" "¡Gracias por apuntarte! Esperamos que disfrutes usando este servicio." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3463,7 +3537,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repetido" @@ -3501,10 +3575,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 @@ -3518,11 +3592,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 @@ -3537,7 +3611,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" @@ -3551,7 +3625,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" @@ -3594,7 +3668,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" @@ -3605,12 +3679,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" @@ -3699,22 +3773,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." @@ -3772,7 +3846,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" @@ -3786,11 +3860,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." @@ -3806,7 +3880,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." @@ -3819,7 +3893,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" @@ -3896,11 +3970,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 @@ -4229,7 +4303,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" @@ -4289,7 +4363,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." @@ -4469,10 +4544,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." @@ -4584,7 +4655,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" @@ -4713,18 +4784,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, " @@ -4733,11 +4804,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 " @@ -4749,7 +4820,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 " @@ -4761,7 +4832,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 " @@ -4770,94 +4841,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4865,72 +4983,113 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Hubo un problema al guardar el aviso." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 -#, 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." @@ -4970,199 +5129,199 @@ msgid "Other" msgstr "Otro" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Navegación de sitio primario" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Conectarse" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Invitar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" -msgstr "Cerrar Sesión" +msgstr "Cerrar sesión" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrarse" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Iniciar sesión en el sitio" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Inicio de sesión" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "¡Ayúdame!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Ayuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Buscar personas o texto" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Ayuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Acerca de" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Preguntas Frecuentes" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacidad" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Fuente" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Ponerse en contacto" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Insignia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5172,13 +5331,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5190,34 +5349,34 @@ msgstr "" "licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5225,24 +5384,24 @@ msgstr "" "$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1236 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:1247 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:1257 msgid "Before" msgstr "Antes" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" "A espera de un elemento de alimentación de raíz, pero se obtuvo un documento " @@ -5252,11 +5411,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "Aún no se puede manejar contenido remoto." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Aún no se puede manejar contenido XML incrustado." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Aún no se puede manejar contenido incrustado Base64." @@ -5287,64 +5446,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:95 +#: 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 " @@ -5477,11 +5636,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" @@ -5497,45 +5656,54 @@ msgstr "Comando completo" msgid "Command failed" msgstr "Comando falló" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "No existe ningún mensaje con ese id" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Ningún aviso con ese ID existe." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Usuario no tiene último aviso" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "El/La usuario/a no tiene ningún último aviso" #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "No se pudo encontrar a nadie con el nombre de usuario %s" +msgid "Could not find a user with nickname %s." +msgstr "No se pudo encontrar el usuario con el apodo %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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" +msgid "Could not find a local user with nickname %s." msgstr "" -"No se pudo encontrar a ningún usuario local con el nombre de usuario %s" +"No se pudo encontrar a ningún usuario local con el nombre de usuario %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Disculpa, todavía no se implementa este comando." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "¡No tiene sentido darte un toque a ti mismo!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Toque enviado a %s" +msgid "Nudge sent to %s." +msgstr "Zumbido enviado a %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5546,55 +5714,53 @@ msgstr "" "Suscriptores: %2$s\n" "Avisos: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Aviso marcado como favorito." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Ya eres parte de ese grupo" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "No se pudo unir el usuario %s al grupo %s" +msgid "%1$s joined group %2$s." +msgstr "%1$s se unió al grupo %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s dejo el grupo %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Página de inicio: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Sobre: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5605,145 +5771,169 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "" -"Mensaje muy largo - la cantidad máxima es de %1$d caracteres y has enviado %2" -"$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "Mensaje muy largo - máximo %1$d caracteres, enviaste %2$d" -#. 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 "Se envió mensaje directo a %s" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Error al enviar mensaje directo." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "No puedes repetir tu propio aviso" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Ya has repetido este aviso" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Aviso de %s repetido" +msgid "Notice from %s repeated." +msgstr "Se ha repetido el aviso de %s." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Ha habido un error al repetir el aviso." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Mensaje muy largo - el máximo es de %d caracteres. Has enviado %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "Mensaje demasiado largo - el máximo es de 140 caracteres, enviaste %d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Responder a %s enviados" +msgid "Reply to %s sent." +msgstr "Se ha enviado la respuesta a %s." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Error al guardar el aviso." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Especificar el nombre del usuario a suscribir" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Especificar el nombre del usuario al cual se quiere suscribir." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "No te puedes suscribir a perfiles de OMB por orden." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Suscrito a %s" +msgid "Subscribed to %s." +msgstr "Suscrito a %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Especificar el nombre del usuario para desuscribirse de" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Especifica el nombre del usuario del cual cancelar la suscripción." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "Desuscrito de %s" +msgid "Unsubscribed from %s." +msgstr "Cancelada la suscripción a %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Todavía no se implementa comando." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notificación no activa." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "No se puede desactivar notificación." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notificación activada." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "No se puede activar notificación." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "El comando de inicio de sesión está desactivado" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "El comando de inicio de sesión está inhabilitado." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -"Este enlace es utilizable solamente una vez y sólo válido por 2 minutos: %s" +"Este enlace es utilizable sólo una vez y es válido sólo durante dos minutos: " +"%s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "Desuscrito de %s" +msgid "Unsubscribed %s." +msgstr "Cancelada la suscripción a %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "No estás suscrito a nadie." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ya estás suscrito a estos usuarios:" msgstr[1] "Ya estás suscrito a estos usuarios:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Nadie está suscrito a ti." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "No se pudo suscribir otro a ti." msgstr[1] "No se pudo suscribir otro a ti." -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "No eres miembro de ningún grupo" -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Eres miembro de este grupo:" msgstr[1] "Eres miembro de estos grupos:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6120,8 +6310,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" @@ -6149,19 +6349,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" @@ -6183,30 +6383,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 " @@ -6234,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 "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" @@ -6274,13 +6474,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" @@ -6318,7 +6518,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" @@ -6329,13 +6529,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" @@ -6398,7 +6598,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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "desde" @@ -6458,24 +6658,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." @@ -6488,11 +6688,11 @@ msgstr "Enviar un aviso directo" msgid "To" msgstr "Para" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Caracteres disponibles" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Enviar" @@ -6501,28 +6701,28 @@ msgstr "Enviar" msgid "Send a notice" msgstr "Enviar un aviso" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "¿Qué tal, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Adjuntar" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Adjuntar un archivo" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Compartir mi ubicación" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "No compartir mi ubicación" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6531,51 +6731,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "red" + +#: lib/noticelist.php:568 msgid "in context" msgstr "en contexto" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetido por" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Responder este aviso." -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Aviso repetido" @@ -6648,7 +6852,7 @@ msgstr "Mensajes enviados" msgid "Tags in %s's notices" msgstr "Etiquetas en avisos de %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Desconocido" @@ -6685,7 +6889,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." @@ -6709,13 +6913,13 @@ 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." #: lib/repeatform.php:107 msgid "Repeat this notice?" -msgstr "Responder este aviso?" +msgstr "Repetir este aviso?" #: lib/repeatform.php:132 msgid "Yes" @@ -6723,14 +6927,14 @@ msgstr "Sí" #: lib/repeatform.php:132 msgid "Repeat this notice" -msgstr "Responder este aviso." +msgstr "Repetir este aviso." #: lib/revokeroleform.php:91 #, php-format 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." @@ -6828,6 +7032,57 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Grabado de tema errado." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" +"El tema contiene nombres de extensiones de archivo inseguras y puede ser " +"peligroso." + +#: lib/themeuploader.php:241 +#, 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:259 +msgid "Error opening theme archive." +msgstr "Error al abrir archivo de tema." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Principales posteadores" @@ -6856,11 +7111,6 @@ msgstr "Desuscribirse de este usuario" msgid "Unsubscribe" msgstr "Cancelar suscripción" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "El usuario %s (%d) no tiene un registro de su perfil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Editar imagen" @@ -6908,56 +7158,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "hace un año" @@ -6970,8 +7220,3 @@ msgstr "¡%s no es un color válido!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s no es un color válido! Usar 3 o 6 caracteres hexagesimales" - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Mensaje muy largo - máximo %1$d caracteres, enviaste %2$d" diff --git a/locale/fa/LC_MESSAGES/statusnet.po b/locale/fa/LC_MESSAGES/statusnet.po index 300f8a602c..5585a34634 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:42+0000\n" +"POT-Creation-Date: 2010-09-09 17:35+0000\n" +"PO-Revision-Date: 2010-09-09 17:36:54+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,165 +89,165 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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:114 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 +#: 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 "" -"می‌توانید از صÙحه‌ی شخصی‌اش به او [سقلمه](../%2$s) بزنید یا [چیزی بنویسید](%%%%" -"action.newnotice%%%%?status_textarea=%3$s) تا توجه او را جذب کنید." +"اولین کسی باشید Ú©Ù‡ در [این موضوع](%%%%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 "" -"چرا [ثبت نام](%%%%action.register%%%%) نمی‌کنید Ùˆ سپس با Ùرستادن پیام توجه %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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +259,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:131 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 @@ -323,47 +325,48 @@ msgstr "پیام‌های مستقیم به %s" msgid "All the direct messages sent to %s" msgstr "تمام پیام‌های مستقیم Ùرستاده‌شده به %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "هیچ پیام متنی وجود ندارد!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: 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:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "کاربر گیرنده یاÙت نشد." -#: actions/apidirectmessagenew.php:150 +#: 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 "این پیغام را پیش‌تر به علایق خود اضاÙÙ‡ کرده‌اید" +msgstr "این پیغام را پیش‌تر به برگزیده‌های خود اضاÙÙ‡ کرده‌اید" -#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:285 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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." -msgstr "نمی‌توان کاربر را دنبال کرد: کاربر یاÙت نشد." +msgid "Could not follow user: profile not found." +msgstr "نمی‌توان کاربر را دنبال نکرد: کاربر یاÙت نشد." #: actions/apifriendshipscreate.php:118 #, php-format @@ -378,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 "باید Û² شناسه‌ی کاربر یا نام ظاهری وارد کنید." +#: 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." @@ -390,163 +393,165 @@ 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 -#, 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 "نام‌مستعار «%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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "شما از پیش یک عضو این گروه هستید." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "دسترسی شما به گروه توسط مدیر آن محدود شده است." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -#, 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 +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 #: lib/designsettings.php:294 msgid "There was a problem with your session token. Try again, please." -msgstr "مشکلی در دریاÙت جلسه‌ی شما وجود دارد. لطÙا بعدا سعی کنید." +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:463 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 "شما توانایی حذ٠وضعیت کاربر دیگری را ندارید." @@ -634,67 +642,73 @@ msgstr "شما توانایی حذ٠وضعیت کاربر دیگری را ند msgid "No such notice." msgstr "چنین پیامی وجود ندارد." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." -msgstr "نمی توانید خبر خود را تکرار کنید." +msgstr "نمی توانید پیام خود را تکرار کنید." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "خیلی طولانی است. حداکثر طول مجاز پیام %d حر٠است." +msgstr "این خیلی طولانی است. بیشینهٔ طول پیام %d نویسه است." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "یاÙت نشد." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s خط‌زمانی عمومی" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s به روز رسانی های عموم" @@ -702,23 +716,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 +746,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." @@ -736,7 +754,7 @@ msgstr "بدون اندازه." #: actions/avatarbynickname.php:69 msgid "Invalid size." -msgstr "اندازه‌ی نادرست" +msgstr "اندازه نادرست است." #. TRANS: Link description in user account settings menu. #: actions/avatarsettings.php:67 actions/showgroup.php:230 @@ -753,9 +771,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 +790,7 @@ msgid "Preview" msgstr "پیش‌نمایش" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "حذÙ" @@ -786,13 +803,13 @@ 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" -msgstr "یک مربع از عکس خود را انتخاب کنید تا چهره‌ی شما باشد." +msgstr "" +"یک مربع از عکس خود را انتخاب کنید تا به عنوان تصویر چهرهٔ شما انتخاب شود." #: actions/avatarsettings.php:347 actions/grouplogo.php:380 msgid "Lost our file data." @@ -814,11 +831,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 +851,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,23 +869,24 @@ 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 "ذخیرهٔ ردی٠اطلاعات شکست خورد." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -879,20 +896,20 @@ msgstr "" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." 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 +929,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 +947,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 +978,6 @@ msgid "Couldn't delete email confirmation." msgstr "نمی‌توان تصدیق پست الکترونیک را پاک کرد." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" msgstr "تایید نشانی" @@ -980,53 +996,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:1307 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 +1044,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 +1075,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "این پیام را پاک Ú©Ù†" @@ -1103,47 +1113,57 @@ 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 +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" @@ -1153,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 "عوض‌کردن رنگ‌ها" +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 @@ -1213,96 +1241,79 @@ 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 +#, php-format msgid "No such document \"%s\"" -msgstr "چنین سندی وجود ندارد." +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 "" - -#: actions/editapplication.php:218 actions/newapplication.php:206 -msgid "Callback is too long." -msgstr "" - -#: actions/editapplication.php:225 actions/newapplication.php:215 -msgid "Callback URL is not valid." -msgstr "" +msgstr "صÙحهٔ‌خانگی سازمان مورد نیاز است." #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد." +msgstr "نمی‌توان برنامه را به‌هنگام‌سازی کرد." #: actions/editgroup.php:56 #, php-format @@ -1315,9 +1326,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 +1336,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 +1347,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 +1358,6 @@ msgstr "گزینه‌ها ذخیره شدند." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" msgstr "تنظیمات پست الکترونیک" @@ -1361,9 +1371,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 +1387,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 +1396,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 +1405,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 +1419,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 +1433,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 +1463,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 +1473,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 +1493,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 +1507,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 +1536,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 +1549,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 +1565,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 +1591,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 +1631,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 @@ -1647,32 +1653,32 @@ msgstr "کاربران ویژه" #: actions/featured.php:71 #, php-format msgid "Featured users, page %d" -msgstr "کاربران ویژه، صÙحه‌ی %d" +msgstr "کاربران ویژه، صÙحهٔ %d" #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" -msgstr "" +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." @@ -1692,16 +1698,15 @@ msgstr "شما شناسایی نشده اید." #: actions/finishremotesubscribe.php:113 msgid "Could not convert request token to access token." -msgstr "نمی‌توان نشانه‌ی درخواست شما را به نشانه‌ی دسترسی تبدیل کرد." +msgstr "نمی‌توان نشانهٔ درخواست شما را به نشانهٔ دسترسی تبدیل کرد." #: actions/finishremotesubscribe.php:118 msgid "Remote service uses unknown version of OMB protocol." -msgstr "خدمات مورد نظر از نسخه‌ی نا Ù…Ùهومی از قرارداد OMB استÙاده می‌کند." +msgstr "خدمات مورد نظر از نسخهٔ نامÙهومی از قرارداد OMB استÙاده می‌کند." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "اشکال در به روز کردن کاربر دوردست." +msgstr "خطا هنگام به‌هنگام‌سازی نمایهٔ از راه دور." #: actions/getfile.php:79 msgid "No such file." @@ -1712,33 +1717,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 +1763,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 +1792,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." @@ -1824,7 +1829,7 @@ msgstr "شما می‌توانید یک نشان برای گروه خود با #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." -msgstr "یک ناحیه‌ی مربع از تصویر را انتخاب کنید تا به عنوان نشان باشد." +msgstr "یک ناحیه‌ی مربع از تصویر را انتخاب کنید تا به عنوان نشان انتخاب شود." #: actions/grouplogo.php:399 msgid "Logo updated." @@ -1832,7 +1837,7 @@ msgstr "نشان به‌هنگام‌سازی شد." #: actions/grouplogo.php:401 msgid "Failed updating logo." -msgstr "اشکال در ارسال نشان." +msgstr "به‌هنگام‌سازی نشان شکست خورد." #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format @@ -1840,9 +1845,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,10 +1877,10 @@ 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" +msgstr "خط‌زمانی %s" #. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name. #: actions/grouprss.php:142 @@ -1902,11 +1907,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 +1922,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 +1933,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 +1967,6 @@ msgstr "اشکال در پاکسازی" #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" msgstr "تنظیمات پیام‌رسان Ùوری" @@ -1984,7 +1990,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,30 +2021,28 @@ 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 msgid "Publish a MicroID for my Jabber/GTalk address." -msgstr "یک شناسه‌ی Ú©ÙˆÚ†Ú© برای Jabber/Gtalk من منتشر Ú©Ù†." +msgstr "یک شناسهٔ Ú©ÙˆÚ†Ú© برای Jabber/Gtalk من منتشر Ú©Ù†." #. TRANS: Confirmation message for successful IM preferences save. #: actions/imsettings.php:287 actions/othersettings.php:180 @@ -2054,12 +2057,12 @@ msgstr "هیچ شناسهٔ Jabber ای وجود ندارد." #. TRANS: Message given saving IM address that cannot be normalised. #: actions/imsettings.php:317 msgid "Cannot normalize that Jabber ID" -msgstr "نمی‌توان شناسه‌ی Jabber را تایید کرد" +msgstr "نمی‌توان شناسهٔ Jabber را تایید کرد" #. TRANS: Message given saving IM address that not valid. #: actions/imsettings.php:322 msgid "Not a valid Jabber ID" -msgstr "شناسه‌ی Jabber درست نیست" +msgstr "شناسهٔ Jabber درست نیست" #. TRANS: Message given saving IM address that is already set. #: actions/imsettings.php:326 @@ -2069,7 +2072,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 +2082,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,32 +2092,29 @@ 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. #: actions/imsettings.php:424 msgid "That is not your Jabber ID." -msgstr "این شناسه‌ی Jabber شما نیست." +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 +2127,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 +2149,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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" -msgstr "" +msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" @@ -2172,8 +2172,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 +2195,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,134 +2240,154 @@ 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 +#: actions/joingroup.php:141 +#, 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." msgstr "برای ترک یک گروه، شما باید وارد شده باشید." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 -#, fuzzy, php-format +#: actions/leavegroup.php:137 +#, 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 +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "با نام‌کاربری Ùˆ گذرواژه‌تان وارد شوید." + +#: actions/login.php:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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" @@ -2382,20 +2401,24 @@ msgstr "از این Ùرم برای ساختن یک گروه جدید استÙا msgid "New message" msgstr "پیام جدید" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" -msgstr "بدون محتوا!" +msgstr "محتوایی وحود ندارد!" #: actions/newmessage.php:158 msgid "No recipient specified." msgstr "هیچ گیرنده ای مشخص نشده" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "یک پیام را به خودتان Ù†Ùرستید؛ در عوض آن را آهسته برای خود بگویید." @@ -2404,22 +2427,24 @@ msgstr "یک پیام را به خودتان Ù†Ùرستید؛ در عوض آن msgid "Message sent" msgstr "پیام Ùرستاده‌شد" -#: actions/newmessage.php:185 -#, fuzzy, php-format +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 +#, php-format msgid "Direct message to %s sent." msgstr "پیام مستقیم به %s Ùرستاده شد." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" -msgstr "اشکال آژاکسی" +msgstr "خطای آژاکس" #: actions/newnotice.php:69 msgid "New notice" -msgstr "Ø¢Ú¯Ù‡ÛŒ جدید" +msgstr "پیام جدید" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" -msgstr "Ø¢Ú¯Ù‡ÛŒ Ùرستاده‌شد." +msgstr "پیام Ùرستاده‌شد." #: actions/noticesearch.php:68 #, php-format @@ -2427,17 +2452,17 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"جست‌و‌جوی متن پیام‌ها در %%site.name%%. هر شرط را با Ùاصله جدا کنید Ùˆ کمینه‌ی " -"جست‌و‌جو باید Û³ حر٠باشد." +"برای جست‌وجوی پیام‌ها در %%site.name%% از محتوایشان استÙاده کنید. عبارت‌ها را " +"با Ùاصله جدا کنید؛ آن‌ها باید Û³ نویسه یا بیش‌تر باشند." #: actions/noticesearch.php:78 msgid "Text search" msgstr "جست‌وجوی متن" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "نتایج جست‌و‌جو برای %s در %s" +msgstr "پیام از %1$s در %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2469,89 +2494,86 @@ msgstr "پیام‌هایی Ú©Ù‡ با جست‌و‌جوی عبارت »%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 "" -"این کاربر اجازه‌ی سقلمه زدن را نداده است یا پست‌الکترونیک خود را تایید نکرده " -"است." +"این کاربر اجازهٔ یادآوری‌کردن را نداده است یا پست‌الکترونیک خود را تایید یا " +"تعیین نکرده است." #: 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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "یک قالب دادهٔ پشتیبانی‌شده نیست." @@ -2561,10 +2583,9 @@ msgstr "جست‌وجوی کاربران" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "جست‌وجوی آگهی‌ها" +msgstr "جست‌وجوی پیام‌ها" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" msgstr "تنظیمات دیگر" @@ -2582,48 +2603,44 @@ msgstr "کوتاه‌کردن نشانی‌های اینترنتی با" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "کوتاه‌کننده‌ی نشانی مورد استÙاده." +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 "کوتاه کننده‌ی نشانی بسیار طولانی است (بیش‌تر از ÛµÛ° حرÙ)." +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 @@ -2633,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" @@ -2642,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" @@ -2650,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" @@ -2740,7 +2757,7 @@ msgstr "کارگزار" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "" +msgstr "نام میزبان کارگزار وب‌گاه." #: actions/pathsadminpanel.php:242 msgid "Path" @@ -2756,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" @@ -2788,7 +2805,7 @@ msgstr "چهره‌ها" #: actions/pathsadminpanel.php:284 msgid "Avatar server" -msgstr "کارگزار نیم‌رخ" +msgstr "کارگزار چهره‌ها" #: actions/pathsadminpanel.php:288 msgid "Avatar path" @@ -2816,7 +2833,7 @@ msgstr "شاخهٔ تصاویر پیش‌زمینه" #: actions/pathsadminpanel.php:320 msgid "SSL" -msgstr "" +msgstr "SSL" #: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 msgid "Never" @@ -2836,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" @@ -2857,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 "" +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 @@ -2957,6 +2972,7 @@ msgstr "برچسب‌ها" msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" +"برچسب‌ها برای خودتان (حروÙØŒ اعداد، -ØŒ .ØŒ Ùˆ _) جدا شده با کاما- یا Ùاصله-" #: actions/profilesettings.php:151 msgid "Language" @@ -2972,25 +2988,26 @@ 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." -msgstr "منطقه‌ی زمانی انتخاب نشده است." +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 @@ -2999,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." @@ -3007,7 +3024,7 @@ msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد." #: actions/profilesettings.php:375 msgid "Couldn't save profile." -msgstr "نمی‌توان شناسه را ذخیره کرد." +msgstr "نمی‌توان نمایه را ذخیره کرد." #: actions/profilesettings.php:383 msgid "Couldn't save tags." @@ -3025,28 +3042,28 @@ msgstr "" #: actions/public.php:92 msgid "Could not retrieve public stream." -msgstr "" +msgstr "نمی‌توان جریان عمومی را دریاÙت کرد." #: actions/public.php:130 #, php-format msgid "Public timeline, page %d" -msgstr "خط زمانی عمومی، صÙحه‌ی %d" +msgstr "خط‌زمانی عمومی، صÙحهٔ %d" #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" -msgstr "خط زمانی عمومی" +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 @@ -3054,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!" @@ -3073,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 @@ -3081,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 @@ -3106,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!" @@ -3144,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" @@ -3169,146 +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:507 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 "اجازه‌ی ثبت نام داده نشده است." +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:494 -#, 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 خصوصی Ùˆ محرمانه هستند." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "متن Ùˆ پرونده‌های من دارای حق تکثیر %1$s هستند." + +#. 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 "" -"به استثنای این داده ÛŒ محرمانه : کلمه ÛŒ عبور، آدرس ایمیل، آدرس IMØŒ Ùˆ شماره " -"تلÙÙ†." +"نوشته‌ها Ùˆ پرونده‌های من به جز داده‌های خصوصی گذرواژه، نشانی پست الکترونیک، " +"نشانی پیام‌رسان Ùوری Ùˆ شماره تلÙÙ† زیر مجوز %s هستند." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3326,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:566 +#: 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 @@ -3342,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" @@ -3361,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "" +msgstr "تکرار شده" #: actions/repeat.php:119 msgid "Repeated!" -msgstr "" +msgstr "تکرار شد!" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3419,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 @@ -3439,11 +3512,11 @@ msgid "Replies feed for %s (Atom)" msgstr "خوراک پاسخ‌ها برای %s (Atom)" #: actions/replies.php:199 -#, fuzzy, php-format +#, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." -msgstr "این خط‌زمانی %s Ùˆ دوستانش است، اما هیچ‌یک تاکنون چیزی پست نکرده‌اند." +"notice to them yet." +msgstr "این خط‌زمانی %1$s است، اما %2$s تاکنون چیزی Ù†Ùرستاده است." #: actions/replies.php:204 #, php-format @@ -3451,12 +3524,14 @@ 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 +#, 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) پیام می‌Ùرستد." @@ -3464,98 +3539,78 @@ msgstr "" #: 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 -#, fuzzy +#: 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 "" +msgstr "StatusNet" #. 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 "" - -#: actions/sessionsadminpanel.php:177 -msgid "Whether to handle sessions ourselves." -msgstr "" +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 "آمار" @@ -3563,11 +3618,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" @@ -3575,84 +3630,91 @@ 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 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 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 "" +"چرا به [باز کردن یک حساب](%%action.register%%) اقدام نمی‌کنید Ùˆ اولین Ù†Ùری " +"باشید Ú©Ù‡ یک پیام را به برگزیده‌هایش اضاÙÙ‡ می‌کند!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3661,26 +3723,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" @@ -3688,29 +3750,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 "اعضا" @@ -3722,13 +3784,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." @@ -3737,8 +3799,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." @@ -3746,10 +3814,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." @@ -3757,75 +3830,75 @@ 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 +#, 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) پیام می‌Ùرستد." @@ -3838,6 +3911,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 @@ -3846,11 +3924,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." @@ -3861,27 +3942,25 @@ 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 msgid "Unknown language \"%s\"." -msgstr "" +msgstr "زبان «%s» ناشناس است." #: 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." @@ -3889,7 +3968,7 @@ msgstr "" #: actions/siteadminpanel.php:221 msgid "General" -msgstr "" +msgstr "عمومی" #: actions/siteadminpanel.php:224 msgid "Site name" @@ -3901,23 +3980,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" @@ -3925,20 +4004,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" @@ -3950,56 +4028,45 @@ msgstr "محدودیت متن" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "بیشینهٔ تعداد حرو٠برای آگهی‌ها" - -#: actions/siteadminpanel.php:278 -msgid "Dupe limit" -msgstr "" +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. @@ -4007,22 +4074,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 @@ -4037,20 +4104,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 @@ -4059,9 +4124,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 @@ -4069,12 +4133,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 @@ -4084,7 +4149,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 @@ -4102,41 +4167,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. @@ -4146,6 +4209,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 @@ -4154,26 +4220,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" @@ -4181,92 +4246,88 @@ 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 "" - -#: actions/snapshotadminpanel.php:218 -msgid "Snapshots will be sent once every N web hits" -msgstr "" +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 @@ -4274,25 +4335,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 @@ -4303,157 +4366,146 @@ 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" -msgstr "" +msgstr "Jabber" #: 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 "" - -#: actions/tagother.php:39 -msgid "No ID argument." -msgstr "" +msgstr "خوراک پیام برای برچسب %s (Atom)" #: 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." 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 -#, fuzzy msgid "No profile ID in request." -msgstr "کاربری با چنین شناسه‌ای وجود ندارد." +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 "" +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" @@ -4461,19 +4513,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" @@ -4481,11 +4533,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 "" @@ -4493,10 +4545,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" @@ -4505,7 +4560,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" @@ -4513,15 +4568,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 "" @@ -4532,7 +4587,7 @@ msgstr "" #: actions/userauthorization.php:266 msgid "Subscription rejected" -msgstr "" +msgstr "اشتراک پذیرÙته نشد" #: actions/userauthorization.php:268 msgid "" @@ -4541,50 +4596,37 @@ msgid "" "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 "" +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!" @@ -4592,9 +4634,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" @@ -4603,152 +4645,204 @@ 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 -#, 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 "" +"این وب‌گاه برگرÙته از قدرت %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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" +"یک پرونده با این حجم زیاد می‌تواند از سهمیهٔ کاربری شما از %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 "" +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 ایجاد کرد" -#: 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 -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 "چنین نمایه‌ای (%1$d) برای پیام (%2$d) وجود ندارد." #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 +#: classes/Notice.php:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4756,92 +4850,125 @@ msgstr "" "تعداد زیاد پیام های دو نسخه ای Ùˆ بسرعت؛ استراحت کنید Ùˆ دقایقی دیگر مجددا " "ارسال کنید." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." -msgstr "مشکل در ذخیره کردن Ø¢Ú¯Ù‡ÛŒ." +msgstr "هنگام ذخیرهٔ پیام مشکلی ایجاد شد." -#: classes/Notice.php:965 -#, fuzzy +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" -msgstr "" +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 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 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 +msgid "Could not delete self-subscription." +msgstr "نمی‌توان اشتراک را ذخیره کرد." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -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 "نمی‌توان اشتراک را ذخیره کرد." -#: 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!" +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 -#, 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 @@ -4851,7 +4978,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 @@ -4864,320 +4991,309 @@ msgid "Other" msgstr "دیگر" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%s گروه %s را ترک کرد." +msgstr "%1$s (%2$s)" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 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:449 msgid "Primary site navigation" -msgstr "" +msgstr "مسیریابی اصلی وب‌گاه" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "شخصی" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "وصل‌شدن" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "مدیر" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, 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:481 msgctxt "MENU" msgid "Invite" msgstr "دعوت‌کردن" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "خروج" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" -msgstr "ثبت نام" +msgstr "ثبت‌نام" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "ورود به وب‌گاه" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "ورود" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "به من Ú©Ù…Ú© کنید!" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Ú©Ù…Ú©" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "جستجو برای شخص با متن" +msgstr "جست‌وجو برای اÙراد یا متن" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "دید محلی" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 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:778 msgid "Secondary site navigation" -msgstr "" +msgstr "مسیریابی Ùرعی وب‌گاه" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Ú©Ù…Ú©" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "دربارهٔ" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "سوال‌های رایج" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" -msgstr "" +msgstr "شرایط سرویس" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "خصوصی" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "منبع" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "تماس" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" -msgstr "" +msgstr "نشان" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, 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:846 #, 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:850 #, 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:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "قبل از" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: 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:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "هنوز نمی‌توان محتویات XML جاسازی‌شده را به‌کار برد." -#: lib/activityutils.php:240 +#: 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. @@ -5186,150 +5302,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:95 +#: 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 @@ -5339,25 +5449,24 @@ 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 #, php-format msgid "Approved %1$s - \"%2$s\" access." -msgstr "" +msgstr "تایید شده %1$s - با دسترسی «%2$s»" #. 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 @@ -5376,21 +5485,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" @@ -5404,249 +5511,270 @@ msgstr "دستور انجام شد" 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: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "پیدا نشد %s کاریری یا نام مستعار" +msgid "Could not find a user with nickname %s." +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 -msgid "Could not find a local user with nickname %s" -msgstr "پیدا نشد %s کاریری یا نام مستعار" +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "نمی‌توان یک کاربر را با نام مستعار %s پیدا کرد." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." -msgstr "متاسÙانه این دستور هنوز اجرا نشده." +msgstr "متاسÙانه این دستور هنوز پیاده نشده است." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 -msgid "Nudge sent to %s" -msgstr "Ùرتادن اژیر" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "یادآوری به %s Ùرستاده شد." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" "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 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." -msgstr "" +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: 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "عضویت %s در گروه %s نا موÙÙ‚ بود." +msgid "%1$s joined group %2$s." +msgstr "%1$s به گروه %2$s پیوست." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "خارج شدن %s از گروه %s نا موÙÙ‚ بود" +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s گروه %2$s را ترک کرد." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "صÙحه خانگی : %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" -msgstr "درباره ÛŒ : %s" +msgstr "دربارهٔ: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "" -"پیغام بسیار طولانی است - بیشترین اندازه امکان پذیر %d کاراکتر است , شما %d " -"تا Ùرستادید" - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "پیام مستقیم به %s Ùرستاده شد." +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" +"پیام خیلی طولانی است - حداکثر تعداد مجاز %1$d نویسه است Ú©Ù‡ شما %2$d نویسه را " +"Ùرستادید." -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "Ø¢Ú¯Ù‡ÛŒ تکرار شد" +#: lib/command.php:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "پیام %s تکرار شد." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "خطا هنگام تکرار Ø¢Ú¯Ù‡ÛŒ." +msgstr "هنگام تکرار پیام خطایی رخ داد." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"پیغام بسیار طولانی است - بیشترین اندازه امکان پذیر %d کاراکتر است , شما %d " -"تا Ùرستادید" +"پیام بسیار طولانی است - بیشترین اندازه امکان پذیر %d نویسه است، شما %d نویسه " +"Ùرستاده‌اید" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "به این Ø¢Ú¯Ù‡ÛŒ جواب دهید" +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 +#, php-format +msgid "Reply to %s sent." +msgstr "پاسخ به %s Ùرستاده شد." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." -msgstr "خطا هنگام ذخیره ÛŒ Ø¢Ú¯Ù‡ÛŒ" +msgstr "هنگام ذخیرهٔ پیام خطا رخ داد." -#: lib/command.php:620 -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 "شما به این پروÙيل متعهد نشدید" - -#: 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" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 +msgid "Can't subscribe to OMB profiles by command." +msgstr "نمی‌توان با دستور مشترک نمایه‌های OMB شد." + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "" +msgid "Unsubscribed from %s." +msgstr "اشتراک از %s لغو شد." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." -msgstr "دستور هنوز اجرا نشده" +msgstr "دستور هنوز پیاده نشده است." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "" +msgstr "آگاه‌سازی خاموش شد." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "ناتوان در خاموش کردن آگاه سازی." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "آگاه سازی Ùعال است." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "ناتوان در روشن کردن آگاه سازی." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Ùرمان ورود از کار اÙتاده است" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Ùرمان ورود غیرÙعال شده است." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" +"این پیوند تنها یک‌بار قابل استÙاده است Ùˆ Ùقط برای دو دقیقه معتبر است: %s." -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "مشترک‌ها" +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 +#, php-format +msgid "Unsubscribed %s." +msgstr "%s لغو اشتراک شد." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "شما توسط هیچ کس تصویب نشده اید ." +msgstr "شما مشترک هیچ‌کسی نشده‌اید." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "هم اکنون شما این کاربران را دنبال می‌کنید: " +msgstr[0] "شما مشترک این Ùرد شده‌اید:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "هیچکس شما را تایید نکرده ." +msgstr "هیچ‌کس مشترک شما نشده است." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "هیچکس شما را تایید نکرده ." +msgstr[0] "این Ùرد مشترک شما شده است:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "شما در هیچ گروهی عضو نیستید ." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 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 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5687,14 +5815,48 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" - -#: lib/common.php:135 -msgid "No configuration file found. " -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: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." @@ -5710,20 +5872,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" @@ -5731,28 +5892,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" @@ -5762,10 +5925,6 @@ msgstr "" msgid "RSS 2.0" msgstr "" -#: lib/feed.php:89 -msgid "Atom" -msgstr "" - #: lib/feed.php:91 msgid "FOAF" msgstr "" @@ -5776,7 +5935,7 @@ msgstr "صادر کردن داده" #: lib/galleryaction.php:121 msgid "Filter tags" -msgstr "" +msgstr "پالایهٔ برچسب‌ها" #: lib/galleryaction.php:131 msgid "All" @@ -5784,15 +5943,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" @@ -5805,26 +5964,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" @@ -5837,7 +5996,7 @@ msgstr "مسدود شده" #: lib/groupnav.php:102 #, php-format msgid "%s blocked users" -msgstr "" +msgstr "%s کاربر مسدود شده" #: lib/groupnav.php:108 #, php-format @@ -5851,12 +6010,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" @@ -5869,12 +6028,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." @@ -5883,16 +6042,11 @@ msgstr "Ùرمت(Ùایل) عکس پشتیبانی نشده." #: lib/imagefile.php:88 #, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" -"است . این Ùایل بسیار یزرگ است %s بیشترین مقدار قابل قبول برای اندازه ÛŒ Ùایل." - -#: lib/imagefile.php:93 -msgid "Partial upload." -msgstr "" +msgstr "این پرونده خیلی بزرگ است. بیشینهٔ اندازهٔ پرونده %s است." #: 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." @@ -5922,7 +6076,7 @@ msgstr "" #: lib/jabber.php:567 #, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "منبع صندوق ورودی نامعلوم است %d." #: lib/joinform.php:114 msgid "Join" @@ -5934,7 +6088,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" @@ -5943,7 +6097,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 @@ -5962,15 +6116,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" @@ -5984,21 +6158,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" @@ -6010,38 +6194,40 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -" %1$s شما یک ادرس پست جدید دارید در .\n" -"ایمیل بزنید %s برای پست یک پیغام جدید به .\n" -" %3$s راهنمای ایمیل بیشتر در .\n" +"شما یک نشانی ارسال تازه در %1$s دارید.\n" "\n" -", ازروی ÙˆÙاداری خود شما \n" +"برای Ùرستادن پیام‌های جدید به %2$s نامه بÙرستید.\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 " @@ -6056,15 +6242,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" @@ -6082,15 +6279,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" @@ -6110,23 +6321,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" @@ -6152,10 +6386,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 "" @@ -6163,7 +6419,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "از" @@ -6184,9 +6440,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." @@ -6205,7 +6461,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." @@ -6217,166 +6473,163 @@ 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" msgstr "به" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "کاراکترهای موجود" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Ùرستادن" #: lib/noticeform.php:160 msgid "Send a notice" -msgstr "یک Ø¢Ú¯Ù‡ÛŒ بÙرستید" +msgstr "Ùرستادن یک پیام" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" -msgstr "Ú†Ù‡ شده %s ?" +msgstr "Ú†Ù‡ خبر، %sØŸ" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" -msgstr "ضمیمه کردن" +msgstr "پیوست کردن" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" -msgstr "یک Ùایل ضمیمه کنید" +msgstr "یک Ùایل پیوست کنید" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "نمی‌توان تنظیمات مکانی را تنظیم کرد." +msgstr "مکان من به اشتراک گذاشته شود" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "موقعیت من به اشتراک گذاشته نشود" + +#: lib/noticeform.php:217 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 -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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "در زمینه" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "تکرار از" -#: lib/noticelist.php:629 -msgid "Reply to this notice" -msgstr "به این Ø¢Ú¯Ù‡ÛŒ جواب دهید" - #: lib/noticelist.php:630 -msgid "Reply" -msgstr "جواب دادن" +msgid "Reply to this notice" +msgstr "به این پیام پاسخ دهید" -#: lib/noticelist.php:674 +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "پاسخ" + +#: lib/noticelist.php:675 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" @@ -6388,7 +6641,7 @@ msgstr "پاسخ ها" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "چیزهای مورد علاقه" +msgstr "برگزیده‌ها" #: lib/personalgroupnav.php:125 msgid "Inbox" @@ -6404,16 +6657,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:114 +#: lib/plugin.php:115 msgid "Unknown" -msgstr "" +msgstr "ناشناخته" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6442,15 +6695,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" @@ -6472,14 +6725,9 @@ msgstr "خصوصیت" msgid "Popular" msgstr "محبوب" -#: lib/redirectingaction.php:94 -msgid "No return-to arguments." -msgstr "" - #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "به این Ø¢Ú¯Ù‡ÛŒ جواب دهید" +msgstr "این پیام تکرار شود؟" #: lib/repeatform.php:132 msgid "Yes" @@ -6487,24 +6735,16 @@ msgstr "بله" #: lib/repeatform.php:132 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 "" - -#: lib/sandboxform.php:67 -msgid "Sandbox" -msgstr "" - -#: lib/sandboxform.php:78 -msgid "Sandbox this user" -msgstr "" +msgstr "هیچ کاربر تنهایی برای حالت تک کاربره مشخص نشده است." #: lib/searchaction.php:120 msgid "Search site" @@ -6524,23 +6764,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..." @@ -6548,21 +6788,16 @@ msgstr "بیش‌تر..." #: lib/silenceform.php:67 msgid "Silence" -msgstr "آرامش" +msgstr "ساکت کردن" #: lib/silenceform.php:78 msgid "Silence this user" -msgstr "آرامش این کاربر" - -#: lib/subgroupnav.php:83 -#, php-format -msgid "People %s subscribes to" -msgstr "" +msgstr "ساکت کردن این کاربر" #: lib/subgroupnav.php:91 #, php-format msgid "People subscribed to %s" -msgstr "" +msgstr "اÙراد مشترک %s" #: lib/subgroupnav.php:99 #, php-format @@ -6576,7 +6811,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 @@ -6592,6 +6827,42 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "اعلان های بالا" @@ -6600,30 +6871,21 @@ msgstr "اعلان های بالا" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -msgid "Unsandbox this user" -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 "" - -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "کاربر هیچ شناس‌نامه‌ای ندارد." +msgstr "لغو اشتراک" #: lib/userprofile.php:117 msgid "Edit Avatar" @@ -6631,15 +6893,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" @@ -6655,74 +6917,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:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "چند ثانیه پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "حدود یک دقیقه پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "حدود یک ساعت پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "حدود یک روز پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "حدود یک ماه پیش" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "حدود یک سال پیش" @@ -6734,11 +6995,4 @@ msgstr "%s یک رنگ صحیح نیست!" #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." -msgstr "%s یک رنگ صحیح نیست! از Û³ یا Û¶ حر٠مبنای شانزده استÙاده کنید" - -#: lib/xmppmanager.php:403 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"پیغام بسیار طولانی است - بیشترین اندازه امکان پذیر %d کاراکتر است , شما %d " -"تا Ùرستادید" +msgstr "%s یک رنگ صحیح نیست! از Û³ یا Û¶ نویسه مبنای شانزده استÙاده کنید" diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po index 9020ccaeb7..5cb62b22da 100644 --- a/locale/fi/LC_MESSAGES/statusnet.po +++ b/locale/fi/LC_MESSAGES/statusnet.po @@ -10,59 +10,27 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:39+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:01+0000\n" "Language-Team: Finnish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fi\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy -msgid "Access" -msgstr "Hyväksy" - -#. TRANS: Page notice -#: actions/accessadminpanel.php:67 -#, fuzzy -msgid "Site access settings" -msgstr "Profiilikuva-asetukset" - -#. TRANS: Form legend for registration form. -#: actions/accessadminpanel.php:161 -#, fuzzy -msgid "Registration" -msgstr "Rekisteröidy" - #. TRANS: Checkbox instructions for admin setting "Private" #: 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 -#, fuzzy -msgctxt "LABEL" -msgid "Private" -msgstr "Yksityisyys" - #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." msgstr "" -#. TRANS: Checkbox label for configuring site as invite only. -#: actions/accessadminpanel.php:176 -#, fuzzy -msgid "Invite only" -msgstr "Kutsu" - #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." @@ -70,95 +38,76 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Estä" - -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "Profiilikuva-asetukset" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Save" -msgstr "Tallenna" +msgstr "Suljettu" #. 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." +msgstr "Tuota tagia ei ole." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -#, fuzzy, php-format +#: actions/all.php:90 +#, php-format msgid "%1$s and friends, page %2$d" -msgstr "%s ja kaverit, sivu %d" +msgstr "%s ja kaverit" #. 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:114 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 +115,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 " @@ -175,87 +124,46 @@ msgstr "" "Kokeile useamman käyttäjän tilaamista, [liity ryhmään] (%%action.groups%%) " "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 -#, 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)." -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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Ei voitu päivittää käyttäjää." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -266,14 +174,9 @@ msgstr "Ei voitu päivittää käyttäjää." msgid "User has no profile." msgstr "Käyttäjällä ei ole profiilia." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Ei voitu tallentaa profiilia." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -283,27 +186,9 @@ msgid "" "current configuration." msgstr "" -#: 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 -#, fuzzy -msgid "Unable to save your design settings." -msgstr "Twitter-asetuksia ei voitu tallentaa!" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Ei voitu päivittää käyttäjää." - #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Et voi lopettaa itsesi tilausta!" +msgstr "Sinä et voi poistaa käyttäjiä." #: actions/apiblockcreate.php:126 msgid "Block user failed." @@ -333,50 +218,41 @@ msgstr "Suorat viestit käyttäjälle %s" msgid "All the direct messages sent to %s" msgstr "Kaikki suorat viestit käyttäjälle %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Viestissä ei ole tekstiä!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Liian pitkä päivitys. Maksimikoko päivitykselle on %d merkkiä." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Vastaanottajaa ei löytynyt." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 -#, 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." msgstr "Ei voitu lisätä suosikiksi." -#: actions/apifavoritedestroy.php:122 -#, 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." -msgstr "Ei voitu tilata käyttäjää: Käyttäjää ei löytynyt." +msgid "Could not follow user: profile not found." +msgstr "Ei voitu lopettaa tilausta: Käyttäjää ei löytynyt." #: actions/apifriendshipscreate.php:118 #, php-format @@ -388,164 +264,143 @@ msgid "Could not unfollow user: User not found." msgstr "Ei voitu lopettaa tilausta: Käyttäjää ei löytynyt." #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "Et voi lopettaa itsesi tilausta!" +msgstr "Sinä et voi poistaa käyttäjiä." -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "Kaksi käyttäjätunnusta tai nimeä täytyy antaa." +#: 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 "Julkista päivitysvirtaa ei saatu." +msgstr "Ei voitu päivittää käyttäjää." #: actions/apifriendshipsshow.php:142 -#, fuzzy msgid "Could not find target user." -msgstr "Ei löytynyt yhtään päivitystä." +msgstr "Ei voitu päivittää käyttäjää." -#: 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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "kuvaus on liian pitkä (max 140 merkkiä)." +msgstr "kuvaus on liian pitkä (max %d 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 -#, 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 -#, 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 "Ryhmää ei löytynyt!" +msgstr "Ei löytynyt." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 -#, 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 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "Ei voitu poistaa käyttäjää %s ryhmästä %s" +msgstr "Käyttäjä %s ei voinut liittyä ryhmään %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 -#, 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 -#, fuzzy, php-format -msgid "groups on %s" -msgstr "Ryhmän toiminnot" +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Komento epäonnistui" #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Koko ei kelpaa." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -555,21 +410,6 @@ msgstr "" "Istuntosi avaimen kanssa oli ongelmia. Olisitko ystävällinen ja kokeilisit " "uudelleen." -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "Käyttäjätunnus tai salasana ei kelpaa." - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "Virhe tapahtui käyttäjän asettamisessa." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "Tietokantavirhe tallennettaessa risutagiä: %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -611,12 +451,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:463 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,30 +464,20 @@ 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" -#: actions/apioauthauthorize.php:328 -#, fuzzy -msgid "Deny" -msgstr "Ulkoasu" - -#: actions/apioauthauthorize.php:334 -#, fuzzy -msgid "Allow" -msgstr "Kaikki" - #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: 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ä." @@ -656,93 +486,86 @@ msgstr "Et voi poistaa toisen käyttäjän päivitystä." msgid "No such notice." msgstr "Päivitystä ei ole." -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "Ilmoituksia ei voi pistää päälle." - -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." -msgstr "Poista tämä päivitys" +msgstr "Tätä päivitystä ei voi poistaa." -#: 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ei löytynyt." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:110 +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / Käyttäjän %s suosikit" +msgstr "Käyttäjän %1$s päivitys %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 " Palvelun %s päivitykset, jotka %s / %s on merkinnyt suosikikseen." +msgstr "Käyttäjän %1$s suosikit palvelussa %2$s!" -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / Vastaukset päivitykseen %2$s" +msgstr "Käyttäjän %1$s päivitys %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:107 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:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s päivitykset kaikilta!" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "Vastaukset käyttäjälle %s" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format -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 -#, fuzzy, php-format +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "Käyttäjän %1$s päivitykset palvelussa %2$s!" +msgstr "Käyttäjän %1$s suosikit 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." @@ -777,9 +600,8 @@ msgstr "Voit ladata oman profiilikuvasi. Maksimikoko on %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 -#, fuzzy msgid "User without matching profile." -msgstr "Käyttäjälle ei löydy profiilia" +msgstr "Käyttäjällä ei ole profiilia." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -797,7 +619,7 @@ msgid "Preview" msgstr "Esikatselu" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Poista" @@ -809,11 +631,6 @@ msgstr "Lataa" msgid "Crop" msgstr "Rajaa" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "Profiilia ei ole määritelty." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "Valitse neliön muotoinen alue kuvasta profiilikuvaksi" @@ -835,15 +652,14 @@ msgid "Avatar deleted." msgstr "Kuva poistettu." #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Sinä olet jo estänyt tämän käyttäjän." +msgstr "Olet jos tilannut seuraavien käyttäjien päivitykset:" -#: 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,42 +671,30 @@ 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 "Ei" +msgstr "Huomaa" #. 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ää" -#. 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/deletenotice.php:154 actions/deleteuser.php:159 -#: actions/groupblock.php:185 -#, fuzzy -msgctxt "BUTTON" -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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -900,21 +704,11 @@ msgstr "Käyttäjän estotiedon tallennus epäonnistui." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Tuota ryhmää ei ole." -#: actions/blockedfromgroup.php:97 -#, fuzzy, php-format -msgid "%s blocked profiles" -msgstr "Käyttäjän profiili" - -#: actions/blockedfromgroup.php:100 -#, fuzzy, php-format -msgid "%1$s blocked profiles, page %2$d" -msgstr "%s ja kaverit, sivu %d" - #: actions/blockedfromgroup.php:115 msgid "A list of the users blocked from joining this group." msgstr "Lista käyttäjistä, jotka ovat estetty liittymästä tähän ryhmään." @@ -933,9 +727,9 @@ msgstr "Poista esto tältä käyttäjältä" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Kuva" +msgstr "Vastaukset käyttäjälle %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -951,9 +745,9 @@ msgstr "Tämä vahvistuskoodi ei ole sinun!" #. 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 "Tuntematon osoitetyyppi %s " +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -982,9 +776,8 @@ msgid "Couldn't delete email confirmation." msgstr "Ei voitu poistaa sähköpostivahvistusta." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Vahvista osoite" +msgstr "Tämän hetken vahvistettu sähköpostiosoite." #: actions/confirmaddress.php:161 #, php-format @@ -1001,33 +794,19 @@ msgid "Notices" msgstr "Päivitykset" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "" -"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja." +msgstr "Sinun pitää olla kirjautunut sisään, jotta voit erota ryhmästä." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Päivitykselle ei ole profiilia" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Sinä et kuulu tähän ryhmään." +msgstr "Vahvistuskoodia ei löytynyt." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." msgstr "Istuntoavaimesi kanssa oli ongelma." -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "Päivitystä ei ole." - #: actions/deleteapplication.php:149 msgid "" "Are you sure you want to delete this application? This will clear all data " @@ -1035,25 +814,13 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "Älä poista tätä päivitystä" - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -msgstr "Poista tämä päivitys" - #. 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: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 +851,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Poista tämä päivitys" @@ -1093,9 +860,8 @@ msgid "You cannot delete users." msgstr "Sinä et voi poistaa käyttäjiä." #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "Et voi poistaa toisen käyttäjän päivitystä." +msgstr "Sinä et voi poistaa käyttäjiä." #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" @@ -1109,9 +875,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 "Poista tämä päivitys" +msgstr "Poista käyttäjä" #. TRANS: Message used as title for design settings for the site. #. TRANS: Link description in user account settings menu. @@ -1124,110 +889,71 @@ msgstr "Ulkoasu" msgid "Design settings for this StatusNet site." msgstr "Ulkoasuasetukset tälle StatusNet palvelulle." -#: actions/designadminpanel.php:276 -#, fuzzy -msgid "Invalid logo URL." -msgstr "Koko ei kelpaa." - -#: actions/designadminpanel.php:280 -#, fuzzy, php-format -msgid "Theme not available: %s." -msgstr "Pikaviestin ei ole käytettävissä." - -#: actions/designadminpanel.php:376 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "Vaihda salasanasi" +msgstr "Vaihda väriä" -#: actions/designadminpanel.php:381 -#, fuzzy +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "Kutsu" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" -msgstr "Vaihda" - -#: actions/designadminpanel.php:405 -#, fuzzy -msgid "Site theme" msgstr "Palvelun ilmoitus" -#: actions/designadminpanel.php:406 -#, fuzzy -msgid "Theme for the site." -msgstr "Kirjaudu ulos palvelusta" +#: 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 "" + +#: 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 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -msgid "Turn background image on or off." -msgstr "" - -#: actions/designadminpanel.php:482 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 -#, 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 -msgid "Restore default designs" -msgstr "" - -#: actions/designadminpanel.php:587 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,10 +963,6 @@ msgstr "" msgid "Save" msgstr "Tallenna" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "Tämä päivitys ei ole suosikki!" @@ -1250,70 +972,22 @@ msgid "Add to favorites" msgstr "Lisää suosikkeihin" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Dokumenttia ei ole." +msgstr "Liitettä ei ole." #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "Muita asetuksia" - -#: actions/editapplication.php:66 -#, fuzzy -msgid "You must be logged in to edit an application." msgstr "" -"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja." - -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." -msgstr "Päivitystä ei ole." - -#: actions/editapplication.php:161 -#, fuzzy -msgid "Use this form to edit your application." -msgstr "Käytä tätä lomaketta muokataksesi ryhmää." - -#: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy -msgid "Name is required." -msgstr "Sama kuin ylläoleva salasana. Pakollinen." - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Koko nimi on liian pitkä (max 255 merkkiä)." - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Tunnus on jo käytössä. Yritä toista tunnusta." - -#: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy -msgid "Description is required." -msgstr "Kuvaus" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "Kotisivun verkko-osoite ei ole toimiva." - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "" -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "Kotipaikka on liian pitkä (max 255 merkkiä)." - #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." msgstr "" @@ -1326,11 +1000,6 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Ei voitu päivittää ryhmää." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" @@ -1342,9 +1011,9 @@ msgstr "Sinun pitää olla kirjautunut sisään jotta voit luoda ryhmän." #: 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 "Sinun pitää olla ylläpitäjä, jotta voit muokata ryhmää" +msgstr "" +"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja." #: actions/editgroup.php:158 msgid "Use this form to edit the group." @@ -1364,7 +1033,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." @@ -1374,9 +1044,8 @@ msgstr "Asetukset tallennettu." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Sähköpostiasetukset" +msgstr "Profiiliasetukset" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1385,13 +1054,6 @@ msgstr "Sähköpostiasetukset" msgid "Manage how you get email from %%site.name%%." msgstr "Määritä miten saat sähköpostin palvelusta %%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 "Sähköpostiosoitteet" - #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." @@ -1405,7 +1067,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" @@ -1419,17 +1080,6 @@ msgstr "" "sähköpostilaatikostasi (ja roskapostikansiosta!) viesti, jossa on " "lisäohjeita. " -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "Peruuta" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1440,10 +1090,9 @@ msgstr "Sähköpostiosoite, esimerkiksi \"käyttäjätunnus@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 "Lisää" +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1468,16 +1117,14 @@ 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 "Uusi" +msgstr "" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Asetukset" +msgstr "Sähköpostiosoitteet" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1514,12 +1161,6 @@ msgstr "Haluan lähettää päivityksiä sähköpostilla." msgid "Publish a MicroID for my email address." msgstr "Julkaise MicroID sähköpostiosoitteelleni." -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Ulkoasuasetukset tallennettu." - #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." @@ -1531,7 +1172,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." @@ -1572,17 +1213,10 @@ msgstr "" msgid "No pending confirmation to cancel." msgstr "Avoimia vahvistuksia ei ole peruutettavana." -#. 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 "Tämä on väärä pikaviestiosoite." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Vahvistus peruttu." +msgstr "Avoimia vahvistuksia ei ole peruutettavana." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1592,9 +1226,8 @@ msgstr "Tämä ei ole sähköpostiosoitteesi." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Osoite on poistettu." +msgstr "Saapuvan sähköpostin osoite poistettu." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1678,38 +1311,33 @@ msgid "Featured users, page %d" msgstr "Esittelyssä olevat käyttäjät, sivu %d" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" -msgstr "Valikoima joitakin loistavia palvelun %s käyttäjiä" +msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Ei päivitystä" +msgstr "Päivitystä ei ole." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Ei päivitystä" +msgstr "Päivitystä ei ole." #: actions/file.php:42 -#, fuzzy msgid "No attachments." -msgstr "Ei liitteitä" +msgstr "Liitettä ei ole." #: actions/file.php:51 -#, fuzzy msgid "No uploaded attachments." -msgstr "Ei ladattuja liitteitä" +msgstr "Liitettä ei ole." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "Odottamaton vastaus saatu!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "Käyttäjää jota seurataan ei ole olemassa." +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1724,19 +1352,12 @@ msgid "You are not authorized." msgstr "Sinulla ei ole valtuutusta tähän." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Ei voitu muuttaa request tokeneita access tokeneiksi." +msgstr "Ei saatu request tokenia." #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Tuntematon OMB-protokollan versio." - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Virhe tapahtui etäprofiilin päivittämisessä" +msgstr "" #: actions/getfile.php:79 msgid "No such file." @@ -1746,34 +1367,27 @@ msgstr "Tiedostoa ei ole." msgid "Cannot read file." msgstr "Tiedostoa ei voi lukea." -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Koko ei kelpaa." - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Et voi lähettää viestiä tälle käyttäjälle." +msgstr "Päivityksesi tähän palveluun on estetty." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "Käyttäjä on asettanut eston sinulle." +msgstr "Käyttäjällä ei ole profiilia." #: 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." @@ -1787,9 +1401,8 @@ msgid "Only an admin can block group members." msgstr "Vain ylläpitäjä voi estää ryhmän jäseniä." #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "Käyttäjä on asettanut eston sinulle." +msgstr "Käyttäjää ei ole estetty ryhmästä." #: actions/groupblock.php:100 msgid "User is not a member of group." @@ -1817,14 +1430,9 @@ msgstr "Älä estä tätä käyttäjää tästä ryhmästä" msgid "Block this user from this group" msgstr "Estä tätä käyttäjää osallistumassa tähän ryhmään" -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" - #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "ID-tunnusta ei ole" +msgstr "Ei Jabber ID -osoitetta" #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." @@ -1878,9 +1486,9 @@ msgid "%s group members" msgstr "Ryhmän %s jäsenet" #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "Ryhmän %s jäsenet, sivu %d" +msgstr "Ryhmän %s jäsenet" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1910,7 +1518,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" @@ -1945,16 +1553,6 @@ msgstr "" msgid "Create a new group" msgstr "Luo uusi ryhmä" -#: actions/groupsearch.php:52 -#, 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 "" -"Hae ihmisiä palvelun %%site.name%% käyttäjien nimistä, paikoista ja " -"kiinnostuksen kohteista. Erota hakutermit välilyönnillä; hakutermien pitää " -"olla 3 tai useamman merkin pituisia." - #: actions/groupsearch.php:58 msgid "Group search" msgstr "Ryhmähaku" @@ -1992,9 +1590,8 @@ msgstr "Tapahtui virhe, kun estoa poistettiin." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "Pikaviestiasetukset" +msgstr "Profiilikuva-asetukset" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2016,9 +1613,8 @@ msgstr "Pikaviestin ei ole käytettävissä." #. 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 "Pikaviestiosoite" +msgstr "Sähköpostiosoitteet" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2050,9 +1646,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Asetukset" +msgstr "Asetukset tallennettu." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2122,17 +1717,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Tämä on väärä pikaviestiosoite." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Ei voitu poistaa sähköpostivahvistusta." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Vahvistus peruttu." +msgstr "Varmistuskoodia ei ole annettu." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2142,14 +1730,8 @@ msgstr "Tämä ei ole Jabber ID-tunnuksesi." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Osoite on poistettu." - -#: actions/inbox.php:59 -#, fuzzy, php-format -msgid "Inbox for %1$s - page %2$d" -msgstr "Saapuneet viestit käyttäjälle %s" +msgstr "Saapuvan sähköpostin osoite poistettu." #: actions/inbox.php:62 #, php-format @@ -2165,11 +1747,10 @@ msgid "Invites have been disabled." msgstr "Kutsut ovat pois käytöstä." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." msgstr "" -"Sinun täytyy olla kirjautuneena sisään kutsuaksesi uusia käyttäjiä palveluun " -"%s" +"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja." #: actions/invite.php:72 #, php-format @@ -2190,7 +1771,7 @@ msgstr "Olet jos tilannut seuraavien käyttäjien päivitykset:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2239,10 +1820,9 @@ msgstr "Voit myös lisätä oman viestisi kutsuun" #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "Lähetä" +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 @@ -2311,69 +1891,51 @@ msgstr "" msgid "You must be logged in to join a group." msgstr "Sinun pitää olla kirjautunut sisään, jos haluat liittyä ryhmään." -#: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy -msgid "No nickname or ID." -msgstr "Tunnusta ei ole." - -#. 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 -msgid "%1$s joined group %2$s" -msgstr "%s liittyi ryhmään %s" - #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "Sinun pitää olla kirjautunut sisään, jotta voit erota ryhmästä." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Sinä et kuulu tähän ryhmään." -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%s erosi ryhmästä %s" +msgstr "Käyttäjän %1$s päivitys %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 "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 -#, 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,64 +1943,29 @@ msgstr "" "Syötä turvallisuussyistä käyttäjätunnuksesi ja salasanasi uudelleen ennen " "asetuksiesi muuttamista." -#: actions/login.php:270 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Kirjaud sisään käyttäjätunnuksella ja salasanalla. Ei vielä " -"käyttäjätunnusta? [Rekisteröi](%%action.register%%) käyttäjätunnus tai " -"kokeile [OpenID](%%action.openidlogin%%)-tunnuksella sisään kirjautumista. " #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "Vain ylläpitäjä voi tehdä toisesta käyttäjästä ylläpitäjän." -#: actions/makeadmin.php:96 -#, fuzzy, php-format -msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "%s on jo ryhmän \"%s\" ylläpitäjä." - -#: actions/makeadmin.php:133 -#, fuzzy, php-format -msgid "Can't get membership record for %1$s in group %2$s." -msgstr "Ei saatu käyttäjän %s jäsenyystietoja ryhmästä %s" - #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "Ei voitu tehdä käyttäjästä %s ylläpitäjää ryhmään %s" +msgstr "Tee tästä käyttäjästä ylläpitäjä" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Ei nykyistä tilatietoa" - -#: actions/newapplication.php:52 -#, fuzzy -msgid "New Application" -msgstr "Päivitystä ei ole." - -#: actions/newapplication.php:64 -#, fuzzy -msgid "You must be logged in to register an application." -msgstr "Sinun pitää olla kirjautunut sisään jotta voit luoda ryhmän." - -#: actions/newapplication.php:143 -#, fuzzy -msgid "Use this form to register a new application." -msgstr "Käytä tätä lomaketta luodaksesi ryhmän." +msgstr "Ei tuloksia" #: actions/newapplication.php:176 msgid "Source URL is required." msgstr "" -#: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy -msgid "Could not create application." -msgstr "Ei voitu lisätä aliasta." - #: actions/newgroup.php:53 msgid "New group" msgstr "Uusi ryhmä" @@ -2451,12 +1978,15 @@ msgstr "Käytä tätä lomaketta luodaksesi ryhmän." msgid "New message" msgstr "Uusi viesti" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Et voi lähettää viestiä tälle käyttäjälle." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Ei sisältöä!" @@ -2464,7 +1994,8 @@ msgstr "Ei sisältöä!" msgid "No recipient specified." msgstr "Vastaanottajaa ei ole määritelty." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Älä lähetä viestiä itsellesi, vaan kuiskaa se vain hiljaa itsellesi." @@ -2473,12 +2004,7 @@ msgstr "Älä lähetä viestiä itsellesi, vaan kuiskaa se vain hiljaa itsellesi msgid "Message sent" msgstr "Viesti lähetetty" -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "Suora viesti käyttäjälle %s lähetetty" - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax-virhe" @@ -2486,7 +2012,7 @@ msgstr "Ajax-virhe" msgid "New notice" msgstr "Uusi päivitys" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Päivitys lähetetty" @@ -2504,9 +2030,9 @@ msgid "Text search" msgstr "Tekstihaku" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr " Hakusyöte haulle \"%s\"" +msgstr "Viesti käyttäjältä %1$s, %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2517,29 +2043,15 @@ msgstr "" "Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%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 "" - -#: actions/noticesearchrss.php:96 -#, fuzzy, php-format -msgid "Updates with \"%s\"" -msgstr "Käyttäjän %1$s päivitykset palvelussa %2$s!" - #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Kaikki päivitykset hakuehdolla \"%s\"" +msgstr "Käyttäjän %1$s päivitykset palvelussa %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 "" -"Käyttäjä ei ole sallinut tönäisyjä tai ei ole vahvistanut " -"sähköpostiosoitettaan." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2549,39 +2061,14 @@ msgstr "Tönäisy lähetetty" msgid "Nudge sent!" msgstr "Tönäisy lähetetty!" -#: actions/oauthappssettings.php:59 -#, fuzzy -msgid "You must be logged in to list your applications." -msgstr "" -"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja." - -#: actions/oauthappssettings.php:74 -#, fuzzy -msgid "OAuth applications" -msgstr "Muita asetuksia" - #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Sinä et kuulu tähän ryhmään." - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2595,31 +2082,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 "Päivitykselle ei ole profiilia" +msgstr "Käyttäjällä 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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "Yhdistä" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Tuo ei ole tuettu tietomuoto." @@ -2632,9 +2118,8 @@ msgid "Notice Search" msgstr "Etsi Päivityksistä" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Muita Asetuksia" +msgstr "Profiilikuva-asetukset" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2653,9 +2138,8 @@ msgid "Automatic shortening service to use." msgstr "Käytettävä automaattinen lyhennyspalvelu." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "Profiiliasetukset" +msgstr "Näytä tai piillota profiilin ulkoasu." #: actions/othersettings.php:123 msgid "Show or hide profile designs." @@ -2665,35 +2149,9 @@ msgstr "Näytä tai piillota profiilin ulkoasu." msgid "URL shortening service is too long (max 50 chars)." msgstr "URL-lyhennyspalvelun nimi on liian pitkä (max 50 merkkiä)." -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "Ryhmää ei ole määritelty." - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "Profiilia ei ole määritelty." - #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Ei profiili id:tä kyselyssä." - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "Päivityksen sisältö ei kelpaa" - -#: actions/otp.php:104 -#, fuzzy -msgid "Login token expired." -msgstr "Kirjaudu sisään" - -#: actions/outbox.php:58 -#, fuzzy, php-format -msgid "Outbox for %1$s - page %2$d" -msgstr "Käyttäjän %s lähetetyt viestit" +msgstr "Ei valtuutuspyyntöä!" #: actions/outbox.php:61 #, php-format @@ -2729,7 +2187,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" @@ -2741,11 +2199,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ää." @@ -2766,7 +2224,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" @@ -2775,52 +2233,23 @@ msgid "Path and server settings for this StatusNet site." msgstr "Polut ja palvelin asetukset tälle StatusNet palvelulle." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Pikaviestin ei ole käytettävissä." - -#: actions/pathsadminpanel.php:163 -#, fuzzy, php-format -msgid "Avatar directory not writable: %s." -msgstr "Pikaviestin ei ole käytettävissä." - -#: actions/pathsadminpanel.php:169 -#, fuzzy, php-format -msgid "Background directory not writable: %s." -msgstr "Taustakuvan hakemisto" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Pikaviestin ei ole käytettävissä." +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." msgstr "" -#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 -#, fuzzy -msgid "Site" -msgstr "Kutsu" - -#: actions/pathsadminpanel.php:238 -#, fuzzy -msgid "Server" -msgstr "Palauta" - #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." msgstr "" -#: actions/pathsadminpanel.php:242 -msgid "Path" -msgstr "" - -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "Palvelun ilmoitus" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2849,29 +2278,9 @@ msgstr "" msgid "Theme path" msgstr "" -#: actions/pathsadminpanel.php:272 -msgid "Theme directory" -msgstr "" - -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "Kuva" - -#: actions/pathsadminpanel.php:284 -#, fuzzy -msgid "Avatar server" -msgstr "Profiilikuva-asetukset" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "Kuva päivitetty." - #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "Kuva poistettu." +msgstr "Taustakuvan hakemisto" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" @@ -2889,26 +2298,6 @@ msgstr "Taustakuvan hakemistopolku" msgid "Background directory" msgstr "Taustakuvan hakemisto" -#: actions/pathsadminpanel.php:320 -#, fuzzy -msgid "SSL" -msgstr "SMS" - -#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy -msgid "Never" -msgstr "Palauta" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "Päivitykset" - -#: actions/pathsadminpanel.php:325 -#, fuzzy -msgid "Always" -msgstr "Aliakset" - #: actions/pathsadminpanel.php:329 msgid "Use SSL" msgstr "" @@ -2918,18 +2307,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Palauta" +msgstr "" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Palvelun ilmoitus" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2946,19 +2333,13 @@ msgid "People search" msgstr "Etsi ihmisiä" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Ei sallittu henkilötagi: %s" - -#: actions/peopletag.php:142 -#, fuzzy, php-format -msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Käyttäjät joilla henkilötagi %s - sivu %d" +msgstr "Tuo ei ole kelvollinen sähköpostiosoite." #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Päivityksen sisältö ei kelpaa" +msgstr "Koko ei kelpaa." #: actions/postnotice.php:101 #, php-format @@ -2986,43 +2367,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\"" @@ -3066,10 +2447,10 @@ msgstr "" "Tilaa automaattisesti kaikki, jotka tilaavat päivitykseni (ei sovi hyvin " "ihmiskäyttäjille)" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "\"Tietoja\" on liian pitkä (max 140 merkkiä)." +msgstr "kuvaus on liian pitkä (max %d merkkiä)." #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." @@ -3088,11 +2469,6 @@ msgstr "Virheellinen tagi: \"%s\"" msgid "Couldn't update user for autosubscribe." msgstr "Ei voitu asettaa käyttäjälle automaattista tilausta." -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Tageja ei voitu tallentaa." - #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Ei voitu tallentaa profiilia." @@ -3136,13 +2512,6 @@ msgstr "Julkisen Aikajanan Syöte (RSS 2.0)" msgid "Public Stream Feed (Atom)" msgstr "Julkinen syöte (Atom)" -#: 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 "Ole ensimmäinen joka lähettää päivityksen!" @@ -3163,14 +2532,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 "" -"Tämä on %%site.name%%, [mikroblogaus](http://en.wikipedia.org/wiki/Micro-" -"blogging)palvelu " #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -3231,12 +2598,6 @@ msgstr "Vahvistuskoodi on liian vanha. Aloita uudelleen." msgid "Could not update user with confirmed email address." msgstr "Ei voitu päivittää käyttäjälle vahvistettua sähköpostiosoitetta." -#: 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 "Sinut on tunnistettu. Syötä uusi salasana alapuolelle. " @@ -3318,7 +2679,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." @@ -3327,85 +2688,105 @@ 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:507 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:494 -#, fuzzy, php-format +#: 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 "" -"poislukien yksityinen tieto: salasana, sähköpostiosoite, IM-osoite, " -"puhelinnumero." -#: actions/register.php:542 -#, 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" @@ -3422,22 +2803,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Onnittelut, %s! Tervetuloa palveluun %%%%site.name%%%%. Täältä voit " -"jatkaa...\n" -"\n" -"* [Profiiliisi](%s) ja lähettää ensimmäisen päivityksesi.\n" -"* Lisäämään [Jabber/GTalk osoitteen](%%%%action.imsettings%%%%), jotta saat " -"lähetettyä päivitykset pikaviestimen kautta.\n" -"* [Hakemaan ihmisiä](%%%%action.peoplesearch%%%%), jotka tunnet tai joilla " -"on samanlaisia kiinnostuksen kohteita. \n" -"* Päivittämään [profiiliasi](%%%%action.profilesettings%%%%), jotta muut " -"tietävät enemmän sinusta.\n" -"* Lukemaan [ohjeista](%%%%doc.help%%%%) muista ominaisuuksista, joista et " -"vielä tiedä. \n" -"\n" -"Kiitokset rekisteröitymisestäsi ja toivomme että pidät palvelustamme." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3491,11 +2858,8 @@ msgid "Invalid profile URL (bad format)" msgstr "Profiilin URL-osoite '%s' ei kelpaa (virheellinen muoto)." #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." msgstr "" -"Tuo ei ole kelvollinen profiilin verkko-osoite (YADIS dokumenttia ei " -"löytynyt)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." @@ -3506,35 +2870,9 @@ msgstr "" msgid "Couldn’t get a request token." msgstr "Ei saatu request tokenia." -#: actions/repeat.php:57 -#, fuzzy -msgid "Only logged-in users can repeat notices." -msgstr "Vain käyttäjä voi lukea omaa postilaatikkoaan." - -#: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy -msgid "No notice specified." -msgstr "Profiilia ei ole määritelty." - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "Et voi rekisteröityä, jos et hyväksy lisenssiehtoja." - #: actions/repeat.php:90 -#, fuzzy 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:675 -#, fuzzy -msgid "Repeated" -msgstr "Luotu" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "Luotu" +msgstr "Sinä kuulut jo tähän ryhmään." #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3543,19 +2881,9 @@ msgid "Replies to %s" msgstr "Vastaukset käyttäjälle %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Viesti käyttäjälle %1$s, %2$s" - -#: actions/replies.php:145 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 1.0)" -msgstr "Päivityksien syöte käyttäjälle %s" - -#: actions/replies.php:152 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 2.0)" -msgstr "Päivityksien syöte käyttäjälle %s" +msgstr "Vastaukset käyttäjälle %s" #: actions/replies.php:159 #, php-format @@ -3563,13 +2891,13 @@ msgid "Replies feed for %s (Atom)" msgstr "Päivityksien syöte käyttäjälle %s" #: actions/replies.php:199 -#, fuzzy, php-format +#, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." +"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ä." +"Tämä on käyttäjän %s ja kavereiden aikajana, mutta kukaan ei ole lähettyänyt " +"vielä mitään." #: actions/replies.php:204 #, php-format @@ -3578,56 +2906,16 @@ msgid "" "[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 his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." -msgstr "" -"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action." -"newnotice%%%%?status_textarea=%s)!" - -#: actions/repliesrss.php:72 -#, fuzzy, php-format -msgid "Replies to %1$s on %2$s!" -msgstr "Viesti käyttäjälle %1$s, %2$s" - #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Et voi lähettää viestiä tälle käyttäjälle." - -#: actions/revokerole.php:82 -#, fuzzy -msgid "User doesn't have this role." -msgstr "Käyttäjälle ei löydy profiilia" - -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy -msgid "StatusNet" -msgstr "Päivitys poistettu." - -#: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy -msgid "You cannot sandbox users on this site." -msgstr "Et voi lähettää viestiä tälle käyttäjälle." - -#: actions/sandbox.php:72 -#, fuzzy -msgid "User is already sandboxed." -msgstr "Käyttäjä on asettanut eston sinulle." +msgstr "Päivityksesi tähän palveluun on estetty." #. 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 -#, fuzzy -msgid "Session settings for this StatusNet site." -msgstr "Ulkoasuasetukset tälle StatusNet palvelulle." - #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" msgstr "" @@ -3644,47 +2932,18 @@ msgstr "" 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 "Profiilikuva-asetukset" - -#: actions/showapplication.php:82 -#, fuzzy -msgid "You must be logged in to view an application." -msgstr "Sinun pitää olla kirjautunut sisään, jotta voit erota ryhmästä." - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "Päivitykselle ei ole profiilia" - #. 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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Tunnus" - #. TRANS: Form input field label. -#: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy -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" @@ -3694,18 +2953,10 @@ msgstr "Tilastot" 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 "" @@ -3732,16 +2983,6 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Oletko varma että haluat poistaa tämän päivityksen?" - -#: actions/showfavorites.php:79 -#, fuzzy, php-format -msgid "%1$s's favorite notices, page %2$d" -msgstr "Käyttäjän %s suosikkipäivitykset" - #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." msgstr "Ei saatu haettua suosikkipäivityksiä." @@ -3770,16 +3011,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 @@ -3792,9 +3033,9 @@ msgid "%s group" msgstr "Ryhmä %s" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "Ryhmän %s jäsenet, sivu %d" +msgstr "Ryhmät, sivu %d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3838,7 +3079,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" @@ -3852,11 +3093,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." @@ -3866,18 +3107,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** 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" @@ -3903,47 +3142,37 @@ msgstr "Viesti käyttäjältä %1$s, %2$s" msgid "Notice deleted." msgstr "Päivitys on poistettu." -#: actions/showstream.php:73 -#, fuzzy, php-format -msgid " tagged %s" -msgstr "Päivitykset joilla on tagi %s" - #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s ja kaverit, sivu %d" +msgstr "Ryhmät, sivu %d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Päivityssyöte ryhmälle %s" +msgstr "Syöte ryhmän %s päivityksille (RSS 1.0)" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Päivityksien syöte käyttäjälle %s" +msgstr "Syöte ryhmän %s päivityksille (RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Päivityksien syöte käyttäjälle %s" +msgstr "Syöte ryhmän %s päivityksille (RSS 2.0)" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "Päivityksien syöte käyttäjälle %s" - -#: actions/showstream.php:148 -#, fuzzy, php-format -msgid "FOAF for %s" -msgstr "Käyttäjän %s lähetetyt viestit" +msgstr "Syöte ryhmän %s päivityksille (Atom)" #: 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 "" -"Tämä on käyttäjän %s aikajana, mutta %s ei ole lähettänyt vielä yhtään " -"päivitystä." +"Tämä on käyttäjän %s ja kavereiden aikajana, mutta kukaan ei ole lähettyänyt " +"vielä mitään." #: actions/showstream.php:205 msgid "" @@ -3951,15 +3180,6 @@ msgid "" "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)." -msgstr "" -"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action." -"newnotice%%%%?status_textarea=%s)!" - #: actions/showstream.php:243 #, php-format msgid "" @@ -3970,43 +3190,20 @@ 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 "" -"Käyttäjällä **%s** on käyttäjätili palvelussa %%%%site.name%%%%, joka on " -"[mikroblogauspalvelu](http://en.wikipedia.org/wiki/Micro-blogging)" - -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "Vastaukset käyttäjälle %s" - -#: actions/silence.php:65 actions/unsilence.php:65 -#, fuzzy -msgid "You cannot silence users on this site." -msgstr "Et voi lähettää viestiä tälle käyttäjälle." - -#: actions/silence.php:72 -#, fuzzy -msgid "User is already silenced." -msgstr "Käyttäjä on asettanut eston sinulle." - -#: actions/siteadminpanel.php:69 -#, fuzzy -msgid "Basic settings for this StatusNet site" -msgstr "Ulkoasuasetukset tälle StatusNet palvelulle." #: 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 "Tuo ei ole kelvollinen sähköpostiosoite" +msgstr "Tuo ei ole kelvollinen sähköpostiosoite." #: actions/siteadminpanel.php:159 #, php-format @@ -4025,11 +3222,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "Palvelun ilmoitus" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -4050,16 +3242,6 @@ msgstr "" 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 "Uusi sähköpostiosoite päivityksien lähettämiseen palveluun %s" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "Paikalliset näkymät" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4068,11 +3250,6 @@ msgstr "" msgid "Default timezone for the site; usually UTC." msgstr "" -#: actions/siteadminpanel.php:262 -#, fuzzy -msgid "Default language" -msgstr "Ensisijainen kieli" - #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" @@ -4097,44 +3274,18 @@ msgstr "" msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -msgid "Site Notice" -msgstr "Palvelun ilmoitus" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "Uusi viesti" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Twitter-asetuksia ei voitu tallentaa!" - #: 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 "Palvelun ilmoitus" - #: 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 "Palvelun ilmoitus" - #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "SMS-asetukset" +msgstr "Profiilikuva-asetukset" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4151,9 +3302,8 @@ msgstr "SMS ei ole käytettävissä." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Pikaviestiosoite" +msgstr "Sähköpostiosoitteet" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4175,18 +3325,10 @@ msgstr "Vahvistuskoodi" msgid "Enter the code you received on your phone." msgstr "Syötä koodi jonka sait puhelimeesi." -#. TRANS: Button label to confirm SMS confirmation code in SMS settings. -#: actions/smssettings.php:148 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Vahvista" - #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "SMS puhelinnumero" +msgstr "Puhelinnumeroa ei ole." #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4195,9 +3337,8 @@ msgstr "Puhelinnumero, ei välimerkkejä tai välilyöntejä, suuntanumerollinen #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Asetukset" +msgstr "Asetukset tallennettu." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4208,12 +3349,6 @@ msgstr "" "Lähetä päivityksiä SMS:llä; Ymmärrän, että voin saada kohtuuttomia laskuja " "tästä matkapuhelinoperaattoriltani." -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Asetukset tallennettu." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." @@ -4250,9 +3385,8 @@ msgstr "Tämä on väärä vahvistukoodi." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Vahvistus peruttu." +msgstr "SMS vahvistus" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4260,12 +3394,6 @@ msgstr "Vahvistus peruttu." msgid "That is not your phone number." msgstr "Tämä ei ole puhelinnumerosi." -#. 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 puhelinnumero" - #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" @@ -4295,18 +3423,13 @@ 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 "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Ensisijainen sivunavigointi" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Sähköpostiosoitteen vahvistus" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." @@ -4348,16 +3471,12 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Profiilikuva-asetukset" - #: actions/subedit.php:70 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." @@ -4365,16 +3484,6 @@ msgstr "Tilausta ei onnistuttu tallentamaan." msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "Tiedostoa ei ole." - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Et ole tilannut tämän käyttäjän päivityksiä." - #: actions/subscribe.php:145 msgid "Subscribed" msgstr "Tilattu" @@ -4385,9 +3494,9 @@ msgid "%s subscribers" msgstr "Käyttäjän %s tilaajat" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "Käyttäjän %s tilaajat, sivu %d" +msgstr "Käyttäjän %s tilaajat" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4422,9 +3531,9 @@ msgid "%s subscriptions" msgstr "Käyttäjän %s tilaukset" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "Käyttäjän %s tilaukset, sivu %d" +msgstr "Käyttäjän %s tilaukset" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4459,29 +3568,24 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Käyttäjät joilla henkilötagi %s - sivu %d" +msgstr "Päivitykset joilla on tagi %s" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Päivityksien syöte käyttäjälle %s" +msgstr "Syöte ryhmän %s päivityksille (RSS 1.0)" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Päivityksien syöte käyttäjälle %s" +msgstr "Syöte ryhmän %s päivityksille (RSS 2.0)" #: actions/tag.php:99 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Päivityksien syöte käyttäjälle %s" - -#: actions/tagother.php:39 -#, fuzzy -msgid "No ID argument." -msgstr "Ei id parametria." +msgstr "Syöte ryhmän %s päivityksille (Atom)" #: actions/tagother.php:65 #, php-format @@ -4530,29 +3634,13 @@ 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." -msgstr "Sinä olet jo estänyt tämän käyttäjän." - -#: actions/unsandbox.php:72 -#, fuzzy -msgid "User is not sandboxed." -msgstr "Käyttäjää ei ole estetty ryhmästä." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "Käyttäjällä ei ole profiilia." +msgstr "Älä estä tätä käyttäjää" #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Ei profiili id:tä kyselyssä." +msgstr "Ei profiilia tuolle ID:lle." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4564,17 +3652,6 @@ msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -#. TRANS: User admin panel title -#: actions/useradminpanel.php:59 -#, fuzzy -msgctxt "TITLE" -msgid "User" -msgstr "Käyttäjä" - -#: actions/useradminpanel.php:70 -msgid "User settings for this StatusNet site." -msgstr "" - #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." msgstr "" @@ -4602,11 +3679,6 @@ msgstr "" msgid "Maximum length of a profile bio in characters." msgstr "" -#: actions/useradminpanel.php:231 -#, fuzzy -msgid "New users" -msgstr "Kutsu uusia käyttäjiä" - #: actions/useradminpanel.php:235 msgid "New user welcome" msgstr "" @@ -4615,28 +3687,6 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "Kaikki tilaukset" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "" -"Tilaa automaattisesti kaikki, jotka tilaavat päivitykseni (ei sovi hyvin " -"ihmiskäyttäjille)" - -#: actions/useradminpanel.php:251 -#, fuzzy -msgid "Invitations" -msgstr "Kutsu(t) lähetettiin" - -#: actions/useradminpanel.php:256 -#, fuzzy -msgid "Invitations enabled" -msgstr "Kutsu(t) lähetettiin" - #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" @@ -4646,17 +3696,13 @@ msgid "Authorize subscription" msgstr "Valtuuta tilaus" #: 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 "" -"Tarkista nämä tiedot varmistaaksesi, että haluat tilata tämän käyttäjän " -"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" @@ -4673,11 +3719,6 @@ msgstr "Tilaa tämä käyttäjä" msgid "Reject" msgstr "Hylkää" -#: actions/userauthorization.php:220 -#, fuzzy -msgid "Reject this subscription" -msgstr "Käyttäjän %s tilaukset" - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "Ei valtuutuspyyntöä!" @@ -4687,29 +3728,22 @@ msgid "Subscription authorized" msgstr "Tilaus sallittu" #: 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 "" -"Päivityksen tilaus on hyväksytty, mutta callback-osoitetta palveluun ei ole " -"saatu. Tarkista sivuston ohjeet miten päivityksen tilaus hyväksytään. " -"Tilauskoodisi on:" #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "Tilaus hylätty" #: 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 "" -"Päivityksen tilaus on hylätty, mutta callback-osoitetta palveluun ei ole " -"saatu. Tarkista sivuston ohjeet miten päivityksen tilaus hylätään kokonaan." #: actions/userauthorization.php:303 #, php-format @@ -4737,19 +3771,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 "Kuvan URL-osoitetta '%s' ei voi avata." +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Kuvan '%s' tyyppi on väärä" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "Profiiliasetukset" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4763,18 +3792,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 "Ryhmän %s jäsenet, sivu %d" +msgstr "Ryhmät, sivu %d" #: actions/usergroups.php:132 msgid "Search for more groups" msgstr "Hae lisää ryhmiä" #: actions/usergroups.php:159 -#, fuzzy, php-format +#, php-format msgid "%s is not a member of any group." -msgstr "Sinä et kuulu tähän ryhmään." +msgstr "Käyttäjä ei kuulu tähän ryhmään." #: actions/usergroups.php:164 #, php-format @@ -4786,29 +3815,24 @@ 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 -#, 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 " @@ -4816,7 +3840,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 " @@ -4824,105 +3848,98 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -msgstr "Ryhmän profiili" +#. 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/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Ei voitu päivittää ryhmää." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Ryhmän profiili" - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Ei voitu päivittää ryhmää." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Ei voitu lisätä aliasta." - -#: classes/Message.php:45 -#, 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Tietokantavirhe tallennettaessa risutagiä: %s" +msgstr "Virhe tapahtui profiilikuvan lisäämisessä" -#: classes/Notice.php:245 -#, 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4930,81 +3947,83 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Ongelma päivityksen tallentamisessa." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Ongelma päivityksen tallentamisessa." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%1$s (%2$s)" +msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 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 -msgid "Already subscribed!" +#. 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:82 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +msgstr "Tagien tallennus epäonnistui." + +#. 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 -#, fuzzy -msgid "Not subscribed!" -msgstr "Ei ole tilattu!." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Tilausta ei onnistuttu tallentamaan." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Ei voitu poistaa tilausta." +#. 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 "Tilausta ei onnistuttu tallentamaan." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Ei voitu poistaa tilausta." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Tilausta ei onnistuttu tallentamaan." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Ei voitu poistaa tilausta." - -#: classes/User.php:363 -#, 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Ryhmän jäsenyystietoja ei voitu asettaa." +msgstr "Ryhmän luonti ei onnistunut." -#: 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 -#, fuzzy -msgid "Could not save local group info." -msgstr "Tilausta ei onnistuttu tallentamaan." - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" @@ -5025,12 +4044,6 @@ msgstr "Vaihda salasanasi" msgid "Change email handling" msgstr "Muuta sähköpostin käsittelyasetuksia." -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:137 -#, fuzzy -msgid "Design your profile" -msgstr "Käyttäjän profiili" - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 msgid "Other options" @@ -5041,234 +4054,152 @@ msgstr "Muita asetuksia" msgid "Other" msgstr "Muut" -#. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Ensisijainen sivunavigointi" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -#, fuzzy -msgctxt "MENU" -msgid "Personal" -msgstr "Omat" +msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "Muuta sähköpostiosoitettasi, kuvaasi, salasanaasi, profiiliasi" +msgstr "Vaihda salasanasi" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Ei voitu uudelleenohjata palvelimelle: %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:468 msgid "Connect" msgstr "Yhdistä" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Admin" -msgstr "Ylläpito" - -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "Kutsu" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "Kirjaudu ulos palvelusta" +msgstr "Kirjaudu sisään" #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 -#, fuzzy +#: lib/action.php:490 msgctxt "MENU" msgid "Logout" -msgstr "Kirjaudu ulos" +msgstr "Logo" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "Rekisteröidy" +msgstr "Luo uusi ryhmä" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "Kirjaudu sisään palveluun" - -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" msgstr "Kirjaudu sisään" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "Auta minua!" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" msgstr "Ohjeet" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "Hae ihmisiä tai tekstiä" - -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -msgstr "Haku" +msgstr "Hae lisää ryhmiä" #. 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:538 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:605 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:675 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:778 msgid "Secondary site navigation" msgstr "Toissijainen sivunavigointi" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Ohjeet" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Tietoa" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "UKK" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Yksityisyys" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 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:808 msgid "Contact" msgstr "Ota yhteyttä" -#: lib/action.php:784 -#, fuzzy -msgid "Badge" -msgstr "Tönäise" - #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** on mikroblogipalvelu, jonka tarjoaa [%%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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5279,56 +4210,50 @@ msgstr "" "versio %s, saatavilla lisenssillä [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 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Aiemmin" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5336,162 +4261,40 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "Et voi lähettää viestiä tälle käyttäjälle." - -#. 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 "Rekisteröityminen ei ole sallittu." - -#. TRANS: Client error message. -#: lib/adminpanelaction.php:229 -#, fuzzy -msgid "showForm() not implemented." -msgstr "Komentoa ei ole vielä toteutettu." - -#. TRANS: Client error message -#: lib/adminpanelaction.php:259 -#, fuzzy -msgid "saveSettings() not implemented." -msgstr "Komentoa ei ole vielä toteutettu." - -#. 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 "Twitter-asetuksia ei voitu tallentaa!" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Sähköpostiosoitteen vahvistus" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy -msgctxt "MENU" -msgid "Site" -msgstr "Kutsu" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "SMS vahvistus" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy -msgctxt "MENU" -msgid "Design" -msgstr "Ulkoasu" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, 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 -#, fuzzy -msgid "Access configuration" -msgstr "SMS vahvistus" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "SMS vahvistus" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "SMS vahvistus" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "Palvelun ilmoitus" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "SMS vahvistus" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "Kuvaile ryhmää tai aihetta 140 merkillä" +msgstr "Kuvaile itseäsi ja kiinnostuksen kohteitasi %d merkillä" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Kuvaile ryhmää tai aihetta 140 merkillä" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:224 -#, fuzzy -msgid "URL of the homepage of this application" -msgstr "Ryhmän tai aiheen kotisivun tai blogin osoite" - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "Lähdekoodi" +msgstr "Kuvaus" #. 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 -#, fuzzy -msgid "URL for the homepage of the organization" -msgstr "Ryhmän tai aiheen kotisivun tai blogin osoite" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" @@ -5548,47 +4351,15 @@ msgstr "" msgid "Approved %1$s - \"%2$s\" access." msgstr "" -#. TRANS: Button label -#: lib/applicationlist.php:159 -#, fuzzy -msgctxt "BUTTON" -msgid "Revoke" -msgstr "Poista" - -#. 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 -#, fuzzy msgid "Provider" -msgstr "Profiili" +msgstr "Esikatselu" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Salasanan vaihto" - -#: lib/authenticationplugin.php:235 -#, fuzzy -msgid "Password changing is not allowed" -msgstr "Salasanan vaihto" - #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" msgstr "Komennon tulos" @@ -5601,45 +4372,21 @@ msgstr "Komento suoritettu" msgid "Command failed" msgstr "Komento epäonnistui" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "Ei profiilia tuolla id:llä." - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Käyttäjällä ei ole viimeistä päivitystä" - -#. 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 "Ei voitu päivittää käyttäjälle vahvistettua sähköpostiosoitetta." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Ei voitu päivittää käyttäjälle vahvistettua sähköpostiosoitetta." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Valitettavasti tätä komentoa ei ole vielä toteutettu." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Tönäisy lähetetty" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5647,55 +4394,39 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Päivitys on merkitty suosikiksi." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Sinä kuulut jo tähän ryhmään." - -#. 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 "Käyttäjä %s ei voinut liittyä ryhmään %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 "Ei voitu poistaa käyttäjää %s ryhmästä %s" - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Kotisivu: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Tietoa: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5704,150 +4435,105 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Viesti oli liian pitkä - maksimikoko on 140 merkkiä, lähetit %d" - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "Suora viesti käyttäjälle %s lähetetty" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Tapahtui virhe suoran viestin lähetyksessä." -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Ilmoituksia ei voi pistää päälle." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Poista tämä päivitys" - -#. 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 "Päivitys lähetetty" - -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Ongelma päivityksen tallentamisessa." +msgstr "Virhe tapahtui käyttäjän asettamisessa." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Viesti oli liian pitkä - maksimikoko on 140 merkkiä, lähetit %d" - -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "Vastaa tähän päivitykseen" - -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "Ongelma päivityksen tallentamisessa." - -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Anna käyttäjätunnus, jonka päivitykset haluat tilata" - -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "Et ole tilannut tämän käyttäjän päivityksiä." - -#: lib/command.php:634 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Subscribed to %s" -msgstr "Käyttäjän %s päivitykset tilattu" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Anna käyttäjätunnus, jonka päivityksien tilauksen haluat lopettaa" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Käyttäjän %s päivitysten tilaus lopetettu" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Komentoa ei ole vielä toteutettu." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Ilmoitukset pois päältä." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Ilmoituksia ei voi pistää pois päältä." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Ilmoitukset päällä." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Ilmoituksia ei voi pistää päälle." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Käyttäjän %s päivitysten tilaus lopetettu" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Et ole tilannut tämän käyttäjän päivityksiä." - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Olet jos tilannut seuraavien käyttäjien päivitykset:" msgstr[1] "Olet jos tilannut seuraavien käyttäjien päivitykset:" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Toista ei voitu asettaa tilaamaan sinua." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Toista ei voitu asettaa tilaamaan sinua." msgstr[1] "Toista ei voitu asettaa tilaamaan sinua." -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "Sinä et kuulu tähän ryhmään." - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Sinä et kuulu tähän ryhmään." msgstr[1] "Sinä et kuulu tähän ryhmään." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5889,11 +4575,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Varmistuskoodia ei ole annettu." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5902,11 +4583,6 @@ msgstr "" msgid "You may wish to run the installer to fix this." msgstr "" -#: lib/common.php:139 -#, fuzzy -msgid "Go to the installer." -msgstr "Kirjaudu sisään palveluun" - #: lib/connectsettingsaction.php:110 msgid "IM" msgstr "Pikaviestin" @@ -5919,11 +4595,6 @@ msgstr "Päivitykset pikaviestintä käyttäen (IM)" msgid "Updates by SMS" msgstr "Päivitykset SMS:llä" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "Yhdistä" - #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" msgstr "" @@ -5932,21 +4603,6 @@ msgstr "" msgid "Database error" msgstr "Tietokantavirhe" -#: lib/designsettings.php:105 -#, fuzzy -msgid "Upload file" -msgstr "Lataa" - -#: lib/designsettings.php:109 -#, fuzzy -msgid "" -"You can upload your personal background image. The maximum file size is 2MB." -msgstr "Voit ladata oman profiilikuvasi. Maksimikoko on %s." - -#: lib/designsettings.php:418 -msgid "Design defaults restored." -msgstr "" - #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" msgstr "Poista tämä päivitys suosikeista" @@ -5987,11 +4643,6 @@ msgstr "Suodata tagien perusteella" msgid "All" msgstr "Kaikki" -#: lib/galleryaction.php:139 -#, fuzzy -msgid "Select tag to filter" -msgstr "Valitse operaattori" - #: lib/galleryaction.php:140 msgid "Tag" msgstr "Tagi" @@ -6013,15 +4664,10 @@ msgstr "" msgid "URL of the homepage or blog of the group or topic" msgstr "Ryhmän tai aiheen kotisivun tai blogin osoite" -#: lib/groupeditform.php:168 -#, fuzzy -msgid "Describe the group or topic" -msgstr "Kuvaile ryhmää tai aihetta 140 merkillä" - #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Kuvaile ryhmää tai aihetta 140 merkillä" +msgstr "Kuvaile itseäsi ja kiinnostuksen kohteitasi %d merkillä" #: lib/groupeditform.php:179 msgid "" @@ -6039,16 +4685,6 @@ msgstr "" msgid "Group" msgstr "Ryhmä" -#: lib/groupnav.php:101 -#, fuzzy -msgid "Blocked" -msgstr "Estä" - -#: lib/groupnav.php:102 -#, fuzzy, php-format -msgid "%s blocked users" -msgstr "Estä käyttäjä" - #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" @@ -6063,11 +4699,6 @@ msgstr "Logo" msgid "Add or edit %s logo" msgstr "Lisää ryhmälle %s logo tai muokkaa sitä " -#: lib/groupnav.php:120 -#, fuzzy, php-format -msgid "Add or edit %s design" -msgstr "Lisää ryhmälle %s logo tai muokkaa sitä " - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Ryhmät, joissa eniten jäseniä" @@ -6090,11 +4721,6 @@ msgstr "Tämä sivu ei ole saatavilla sinulle sopivassa mediatyypissä." msgid "Unsupported image file format." msgstr "Kuvatiedoston formaattia ei ole tuettu." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "Voit ladata ryhmälle logon." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Osittain ladattu palvelimelle." @@ -6178,8 +4804,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" @@ -6205,21 +4838,19 @@ 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 -#, fuzzy, php-format +#: lib/mail.php:274 +#, php-format msgid "Bio: %s" -msgstr "" -"Tietoja: %s\n" -"\n" +msgstr "Kotipaikka: %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 "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" @@ -6241,30 +4872,24 @@ 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 -#, 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 " @@ -6281,13 +4906,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" @@ -6307,13 +4932,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 "%s lisäsi päivityksesi suosikkeihinsa" +msgstr "Lähetä sähköpostia, jos joku lisää päivitykseni suosikiksi." #. 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 +4960,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" @@ -6343,13 +4968,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6386,10 +5006,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " lähteestä " +msgstr "" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6407,11 +5026,6 @@ msgstr "Valitettavasti tuo ei ole oikea osoite sähköpostipäivityksille." msgid "Sorry, no incoming email allowed." msgstr "Valitettavasti päivitysten teko sähköpostilla ei ole sallittua." -#: lib/mailhandler.php:228 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "Kuvatiedoston formaattia ei ole tuettu." - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6442,25 +5056,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 "Julkista päivitysvirtaa ei saatu." +msgstr "Ei voitu poistaa suosikkia." -#: 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 "" @@ -6473,102 +5086,86 @@ msgstr "Lähetä suora viesti" msgid "To" msgstr "Vastaanottaja" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Sallitut merkit" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Lähetä" +msgstr "" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "Lähetä päivitys" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Mitä teet juuri nyt, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Tageja ei voitu tallentaa." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Tageja ei voitu tallentaa." +msgstr "" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "" + +#: lib/noticeform.php:217 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 -#, 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:567 -#, fuzzy -msgid "in context" -msgstr "Ei sisältöä!" +#: lib/noticelist.php:502 +msgid "web" +msgstr "" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "Luotu" +msgstr "" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Vastaa tähän päivitykseen" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Vastaus" -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "Päivitys on poistettu." - #: lib/nudgeform.php:116 msgid "Nudge this user" msgstr "Tönäise tätä käyttäjää" @@ -6597,11 +5194,6 @@ msgstr "Virhe tapahtui etäprofiilin päivittämisessä" msgid "Error inserting remote profile" msgstr "Virhe tapahtui uuden etäprofiilin lisäämisessä" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Poista päivitys" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Ei voitu lisätä uutta tilausta." @@ -6639,11 +5231,6 @@ msgstr "Lähettämäsi viestit" msgid "Tags in %s's notices" msgstr "Tagit käyttäjän %s päivityksissä" -#: lib/plugin.php:114 -#, fuzzy -msgid "Unknown" -msgstr "Tuntematon toiminto" - #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" msgstr "Tilaukset" @@ -6660,11 +5247,6 @@ msgstr "Tilaajat" msgid "All subscribers" msgstr "Kaikki tilaajat" -#: lib/profileaction.php:191 -#, fuzzy -msgid "User ID" -msgstr "Käyttäjä" - #: lib/profileaction.php:196 msgid "Member since" msgstr "Käyttäjänä alkaen" @@ -6678,7 +5260,7 @@ msgstr "" msgid "All groups" msgstr "Kaikki ryhmät" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6702,49 +5284,14 @@ msgstr "Esittelyssä" msgid "Popular" msgstr "Suosituimmat" -#: lib/redirectingaction.php:94 -#, fuzzy -msgid "No return-to arguments." -msgstr "Ei id parametria." - -#: lib/repeatform.php:107 -#, fuzzy -msgid "Repeat this notice?" -msgstr "Vastaa tähän päivitykseen" - #: lib/repeatform.php:132 msgid "Yes" msgstr "Kyllä" -#: lib/repeatform.php:132 -#, fuzzy -msgid "Repeat this notice" -msgstr "Vastaa tähän päivitykseen" - -#: lib/revokeroleform.php:91 -#, fuzzy, php-format -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 "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "Saapuneet" - -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "Poista esto tältä käyttäjältä" - -#: lib/searchaction.php:120 -#, fuzzy -msgid "Search site" -msgstr "Haku" - #: lib/searchaction.php:126 msgid "Keyword(s)" msgstr "" @@ -6753,11 +5300,6 @@ msgstr "" msgid "Search" msgstr "Haku" -#: lib/searchaction.php:162 -#, fuzzy -msgid "Search help" -msgstr "Haku" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "Henkilö" @@ -6782,16 +5324,6 @@ msgstr "Nimetön osa" msgid "More..." msgstr "Lisää..." -#: lib/silenceform.php:67 -#, fuzzy -msgid "Silence" -msgstr "Palvelun ilmoitus" - -#: lib/silenceform.php:78 -#, fuzzy -msgid "Silence this user" -msgstr "Estä tämä käyttäjä" - #: lib/subgroupnav.php:83 #, php-format msgid "People %s subscribes to" @@ -6830,6 +5362,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Tapahtui virhe, kun estoa poistettiin." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Eniten päivityksiä" @@ -6838,20 +5410,10 @@ msgstr "Eniten päivityksiä" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "Poista esto tältä käyttäjältä" - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -msgid "Unsilence this user" -msgstr "Poista esto tältä käyttäjältä" - #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" msgstr "Peruuta tämän käyttäjän tilaus" @@ -6860,16 +5422,6 @@ msgstr "Peruuta tämän käyttäjän tilaus" msgid "Unsubscribe" msgstr "Peruuta tilaus" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Käyttäjällä ei ole profiilia." - -#: lib/userprofile.php:117 -#, fuzzy -msgid "Edit Avatar" -msgstr "Kuva" - #: lib/userprofile.php:234 lib/userprofile.php:248 msgid "User actions" msgstr "Käyttäjän toiminnot" @@ -6878,11 +5430,6 @@ msgstr "Käyttäjän toiminnot" msgid "User deletion in progress..." msgstr "" -#: lib/userprofile.php:263 -#, fuzzy -msgid "Edit profile settings" -msgstr "Profiiliasetukset" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" @@ -6899,87 +5446,66 @@ msgstr "Viesti" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "Käyttäjän profiili" - -#: lib/userprofile.php:366 -#, fuzzy -msgctxt "role" -msgid "Administrator" -msgstr "Ylläpitäjät" - #: 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:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "noin vuosi sitten" -#: lib/webcolor.php:82 -#, fuzzy, php-format -msgid "%s is not a valid color!" -msgstr "Kotisivun verkko-osoite ei ole toimiva." - #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" - -#: lib/xmppmanager.php:403 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Viesti oli liian pitkä - maksimikoko on 140 merkkiä, lähetit %d" diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po index 1d2bbcdaed..bd905de29f 100644 --- a/locale/fr/LC_MESSAGES/statusnet.po +++ b/locale/fr/LC_MESSAGES/statusnet.po @@ -1,12 +1,16 @@ # Translation of StatusNet to French # +# Author@translatewiki.net: Brion # Author@translatewiki.net: Crochet.david # Author@translatewiki.net: IAlex # Author@translatewiki.net: Isoph # Author@translatewiki.net: Jean-Frédéric # Author@translatewiki.net: Julien C # Author@translatewiki.net: McDutchie +# Author@translatewiki.net: Patcito # Author@translatewiki.net: Peter17 +# Author@translatewiki.net: Sherbrooke +# Author@translatewiki.net: Y-M D # -- # This file is distributed under the same license as the StatusNet package. # @@ -14,12 +18,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:46+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:11+0000\n" "Language-Team: French\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: fr\n" "X-Message-Group: out-statusnet\n" @@ -27,7 +31,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" @@ -89,37 +93,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -127,33 +132,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:114 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." @@ -161,7 +166,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 " @@ -171,78 +176,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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." @@ -250,7 +255,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." @@ -270,7 +275,7 @@ msgstr "Impossible d’enregistrer le profil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,49 +334,50 @@ msgstr "Messages directs envoyés à %s" msgid "All the direct messages sent to %s" msgstr "Tous les messages directs envoyés à %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Message sans texte !" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "C’est trop long ! La taille maximale du message est de %d caractères." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Destinataire non trouvé." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -386,9 +392,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." @@ -398,125 +404,136 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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." @@ -527,15 +544,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 @@ -608,12 +625,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:463 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 @@ -621,8 +638,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" @@ -638,11 +655,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." @@ -651,69 +668,75 @@ msgstr "Vous ne pouvez pas supprimer le statut d’un autre utilisateur." msgid "No such notice." msgstr "Avis non trouvé." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Vous ne pouvez pas reprendre votre propre avis." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trouvé." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 !" @@ -728,16 +751,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." @@ -792,7 +819,7 @@ msgid "Preview" msgstr "Aperçu" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Supprimer" @@ -832,11 +859,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 " @@ -851,7 +878,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" @@ -860,7 +887,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" @@ -869,7 +896,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" @@ -877,14 +904,16 @@ 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -894,8 +923,8 @@ msgstr "Impossible d’enregistrer les informations de blocage." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Aucun groupe trouvé." @@ -1008,7 +1037,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:1307 msgid "There was a problem with your session token." msgstr "Un problème est survenu avec votre jeton de session." @@ -1042,7 +1071,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é." @@ -1073,7 +1102,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Supprimer cet avis" @@ -1113,45 +1142,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" @@ -1161,57 +1199,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 @@ -1221,7 +1267,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" @@ -1335,7 +1381,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." @@ -1485,7 +1532,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 @@ -1493,7 +1540,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." @@ -1541,7 +1588,7 @@ msgstr "Cette adresse de messagerie électronique est erronée." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 msgid "Email confirmation cancelled." -msgstr "Courrier électronique de confirmation annulé." +msgstr "Confirmation de courrier électronique annulée." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1720,13 +1767,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." @@ -1868,7 +1915,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" @@ -2155,7 +2202,7 @@ msgstr "Vous êtes déjà abonné à ces utilisateurs :" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2281,9 +2328,7 @@ msgstr "Vous devez ouvrir une session pour rejoindre un groupe." msgid "No nickname or ID." msgstr "Aucun pseudo ou 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s a rejoint le groupe %2$s" @@ -2292,54 +2337,53 @@ msgstr "%1$s a rejoint le groupe %2$s" msgid "You must be logged in to leave a group." msgstr "Vous devez ouvrir une session pour quitter un groupe." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Vous n’êtes pas membre de ce groupe." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2347,15 +2391,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Ouvrez une session avec votre identifiant et votre mot de passe. Vous n’avez " -"pas encore d’identifiant ? [Créez-vous](%%action.register%%) un nouveau " -"compte." +"Vous n’avez pas encore d’identifiant ? [Créez-vous](%%action.register%%) un " +"nouveau compte." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2415,12 +2461,15 @@ msgstr "Remplissez les champs ci-dessous pour créer un nouveau groupe :" msgid "New message" msgstr "Nouveau message" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Vous ne pouvez pas envoyer de messages à cet utilisateur." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Aucun contenu !" @@ -2428,7 +2477,8 @@ msgstr "Aucun contenu !" msgid "No recipient specified." msgstr "Aucun destinataire n’a été spécifié." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2438,12 +2488,14 @@ msgstr "" msgid "Message sent" msgstr "Message envoyé" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Message direct envoyé à %s." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Erreur Ajax" @@ -2451,7 +2503,7 @@ msgstr "Erreur Ajax" msgid "New notice" msgstr "Nouvel avis" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Avis publié" @@ -2504,7 +2556,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." @@ -2562,30 +2614,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Format de données non supporté." @@ -2689,7 +2741,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" @@ -2701,11 +2753,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." @@ -2726,7 +2778,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" @@ -2932,43 +2984,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 »" @@ -3012,7 +3064,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)." @@ -3023,7 +3075,7 @@ msgstr "Aucun fuseau horaire n’a été choisi." #: actions/profilesettings.php:241 msgid "Language is too long (max 50 chars)." -msgstr "La langue est trop longue (255 caractères maximum)." +msgstr "La langue est trop longue (50 caractères maximum)." #: actions/profilesettings.php:253 actions/tagother.php:178 #, php-format @@ -3277,7 +3329,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." @@ -3286,39 +3338,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:507 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. " @@ -3326,36 +3378,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Je comprends que le contenu et les données de %1$s sont privés et " +"confidentiels." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Tous droits réservés." + +#. 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, " @@ -3365,7 +3441,7 @@ msgstr "" "données personnelles : mot de passe, adresse électronique, adresse de " "messagerie instantanée, numéro de téléphone." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3399,7 +3475,7 @@ msgstr "" "Merci pour votre inscription ! Nous vous souhaitons d’apprécier notre " "service." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3481,7 +3557,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repris" @@ -3519,7 +3595,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." @@ -3537,8 +3613,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" @@ -3557,7 +3633,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" @@ -3572,7 +3648,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" @@ -3615,7 +3691,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" @@ -3626,12 +3702,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" @@ -3721,8 +3797,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 :)" @@ -3730,13 +3806,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." @@ -3794,7 +3870,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" @@ -3808,11 +3884,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." @@ -3828,7 +3904,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." @@ -3841,7 +3917,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" @@ -3921,8 +3997,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)." @@ -4255,7 +4331,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" @@ -4315,7 +4391,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." @@ -4496,10 +4573,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." @@ -4613,7 +4686,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" @@ -4745,18 +4818,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, " @@ -4765,11 +4838,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 " @@ -4781,7 +4854,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 " @@ -4793,7 +4866,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 " @@ -4802,93 +4875,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4896,71 +5016,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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problème lors de l’enregistrement de l’avis." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -msgid "You have been banned from subscribing." -msgstr "Il vous avez été interdit de vous abonner." +#. 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." -#: 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 "" +"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:339 +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." + +#. 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." @@ -5000,199 +5170,199 @@ msgid "Other" msgstr "Autres " #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Navigation primaire du site" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personnel" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Connecter" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administrer" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Inviter" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Déconnexion" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "S'inscrire" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ouvrir une session" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Connexion" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "À l’aide !" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Aide" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Rechercher des personnes ou du texte" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Aide" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "À propos" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "CGU" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Confidentialité" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Source" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contact" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Insigne" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5202,13 +5372,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5216,24 +5386,24 @@ msgid "" "org/licensing/licenses/agpl-3.0.html)." msgstr "" "Il utilise le logiciel de micro-blogging [StatusNet](http://status.net/), " -"version %s, disponible sous la licence [GNU Affero General Public License] " +"version %s, disponible sous la licence [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:866 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:873 #, 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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5241,38 +5411,38 @@ 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Avant" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "Attendait un élément racine mais a reçu tout un document XML." @@ -5280,11 +5450,11 @@ msgstr "Attendait un élément racine mais a reçu tout un document XML." msgid "Can't handle remote content yet." msgstr "Impossible de gérer le contenu distant pour le moment." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Impossible de gérer le contenu XML embarqué pour le moment." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Impossible de gérer le contenu en Base64 embarqué pour le moment." @@ -5315,64 +5485,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:95 +#: 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 " @@ -5506,11 +5676,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" @@ -5526,44 +5696,53 @@ msgstr "Commande complétée" msgid "Command failed" msgstr "Échec de la commande" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Aucun avis avec cet identifiant n’existe" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Aucun avis avec cet identifiant n’existe." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Aucun avis récent pour cet utilisateur" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "Aucun avis récent pour cet utilisateur." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Impossible de trouver un utilisateur avec le pseudo %s" +msgid "Could not find a user with nickname %s." +msgstr "Impossible de trouver un utilisateur avec le pseudo %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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Impossible de trouver un utilisateur local portant le pseudo %s" +msgid "Could not find a local user with nickname %s." +msgstr "Impossible de trouver un utilisateur local portant le pseudo %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Désolé, cette commande n’a pas encore été implémentée." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Ça n’a pas de sens de se faire un clin d’œil à soi-même !" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Clin d’œil envoyé à %s" +msgid "Nudge sent to %s." +msgstr "Clin d’œil envoyé à %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5574,55 +5753,53 @@ msgstr "" "Abonnés : %2$s\n" "Messages : %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Avis ajouté aux favoris." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Vous êtes déjà membre de ce groupe" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Impossible d’inscrire l’utilisateur %1$s au groupe %2$s" +msgid "%1$s joined group %2$s." +msgstr "%1$s a rejoint le groupe %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s a quitté le groupe %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Site Web : %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "À propos : %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5633,148 +5810,174 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" "Message trop long ! La taille maximale est de %1$d caractères ; vous en avez " "entré %2$d." -#. 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 "Message direct envoyé à %s." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Une erreur est survenue pendant l’envoi de votre message." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Impossible de reprendre votre propre avis" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Avis déjà repris" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Avis de %s repris" +msgid "Notice from %s repeated." +msgstr "Avis de %s repris." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Erreur lors de la reprise de l’avis." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"Avis trop long ! La taille maximale est de %d caractères ; vous en avez " -"entré %d." +"Avis trop long ! La taille maximale est de %1$d caractères ; vous en avez " +"entré %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Réponse à %s envoyée" +msgid "Reply to %s sent." +msgstr "Réponse à %s envoyée." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Problème lors de l’enregistrement de l’avis." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Indiquez le nom de l’utilisateur auquel vous souhaitez vous abonner" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Indiquez le nom de l’utilisateur auquel vous souhaitez vous abonner." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Impossible de s'inscrire aux profils OMB par cette commande." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Abonné à %s" +msgid "Subscribed to %s." +msgstr "Abonné à %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Indiquez le nom de l’utilisateur duquel vous souhaitez vous désabonner" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" +"Indiquez le nom de l’utilisateur duquel vous souhaitez vous désabonner." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "Désabonné de %s" +msgid "Unsubscribed from %s." +msgstr "Désabonné de %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Cette commande n’a pas encore été implémentée." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Avertissements désactivés." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Impossible de désactiver les avertissements." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Avertissements activés." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Impossible d’activer les avertissements." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "La commande d’ouverture de session est désactivée" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "La commande d’ouverture de session est désactivée." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" "Ce lien n’est utilisable qu’une seule fois, et est valable uniquement " -"pendant 2 minutes : %s" +"pendant 2 minutes : %s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "Désabonné de %s" +msgid "Unsubscribed %s." +msgstr "Désabonné de %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Vous n’êtes abonné(e) à personne." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Vous êtes abonné à cette personne :" msgstr[1] "Vous êtes abonné à ces personnes :" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Personne ne s’est abonné à vous." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Cette personne est abonnée à vous :" msgstr[1] "Ces personnes sont abonnées à vous :" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Vous n’êtes membre d’aucun groupe." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Vous êtes membre de ce groupe :" msgstr[1] "Vous êtes membre de ces groupes :" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6155,8 +6358,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" @@ -6182,19 +6395,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" @@ -6216,31 +6429,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 " @@ -6268,13 +6481,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" @@ -6308,13 +6521,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" @@ -6353,7 +6566,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" @@ -6364,13 +6577,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" @@ -6433,7 +6646,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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "de" @@ -6492,24 +6705,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." @@ -6522,11 +6735,11 @@ msgstr "Envoyer un message direct" msgid "To" msgstr "À" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Caractères restants" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Envoyer" @@ -6535,28 +6748,28 @@ msgstr "Envoyer" msgid "Send a notice" msgstr "Envoyer un avis" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Quoi de neuf, %s ?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Attacher" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Attacher un fichier" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Partager ma localisation." -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Ne pas partager ma localisation" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6565,51 +6778,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "dans le contexte" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repris par" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Répondre à cet avis" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Répondre" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Avis repris" @@ -6682,7 +6899,7 @@ msgstr "Vos messages envoyés" msgid "Tags in %s's notices" msgstr "Marques dans les avis de %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Inconnu" @@ -6719,7 +6936,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." @@ -6743,7 +6960,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." @@ -6764,7 +6981,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." @@ -6862,6 +7079,60 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "L’enregistrement du thème a échoué." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" +"Ce thème contient un nom d'extension de ficher dangereux; peut être " +"dangereux." + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6890,11 +7161,6 @@ msgstr "Ne plus suivre cet utilisateur" msgid "Unsubscribe" msgstr "Désabonnement" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "L’utilisateur %s (%d) n’a pas de profil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Modifier l’avatar" @@ -6942,56 +7208,56 @@ msgid "Moderator" msgstr "Modérateur" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "il y a environ 1 an" @@ -7005,10 +7271,3 @@ msgstr "&s n’est pas une couleur valide !" msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" "%s n’est pas une couleur valide ! Utilisez 3 ou 6 caractères hexadécimaux." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Message trop long ! La taille maximale est de %1$d caractères ; vous en avez " -"entré %2$d." diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po index 7504570c15..0758448f24 100644 --- a/locale/ga/LC_MESSAGES/statusnet.po +++ b/locale/ga/LC_MESSAGES/statusnet.po @@ -8,60 +8,33 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:50+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:13+0000\n" "Language-Team: Irish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ga\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : " "4;\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy -msgid "Access" -msgstr "Aceptar" - #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -msgstr "Configuracións de Twitter" - -#. TRANS: Form legend for registration form. -#: actions/accessadminpanel.php:161 -#, fuzzy -msgid "Registration" -msgstr "Rexistrar" +msgstr "Configuración de perfil" #. TRANS: Checkbox instructions for admin setting "Private" #: 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 -#, fuzzy -msgctxt "LABEL" -msgid "Private" -msgstr "Privacidade" - #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." msgstr "" -#. TRANS: Checkbox label for configuring site as invite only. -#: actions/accessadminpanel.php:176 -#, fuzzy -msgid "Invite only" -msgstr "Invitar" - #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." @@ -69,101 +42,52 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Bloquear" +msgstr "" -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "Configuracións de Twitter" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -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/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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -#, fuzzy, php-format -msgid "%1$s and friends, page %2$d" -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:114 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 -#, 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 -#, 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 -#, 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,85 +95,48 @@ 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 -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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Non se puido actualizar o usuario." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -260,14 +147,9 @@ msgstr "Non se puido actualizar o usuario." msgid "User has no profile." msgstr "O usuario non ten perfil." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Non se puido gardar o perfil." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -277,28 +159,6 @@ msgid "" "current configuration." msgstr "" -#: 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 -#, fuzzy -msgid "Unable to save your design settings." -msgstr "Non se puideron gardar os teus axustes de Twitter!" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Non se puido actualizar o usuario." - -#: actions/apiblockcreate.php:105 -#, fuzzy -msgid "You cannot block yourself!" -msgstr "Non se puido actualizar o usuario." - #: actions/apiblockcreate.php:126 msgid "Block user failed." msgstr "Bloqueo de usuario fallido." @@ -307,11 +167,6 @@ msgstr "Bloqueo de usuario fallido." msgid "Unblock user failed." msgstr "Desbloqueo de usuario fallido." -#: actions/apidirectmessage.php:89 -#, fuzzy, php-format -msgid "Direct messages from %s" -msgstr "Mensaxes directas para %s" - #: actions/apidirectmessage.php:93 #, php-format msgid "All the direct messages sent from %s" @@ -327,51 +182,41 @@ msgstr "Mensaxes directas para %s" msgid "All the direct messages sent to %s" msgstr "Tódalas mensaxes directas enviadas a %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Non hai mensaxes de texto!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "" -"Iso é demasiado longo. O tamaño máximo para unha mensaxe é de 140 caracteres." +msgstr "Podes actualizar a túa información do perfil persoal aquí" -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Usuario destinatario non atopado." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 -#, 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." msgstr "Non se puido crear o favorito." -#: actions/apifavoritedestroy.php:122 -#, 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." -msgstr "Non podes seguir a este usuario: o Usuario non se atopa." +msgid "Could not follow user: profile not found." +msgstr "Non podes seguir a este usuario: %s xa está na túa lista." #: actions/apifriendshipscreate.php:118 #, php-format @@ -379,169 +224,136 @@ msgid "Could not follow user: %s is already on your list." msgstr "Non podes seguir a este usuario: %s xa está na túa lista." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "Non podes seguir a este usuario: o Usuario non se atopa." +msgstr "Non podes seguir a este usuario: %s xa está na túa lista." -#: actions/apifriendshipsdestroy.php:120 -#, fuzzy -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 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" -"Dous identificadores de usuario ou nomes_en_pantalla deben ser " -"proporcionados." #: actions/apifriendshipsshow.php:134 -#, fuzzy msgid "Could not determine source user." -msgstr "Non se pudo recuperar a liña de tempo publica." +msgstr "Non se puido actualizar o usuario." #: actions/apifriendshipsshow.php:142 -#, fuzzy msgid "Could not find target user." -msgstr "Non se puido atopar ningún estado" +msgstr "Non se puido actualizar o usuario." -#: 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.)." +msgstr "O teu Bio é demasiado longo (max %d 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 -#, fuzzy, php-format -msgid "Invalid alias: \"%s\"." -msgstr "Etiqueta inválida: '%s'" - -#: actions/apigroupcreate.php:275 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 -#, 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 "Método da API non atopado" +msgstr "Non atopado" -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 -msgid "You have been blocked from that group by the admin." -msgstr "" - -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, 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." +msgstr "Non podes seguir a este usuario: %s xa está na túa lista." -#: 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 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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." +msgstr "Non podes seguir a este usuario: %s xa está na túa lista." #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 -#, 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 -#, 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/apigrouplist.php:98 #, php-format -msgid "%s groups" +msgid "%s's groups" msgstr "" -#: actions/apigrouplistall.php:95 -#, fuzzy, php-format -msgid "groups on %s" -msgstr "Outras opcions" +#. 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 "" + +#: actions/apimediaupload.php:99 +msgid "Upload failed." +msgstr "Comando fallido" #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Tamaño inválido." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -549,21 +361,6 @@ msgstr "Tamaño inválido." msgid "There was a problem with your session token. Try again, please." msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..." -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "Usuario ou contrasinal inválidos." - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "Acounteceu un erro configurando o usuario." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "Erro ó inserir o hashtag na BD: %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -604,14 +401,8 @@ msgid "" "give access to your %4$s account to third parties you trust." msgstr "" -#. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 -#, 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 +410,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" @@ -628,20 +419,15 @@ msgstr "Contrasinal" msgid "Deny" msgstr "" -#: actions/apioauthauthorize.php:334 -#, fuzzy -msgid "Allow" -msgstr "Todos" - #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: 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" @@ -650,100 +436,76 @@ msgstr "Non deberías eliminar o estado de outro usuario" msgid "No such notice." msgstr "Ningún chío." -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "Non se pode activar a notificación." - -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." -msgstr "Eliminar chío" +msgstr "Non se pode eliminar este chíos." -#: actions/apistatusesshow.php:138 -#, 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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." msgstr "" -"Iso é demasiado longo. O tamaño máximo para un chío é de 140 caracteres." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:242 actions/newnotice.php:157 +#: lib/mailhandler.php:60 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "Podes actualizar a túa información do perfil persoal aquí" + +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non atopado" -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy -msgid "Unsupported format." -msgstr "Formato de ficheiro de imaxe non soportado." - -#: actions/apitimelinefavorites.php:109 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:110 +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / Favoritos dende %s" +msgstr "Estado de %1$s en %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 updates favorited by %s / %s." +msgstr "Hai %1$s chíos en resposta a chíos dende %2$s / %3$s." -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / Chíos que respostan a %2$s" +msgstr "Estado de %1$s en %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:107 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:112 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!" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "Replies to %s" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format -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 -#, 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." -msgstr "Ningún documento." +msgstr "Non existe a etiqueta." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -766,23 +528,16 @@ msgstr "Tamaño inválido." msgid "Avatar" msgstr "Avatar" -#: actions/avatarsettings.php:78 -#, fuzzy, php-format -msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "Podes actualizar a túa información do perfil persoal aquí" - #: 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 "Usuario sen un perfil que coincida." +msgstr "O usuario non ten perfil." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 -#, fuzzy msgid "Avatar settings" -msgstr "Configuracións de Twitter" +msgstr "Configuración de perfil" #: actions/avatarsettings.php:127 actions/avatarsettings.php:205 #: actions/grouplogo.php:202 actions/grouplogo.php:262 @@ -795,10 +550,9 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 -#, fuzzy +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" -msgstr "eliminar" +msgstr "Eliminar chío" #: actions/avatarsettings.php:166 actions/grouplogo.php:236 msgid "Upload" @@ -808,19 +562,10 @@ msgstr "Subir" msgid "Crop" msgstr "" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "Non se especificou ningún perfil." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "" -#: actions/avatarsettings.php:347 actions/grouplogo.php:380 -msgid "Lost our file data." -msgstr "" - #: actions/avatarsettings.php:370 msgid "Avatar updated." msgstr "Avatar actualizado." @@ -829,21 +574,15 @@ msgstr "Avatar actualizado." msgid "Failed updating avatar." msgstr "Acounteceu un fallo ó actualizar o avatar." -#: actions/avatarsettings.php:397 -#, fuzzy -msgid "Avatar deleted." -msgstr "Avatar actualizado." - #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Xa bloqueaches a este usuario." +msgstr "Xa estas suscrito a estes usuarios:" -#: 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,92 +597,35 @@ 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 "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 -#, fuzzy -msgid "Do not block this user" -msgstr "Bloquear usuario" - -#. 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/deletenotice.php:154 actions/deleteuser.php:159 -#: actions/groupblock.php:185 -#, fuzzy -msgctxt "BUTTON" -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 -#, 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." -#: 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 -#, fuzzy -msgid "No such group." -msgstr "Non existe a etiqueta." - #: actions/blockedfromgroup.php:97 #, php-format msgid "%s blocked profiles" msgstr "" -#: actions/blockedfromgroup.php:100 -#, fuzzy, php-format -msgid "%1$s blocked profiles, page %2$d" -msgstr "%s e amigos" - #: 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 "Desbloqueo de usuario fallido." - #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" msgstr "Desbloquear" -#: actions/blockedfromgroup.php:320 lib/unblockform.php:80 -#, fuzzy -msgid "Unblock this user" -msgstr "Bloquear usuario" - #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Chíos dende SMS" +msgstr "Replies to %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -959,9 +641,9 @@ msgstr "¡Ese código de confirmación non é para ti!" #. 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 "Tipo de enderezo %s non recoñecido" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -990,52 +672,26 @@ msgid "Couldn't delete email confirmation." msgstr "Non se pode eliminar a confirmación de email." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Confirmar enderezo" +msgstr "Direccións de correo confirmadas actualmente." #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." msgstr "A dirección \"%s\" xa foi confirmada para a túa conta." -#: actions/conversation.php:99 -#, fuzzy -msgid "Conversation" -msgstr "Código de confirmación." - #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" msgstr "Chíos" -#: actions/deleteapplication.php:63 -#, fuzzy -msgid "You must be logged in to delete an application." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "O chío non ten perfil" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Non estás suscrito a ese perfil" - -#: actions/deleteapplication.php:102 actions/editapplication.php:127 -#: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 -#, fuzzy -msgid "There was a problem with your session token." -msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..." +msgstr "Confirmation code not found." #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "Ningún chío." +msgstr "" #: actions/deleteapplication.php:149 msgid "" @@ -1044,17 +700,10 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "Non se pode eliminar este chíos." - #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -msgstr "Eliminar chío" +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 @@ -1062,7 +711,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." @@ -1072,13 +721,10 @@ msgid "Can't delete this notice." msgstr "Non se pode eliminar este chíos." #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" -"Vas a eliminar permanentemente este chío. Unha vez feito, xa non hai volta " -"atrás... Quedas avisado!" #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" @@ -1088,32 +734,9 @@ msgstr "Eliminar chío" msgid "Are you sure you want to delete this notice?" msgstr "Estas seguro que queres eliminar este chío?" -#. TRANS: Submit button title for 'No' when deleting a notice. -#: actions/deletenotice.php:151 -#, fuzzy -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:656 -#, fuzzy -msgid "Delete this notice" -msgstr "Eliminar chío" - -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "Non se puido actualizar o usuario." - -#: actions/deleteuser.php:74 -#, fuzzy -msgid "You can only delete local users." -msgstr "Non deberías eliminar o estado de outro usuario" - #: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy msgid "Delete user" -msgstr "eliminar" +msgstr "Eliminar chío" #: actions/deleteuser.php:136 msgid "" @@ -1121,12 +744,6 @@ msgid "" "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 "Eliminar chío" - #. 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 @@ -1138,112 +755,79 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, fuzzy -msgid "Invalid logo URL." -msgstr "Tamaño inválido." - -#: actions/designadminpanel.php:280 -#, 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 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "Cambiar contrasinal" - -#: actions/designadminpanel.php:381 -#, fuzzy -msgid "Site logo" -msgstr "Invitar" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" msgstr "Modificado" -#: actions/designadminpanel.php:405 -#, 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 +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 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -#, fuzzy -msgid "Change colours" -msgstr "Cambiar contrasinal" - -#: actions/designadminpanel.php:513 lib/designsettings.php:191 -#, fuzzy -msgid "Content" -msgstr "Conectar" - -#: actions/designadminpanel.php:526 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 -#, fuzzy +#: actions/designadminpanel.php:626 lib/designsettings.php:230 msgid "Links" -msgstr "Lista" +msgstr "Inicio de sesión" -#: 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,10 +837,6 @@ msgstr "" msgid "Save" msgstr "Gardar" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "Este chío non é un favorito!" @@ -1266,75 +846,22 @@ msgid "Add to favorites" msgstr "Engadir a favoritos" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Ningún documento." - -#: actions/editapplication.php:54 -#, fuzzy -msgid "Edit Application" -msgstr "Outras opcions" - -#: actions/editapplication.php:66 -#, fuzzy -msgid "You must be logged in to edit an application." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." msgstr "Ningún chío." -#: actions/editapplication.php:161 -#, fuzzy -msgid "Use this form to edit your application." +#: actions/editapplication.php:54 +msgid "Edit Application" msgstr "" -"Usa este formulario para engadir etiquetas aos teus seguidores ou aos que " -"sigues." - -#: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy -msgid "Name is required." -msgstr "A mesma contrasinal que arriba. Requerido." - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "O nome completo é demasiado longo (max 255 car)." - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro." #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "Subscricións" +msgstr "Subscrición rexeitada" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "A páxina persoal semella que non é unha URL válida." - -#: actions/editapplication.php:203 actions/newapplication.php:188 -msgid "Organization is required." -msgstr "" - -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "A localización é demasiado longa (max 255 car.)." - -#: actions/editapplication.php:209 actions/newapplication.php:194 -msgid "Organization homepage is required." -msgstr "" - #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." msgstr "" @@ -1343,61 +870,20 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Non se puido actualizar o usuario." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" msgstr "" -#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -#, fuzzy -msgid "You must be logged in to create a group." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: 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 "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: actions/editgroup.php:158 -msgid "Use this form to edit the group." -msgstr "" - #: actions/editgroup.php:205 actions/newgroup.php:145 #, php-format msgid "description is too long (max %d chars)." msgstr "O teu Bio é demasiado longo (max 140 car.)." -#: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format -msgid "Invalid alias: \"%s\"" -msgstr "Etiqueta inválida: '%s'" - -#: actions/editgroup.php:258 -#, fuzzy -msgid "Could not update group." -msgstr "Non se puido actualizar o usuario." - -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy -msgid "Could not create aliases." -msgstr "Non se puido crear o favorito." - -#: actions/editgroup.php:280 -#, fuzzy -msgid "Options saved." -msgstr "Configuracións gardadas." - #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Configuración de Correo" +msgstr "Configuración de perfil" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1406,13 +892,6 @@ msgstr "Configuración de Correo" msgid "Manage how you get email from %%site.name%%." msgstr "Xestina como recibir correo dende %%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 "Enderezos de correo" - #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." @@ -1426,10 +905,9 @@ msgstr "Direccións de correo confirmadas actualmente." #: 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 "Eliminar" +msgstr "Recuperar" #: actions/emailsettings.php:122 msgid "" @@ -1440,17 +918,6 @@ msgstr "" "GTalk que ten que haber unha mensaxe coas seguintes instrucións. (Engadiches " "a %s á túa lista de contactos?)" -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "Cancelar" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1461,10 +928,9 @@ msgstr "Dirección de correo, coma \"Nomede Usuario@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 "Engadir" +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1487,16 +953,14 @@ msgstr "Crear unha nova dirección de correo para enviar, elimina a antiga." #. 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 "Novo" +msgstr "" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferencias" +msgstr "Enderezos de correo" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1513,12 +977,6 @@ msgstr "Enviar un correo cando alguen enganda un chío meu coma favorito." msgid "Send me email when someone sends me a private message." msgstr "Enviarme un email cando alguén me envíe unha mensaxe privada." -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:199 -#, fuzzy -msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "Enviarme un email cando alguén me envíe unha mensaxe privada." - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." @@ -1534,12 +992,6 @@ msgstr "Quero enviar chíos dende o mail." msgid "Publish a MicroID for my email address." msgstr "Publicar unha MicroID dende a miña dirección de correo." -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Preferencias gardadas." - #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." @@ -1551,7 +1003,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." @@ -1592,17 +1044,10 @@ msgstr "" msgid "No pending confirmation to cancel." msgstr "Non hai ningunha confirmación pendente para cancelar." -#. 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 "Esa é unha enderezo IM incorrecto." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Confirmación cancealada." +msgstr "Non hai ningunha confirmación pendente para cancelar." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1612,9 +1057,8 @@ msgstr "Esa non é a túa dirección de correo." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Enderezo eliminado." +msgstr "Dirección de correo entrante eliminada." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1650,15 +1094,9 @@ msgstr "Desactivar favorito" msgid "Popular notices" msgstr "Chíos populares" -#: actions/favorited.php:67 -#, fuzzy, php-format -msgid "Popular notices, page %d" -msgstr "Chíos populares" - #: actions/favorited.php:79 -#, fuzzy msgid "The most popular notices on the site right now." -msgstr "Amoa os tags máis populares dende a semana pasada" +msgstr "" #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." @@ -1683,54 +1121,31 @@ msgstr "" msgid "%s's favorite notices" msgstr "Chíos favoritos de %s" -#: actions/favoritesrss.php:115 -#, fuzzy, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "Actualizacións dende %1$s en %2$s!" - #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" msgstr "Usuarios destacados" -#: actions/featured.php:71 -#, fuzzy, php-format -msgid "Featured users, page %d" -msgstr "Usuarios destacados" - #: actions/featured.php:99 #, php-format msgid "A selection of some great users on %s" msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Novo chío" +msgstr "Ningún chío." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Novo chío" - -#: actions/file.php:42 -#, fuzzy -msgid "No attachments." -msgstr "Ningún documento." - -#: actions/file.php:51 -#, fuzzy -msgid "No uploaded attachments." -msgstr "Ningún documento." +msgstr "Ningún chío." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "¡Non esperaba esa resposta!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "O usuario que está sendo escoitado non existe." +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1741,24 +1156,16 @@ msgid "That user has blocked you from subscribing." msgstr "Este usuario non che permite suscribirte a el." #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Non está autorizado." +msgstr "Non estás suscrito a ese perfil" #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Non se pode convertir o token da petición a tokens de acceso." +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Versión de protocolo OMB descoñecida." - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Acounteceu un erro actualizando o perfil remoto" +msgstr "" #: actions/getfile.php:79 msgid "No such file." @@ -1768,77 +1175,37 @@ msgstr "Ningún chío." msgid "Cannot read file." msgstr "Bloqueo de usuario fallido." -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Tamaño inválido." - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Non podes enviar mensaxes a este usurio." +msgstr "Tes restrinxido o envio de chíos neste sitio." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "O usuario bloqueoute." +msgstr "O usuario non ten perfil." #: 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." -#: actions/groupblock.php:81 actions/groupunblock.php:81 -#: actions/makeadmin.php:81 -#, fuzzy -msgid "No group specified." -msgstr "Non se especificou ningún perfil." - #: actions/groupblock.php:91 msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -#, fuzzy -msgid "User is already blocked from group." -msgstr "O usuario bloqueoute." - #: actions/groupblock.php:100 -#, fuzzy msgid "User is not a member of group." -msgstr "%1s non é unha orixe fiable." - -#: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy -msgid "Block user from group" -msgstr "Bloquear usuario" - -#: actions/groupblock.php:160 -#, 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 "" -"Seguro que queres bloquear a este usuario? Despois diso, vai ser de-suscrito " -"do teur perfil, non será capaz de suscribirse a ti nun futuro, e non vas a " -"ser notificado de ningunha resposta-@ del." - -#. 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 "Non estás suscrito a ese perfil" #. TRANS: Submit button title for 'Yes' when blocking a user from a group. #: actions/groupblock.php:189 @@ -1850,14 +1217,8 @@ msgid "Database error blocking user from group." msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "Sen id." - -#: actions/groupdesignsettings.php:68 -#, fuzzy -msgid "You must be logged in to edit a group." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" +msgstr "Sen Identificador de Jabber." #: actions/groupdesignsettings.php:144 msgid "Group design" @@ -1869,51 +1230,15 @@ msgid "" "palette of your choice." 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 "Non se puido actualizar o usuario." - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy -msgid "Design preferences saved." -msgstr "Preferencias gardadas." - -#: actions/grouplogo.php:142 actions/grouplogo.php:195 -msgid "Group logo" -msgstr "" - -#: actions/grouplogo.php:153 -#, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "" - #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." msgstr "" -#: actions/grouplogo.php:399 -#, fuzzy -msgid "Logo updated." -msgstr "Avatar actualizado." - -#: actions/grouplogo.php:401 -#, fuzzy -msgid "Failed updating logo." -msgstr "Acounteceu un fallo ó actualizar o avatar." - #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format msgid "%s group members" msgstr "" -#: 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 "" @@ -1942,27 +1267,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 "Liña de tempo de %s" -#. 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 -msgid "Updates from members of %1$s on %2$s!" -msgstr "Actualizacións dende %1$s en %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 "" -#: actions/groups.php:64 -#, php-format -msgid "Groups, page %d" -msgstr "" - #: actions/groups.php:90 #, php-format msgid "" @@ -1974,29 +1288,13 @@ msgid "" msgstr "" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "Crear nova conta" - -#: actions/groupsearch.php:52 -#, 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 "" -"Procurar xente en %%site.name%% pola seu nome, localización, ou intereses. " -"Separa os termos por espazos; deben ter 3 caracteres ou máis." - -#: actions/groupsearch.php:58 -#, fuzzy -msgid "Group search" -msgstr "Procurar xente." #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "Non se atoparon resultados" +msgstr "Resultados do comando" #: actions/groupsearch.php:82 #, php-format @@ -2016,20 +1314,14 @@ msgstr "" msgid "Only an admin can unblock group members." msgstr "" -#: actions/groupunblock.php:95 -#, fuzzy -msgid "User is not blocked from group." -msgstr "O usuario bloqueoute." - #: actions/groupunblock.php:128 actions/unblock.php:86 msgid "Error removing the block." msgstr "Acounteceu un erro borrando o bloqueo." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "Configuracións de IM" +msgstr "Configuración de perfil" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2051,9 +1343,8 @@ msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas" #. 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 "Enderezo de IM" +msgstr "Enderezos de correo" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2084,9 +1375,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferencias" +msgstr "Preferencias gardadas." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2155,17 +1445,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Esa é unha enderezo IM incorrecto." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Non se pode eliminar a confirmación de email." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Confirmación cancealada." +msgstr "Sen código de confirmación." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2175,14 +1458,8 @@ msgstr "Esa non é a túa conta Jabber." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Enderezo eliminado." - -#: actions/inbox.php:59 -#, fuzzy, php-format -msgid "Inbox for %1$s - page %2$d" -msgstr "Band. Entrada para %s" +msgstr "Dirección de correo entrante eliminada." #: actions/inbox.php:62 #, php-format @@ -2199,9 +1476,9 @@ 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 "Debes estar logueado para invitar a outros usuarios a empregar %s" +msgstr "Non deberías eliminar o estado de outro usuario" #: actions/invite.php:72 #, php-format @@ -2222,7 +1499,7 @@ msgstr "Xa estas suscrito a estes usuarios:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2269,10 +1546,9 @@ msgstr "Opcionalmente engadir unha mensaxe persoal á invitación." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "Enviar" +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 @@ -2336,74 +1612,40 @@ msgstr "" "\n" "Saudiños, %2$s\n" -#: actions/joingroup.php:60 -#, fuzzy -msgid "You must be logged in to join a group." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy -msgid "No nickname or ID." -msgstr "Sen alcume." - -#. 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 -msgid "%1$s joined group %2$s" -msgstr "%s / Favoritos dende %s" - -#: actions/leavegroup.php:60 -#, fuzzy -msgid "You must be logged in to leave a group." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: actions/leavegroup.php:100 lib/command.php:373 -#, fuzzy -msgid "You are not a member of that group." -msgstr "Non estás suscrito a ese perfil" - -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%s / Favoritos dende %s" +msgstr "Estado de %1$s en %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 "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 -#, 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,49 +1653,28 @@ 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 -#, fuzzy, php-format +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Usuario ou contrasinal incorrectos." + +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Accede co teu nome de usuario e contrasinal. ¿Non tes un todavía?? [Rexistra]" -"(%%action.register%%) unha nova conta, ou accede co teu enderezo [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 -msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "O usuario bloqueoute." - #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "Non podes seguir a este usuario: o Usuario non se atopa." - -#: actions/makeadmin.php:146 -#, fuzzy, php-format -msgid "Can't make %1$s an admin for group %2$s." -msgstr "O usuario bloqueoute." - -#: actions/microsummary.php:69 -#, fuzzy -msgid "No current status." -msgstr "Sen estado actual" +msgstr "" #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "Ningún chío." - -#: actions/newapplication.php:64 -#, fuzzy -msgid "You must be logged in to register an application." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" +msgstr "" #: actions/newapplication.php:143 msgid "Use this form to register a new application." @@ -2463,29 +1684,23 @@ msgstr "" msgid "Source URL is required." msgstr "" -#: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy -msgid "Could not create application." -msgstr "Non se puido crear o favorito." - #: actions/newgroup.php:53 msgid "New group" msgstr "" -#: 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 "Nova mensaxe" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Non podes enviar mensaxes a este usurio." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Sen contido!" @@ -2493,24 +1708,15 @@ msgstr "Sen contido!" msgid "No recipient specified." msgstr "Non se especificou ningún destinatario" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" "Non te envies mensaxes a ti mesmo!! só fala contigo mesmo baixiño, senón " "vante tomar por tolo." -#: actions/newmessage.php:181 -#, fuzzy -msgid "Message sent" -msgstr "Non hai mensaxes de texto!" - -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "Mensaxe directo a %s enviado" - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Erro de Ajax" @@ -2518,7 +1724,7 @@ msgstr "Erro de Ajax" msgid "New notice" msgstr "Novo chío" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Chío publicado" @@ -2536,9 +1742,9 @@ msgid "Text search" msgstr "Procura de texto" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "Buscar \"%s\" na Liña de tempo" +msgstr "Mensaxe dende %1$s en %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2555,21 +1761,19 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "Actualizacións dende %1$s en %2$s!" +msgstr "" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Tódalas actualizacións que coinciden co termo de procura \"%s\"" +msgstr "Actualizacións dende %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 toques, ou non confirmou ainda o seu correo " -"electrónico." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2579,16 +1783,6 @@ msgstr "Toque enviado" msgid "Nudge sent!" msgstr "Toque enviado!" -#: actions/oauthappssettings.php:59 -#, fuzzy -msgid "You must be logged in to list your applications." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: actions/oauthappssettings.php:74 -#, fuzzy -msgid "OAuth applications" -msgstr "Outras opcions" - #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" @@ -2606,11 +1800,6 @@ msgstr "" msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Non estás suscrito a ese perfil" - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2624,31 +1813,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 "O chío non ten perfil" +msgstr "O usuario 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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "Conectar" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Non é un formato de datos soportado." @@ -2661,9 +1849,8 @@ msgid "Notice Search" msgstr "Procura de Chíos" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Outros axustes" +msgstr "Outras opcions" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2681,11 +1868,6 @@ msgstr "" msgid "Automatic shortening service to use." msgstr "Servizo de acortado automático a usar." -#: actions/othersettings.php:122 -#, fuzzy -msgid "View profile designs" -msgstr "Configuración de perfil" - #: actions/othersettings.php:123 msgid "Show or hide profile designs." msgstr "" @@ -2694,34 +1876,9 @@ msgstr "" msgid "URL shortening service is too long (max 50 chars)." msgstr "Sistema de acortamento de URLs demasiado longo (max 50 car.)." -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "Non se especificou ningún perfil." - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "Non se especificou ningún perfil." - #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Non hai identificador de perfil na peticion." - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "Contido do chío inválido" - -#: actions/otp.php:104 -msgid "Login token expired." -msgstr "" - -#: actions/outbox.php:58 -#, fuzzy, php-format -msgid "Outbox for %1$s - page %2$d" -msgstr "Band. Saída para %s" +msgstr "Sen petición de autorización!" #: actions/outbox.php:61 #, php-format @@ -2737,16 +1894,6 @@ msgstr "" msgid "Change password" msgstr "Cambiar contrasinal" -#: actions/passwordsettings.php:69 -#, fuzzy -msgid "Change your password." -msgstr "Cambiar contrasinal" - -#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy -msgid "Password change" -msgstr "Contrasinal gardada." - #: actions/passwordsettings.php:104 msgid "Old password" msgstr "Contrasinal antiga" @@ -2760,7 +1907,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" @@ -2772,11 +1919,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" @@ -2797,7 +1944,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 "" @@ -2806,39 +1953,29 @@ 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 "Esta páxina non está dispoñíbel no tipo de medio que aceptas" +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas" +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas" +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." msgstr "" -#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 -#, fuzzy -msgid "Site" -msgstr "Invitar" - -#: actions/pathsadminpanel.php:238 -#, fuzzy -msgid "Server" -msgstr "Recuperar" - #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." msgstr "" @@ -2847,11 +1984,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "Novo chío" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2884,34 +2016,14 @@ msgstr "" msgid "Theme directory" msgstr "" -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "Avatar" - #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "Configuracións de Twitter" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "Avatar actualizado." - -#: actions/pathsadminpanel.php:292 -#, fuzzy -msgid "Avatar directory" -msgstr "Avatar actualizado." +msgstr "Avatar" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" msgstr "" -#: actions/pathsadminpanel.php:305 -msgid "Background server" -msgstr "" - #: actions/pathsadminpanel.php:309 msgid "Background path" msgstr "" @@ -2920,21 +2032,6 @@ msgstr "" msgid "Background directory" msgstr "" -#: actions/pathsadminpanel.php:320 -#, fuzzy -msgid "SSL" -msgstr "SMS" - -#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy -msgid "Never" -msgstr "Recuperar" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "Chíos" - #: actions/pathsadminpanel.php:325 msgid "Always" msgstr "" @@ -2947,19 +2044,13 @@ msgstr "" msgid "When to use SSL" msgstr "" -#: actions/pathsadminpanel.php:335 -#, fuzzy -msgid "SSL server" -msgstr "Recuperar" - #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Novo chío" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2975,19 +2066,13 @@ msgid "People search" msgstr "Procurar xente." #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "%s non é unha etiqueta de xente válida" - -#: actions/peopletag.php:142 -#, fuzzy, php-format -msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Usuarios auto-etiquetados como %s - páxina %d" +msgstr "Non é un enderezo de correo válido." #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Contido do chío inválido" +msgstr "Tamaño inválido." #: actions/postnotice.php:101 #, php-format @@ -3006,53 +2091,51 @@ msgstr "" "che poida coñecer mellor." #: actions/profilesettings.php:99 -#, fuzzy msgid "Profile information" -msgstr "Perfil descoñecido" +msgstr "Configuración de perfil" #: actions/profilesettings.php:108 lib/groupeditform.php:154 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 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, 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." +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 "Contanos un pouco de ti e dos teus intereses en 140 caractéres." +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 "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\"" @@ -3096,11 +2179,6 @@ 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 -#, fuzzy, php-format -msgid "Bio is too long (max %d chars)." -msgstr "O teu Bio é demasiado longo (max 140 car.)." - #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." msgstr "Fuso Horario non seleccionado" @@ -3118,11 +2196,6 @@ msgstr "Etiqueta inválida: '%s'" msgid "Couldn't update user for autosubscribe." msgstr "Non se puido actualizar o usuario para autosuscrición." -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Non se puideron gardar as etiquetas." - #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Non se puido gardar o perfil." @@ -3145,29 +2218,13 @@ msgstr "" msgid "Could not retrieve public stream." msgstr "Non se pudo recuperar a liña de tempo publica." -#: actions/public.php:130 -#, fuzzy, php-format -msgid "Public timeline, page %d" -msgstr "Liña de tempo pública" - #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" msgstr "Liña de tempo pública" -#: actions/public.php:160 -#, fuzzy -msgid "Public Stream Feed (RSS 1.0)" -msgstr "Sindicación do Fio Público" - -#: actions/public.php:164 -#, fuzzy -msgid "Public Stream Feed (RSS 2.0)" -msgstr "Sindicación do Fio Público" - #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Sindicación do Fio Público" +msgstr "" #: actions/public.php:188 #, php-format @@ -3199,22 +2256,9 @@ msgstr "" "(http://status.net/). [Únete agora](%%action.register%%) para compartir " "chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))" -#: actions/public.php:247 -#, 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." -msgstr "" -"Esto é %%site.name%%, un servizo de [micro-blogging](http://en.wikipedia.org/" -"wiki/Micro-blogging) basado na ferramenta de código aberto [StatusNet]" -"(http://status.net/). [Únete agora](%%action.register%%) para compartir " -"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))" - #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "Sindicación do Fio Público" +msgstr "" #: actions/publictagcloud.php:63 #, php-format @@ -3269,24 +2313,10 @@ msgstr "Ese código de confirmación é demasiado antigo. Comeza de novo." msgid "Could not update user with confirmed email address." msgstr "Non se puido actualizar o usuario coa dirección de correo electrónico." -#: 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 "O teu alcume neste servidor, ou o teu enderezo rexistrado." @@ -3355,7 +2385,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." @@ -3363,89 +2393,100 @@ 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 -#, 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:507 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 -#, fuzzy +#: 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 "" -"Neste formulario podes crear unha conta de usuario. Logo poderás publicar " -"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:494 -#, fuzzy, php-format +#: 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 "" -" agás esta informción privada: contrasinal, dirección de correo electrónico, " -"dirección IM, número de teléfono." -#: actions/register.php:542 -#, 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" @@ -3462,21 +2503,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Noraboa, %s! e benvido a %%%%site.name%%%%. Dende aquí, podes...\n" -"\n" -"* Ãr ó [teu perfil](%s) e enviar o teu primeiro chío.\n" -"* Engadir unha [conta de Jabber/Gtalk](%%%%action.imsettings%%%%) para " -"enviar os teus chíos a través de mensaxería instantánea.\n" -"* [Buscar xente ](%%%%action.peoplesearch%%%%) que poidas coñecer ou que " -"comparta os teus intereses. \n" -"* Actualizar as túas [preferencias no perfil](%%%%action.profilesettings%%%" -"%) para decirlle a outros máis sobre ti. \n" -"* Ler os [manuais en liña](%%%%doc.help%%%%) para ollar máis cousas que " -"podes facer aquí. \n" -"\n" -"Grazas por rexistrarte e esperamos que laretexes moito." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3501,9 +2529,8 @@ msgid "Remote subscribe" msgstr "Suscrición remota" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "Suscrito a %s" +msgstr "" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3531,49 +2558,24 @@ msgid "Invalid profile URL (bad format)" msgstr "Enderezo de perfil inválido (formato incorrecto)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Non é un enderezo de perfil válido (non ten documento YADIS)." +msgstr "" #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." -msgstr "Este é un perfil local! Rexístrate para suscribirte." +msgstr "" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "Non se puido recoller o token de petición." - -#: actions/repeat.php:57 -#, fuzzy -msgid "Only logged-in users can repeat notices." -msgstr "Só o usuario pode ler os seus propios buzóns." - -#: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy -msgid "No notice specified." -msgstr "Non se especificou ningún perfil." - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "Non podes rexistrarte se non estas de acordo coa licenza." +msgstr "" #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "Xa bloqueaches a este usuario." +msgstr "Xa estas suscrito a estes usuarios:" -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "Crear" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "Crear" +msgstr "Destacado" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3582,30 +2584,30 @@ msgid "Replies to %s" msgstr "Replies to %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Mensaxe de %1$s en %2$s" +msgstr "Replies to %s" #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: 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 @@ -3618,43 +2620,21 @@ 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 -msgid "Replies to %1$s on %2$s!" -msgstr "Mensaxe de %1$s en %2$s" - #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Non podes enviar mensaxes a este usurio." +msgstr "Tes restrinxido o envio de chíos neste sitio." -#: actions/revokerole.php:82 -#, fuzzy -msgid "User doesn't have this role." -msgstr "Usuario sen un perfil que coincida." - -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "Avatar actualizado." - -#: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy -msgid "You cannot sandbox users on this site." -msgstr "Non podes enviar mensaxes a este usurio." - -#: actions/sandbox.php:72 -#, fuzzy -msgid "User is already sandboxed." -msgstr "O usuario bloqueoute." +msgstr "Estatísticas" #. 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 "" @@ -3680,46 +2660,20 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "Configuracións de Twitter" - -#: actions/showapplication.php:82 -#, fuzzy -msgid "You must be logged in to view an application." -msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s" - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "O chío non ten perfil" +msgstr "Configuración de perfil" #. 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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Alcume" - #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "Invitación(s) enviada(s)." +msgstr "" -#. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 -#: 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" @@ -3729,18 +2683,10 @@ msgstr "Estatísticas" 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 "" @@ -3767,16 +2713,6 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Estas seguro que queres eliminar este chío?" - -#: actions/showfavorites.php:79 -#, fuzzy, php-format -msgid "%1$s's favorite notices, page %2$d" -msgstr "Chíos favoritos de %s" - #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." msgstr "Non se pode " @@ -3805,16 +2741,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 @@ -3826,105 +2762,49 @@ msgstr "" msgid "%s group" msgstr "" -#: actions/showgroup.php:84 -#, fuzzy, php-format -msgid "%1$s group, page %2$d" -msgstr "Tódalas subscricións" - #: actions/showgroup.php:227 -#, fuzzy msgid "Group profile" -msgstr "Non existe o perfil." +msgstr "O usuario non ten perfil." #: 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 -#, fuzzy -msgid "Note" -msgstr "Chíos" - #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" msgstr "" -#: actions/showgroup.php:302 -#, fuzzy -msgid "Group actions" -msgstr "Outras opcions" - #: actions/showgroup.php:338 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "Fonte de chíos para %s" - -#: actions/showgroup.php:350 -#, fuzzy, php-format -msgid "Notice feed for %s group (Atom)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "Band. Saída para %s" - -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 -#, fuzzy -msgid "Members" -msgstr "Membro dende" +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 -#, fuzzy msgid "(None)" -msgstr "(nada)" +msgstr "" #: actions/showgroup.php:404 msgid "All members" msgstr "" -#: actions/showgroup.php:447 -#, fuzzy +#: actions/showgroup.php:439 msgid "Created" -msgstr "Crear" +msgstr "Destacado" -#: actions/showgroup.php:463 -#, 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 "" -"Esto é %%site.name%%, un servizo de [micro-blogging](http://en.wikipedia.org/" -"wiki/Micro-blogging) basado na ferramenta de código aberto [StatusNet]" -"(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 -#, 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 "" -"Esto é %%site.name%%, un servizo de [micro-blogging](http://en.wikipedia.org/" -"wiki/Micro-blogging) basado na ferramenta de código aberto [StatusNet]" -"(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 "" @@ -3946,45 +2826,30 @@ msgstr "Mensaxe de %1$s en %2$s" msgid "Message from %1$s on %2$s" msgstr "Mensaxe dende %1$s en %2$s" -#: actions/shownotice.php:90 -#, fuzzy -msgid "Notice deleted." -msgstr "Chío publicado" - -#: actions/showstream.php:73 -#, fuzzy, php-format -msgid " tagged %s" -msgstr "Chíos tagueados con %s" - #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s e amigos" +msgstr "%1$s (%2$s)" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "Fonte de chíos para %s" - -#: actions/showstream.php:148 -#, fuzzy, php-format -msgid "FOAF for %s" -msgstr "Band. Saída para %s" +msgstr "Fonte para os amigos de %s" #: actions/showstream.php:200 #, php-format @@ -4000,50 +2865,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 "" -#: 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 "" -"Esto é %%site.name%%, un servizo de [micro-blogging](http://en.wikipedia.org/" -"wiki/Micro-blogging) basado na ferramenta de código aberto [StatusNet]" -"(http://status.net/). [Únete agora](%%action.register%%) para compartir " -"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))" - -#: 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 "" -"Esto é %%site.name%%, un servizo de [micro-blogging](http://en.wikipedia.org/" -"wiki/Micro-blogging) basado na ferramenta de código aberto [StatusNet]" -"(http://status.net/). [Únete agora](%%action.register%%) para compartir " -"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))" - -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "Replies to %s" - -#: actions/silence.php:65 actions/unsilence.php:65 -#, fuzzy -msgid "You cannot silence users on this site." -msgstr "Non podes enviar mensaxes a este usurio." - -#: actions/silence.php:72 -#, fuzzy -msgid "User is already silenced." -msgstr "O usuario bloqueoute." - #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" msgstr "" @@ -4053,9 +2878,8 @@ msgid "Site name must have non-zero length." msgstr "" #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "Non é unha dirección de correo válida" +msgstr "Non é un enderezo de correo válido." #: actions/siteadminpanel.php:159 #, php-format @@ -4074,11 +2898,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "Novo chío" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -4099,16 +2918,6 @@ msgstr "" 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 "Nova dirección de email para posterar en %s" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "Localización" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4117,11 +2926,6 @@ msgstr "" msgid "Default timezone for the site; usually UTC." msgstr "" -#: actions/siteadminpanel.php:262 -#, fuzzy -msgid "Default language" -msgstr "Linguaxe preferida" - #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" @@ -4147,43 +2951,29 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Novo chío" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "Nova mensaxe" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Non se puideron gardar os teus axustes de Twitter!" +msgstr "Chíos" #: 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 "Novo chío" +msgstr "Eliminar chío" #: 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 "Novo chío" +msgstr "Eliminar chío" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "Configuracións de SMS" +msgstr "Configuración de perfil" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4199,9 +2989,8 @@ msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Enderezo de IM" +msgstr "Enderezos de correo" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4223,18 +3012,10 @@ msgstr "Código de confirmación." msgid "Enter the code you received on your phone." msgstr "Insire o código que recibiches no teu teléfono." -#. TRANS: Button label to confirm SMS confirmation code in SMS settings. -#: actions/smssettings.php:148 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Confirmar" - #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "Número de Teléfono do SMS" +msgstr "Non hai ningún número de teléfono." #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4243,9 +3024,8 @@ msgstr "Número de teléfono, sen puntuacións ou espazos, co código de área" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferencias" +msgstr "Preferencias gardadas." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4256,12 +3036,6 @@ msgstr "" "Enviarme chíos mediante SMS, entendo que a miña operadora poida cobrarme " "grandes facturas." -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Preferencias gardadas." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." @@ -4284,12 +3058,11 @@ msgstr "O número de teléfono xa pertence a outro usuario." #. 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 "" -"Enviouseche o código de confirmación ó número de teléfono que engadiches. " +"Enviouseche un código de confirmación á dirección de correo que engadiches. " "Comproba a túa bandexa de entrada (ou spam!) polo código e instrucións que " "debes seguir." @@ -4300,9 +3073,8 @@ msgstr "Ese é un número de confirmación incorrecto." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Confirmación cancealada." +msgstr "Confirmación de SMS" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4310,18 +3082,6 @@ msgstr "Confirmación cancealada." msgid "That is not your phone number." msgstr "Ese non é o teu número de teléfono." -#. TRANS: Message given after successfully removing a registered SMS phone number. -#: actions/smssettings.php:470 -#, fuzzy -msgid "The SMS phone number was removed." -msgstr "Número de Teléfono do SMS" - -#. TRANS: Label for mobile carrier dropdown menu in SMS settings. -#: actions/smssettings.php:511 -#, fuzzy -msgid "Mobile carrier" -msgstr "Selecciona unha operadora" - #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 msgid "Select a carrier" @@ -4345,18 +3105,13 @@ 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 "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Navegación de subscricións" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Confirmar correo electrónico" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." @@ -4398,16 +3153,12 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Configuracións de Twitter" - #: actions/subedit.php:70 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." @@ -4415,30 +3166,10 @@ msgstr "Non se pode gardar a subscrición." msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "Ningún chío." - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Non estás suscrito a ese perfil" - #: actions/subscribe.php:145 msgid "Subscribed" msgstr "Suscrito" -#: actions/subscribers.php:50 -#, fuzzy, php-format -msgid "%s subscribers" -msgstr "Subscritores" - -#: actions/subscribers.php:52 -#, fuzzy, php-format -msgid "%1$s subscribers, page %2$d" -msgstr "Tódalas subscricións" - #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." msgstr "Esa é a xente que escoita os teus chíos." @@ -4466,16 +3197,6 @@ msgid "" "%) and be the first?" msgstr "" -#: actions/subscriptions.php:52 -#, fuzzy, php-format -msgid "%s subscriptions" -msgstr "Tódalas subscricións" - -#: actions/subscriptions.php:54 -#, fuzzy, php-format -msgid "%1$s subscriptions, page %2$d" -msgstr "Tódalas subscricións" - #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." msgstr "Esa é a xente á que lle estas a escoitar os seus chíos" @@ -4495,11 +3216,6 @@ msgid "" "automatically subscribe to people you already follow there." msgstr "" -#: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format -msgid "%s is not listening to anyone." -msgstr "%1$s está a escoitar os teus chíos %2$s." - #: actions/subscriptions.php:208 msgid "Jabber" msgstr "Jabber." @@ -4509,50 +3225,34 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Usuarios auto-etiquetados como %s - páxina %d" +msgstr "Chíos tagueados con %s" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/tag.php:99 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Fonte de chíos para %s" +msgstr "Fonte para os amigos de %s" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "Non hai argumento id." - -#: actions/tagother.php:65 -#, fuzzy, php-format -msgid "Tag %s" -msgstr "Tags" - -#: actions/tagother.php:77 lib/userprofile.php:76 -#, fuzzy -msgid "User profile" -msgstr "O usuario non ten perfil." +msgstr "" #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" msgstr "" -#: actions/tagother.php:141 -#, fuzzy -msgid "Tag user" -msgstr "Tags" - #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " @@ -4582,29 +3282,17 @@ 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." -msgstr "Xa bloqueaches a este usuario." +msgstr "Non estás suscrito a ese perfil" #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "O usuario bloqueoute." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "O usuario non ten perfil." +msgstr "O usuario non ten último chio." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Non hai identificador de perfil na peticion." +msgstr "Non se atopou un perfil con ese ID." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4616,13 +3304,6 @@ msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -#. TRANS: User admin panel title -#: actions/useradminpanel.php:59 -#, fuzzy -msgctxt "TITLE" -msgid "User" -msgstr "Usuario" - #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." msgstr "" @@ -4654,11 +3335,6 @@ msgstr "" msgid "Maximum length of a profile bio in characters." msgstr "" -#: actions/useradminpanel.php:231 -#, fuzzy -msgid "New users" -msgstr "Invitar a novos usuarios" - #: actions/useradminpanel.php:235 msgid "New user welcome" msgstr "" @@ -4667,28 +3343,6 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "Tódalas subscricións" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "" -"Suscribirse automáticamente a calquera que se suscriba a min (o mellor para " -"non humáns)" - -#: actions/useradminpanel.php:251 -#, fuzzy -msgid "Invitations" -msgstr "Invitación(s) enviada(s)." - -#: actions/useradminpanel.php:256 -#, fuzzy -msgid "Invitations enabled" -msgstr "Invitación(s) enviada(s)." - #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" @@ -4698,39 +3352,20 @@ msgid "Authorize subscription" msgstr "Subscrición de autorización." #: 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 "" -"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 \"Cancel\"." - -#: actions/userauthorization.php:196 actions/version.php:165 -msgid "License" -msgstr "" #: actions/userauthorization.php:217 msgid "Accept" msgstr "Aceptar" -#: actions/userauthorization.php:218 lib/subscribeform.php:115 -#: lib/subscribeform.php:139 -#, fuzzy -msgid "Subscribe to this user" -msgstr "Suscrito a %s" - #: actions/userauthorization.php:219 msgid "Reject" msgstr "Rexeitar" -#: actions/userauthorization.php:220 -#, fuzzy -msgid "Reject this subscription" -msgstr "Subscrición de autorización." - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "Sen petición de autorización!" @@ -4740,30 +3375,22 @@ msgid "Subscription authorized" msgstr "Subscrición autorizada" #: 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 "" -"A subscrición foi autorizada, pero ningunha URL de retorno foi " -"proporcionada. Comproba coas instruccións do sitio para máis detalles en " -"como autorizar subscricións. O teu token de subscrición é:" #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "Subscrición rexeitada" #: 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 "" -"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." #: actions/userauthorization.php:303 #, php-format @@ -4791,19 +3418,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 "Non se pode ler a URL do avatar de '%s'" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Tipo de imaxe incorrecto para '%s'" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "Configuración de perfil" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4815,20 +3437,14 @@ msgstr "" 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 "Tódalas subscricións" - #: actions/usergroups.php:132 msgid "Search for more groups" msgstr "" #: actions/usergroups.php:159 -#, fuzzy, php-format +#, php-format msgid "%s is not a member of any group." -msgstr "%1s non é unha orixe fiable." +msgstr "Non estás suscrito a ese perfil" #: actions/usergroups.php:164 #, php-format @@ -4840,29 +3456,24 @@ 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 -#, 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 " @@ -4870,7 +3481,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 " @@ -4878,201 +3489,168 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -msgstr "Non existe o perfil." +#. 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/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Non se puido actualizar o usuario." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Non existe o perfil." - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Non se puido actualizar o usuario." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Non se puido crear o favorito." - -#: classes/Message.php:45 -#, 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Erro ó inserir o hashtag na BD: %s" +msgstr "Acounteceu un erro ó inserir o avatar" -#: classes/Notice.php:245 -#, 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:270 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:276 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 -#, fuzzy -msgid "" -"Too many duplicate messages too quickly; take a breather and post again in a " -"few minutes." -msgstr "" -"Demasiados chíos en pouco tempo; tomate un respiro e envíao de novo dentro " -"duns minutos." - -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Aconteceu un erro ó gardar o chío." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Aconteceu un erro ó gardar o chío." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%1$s (%2$s)" +msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 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 -msgid "Already subscribed!" +#. 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:82 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +msgstr "Non se poden gardar as etiquetas." + +#. 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 -#, fuzzy -msgid "Not subscribed!" -msgstr "Non está suscrito!" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Non se pode gardar a subscrición." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Non se pode eliminar a subscrició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 "Non se pode gardar a subscrición." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Non se pode eliminar a subscrición." +#. 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 pode gardar a subscrición." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Non se pode eliminar a subscrición." - -#: classes/User.php:363 -#, fuzzy, php-format -msgid "Welcome to %1$s, @%2$s!" -msgstr "Mensaxe de %1$s en %2$s" - -#: classes/User_group.php:480 -#, fuzzy -msgid "Could not create group." -msgstr "Non se puido crear o favorito." - -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Non se pode gardar a subscrición." - -#: classes/User_group.php:510 -#, fuzzy -msgid "Could not set group membership." -msgstr "Non se pode gardar a subscrición." - -#: classes/User_group.php:524 -#, fuzzy -msgid "Could not save local group info." -msgstr "Non se pode gardar a subscrición." +msgstr "Non se poden gardar as etiquetas." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" msgstr "Configuración de perfil" -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:116 -#, fuzzy -msgid "Upload an avatar" -msgstr "Acounteceu un fallo ó actualizar o avatar." - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 msgid "Change your password" @@ -5083,12 +3661,6 @@ msgstr "Cambiar contrasinal" msgid "Change email handling" msgstr "Cambiar a xestión de email" -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:137 -#, fuzzy -msgid "Design your profile" -msgstr "O usuario non ten perfil." - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 msgid "Other options" @@ -5099,233 +3671,133 @@ msgstr "Outras opcions" msgid "Other" msgstr "Outros" -#. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "Persoal" - -#. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Change your email, avatar, password, profile" -msgstr "Cambiar contrasinal" - #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Non se pode redireccionar ao servidor: %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:468 msgid "Connect" msgstr "Conectar" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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:474 msgctxt "MENU" msgid "Admin" msgstr "" -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format -msgctxt "TOOLTIP" -msgid "Invite friends and colleagues to join you on %s" -msgstr "" -"Emprega este formulario para invitar ós teus amigos e colegas a empregar " -"este servizo." - -#. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "Invitar" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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 -msgctxt "MENU" -msgid "Logout" -msgstr "Sair" - #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "Rexistrar" +msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "Inicio de sesión" - -#. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Help me!" -msgstr "Axuda" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" -msgstr "Axuda" - #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 -#, fuzzy -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 -#, 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:605 msgid "Local views" msgstr "" -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, 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 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "Navegación de subscricións" +msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Axuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Sobre" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Preguntas frecuentes" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacidade" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** é un servizo de microbloguexo que che proporciona [%%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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5336,58 +3808,50 @@ msgstr "" "%s, dispoñible baixo licenza [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 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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 -#, fuzzy +#: lib/action.php:1247 msgid "After" -msgstr "« Despois" +msgstr "Outros" #. 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:1257 msgid "Before" -msgstr "Antes »" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5395,114 +3859,32 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "Non podes enviar mensaxes a este usurio." - -#. 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 "Non se permite o rexistro neste intre." - -#. TRANS: Client error message. -#: lib/adminpanelaction.php:229 -#, fuzzy -msgid "showForm() not implemented." -msgstr "Comando non implementado." - -#. TRANS: Client error message -#: lib/adminpanelaction.php:259 -#, fuzzy -msgid "saveSettings() not implemented." -msgstr "Comando non implementado." - -#. 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 "Non se puideron gardar os teus axustes de Twitter!" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Confirmar correo electrónico" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy -msgctxt "MENU" -msgid "Site" -msgstr "Invitar" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "Confirmación de SMS" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "Persoal" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy -msgid "User configuration" -msgstr "Confirmación de SMS" +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 "Usuario" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy -msgid "Access configuration" -msgstr "Confirmación de SMS" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "Confirmación de SMS" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "Confirmación de SMS" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Novo chío" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "Confirmación de SMS" +msgstr "Eliminar chío" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5518,27 +3900,19 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres." +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres." +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "Enderezo da túa páxina persoal, blogue, ou perfil noutro sitio" - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "Fonte" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 @@ -5547,9 +3921,8 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "Enderezo da túa páxina persoal, blogue, ou perfil noutro sitio" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5609,44 +3982,22 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Eliminar" - -#. TRANS: DT element label in attachment list. -#: lib/attachmentlist.php:88 -msgid "Attachments" -msgstr "" +msgstr "Recuperar" #. 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 -#, fuzzy -msgid "Provider" -msgstr "Perfil" - #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Contrasinal gardada." - -#: lib/authenticationplugin.php:235 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "Contrasinal gardada." +msgstr "" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" @@ -5660,45 +4011,21 @@ msgstr "Comando completo" msgid "Command failed" msgstr "Comando fallido" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "Non se atopou un perfil con ese ID." - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "O usuario non ten último chio." - -#. 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 "Non se puido actualizar o usuario coa dirección de correo electrónico." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Non se puido actualizar o usuario coa dirección de correo electrónico." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Desculpa, este comando todavía non está implementado." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Toque enviado" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5709,56 +4036,39 @@ msgstr "" "Suscriptores: %2$s\n" "Chíos: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Chío marcado coma favorito." -#: lib/command.php:323 -#, fuzzy -msgid "You are already a member of that group" -msgstr "Xa estas suscrito a estes usuarios:" - -#. 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 "Non podes seguir a este usuario: o Usuario non se atopa." - -#. 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 "Non podes seguir a este usuario: o Usuario non se atopa." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Páxina persoal: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Sobre: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5767,122 +4077,81 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Mensaxe demasiado longa - o máximo é 140 caracteres, ti enviaches %d " - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "Mensaxe directo a %s enviado" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Erro ó enviar a mensaxe directa." -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Non se pode activar a notificación." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Eliminar chío" - -#. 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 "Chío publicado" - -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Aconteceu un erro ó gardar o chío." +msgstr "Acounteceu un erro configurando o usuario." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Mensaxe demasiado longa - o máximo é 140 caracteres, ti enviaches %d " - -#: lib/command.php:571 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Reply to %s sent" -msgstr "Non se pode eliminar este chíos." +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "Aconteceu un erro ó gardar o chío." +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Especifica o nome do usuario ó que queres suscribirte" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "Non estás suscrito a ese perfil" - -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Suscrito a %s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Especifica o nome de usuario ó que queres deixar de seguir" - -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Desuscribir de %s" - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Comando non implementado." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notificación desactivada." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "No se pode desactivar a notificación." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notificación habilitada." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Non se pode activar a notificación." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Desuscribir de %s" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Non estás suscrito a ese perfil" - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Xa estas suscrito a estes usuarios:" @@ -5891,12 +4160,10 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Outro usuario non se puido suscribir a ti." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Outro usuario non se puido suscribir a ti." @@ -5905,12 +4172,10 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "Non estás suscrito a ese perfil" - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Non estás suscrito a ese perfil" @@ -5919,8 +4184,7 @@ msgstr[2] "" msgstr[3] "" msgstr[4] "" -#: lib/command.php:838 -#, fuzzy +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5961,37 +4225,6 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" -"Comandos:\n" -"on - activar as notificacións\n" -"off - desactivar as notificacións\n" -"help - mostrar esta axuda\n" -"follow <nickname> - suscribirse ao usuario\n" -"leave <nickname> - de-suscribirse do usuario\n" -"d <nickname> <text> - mensaxe directa ao usuario\n" -"get <nickname> - lelo último chío do usuario\n" -"whois <nickname> - amosar informacion do usuario\n" -"fav <nickname> - engadilo último chío do usuario como favorito\n" -"stats - amosalas túas estatísticas\n" -"stop - o mesmo que 'off'\n" -"quit - o mesmo que 'off'\n" -"sub <nickname> - o mesmo que 'follow'\n" -"unsub <nickname> - o mesmo que 'leave'\n" -"last <nickname> - o mesmo que 'get'\n" -"on <nickname> - non implementado por agora.\n" -"off <nickname> - non implementado por agora.\n" -"nudge <nickname> - non implementado por agora.\n" -"invite <phone number> - non implementado por agora.\n" -"track <word> - non implementado por agora.\n" -"untrack <word> - non implementado por agora.\n" -"track off - non implementado por agora.\n" -"untrack all - non implementado por agora.\n" -"tracks - non implementado por agora.\n" -"tracking - non implementado por agora.\n" - -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Sen código de confirmación." #: lib/common.php:136 msgid "I looked for configuration files in the following places: " @@ -6017,11 +4250,6 @@ msgstr "Chíos dende mensaxería instantánea (IM)" msgid "Updates by SMS" msgstr "Chíos dende SMS" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "Conectar" - #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" msgstr "" @@ -6030,30 +4258,17 @@ msgstr "" msgid "Database error" msgstr "" -#: lib/designsettings.php:105 -#, fuzzy -msgid "Upload file" -msgstr "Subir" - -#: lib/designsettings.php:109 -#, fuzzy -msgid "" -"You can upload your personal background image. The maximum file size is 2MB." -msgstr "Podes actualizar a túa información do perfil persoal aquí" - #: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" #: lib/disfavorform.php:114 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor this notice" -msgstr "%s chíos favoritos" +msgstr "Chíos favoritos de %s" #: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy msgid "Favor this notice" -msgstr "%s chíos favoritos" +msgstr "Chíos favoritos de %s" #: lib/favorform.php:140 msgid "Favor" @@ -6087,11 +4302,6 @@ msgstr "Filtrar etiquetas" msgid "All" msgstr "Todos" -#: lib/galleryaction.php:139 -#, fuzzy -msgid "Select tag to filter" -msgstr "Selecciona unha operadora" - #: lib/galleryaction.php:140 msgid "Tag" msgstr "Etiqueta" @@ -6109,26 +4319,14 @@ msgstr "Ir" 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 "Enderezo da túa páxina persoal, blogue, ou perfil noutro sitio" - #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres." +msgstr "" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Contanos un pouco de ti e dos teus intereses en 140 caractéres." - -#: lib/groupeditform.php:179 -#, fuzzy -msgid "" -"Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "¿Onde estas, coma \"Cidade, Provincia, País\"" +msgstr "" #: lib/groupeditform.php:187 #, php-format @@ -6139,25 +4337,14 @@ msgstr "" msgid "Group" msgstr "" -#: lib/groupnav.php:101 -#, fuzzy -msgid "Blocked" -msgstr "Bloquear" - -#: lib/groupnav.php:102 -#, fuzzy, php-format -msgid "%s blocked users" -msgstr "Bloquear usuario" - #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" msgstr "" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "Sair" +msgstr "Inicio de sesión" #: lib/groupnav.php:114 #, php-format @@ -6191,11 +4378,6 @@ msgstr "Esta páxina non está dispoñíbel no tipo de medio que aceptas" msgid "Unsupported image file format." msgstr "Formato de ficheiro de imaxe non soportado." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "Podes actualizar a túa información do perfil persoal aquí" - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Carga parcial." @@ -6209,14 +4391,12 @@ msgid "Not an image or corrupt file." msgstr "Non é unha imaxe ou está corrupta." #: lib/imagefile.php:122 -#, fuzzy msgid "Lost our file." -msgstr "Bloqueo de usuario fallido." +msgstr "Ningún chío." #: lib/imagefile.php:163 lib/imagefile.php:224 -#, fuzzy msgid "Unknown file type" -msgstr "tipo de ficheiro non soportado" +msgstr "" #: lib/imagefile.php:244 msgid "MB" @@ -6236,25 +4416,13 @@ msgstr "" msgid "Unknown inbox source %d." msgstr "" -#: lib/joinform.php:114 -#, fuzzy -msgid "Join" -msgstr "Inicio de sesión" - -#: lib/leaveform.php:114 -#, fuzzy -msgid "Leave" -msgstr "Gardar" - #: lib/logingroupnav.php:80 -#, fuzzy msgid "Login with a username and password" -msgstr "Accede co teu nome de usuario e contrasinal." +msgstr "Usuario ou contrasinal inválidos." #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" -msgstr "Crear nova conta" +msgstr "" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 @@ -6297,9 +4465,16 @@ 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 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6312,27 +4487,15 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s está a escoitar os teus chíos en %2$s.\n" -"\n" -"\t%3$s\n" -"\n" -"Atentamente todo seu,\n" -"%4$s.\n" - -#. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 -#, 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" @@ -6354,30 +4517,24 @@ 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 -#, 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 " @@ -6404,13 +4561,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" @@ -6444,14 +4601,14 @@ msgstr "" "%5$s\n" #. 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 "%s gustoulle o teu chío" +msgstr "Enviar un correo cando alguen enganda un chío meu coma favorito." #. TRANS: Body for favorite notification email -#: lib/mail.php:586 -#, fuzzy, php-format +#: 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" @@ -6470,21 +4627,9 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" -"%1$s acaba de engadir o teu chío en %2$s como un dos seus favoritos.\n" -"\n" -"Se o olvidaches, podes velo texto do teu chío aquí:\n" -"\n" -"%3$s\n" -"\n" -"Podes vela lista de cíos favoritos de %1$s aquí:\n" -"\n" -"%4$s\n" -"\n" -"Fielmente teu,\n" -"%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" @@ -6492,13 +4637,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6535,10 +4675,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " dende " +msgstr "" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6556,11 +4695,6 @@ msgstr "Ise é un enderezo IM incorrecto." msgid "Sorry, no incoming email allowed." msgstr "Aivá, non se permiten correos entrantes." -#: lib/mailhandler.php:228 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "Formato de ficheiro de imaxe non soportado." - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6591,152 +4725,104 @@ 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 "Non se pudo recuperar a liña de tempo publica." +msgstr "Non se puido eliminar o favorito." -#: 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 "Eliminar chío" - #: lib/messageform.php:146 msgid "To" msgstr "A" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy -msgid "Available characters" -msgstr "6 ou máis caracteres" - -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Enviar" +msgstr "" #: lib/noticeform.php:160 -#, fuzzy msgid "Send a notice" -msgstr "Dar un toque" +msgstr "Novo chío" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "¿Que pasa, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Non se puideron gardar as etiquetas." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Non se puideron gardar as etiquetas." +msgstr "" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "" + +#: lib/noticeform.php:217 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 -#, fuzzy +#: lib/noticelist.php:436 msgid "N" -msgstr "No" +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:567 -#, fuzzy -msgid "in context" -msgstr "Sen contido!" +#: lib/noticelist.php:502 +msgid "web" +msgstr "" -#: lib/noticelist.php:602 -#, fuzzy -msgid "Repeated by" -msgstr "Crear" - -#: lib/noticelist.php:629 -#, fuzzy -msgid "Reply to this notice" -msgstr "Non se pode eliminar este chíos." - -#: lib/noticelist.php:630 -#, fuzzy +#: lib/noticelist.php:631 msgid "Reply" -msgstr "contestar" - -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "Chío publicado" - -#: lib/nudgeform.php:116 -#, fuzzy -msgid "Nudge this user" -msgstr "Toque enviado" - -#: lib/nudgeform.php:128 -#, fuzzy -msgid "Nudge" -msgstr "Toque enviado" - -#: lib/nudgeform.php:128 -#, fuzzy -msgid "Send a nudge to this user" -msgstr "Non podes enviar mensaxes a este usurio." +msgstr "Respostas" #: lib/oauthstore.php:283 msgid "Error inserting new profile" @@ -6754,11 +4840,6 @@ msgstr "Acounteceu un erro actualizando o perfil remoto" msgid "Error inserting remote profile" msgstr "Aconteceu un erro ó inserir o perfil remoto" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Eliminar chío" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Non se puido inserir a nova subscrición." @@ -6792,14 +4873,9 @@ msgid "Your sent messages" msgstr "As túas mensaxes enviadas" #: lib/personaltagcloudsection.php:56 -#, fuzzy, php-format +#, php-format msgid "Tags in %s's notices" -msgstr "O usuario non ten último chio." - -#: lib/plugin.php:114 -#, fuzzy -msgid "Unknown" -msgstr "Acción descoñecida" +msgstr "" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6813,16 +4889,6 @@ msgstr "Tódalas subscricións" msgid "Subscribers" msgstr "Subscritores" -#: lib/profileaction.php:161 -#, fuzzy -msgid "All subscribers" -msgstr "Subscritores" - -#: lib/profileaction.php:191 -#, fuzzy -msgid "User ID" -msgstr "Usuario" - #: lib/profileaction.php:196 msgid "Member since" msgstr "Membro dende" @@ -6833,11 +4899,10 @@ msgid "Daily average" msgstr "" #: lib/profileaction.php:264 -#, fuzzy msgid "All groups" -msgstr "Tódalas etiquetas" +msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6846,9 +4911,8 @@ msgid "Public" msgstr "Público" #: lib/publicgroupnav.php:82 -#, fuzzy msgid "User groups" -msgstr "Usuarios" +msgstr "" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" @@ -6862,48 +4926,26 @@ msgstr "Destacado" msgid "Popular" msgstr "Popular" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Non hai argumento id." - -#: lib/repeatform.php:107 -#, fuzzy -msgid "Repeat this notice?" -msgstr "Non se pode eliminar este chíos." +msgstr "" #: lib/repeatform.php:132 msgid "Yes" msgstr "Si" -#: lib/repeatform.php:132 -#, fuzzy -msgid "Repeat this notice" -msgstr "Non se pode eliminar este chíos." - #: lib/revokeroleform.php:91 #, 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 "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "Band. Entrada" - #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "Bloquear usuario" - -#: lib/searchaction.php:120 -#, fuzzy -msgid "Search site" -msgstr "Buscar" +msgstr "" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6913,11 +4955,6 @@ msgstr "" msgid "Search" msgstr "Buscar" -#: lib/searchaction.php:162 -#, fuzzy -msgid "Search help" -msgstr "Buscar" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "Xente" @@ -6930,11 +4967,6 @@ msgstr "Atopar xente neste sitio" msgid "Find content of notices" msgstr "Atopar no contido dos chíos" -#: lib/searchgroupnav.php:85 -#, fuzzy -msgid "Find groups on this site" -msgstr "Atopar xente neste sitio" - #: lib/section.php:89 msgid "Untitled section" msgstr "" @@ -6944,41 +4976,17 @@ msgid "More..." msgstr "" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "Novo chío" +msgstr "" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "Bloquear usuario" - -#: lib/subgroupnav.php:83 -#, fuzzy, php-format -msgid "People %s subscribes to" -msgstr "Suscrición remota" - -#: lib/subgroupnav.php:91 -#, fuzzy, php-format -msgid "People subscribed to %s" -msgstr "Suscrito a %s" - -#: lib/subgroupnav.php:99 -#, php-format -msgid "Groups %s is a member of" msgstr "" #: lib/subgroupnav.php:105 msgid "Invite" msgstr "Invitar" -#: lib/subgroupnav.php:106 -#, fuzzy, php-format -msgid "Invite friends and colleagues to join you on %s" -msgstr "" -"Emprega este formulario para invitar ós teus amigos e colegas a empregar " -"este servizo." - #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" @@ -6990,9 +4998,48 @@ msgid "People Tagcloud as tagged" msgstr "" #: lib/tagcloudsection.php:56 -#, fuzzy msgid "None" -msgstr "No" +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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Acounteceu un erro borrando o bloqueo." #: lib/topposterssection.php:74 msgid "Top posters" @@ -7003,75 +5050,33 @@ msgid "Unsandbox" msgstr "" #: lib/unsandboxform.php:80 -#, fuzzy msgid "Unsandbox this user" -msgstr "Bloquear usuario" +msgstr "" #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "Bloquear usuario" - -#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 -#, fuzzy -msgid "Unsubscribe from this user" -msgstr "Desuscribir de %s" +msgstr "" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" msgstr "Eliminar subscrición" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "O usuario non ten perfil." - -#: lib/userprofile.php:117 -#, fuzzy -msgid "Edit Avatar" -msgstr "Avatar" - -#: lib/userprofile.php:234 lib/userprofile.php:248 -#, fuzzy -msgid "User actions" -msgstr "Outras opcions" - #: lib/userprofile.php:237 msgid "User deletion in progress..." msgstr "" -#: lib/userprofile.php:263 -#, fuzzy -msgid "Edit profile settings" -msgstr "Configuración de perfil" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" -#: lib/userprofile.php:287 -#, fuzzy -msgid "Send a direct message to this user" -msgstr "Non podes enviar mensaxes a este usurio." - -#: lib/userprofile.php:288 -#, fuzzy -msgid "Message" -msgstr "Nova mensaxe" - #: lib/userprofile.php:326 msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "O usuario non ten perfil." - #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" @@ -7083,70 +5088,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "fai un ano" #: lib/webcolor.php:82 -#, fuzzy, php-format -msgid "%s is not a valid color!" -msgstr "%1s non é unha orixe fiable." - -#: lib/webcolor.php:123 #, php-format -msgid "%s is not a valid color! Use 3 or 6 hex chars." -msgstr "" - -#: lib/xmppmanager.php:403 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Mensaxe demasiado longa - o máximo é 140 caracteres, ti enviaches %d " +msgid "%s is not a valid color!" +msgstr "A páxina persoal semella que non é unha URL válida." diff --git a/locale/gl/LC_MESSAGES/statusnet.po b/locale/gl/LC_MESSAGES/statusnet.po index a63edfbb07..40e6314ee0 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:53+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:20+0000\n" "Language-Team: Galician\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +84,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +123,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:114 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 +166,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +245,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 +265,7 @@ msgstr "Non se puido gardar o perfil." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -323,48 +324,49 @@ msgstr "Mensaxes directas a %s" msgid "All the direct messages sent to %s" msgstr "Todas as mensaxes directas enviadas a %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "A mensaxe non ten texto!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "" "Iso é longo de máis. A lonxitude máxima das mensaxes é de %d caracteres." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Non se atopou o destinatario." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +382,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 +394,136 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +534,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 +610,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:463 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 +623,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 +640,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." @@ -640,69 +653,75 @@ msgstr "Non pode borrar o estado doutro usuario." msgid "No such notice." msgstr "Non existe tal nota." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Non pode repetir a súa propia nota." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non se atopou." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 +736,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 +804,7 @@ msgid "Preview" msgstr "Vista previa" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Borrar" @@ -821,11 +844,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 +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" @@ -849,7 +872,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 +881,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,14 +889,16 @@ 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -883,8 +908,8 @@ msgstr "Non se puido gardar a información do bloqueo." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Non existe tal grupo." @@ -997,7 +1022,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:1307 msgid "There was a problem with your session token." msgstr "Houbo un problema co seu pase." @@ -1031,7 +1056,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 +1087,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Borrar esta nota" @@ -1102,45 +1127,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 +1184,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 +1252,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 +1366,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 +1530,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 +1756,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 +1903,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" @@ -2140,7 +2183,7 @@ msgstr "Xa está subscrito aos seguintes usuarios:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2231,8 +2274,8 @@ msgid "" msgstr "" "%1$s convidouno a unirse a el en %2$s (%3$s).\n" "\n" -"%2$s é un servizo de microblogging 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 " @@ -2263,9 +2306,7 @@ msgstr "Ten que identificarse para unirse a un grupo." msgid "No nickname or ID." msgstr "Nin alcume nin 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s uniuse ao grupo %2$s" @@ -2274,54 +2315,53 @@ msgstr "%1$s uniuse ao grupo %2$s" msgid "You must be logged in to leave a group." msgstr "Ten que identificarse para deixar un grupo." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Non pertence a ese grupo." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2369,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Identifíquese co seu nome de usuario e contrasinal. Aínda non ten un nome de " -"usuario? [Rexistre](%%action.register%%) unha conta nova." +"Aínda non ten un nome de usuario? [Rexistre](%%action.register%%) unha conta " +"nova." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2394,12 +2437,15 @@ msgstr "Utilice o seguinte formulario para crear un novo grupo." msgid "New message" msgstr "Mensaxe nova" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Non pode enviarlle unha mensaxe a este usuario." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Non hai contido ningún!" @@ -2407,7 +2453,8 @@ msgstr "Non hai contido ningún!" msgid "No recipient specified." msgstr "Non se especificou ningún destinatario." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Non se envíe unha mensaxe, limítese a pensar nela." @@ -2416,12 +2463,14 @@ msgstr "Non se envíe unha mensaxe, limítese a pensar nela." msgid "Message sent" msgstr "Enviouse a mensaxe" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Enviouse a mensaxe directa a %s." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Houbo un erro de AJAX" @@ -2429,7 +2478,7 @@ msgstr "Houbo un erro de AJAX" msgid "New notice" msgstr "Nova nota" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Publicouse a nota" @@ -2481,9 +2530,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 @@ -2538,30 +2587,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Non se soporta ese formato de datos." @@ -2667,7 +2716,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" @@ -2679,11 +2728,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." @@ -2704,7 +2753,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" @@ -2910,43 +2959,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â€" @@ -2990,7 +3039,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)." @@ -3088,11 +3137,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 [microblogging](http://en.wikipedia.org/" -"wiki/Microblogging) 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! ([Ler máis](%%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 @@ -3101,9 +3150,9 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" -"Isto é %%site.name%%, un servizo de [microblogging](http://en.wikipedia.org/" -"wiki/Microblogging) 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" @@ -3258,7 +3307,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." @@ -3266,39 +3315,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:507 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. " @@ -3306,36 +3355,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "Entendo que o contido e os datos de %1$s son privados e confidenciais." + +#: 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: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:535 +msgid "All rights reserved." +msgstr "Todos os dereitos reservados." + +#. 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, " @@ -3345,7 +3419,7 @@ msgstr "" "datos privados: contrasinais, enderezos de correo electrónico e mensaxería " "instantánea e números de teléfono." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3377,7 +3451,7 @@ msgstr "" "\n" "Grazas por rexistrarse. Esperamos que goce deste servizo." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3394,8 +3468,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" @@ -3419,7 +3493,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 microblogging 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 @@ -3460,7 +3535,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repetida" @@ -3498,7 +3573,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." @@ -3509,272 +3584,287 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" +"Pode conversar con outros usuarios, subscribirse a máis xente ou [unirse a " +"grupos](%%action.groups%%)." #: 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)." #: actions/repliesrss.php:72 #, php-format msgid "Replies to %1$s on %2$s!" -msgstr "" +msgstr "Respostas a %1$s en %2$s!" #: actions/revokerole.php:75 msgid "You cannot revoke user roles on this site." -msgstr "" +msgstr "Non pode revogar os roles dos usuarios neste sitio." #: actions/revokerole.php:82 msgid "User doesn't have this role." -msgstr "" +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 "" +msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 msgid "You cannot sandbox users on this site." -msgstr "" +msgstr "Non pode illar usuarios neste sitio." #: actions/sandbox.php:72 msgid "User is already sandboxed." -msgstr "" +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 "" +msgstr "Sesións" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "Configuración da sesión para este sitio StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" -msgstr "" +msgstr "Manexar as sesións" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." -msgstr "" +msgstr "Manexar ou non as sesións nós mesmos." #: actions/sessionsadminpanel.php:181 msgid "Session debugging" -msgstr "" +msgstr "Depuración da sesión" #: actions/sessionsadminpanel.php:183 msgid "Turn on debugging output for sessions." -msgstr "" +msgstr "Activar a saída de depuración para as sesións." #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 msgid "Save site settings" -msgstr "" +msgstr "Gardar a configuración do sitio" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." -msgstr "" +msgstr "Debe estar identificado para ver unha aplicación." #: actions/showapplication.php:157 msgid "Application profile" -msgstr "" +msgstr "Perfil da aplicación" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 msgid "Icon" -msgstr "" +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 "" +msgstr "Nome" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 msgid "Organization" -msgstr "" +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 "" +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 "" +msgstr "Estatísticas" #: actions/showapplication.php:203 #, php-format msgid "Created by %1$s - %2$s access by default - %3$d users" -msgstr "" +msgstr "Creado por %1$s - acceso %2$s por defecto - %3$d usuarios" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Accións da aplicación" #: actions/showapplication.php:236 msgid "Reset key & secret" -msgstr "" +msgstr "Restablecer o contrasinal ou a pregunta secreta" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Información da aplicación" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "Clave do consumidor" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "Pregunta secreta do consumidor" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "Solicitar un URL de pase" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "Acceder ao URL do pase" #: actions/showapplication.php:283 msgid "Authorize URL" -msgstr "" +msgstr "Autorizar o URL" #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" +"Nota: sopórtanse as sinaturas HMAC-SHA1. Non se soporta o método de asinado " +"con texto sinxelo." #: actions/showapplication.php:309 msgid "Are you sure you want to reset your consumer key and secret?" msgstr "" +"Seguro que quere restablecer a súa clave e maila súa pregunta secreta de " +"consumidor?" #: actions/showfavorites.php:79 #, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "" +msgstr "Notas favoritas de %1$s, páxina %2$d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." -msgstr "" +msgstr "Non se puideron obter as notas favoritas." #: actions/showfavorites.php:171 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "" +msgstr "Fonte de novas dos favoritos de %s (RSS 1.0)" #: actions/showfavorites.php:178 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "" +msgstr "Fonte de novas dos favoritos de %s (RSS 2.0)" #: actions/showfavorites.php:185 #, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "" +msgstr "Fonte de novas dos favoritos 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 "" +"Aínda non escolleu ningunha nota favorita. Prema no botón de nota favorita " +"naquelas notas que lle gusten para marcalas para logo ou para salientalas." #: 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 :)" #: 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 " +"querer engadir aos seus favoritos? :)" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." -msgstr "" +msgstr "Isto é un modo de compartir o que lle gusta." #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format msgid "%s group" -msgstr "" +msgstr "Grupo %s" #: actions/showgroup.php:84 #, php-format msgid "%1$s group, page %2$d" -msgstr "" +msgstr "Grupo %1$s, páxina %2$d" #: actions/showgroup.php:227 msgid "Group profile" -msgstr "" +msgstr "Perfil do grupo" #: actions/showgroup.php:272 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:178 msgid "URL" -msgstr "" +msgstr "URL" #: actions/showgroup.php:283 actions/tagother.php:128 #: actions/userauthorization.php:187 lib/userprofile.php:195 msgid "Note" -msgstr "" +msgstr "Nota" #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" -msgstr "" +msgstr "Pseudónimos" #: actions/showgroup.php:302 msgid "Group actions" -msgstr "" +msgstr "Accións do grupo" #: actions/showgroup.php:338 #, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "" +msgstr "Fonte de novas das notas do grupo %s (RSS 1.0)" #: actions/showgroup.php:344 #, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "" +msgstr "Fonte de novas das notas do grupo %s (RSS 2.0)" #: actions/showgroup.php:350 #, php-format msgid "Notice feed for %s group (Atom)" -msgstr "" +msgstr "Fonte de novas das notas do grupo %s (Atom)" #: actions/showgroup.php:355 #, php-format msgid "FOAF for %s group" -msgstr "" +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 "" +msgstr "Membros" #: 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 "" +msgstr "(Ningún)" #: actions/showgroup.php:404 msgid "All members" -msgstr "" +msgstr "Todos os membros" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" -msgstr "" +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." @@ -3783,8 +3873,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 [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." @@ -3792,85 +3888,93 @@ 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 [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 "" +msgstr "Administradores" #: actions/showmessage.php:81 msgid "No such message." -msgstr "" +msgstr "Non se atopou esa mensaxe." #: actions/showmessage.php:98 msgid "Only the sender and recipient may read this message." -msgstr "" +msgstr "Esta mensaxe só a poden ler o destinatario e mais o remitente." #: actions/showmessage.php:108 #, php-format msgid "Message to %1$s on %2$s" -msgstr "" +msgstr "Mensaxe a %1$s en %2$s" #: actions/showmessage.php:113 #, php-format msgid "Message from %1$s on %2$s" -msgstr "" +msgstr "Mensaxe de %1$s en %2$s" #: actions/shownotice.php:90 msgid "Notice deleted." -msgstr "" +msgstr "Borrouse a nota." #: actions/showstream.php:73 #, php-format msgid " tagged %s" -msgstr "" +msgstr " etiquetouse %s" #: actions/showstream.php:79 #, php-format msgid "%1$s, page %2$d" -msgstr "" +msgstr "%1$s, páxina %2$d" #: actions/showstream.php:122 #, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "" +msgstr "Fonte de novas das notas para %1$s etiquetadas con %2$s (RSS 1.0)" #: actions/showstream.php:129 #, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "" +msgstr "Fonte de novas das notas para %s (RSS 1.0)" #: actions/showstream.php:136 #, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "" +msgstr "Fonte de novas das notas para %s (RSS 2.0)" #: actions/showstream.php:143 #, php-format msgid "Notice feed for %s (Atom)" -msgstr "" +msgstr "Fonte de novas das notas para %s (Atom)" #: actions/showstream.php:148 #, php-format msgid "FOAF for %s" -msgstr "" +msgstr "Amigo dun amigo para %s" #: actions/showstream.php:200 #, php-format msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." -msgstr "" +msgstr "Esta é a liña do tempo para %1$s pero %2$s aínda non publicou nada." #: 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 "" +"Viu algo interesante hoxe? Aínda non publicou ningunha nota, este sería un " +"bo momento para comezar :)" #: 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)." #: actions/showstream.php:243 #, php-format @@ -3880,6 +3984,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 [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 @@ -3888,191 +3997,199 @@ 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 [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 msgid "Repeat of %s" -msgstr "" +msgstr "Repeticións de %s" #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." -msgstr "" +msgstr "Non pode silenciar usuarios neste sitio." #: actions/silence.php:72 msgid "User is already silenced." -msgstr "" +msgstr "O usuario xa está silenciado." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" -msgstr "" +msgstr "Configuración básica para este sitio StatusNet" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." -msgstr "" +msgstr "O nome do sitio non pode quedar baleiro." #: actions/siteadminpanel.php:141 msgid "You must have a valid contact email address." -msgstr "" +msgstr "Ten que ter un enderezo de correo electrónico de contacto correcto." #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." -msgstr "" +msgstr "Non se coñece a lingua \"%s\"." #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "O límite mínimo de texto é 0 (ilimitado)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." -msgstr "" +msgstr "O tempo límite de repetición debe ser de 1 ou máis segundos." #: actions/siteadminpanel.php:221 msgid "General" -msgstr "" +msgstr "Xeral" #: actions/siteadminpanel.php:224 msgid "Site name" -msgstr "" +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 sitio de mensaxes de blogue curtas " +"da miña empresa\"" #: actions/siteadminpanel.php:229 msgid "Brought by" -msgstr "" +msgstr "Publicado por" #: actions/siteadminpanel.php:230 msgid "Text used for credits link in footer of each page" -msgstr "" +msgstr "Texto utilizado para a ligazón aos créditos ao pé de cada páxina" #: actions/siteadminpanel.php:234 msgid "Brought by URL" -msgstr "" +msgstr "URL do publicador" #: actions/siteadminpanel.php:235 msgid "URL used for credits link in footer of each page" -msgstr "" +msgstr "URL utilizado para a ligazón aos créditos ao pé de cada páxina" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "" +msgstr "Enderezo de correo electrónico de contacto para o seu sitio" #: actions/siteadminpanel.php:245 msgid "Local" -msgstr "" +msgstr "Local" #: actions/siteadminpanel.php:256 msgid "Default timezone" -msgstr "" +msgstr "Fuso horario por defecto" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "" +msgstr "Fuso horario por defecto para este sitio. Adoita poñerse o UTC." #: actions/siteadminpanel.php:262 msgid "Default language" -msgstr "" +msgstr "Lingua por defecto" #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" +"Lingua do sitio para cando a detección automática a partir do navegador non " +"sexa posible" #: actions/siteadminpanel.php:271 msgid "Limits" -msgstr "" +msgstr "Límites" #: actions/siteadminpanel.php:274 msgid "Text limit" -msgstr "" +msgstr "Límite de texto" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "" +msgstr "Número máximo de caracteres para as notas." #: actions/siteadminpanel.php:278 msgid "Dupe limit" -msgstr "" +msgstr "Tempo límite de repetición" #: actions/siteadminpanel.php:278 msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" +"Tempo (en segundos) que teñen que agardar os usuarios para publicar unha " +"nota de novo." #: actions/sitenoticeadminpanel.php:56 msgid "Site Notice" -msgstr "" +msgstr "Nota do sitio" #: actions/sitenoticeadminpanel.php:67 msgid "Edit site-wide message" -msgstr "" +msgstr "Editar a mensaxe global do sitio" #: actions/sitenoticeadminpanel.php:103 msgid "Unable to save site notice." -msgstr "" +msgstr "Non se puido gardar a nota do sitio." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "" +msgstr "O tamaño máximo da nota global do sitio é de 255 caracteres." #: actions/sitenoticeadminpanel.php:176 msgid "Site notice text" -msgstr "" +msgstr "Texto da nota do sitio" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" msgstr "" +"Texto da nota global do sitio (255 caracteres como máximo, pode conter HTML)" #: actions/sitenoticeadminpanel.php:198 msgid "Save site notice" -msgstr "" +msgstr "Gardar a nota do sitio" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 msgid "SMS settings" -msgstr "" +msgstr "Configuración dos SMS" #. 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 "" +msgstr "Pode recibir mensaxes SMS de %%site.name%% por correo electrónico." #. 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 "Os SMS non están dispoñibles." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Enderezo de mensaxería instantánea" +msgstr "Enderezo dos SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 msgid "Current confirmed SMS-enabled phone number." -msgstr "" +msgstr "Número de teléfono cos SMS activados confirmado actualmente." #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 msgid "Awaiting confirmation on this phone number." -msgstr "" +msgstr "Agardando pola confirmación do número de teléfono." #. TRANS: Field label for SMS address input in SMS settings form. #: actions/smssettings.php:142 msgid "Confirmation code" -msgstr "" +msgstr "Código de confirmación" #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 msgid "Enter the code you received on your phone." -msgstr "" +msgstr "Introduza o código que recibiu no teléfono." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Confirmar" @@ -4080,18 +4197,19 @@ msgstr "Confirmar" #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 msgid "SMS phone number" -msgstr "" +msgstr "Número de teléfono para os 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 "" +"Número de teléfono, sen signos de puntuación nin espazos en branco, co " +"código da zona" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferencias" +msgstr "Preferencias dos SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4099,32 +4217,33 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" +"Enviádeme notas por SMS. Comprendo que isto podería supoñerme uns custos " +"exorbitantes na factura da miña compañía." #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Gardáronse as preferencias." +msgstr "Gardáronse as preferencias dos SMS." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." -msgstr "" +msgstr "Non hai ningún número de teléfono." #. TRANS: Message given saving SMS phone number without having selected a carrier. #: actions/smssettings.php:344 msgid "No carrier selected." -msgstr "" +msgstr "Non se escolleu unha compañía." #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 msgid "That is already your phone number." -msgstr "" +msgstr "Ese xa é o seu número de teléfono." #. 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 "" +msgstr "Ese número de teléfono xa pertence a outro usuario." #. TRANS: Message given saving valid SMS phone number that is to be confirmed. #: actions/smssettings.php:384 @@ -4132,39 +4251,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 "" +"Enviouse un código de confirmación ao número de teléfono que engadiu. " +"Comprobe no seu teléfono o código e as instrucións para utilizalo." #. 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 "Ese número de confirmación é incorrecto." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Cancelouse a confirmación." +msgstr "Cancelouse a confirmación para os SMS." #. 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 "Ese número de teléfono non é seu." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Borrouse o enderezo." +msgstr "Borrouse o número de teléfono para os SMS." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" -msgstr "" +msgstr "Compañía" #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 msgid "Select a carrier" -msgstr "" +msgstr "Escolla unha compañía" #. TRANS: Form instructions for mobile carrier dropdown menu in SMS settings. #. TRANS: %s is an administrative contact's e-mail address. @@ -4174,123 +4293,129 @@ 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 "" +"Compañía de telecomunicacións coa que contratou o seu móbil. Se sabe " +"dalgunha compañía que permita SMS sobre correo electrónico pero non aparece " +"nesta lista, envíenos un correo electrónico para notificárnolo a %s." #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 msgid "No code entered" -msgstr "" +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 "" +msgstr "Instantáneas" #: actions/snapshotadminpanel.php:65 msgid "Manage snapshot configuration" -msgstr "" +msgstr "Xestione a configuración das instantáneas" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." -msgstr "" +msgstr "Valor de execución da instantánea incorrecto." #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." -msgstr "" +msgstr "A frecuencia das instantáneas debe ser un número." #: actions/snapshotadminpanel.php:144 msgid "Invalid snapshot report URL." -msgstr "" +msgstr "URL de envío das instantáneas incorrecto." #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" -msgstr "" +msgstr "Ao chou durante o acceso á rede" #: actions/snapshotadminpanel.php:201 msgid "In a scheduled job" -msgstr "" +msgstr "Nun proceso programado" #: actions/snapshotadminpanel.php:206 msgid "Data snapshots" -msgstr "" +msgstr "Instantáneas de datos" #: actions/snapshotadminpanel.php:208 msgid "When to send statistical data to status.net servers" -msgstr "" +msgstr "Cando enviar información estatística aos servidores status.net" #: actions/snapshotadminpanel.php:217 msgid "Frequency" -msgstr "" +msgstr "Frecuencia" #: actions/snapshotadminpanel.php:218 msgid "Snapshots will be sent once every N web hits" -msgstr "" +msgstr "As instantáneas enviaranse unha vez cada N accesos á rede" #: actions/snapshotadminpanel.php:226 msgid "Report URL" -msgstr "" +msgstr "URL de envío" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "As instantáneas enviaranse a este URL" #: actions/snapshotadminpanel.php:248 msgid "Save snapshot settings" -msgstr "" +msgstr "Gardar a configuración das instantáneas" #: actions/subedit.php:70 msgid "You are not subscribed to that profile." -msgstr "" +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 "" +msgstr "Non se puido gardar a subscrición." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." -msgstr "" +msgstr "Esta acción só permite solicitudes POST." #: actions/subscribe.php:107 msgid "No such profile." -msgstr "" +msgstr "Non existe ese perfil." #: actions/subscribe.php:117 msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "" +msgstr "Non se pode subscribir a un perfil remoto OMB 0.1 con esta acción." #: actions/subscribe.php:145 msgid "Subscribed" -msgstr "" +msgstr "Subscrito" #: actions/subscribers.php:50 #, php-format msgid "%s subscribers" -msgstr "" +msgstr "%s subscritores" #: actions/subscribers.php:52 #, php-format msgid "%1$s subscribers, page %2$d" -msgstr "" +msgstr "%1$s subscritores, páxina %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." -msgstr "" +msgstr "Estas son as persoas que seguen as súas notas." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "" +msgstr "Estas son as persoas que están seguindo as notas de %s." #: actions/subscribers.php:108 msgid "" "You have no subscribers. Try subscribing to people you know and they might " "return the favor" msgstr "" +"Non ten subscritores. Probe a subscribirse a xente que coñeza e pode que lle " +"devolvan o favor" #: actions/subscribers.php:110 #, php-format msgid "%s has no subscribers. Want to be the first?" -msgstr "" +msgstr "%s non ten subscritores. Quere ser o primeiro?" #: actions/subscribers.php:114 #, php-format @@ -4298,25 +4423,27 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"%s non ten subscritores. Por que non [rexistrar unha conta](%%%%action." +"register%%%%) e ser o primeiro?" #: actions/subscriptions.php:52 #, php-format msgid "%s subscriptions" -msgstr "" +msgstr "%s subscricións" #: actions/subscriptions.php:54 #, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "" +msgstr "%1$s subscricións, páxina %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." -msgstr "" +msgstr "Estas son as persoas cuxas notas segue." #: actions/subscriptions.php:69 #, php-format msgid "These are the people whose notices %s listens to." -msgstr "" +msgstr "Estas son as persoas cuxas notas segue %s." #: actions/subscriptions.php:126 #, php-format @@ -4327,188 +4454,196 @@ msgid "" "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can " "automatically subscribe to people you already follow there." msgstr "" +"Agora mesmo non está a seguir as notas de ninguén, probe a subscribirse a " +"xente que coñeza. Intente [buscar xente](%%action.peoplesearch%%), buscar " +"xente en grupos que lle interesen e nos nosos [usuarios destacados](%%action." +"featured%%). Se é [usuario do Twitter](%%action.twittersettings%%), pode " +"subscribirse automaticamente á xente que segue alí." #: actions/subscriptions.php:128 actions/subscriptions.php:132 #, php-format msgid "%s is not listening to anyone." -msgstr "" +msgstr "%s non está seguindo a ninguén." #: actions/subscriptions.php:208 msgid "Jabber" -msgstr "" +msgstr "Jabber" #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 msgid "SMS" -msgstr "" +msgstr "SMS" #: actions/tag.php:69 #, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "" +msgstr "Notas etiquetadas con %1$s, páxina %2$d" #: actions/tag.php:87 #, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "" +msgstr "Fonte de novas das notas para a etiqueta %s (RSS 1.0)" #: actions/tag.php:93 #, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "" +msgstr "Fonte de novas das notas para a etiqueta %s (RSS 2.0)" #: actions/tag.php:99 #, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "" +msgstr "Fonte de novas das notas para a etiqueta %s (Atom)" #: actions/tagother.php:39 msgid "No ID argument." -msgstr "" +msgstr "Sen argumento ID." #: actions/tagother.php:65 #, php-format msgid "Tag %s" -msgstr "" +msgstr "Etiqueta %s" #: actions/tagother.php:77 lib/userprofile.php:76 msgid "User profile" -msgstr "" +msgstr "Perfil do usuario" #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" -msgstr "" +msgstr "Fotografía" #: actions/tagother.php:141 msgid "Tag user" -msgstr "" +msgstr "Etiquetar ao usuario" #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " "separated" msgstr "" +"Etiquetas para este usuario (letras, números, -, ., e _), separadas por " +"comas ou espazos en branco" #: actions/tagother.php:193 msgid "" "You can only tag people you are subscribed to or who are subscribed to you." msgstr "" +"Só pode etiquetar a xente á que estea subscrito ou que estean subscritos a " +"vostede." #: actions/tagother.php:200 msgid "Could not save tags." -msgstr "" +msgstr "Non se puideron gardar as etiquetas." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." msgstr "" +"Utilice este formulario para engadir etiquetas aos seus subscritores ou " +"subscricións." #: actions/tagrss.php:35 msgid "No such tag." -msgstr "" - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" +msgstr "Esa etiqueta non existe." #: actions/unblock.php:59 msgid "You haven't blocked that user." -msgstr "" +msgstr "Non bloqueou a ese usuario." #: actions/unsandbox.php:72 msgid "User is not sandboxed." -msgstr "" +msgstr "O usuario non está illado." #: actions/unsilence.php:72 msgid "User is not silenced." -msgstr "" +msgstr "O usuario non está silenciado." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Non se solicitou ningún pase." +msgstr "à solicitude fáltalle o ID do perfil." #: actions/unsubscribe.php:98 msgid "Unsubscribed" -msgstr "" +msgstr "Cancelouse a subscrición" #: 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 "" +"A licenza \"%1$s\" das transmisións da persoa seguida non é compatible coa " +"licenza deste sitio: \"%2$s\"." #. TRANS: User admin panel title #: actions/useradminpanel.php:59 msgctxt "TITLE" msgid "User" -msgstr "" +msgstr "Usuario" #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." -msgstr "" +msgstr "Preferencias de usuario para este sitio StatusNet." #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." -msgstr "" +msgstr "Límite da biografía incorrecto. Debe ser numérico." #: actions/useradminpanel.php:155 msgid "Invalid welcome text. Max length is 255 characters." -msgstr "" +msgstr "Texto de benvida incorrecto. A extensión máxima é de 255 caracteres." #: actions/useradminpanel.php:165 #, php-format msgid "Invalid default subscripton: '%1$s' is not user." -msgstr "" +msgstr "Subscrición por defecto incorrecta. \"%1$s\" non é un usuario." #. TRANS: Link description in user account settings menu. #: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111 #: lib/personalgroupnav.php:109 msgid "Profile" -msgstr "" +msgstr "Perfil" #: actions/useradminpanel.php:222 msgid "Bio Limit" -msgstr "" +msgstr "Límite da biografía" #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." -msgstr "" +msgstr "Extensión máxima da biografía dun perfil en caracteres." #: actions/useradminpanel.php:231 msgid "New users" -msgstr "" +msgstr "Novos usuarios" #: actions/useradminpanel.php:235 msgid "New user welcome" -msgstr "" +msgstr "Nova benvida para os usuarios" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "Texto de benvida para os novos usuarios (255 caracteres como máximo)." #: actions/useradminpanel.php:241 msgid "Default subscription" -msgstr "" +msgstr "Subscrición por defecto" #: actions/useradminpanel.php:242 msgid "Automatically subscribe new users to this user." -msgstr "" +msgstr "Subscribir automaticamente aos novos usuarios a este usuario." #: actions/useradminpanel.php:251 msgid "Invitations" -msgstr "" +msgstr "Invitacións" #: actions/useradminpanel.php:256 msgid "Invitations enabled" -msgstr "" +msgstr "Activáronse as invitacións" #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." -msgstr "" +msgstr "Permitir ou non que os usuarios poidan invitar a novos usuarios." #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "" +msgstr "Autorizar a subscrición" #: actions/userauthorization.php:110 msgid "" @@ -4516,35 +4651,38 @@ msgid "" "user’s notices. If you didn’t just ask to subscribe to someone’s notices, " "click “Rejectâ€." msgstr "" +"Verifique estes detalles para certificar que quere subscribirse ás notas " +"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 "" +msgstr "Licenza" #: actions/userauthorization.php:217 msgid "Accept" -msgstr "" +msgstr "Aceptar" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 msgid "Subscribe to this user" -msgstr "" +msgstr "Subscribirse a este usuario" #: actions/userauthorization.php:219 msgid "Reject" -msgstr "" +msgstr "Rexeitar" #: actions/userauthorization.php:220 msgid "Reject this subscription" -msgstr "" +msgstr "Rexeitar esta subscrición" #: actions/userauthorization.php:232 msgid "No authorization request!" -msgstr "" +msgstr "Non se solicitou a autorización!" #: actions/userauthorization.php:254 msgid "Subscription authorized" -msgstr "" +msgstr "Autorizouse a subscrición" #: actions/userauthorization.php:256 msgid "" @@ -4552,10 +4690,13 @@ msgid "" "with the site’s instructions for details on how to authorize the " "subscription. Your subscription token is:" msgstr "" +"Autorizouse a subscrición, pero non se devolveu ningún URL. Bote unha ollada " +"ás instrucións do sitio para saber máis sobre como autorizar a subscrición. " +"O pase da súa subscrición é:" #: actions/userauthorization.php:266 msgid "Subscription rejected" -msgstr "" +msgstr "Rexeitouse a subscrición" #: actions/userauthorization.php:268 msgid "" @@ -4563,761 +4704,892 @@ msgid "" "with the site’s instructions for details on how to fully reject the " "subscription." msgstr "" +"Rexeitouse a subscrición, pero non se devolveu ningún URL. Bote unha ollada " +"ás instrucións do sitio para obter máis información sobre como rexeitar " +"completamente a subscrición." #: actions/userauthorization.php:303 #, php-format msgid "Listener URI ‘%s’ not found here." -msgstr "" +msgstr "Non se atopou o URI do seguidor, \"%s\", aquí." #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "O URI do seguidor, \"%s\", é longo de máis." #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "O URI do seguidor, \"%s\", é dun usuario local." #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "O URL do perfil, \"%s\", pertence a un usuario local." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "O URL do avatar, \"%s\", é incorrecto." #: actions/userauthorization.php:350 #, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "" +msgstr "Non se puido ler o URL do avatar, \"%s\"." #: actions/userauthorization.php:355 #, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "" +msgstr "O tipo de imaxe do URL do avatar, \"%s\", é incorrecto." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 msgid "Profile design" -msgstr "" +msgstr "Deseño do perfil" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" "Customize the way your profile looks with a background image and a colour " "palette of your choice." msgstr "" +"Personalice a aparencia do seu perfil cunha imaxe de fondo e unha paleta de " +"cores escollida por vostede." #: actions/userdesignsettings.php:282 msgid "Enjoy your hotdog!" -msgstr "" +msgstr "Bo proveito!" #. 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 "" +msgstr "%1$s grupos, páxina %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" -msgstr "" +msgstr "Buscar máis grupos" #: actions/usergroups.php:159 #, php-format msgid "%s is not a member of any group." -msgstr "" +msgstr "%s non pertence a ningún grupo." #: actions/usergroups.php:164 #, php-format msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." -msgstr "" +msgstr "Probe a [buscar grupos](%%action.groupsearch%%) e unirse a eles." #. 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 "" +msgstr "Actualizacións de %1$s en %2$s!" -#: actions/version.php:73 +#: actions/version.php:75 #, php-format msgid "StatusNet %s" -msgstr "" +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, " "Inc. and contributors." 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 "" +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 " "Software Foundation, either version 3 of the License, or (at your option) " "any later version. " msgstr "" +"StatusNet é software libre: pode redistribuílo e modificalo baixo os termos " +"da Licenza Pública Xeral Affero de GNU, tal e como a publicou a Free " +"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 " "FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License " "for more details. " msgstr "" +"Este programa distribúese coa esperanza de que resulte útil, pero SEN " +"NINGUNHA GARANTÃA, nin sequera as garantías implícitas de COMERCIALIZACIÓN " +"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 " "along with this program. If not, see %s." 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 "" +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:805 msgid "Version" -msgstr "" +msgstr "Versión" -#: actions/version.php:197 +#: actions/version.php:199 msgid "Author(s)" -msgstr "" +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 %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 "" +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 "" +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 "" +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 "" +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 "" +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 "" +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 "" +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 "" +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 "" +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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "" -"Houbo un erro na base de datos ao intentar inserir o usuario da aplicación " -"OAuth." +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:265 msgid "Problem saving notice. Too long." -msgstr "" +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:270 msgid "Problem saving notice. Unknown user." -msgstr "" +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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." 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:291 msgid "You are banned from posting notices on this site." -msgstr "" +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:358 classes/Notice.php:385 msgid "Problem saving notice." -msgstr "" +msgstr "Houbo un problema ao gardar a nota." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 msgid "Problem saving group inbox." -msgstr "" +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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" -msgstr "" +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:339 +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 "" +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 "" +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 "" +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 "" +msgstr "Non está subscrito!" -#: 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 "Non se puido borrar a subscrición a si mesmo." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -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 "Non se puido borrar o pase de subscrición 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 "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 "" +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 "" +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 "" +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 "" +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 "" +msgstr "Non se puido gardar a información do grupo local." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" -msgstr "" +msgstr "Cambie a configuración do seu perfil" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 msgid "Upload an avatar" -msgstr "" +msgstr "Cargue un avatar" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 msgid "Change your password" -msgstr "" +msgstr "Cambie o seu contrasinal" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:130 msgid "Change email handling" -msgstr "" +msgstr "Cambie a xestión do correo electrónico" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 msgid "Design your profile" -msgstr "" +msgstr "Deseñe o seu perfil" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 msgid "Other options" -msgstr "" +msgstr "Outras opcións" #. TRANS: Link description in user account settings menu. #: lib/accountsettingsaction.php:146 msgid "Other" -msgstr "" +msgstr "Outros" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, php-format msgid "%1$s - %2$s" -msgstr "" +msgstr "%1$s - %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" -msgstr "" +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:449 msgid "Primary site navigation" -msgstr "" +msgstr "Navegación principal do sitio" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 msgctxt "TOOLTIP" msgid "Personal profile and friends timeline" -msgstr "" +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:458 msgctxt "MENU" msgid "Personal" -msgstr "" +msgstr "Persoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "" +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:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "" +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:468 msgid "Connect" -msgstr "" +msgstr "Conectarse" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 msgctxt "TOOLTIP" msgid "Change site configuration" -msgstr "" +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:474 msgctxt "MENU" msgid "Admin" -msgstr "" +msgstr "Administrador" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "" +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 -msgctxt "MENU" -msgid "Invite" -msgstr "" - -#. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -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 -msgctxt "MENU" -msgid "Logout" -msgstr "" - -#. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -msgctxt "TOOLTIP" -msgid "Create an account" -msgstr "" - -#. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -msgctxt "MENU" -msgid "Register" -msgstr "" - -#. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -msgctxt "TOOLTIP" -msgid "Login to the site" -msgstr "" - #: lib/action.php:481 msgctxt "MENU" +msgid "Invite" +msgstr "Convidar" + +#. TRANS: Tooltip for main menu option "Logout" +#: lib/action.php:487 +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:490 +msgctxt "MENU" +msgid "Logout" +msgstr "Saír" + +#. TRANS: Tooltip for main menu option "Register" +#: lib/action.php:495 +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:498 +msgctxt "MENU" +msgid "Register" +msgstr "Rexistrarse" + +#. TRANS: Tooltip for main menu option "Login" +#: lib/action.php:501 +msgctxt "TOOLTIP" +msgid "Login to the site" +msgstr "Identificarse no sitio" + +#: lib/action.php:504 +msgctxt "MENU" msgid "Login" -msgstr "" +msgstr "Identificarse" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "" +msgstr "Axuda!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" -msgstr "" +msgstr "Axuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "" +msgstr "Buscar persoas ou palabras" -#: lib/action.php:493 +#: lib/action.php:516 msgctxt "MENU" msgid "Search" -msgstr "" +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:538 lib/adminpanelaction.php:400 msgid "Site notice" -msgstr "" +msgstr "Nota do sitio" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:605 msgid "Local views" -msgstr "" +msgstr "Vistas locais" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" -msgstr "" +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:778 msgid "Secondary site navigation" -msgstr "" +msgstr "Navegación secundaria do sitio" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" -msgstr "" +msgstr "Axuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" -msgstr "" +msgstr "Acerca de" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" -msgstr "" +msgstr "Preguntas máis frecuentes" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" -msgstr "" +msgstr "Condicións do servicio" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" -msgstr "" +msgstr "Protección de datos" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" -msgstr "" +msgstr "Código fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" -msgstr "" +msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" -msgstr "" +msgstr "Insignia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 msgid "StatusNet software license" -msgstr "" +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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" +"**%%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:846 #, php-format msgid "**%%site.name%%** is a microblogging service." -msgstr "" +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:850 #, 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 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:866 msgid "Site content license" -msgstr "" +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:873 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" +"Os contidos e datos son propiedade intelectual de %1$s. Quedan reservados " +"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:884 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:897 #, 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:1236 msgid "Pagination" -msgstr "" +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:1247 msgid "After" -msgstr "" +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:1257 msgid "Before" -msgstr "" +msgstr "Anteriores" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" +"Esperábase unha fonte de novas raíz pero recibiuse un documento XML completo." #: lib/activityutils.php:208 msgid "Can't handle remote content yet." -msgstr "" +msgstr "Aínda non é posible manexar contidos remotos." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "Aínda non se poden manexar contidos XML integrados." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." -msgstr "" +msgstr "Aínda non se poden manexar contidos 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 "Non pode realizar cambios neste sitio." #. 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 "" +msgstr "Non se permite realizar cambios nese panel." #. TRANS: Client error message. #: lib/adminpanelaction.php:229 msgid "showForm() not implemented." -msgstr "" +msgstr "showForm() non está integrado." #. TRANS: Client error message #: lib/adminpanelaction.php:259 msgid "saveSettings() not implemented." -msgstr "" +msgstr "saveSettings() non está integrado." #. 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 "" +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 "" +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 "" +msgstr "Sitio" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 +#: lib/adminpanelaction.php:358 msgid "Design configuration" -msgstr "" +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 "" +msgstr "Deseño" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "" +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 "" +msgstr "Usuario" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "" +msgstr "Configuración de acceso" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 +#: lib/adminpanelaction.php:382 msgid "Paths configuration" -msgstr "" +msgstr "Configuración das rutas" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "" +msgstr "Configuración das sesións" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "" +msgstr "Modificar a nota do sitio" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "" +msgstr "Configuración das instantáneas" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 " +"permisos de lectura." #. TRANS: Form legend. #: lib/applicationeditform.php:137 msgid "Edit application" -msgstr "" +msgstr "Modificar a aplicación" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "Icona para esta aplicación" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 #, php-format msgid "Describe your application in %d characters" -msgstr "" +msgstr "Describa a súa aplicación en %d caracteres" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 msgid "Describe your application" -msgstr "" +msgstr "Describa a súa aplicación" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 msgid "URL of the homepage of this application" -msgstr "" +msgstr "URL do sitio web desta aplicación" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 msgid "Source URL" -msgstr "" +msgstr "URL de orixe" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "Organización responsable desta aplicación" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 msgid "URL for the homepage of the organization" -msgstr "" +msgstr "URL do sitio web da organización" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "URL ao que ir tras a autenticación" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 msgid "Browser" -msgstr "" +msgstr "Navegador" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:295 msgid "Desktop" -msgstr "" +msgstr "Escritorio" #. TRANS: Form guide. #: lib/applicationeditform.php:297 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "Tipo de aplicación, de navegador ou de escritorio" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 msgid "Read-only" -msgstr "" +msgstr "Lectura" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:339 msgid "Read-write" -msgstr "" +msgstr "Lectura e escritura" #. TRANS: Form guide. #: lib/applicationeditform.php:341 msgid "Default access for this application: read-only, or read-write" msgstr "" +"Permisos por defecto para esta aplicación: lectura ou lectura e escritura" #. TRANS: Submit button title #: lib/applicationeditform.php:359 @@ -5327,307 +5599,346 @@ msgstr "Cancelar" #. TRANS: Application access type #: lib/applicationlist.php:136 msgid "read-write" -msgstr "" +msgstr "lectura e escritura" #. TRANS: Application access type #: lib/applicationlist.php:138 msgid "read-only" -msgstr "" +msgstr "lectura" #. 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 "" +msgstr "Aprobado o %1$s - permisos de \"%2$s\"." #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Borrar" +msgstr "Revogar" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 msgid "Attachments" -msgstr "" +msgstr "Ficheiros anexos" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 msgid "Author" -msgstr "" +msgstr "Autor" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 msgid "Provider" -msgstr "" +msgstr "Provedor" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" -msgstr "" +msgstr "Notas nas que se anexou este ficheiro" #: lib/attachmenttagcloudsection.php:48 msgid "Tags for this attachment" -msgstr "" +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 "" +msgstr "Non se puido cambiar o contrasinal" -#: lib/authenticationplugin.php:235 +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "" +msgstr "Non se permite cambiar o contrasinal" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" -msgstr "" +msgstr "Resultados da orde" #: lib/channel.php:229 lib/mailhandler.php:142 msgid "Command complete" -msgstr "" +msgstr "Completouse a orde" #: lib/channel.php:240 msgid "Command failed" -msgstr "" +msgstr "A orde fallou" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Non hai ningunha nota con esa id." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "O usuario non ten ningunha última nota." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "" +msgid "Could not find a user with nickname %s." +msgstr "Non se deu atopado ningún usuario co alcume %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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "" +msgid "Could not find a local user with nickname %s." +msgstr "Non se deu atopado ningún usuario local co alcume %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Esta orde aínda non está integrada." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" -msgstr "" +msgstr "Non ten sentido ningún facerse un aceno a un mesmo!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "" +msgid "Nudge sent to %s." +msgstr "Fíxoselle un aceno a %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"Subscricións: %1$s\n" +"Subscritores: %2$s\n" +"Notas: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." -msgstr "" +msgstr "Marcouse a nota como favorita." -#: 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: 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. -#: lib/command.php:339 -#, fuzzy, 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." +#: lib/command.php:360 +#, php-format +msgid "%1$s joined group %2$s." +msgstr "%1$s uniuse ao grupo %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s deixou o grupo %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" -msgstr "" +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:438 lib/mail.php:268 #, php-format msgid "Location: %s" -msgstr "" +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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" -msgstr "" +msgstr "Sitio web: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" -msgstr "" +msgstr "Acerca de: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " "same server." msgstr "" +"%s é un perfil remoto. Só pode enviarlle mensaxes persoais aos usuarios do " +"mesmo servidor." #. 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" +"A mensaxe é longa de máis, o límite de caracteres é de %1$d, e enviou %2$d." -#. 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 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 "" +msgstr "Houbo un erro ao enviar a mensaxe directa." #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "" +msgid "Notice from %s repeated." +msgstr "Repetiuse a nota de %s." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "" +msgstr "Houbo un erro ao repetir a nota." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "A nota é longa de máis. O límite son %1$d caracteres, e enviou %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "" +msgid "Reply to %s sent." +msgstr "Enviouse a resposta a %s." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." -msgstr "" +msgstr "Houbo un erro ao gardar a nota." -#: 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 "" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Introduza o nome do usuario ao que quere subscribirse." +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "" +msgid "Can't subscribe to OMB profiles by command." +msgstr "Non se pode subscribir aos perfís OMB cunha orde." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "Subscribiuse a %s." + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Introduza o nome do usuario ao que quer deixar de estar subscrito." + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 +#, php-format +msgid "Unsubscribed from %s." +msgstr "Cancelou a subscrición a %s." + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." -msgstr "" +msgstr "Aínda non se integrou esa orde." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "" +msgstr "Desactivar a notificación." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." -msgstr "" +msgstr "Non se pode desactivar a notificación." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." -msgstr "" +msgstr "Activar a notificación." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." -msgstr "" +msgstr "Non se pode activar a notificación." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "A orde de identificación está desactivada." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" +"Esta ligazón só se pode utilizar unha vez, e só nos próximos dous minutos: %" +"s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "" +msgid "Unsubscribed %s." +msgstr "Cancelou a subscrición a %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "" +msgstr "Non está subscrito a ninguén." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Vostede está subscrito a esta persoa:" msgstr[1] "Vostede está subscrito a estas persoas:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "" +msgstr "Non hai ninguén subscrito a vostede." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Esta persoa está subscrita a vostede:" msgstr[1] "Estas persoas están subscritas a vostede:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." -msgstr "" +msgstr "Non forma parte de ningún grupo." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Vostede pertence a este grupo:" msgstr[1] "Vostede pertence a estes grupos:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5668,103 +5979,143 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"Ordes:\n" +"on - activa as notificacións\n" +"off - desactiva as notificacións\n" +"help - amosa esta axuda\n" +"follow <alcume> - subscribirse ao usuario\n" +"groups - lista os grupos nos que está\n" +"subscriptions - lista a xente á que segue\n" +"subscribers - lista a xente que o segue\n" +"leave <alcume> - cancela a subscrición ao usuario\n" +"d <alcume> <texto> - mensaxe directa a un usuario\n" +"get <alcume> - obter a última nota do usuario\n" +"whois <alcume> - obtén a información do perfil do usuario\n" +"lose <alcume> - facer que o usuario deixe de seguilo\n" +"fav <alcume> - marcar como \"favorita\" a última nota do usuario\n" +"fav #<id da nota> - marcar como \"favorita\" a nota coa id indicada\n" +"repeat #<id da nota> - repetir a nota doa id indicada\n" +"repeat <alcume> - repetir a última nota do usuario\n" +"reply #<id da nota> - responder a unha nota coa id indicada\n" +"reply <alcume> - responder á última nota do usuario\n" +"join <grupo> - unirse ao grupo indicado\n" +"login - obter un enderezo para identificarse na interface web\n" +"drop <grupo> - deixar o grupo indicado\n" +"stats - obter as súas estatísticas\n" +"stop - idéntico a \"off\"\n" +"quit - idéntico a \"off\"\n" +"sub <alcume> - idéntico a \"follow\"\n" +"unsub <alcume> - idéntico a \"leave\"\n" +"last <alcume> - idéntico a \"get\"\n" +"on <alcume> - aínda non se integrou\n" +"off <alcume> - aínda non se integrou\n" +"nudge <alcume> - facerlle un aceno ao usuario indicado\n" +"invite <número de teléfono> - aínda non se integrou\n" +"track <palabra> - aínda non se integrou\n" +"untrack <palabra> - aínda non se integrou\n" +"track off - aínda non se integrou\n" +"untrack all - aínda non se integrou\n" +"tracks - aínda non se integrou\n" +"tracking - aínda non se integrou\n" #: lib/common.php:135 msgid "No configuration file found. " -msgstr "" +msgstr "Non se atopou ningún ficheiro de configuración. " #: lib/common.php:136 msgid "I looked for configuration files in the following places: " -msgstr "" +msgstr "Buscáronse ficheiros de configuración nos seguintes lugares: " #: lib/common.php:138 msgid "You may wish to run the installer to fix this." -msgstr "" +msgstr "Pode que queira executar o instalador para arranxalo." #: lib/common.php:139 msgid "Go to the installer." -msgstr "" +msgstr "Ir ao instalador." #: lib/connectsettingsaction.php:110 msgid "IM" -msgstr "" +msgstr "MI" #: lib/connectsettingsaction.php:111 msgid "Updates by instant messenger (IM)" -msgstr "" +msgstr "Actualizacións por mensaxería instantánea (MI)" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "" +msgstr "Actualizacións por SMS" #: lib/connectsettingsaction.php:120 msgid "Connections" -msgstr "" +msgstr "Conexións" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Aplicacións conectadas autorizadas" #: lib/dberroraction.php:60 msgid "Database error" -msgstr "" +msgstr "Houbo un erro na base de datos" #: lib/designsettings.php:105 msgid "Upload file" -msgstr "" +msgstr "Cargar un ficheiro" #: lib/designsettings.php:109 msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "" +"Pode cargar a súa imaxe de fondo persoal. O ficheiro non pode ocupar máis de " +"2MB." #: lib/designsettings.php:418 msgid "Design defaults restored." -msgstr "" +msgstr "Restableceuse o deseño por defecto." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" -msgstr "" +msgstr "Desmarcar esta nota como favorita" #: lib/favorform.php:114 lib/favorform.php:140 msgid "Favor this notice" -msgstr "" +msgstr "Marcar esta nota como favorita" #: lib/favorform.php:140 msgid "Favor" -msgstr "" +msgstr "Marcar como favorito" #: 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 "Amigo dun amigo" #: lib/feedlist.php:64 msgid "Export data" -msgstr "" +msgstr "Exportar os datos" #: lib/galleryaction.php:121 msgid "Filter tags" -msgstr "" +msgstr "Filtrar as etiquetas" #: lib/galleryaction.php:131 msgid "All" -msgstr "" +msgstr "Todas" #: lib/galleryaction.php:139 msgid "Select tag to filter" -msgstr "" +msgstr "Escolla unha etiqueta a filtrar" #: lib/galleryaction.php:140 msgid "Tag" @@ -5772,157 +6123,161 @@ msgstr "Etiqueta" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "" +msgstr "Escolla unha etiqueta para reducir a lista" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "Continuar" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "" +msgstr "Outorgarlle a este usuario o rol \"%s\"" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" -msgstr "" +msgstr "URL do sitio web persoal ou blogue do grupo ou tema" #: lib/groupeditform.php:168 msgid "Describe the group or topic" -msgstr "" +msgstr "Describa o grupo ou o tema" #: lib/groupeditform.php:170 #, php-format msgid "Describe the group or topic in %d characters" -msgstr "" +msgstr "Describa o grupo ou o tema en %d caracteres" #: lib/groupeditform.php:179 msgid "" "Location for the group, if any, like \"City, State (or Region), Country\"" msgstr "" +"Localidade do grupo, se a ten, como por exemplo \"Cidade, Provincia, " +"Comunidade, País\"" #: lib/groupeditform.php:187 #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" msgstr "" +"Alcumes adicionais para o grupo, separados por comas ou espazos, %d como " +"máximo" #: lib/groupnav.php:85 msgid "Group" -msgstr "" +msgstr "Grupo" #: lib/groupnav.php:101 msgid "Blocked" -msgstr "" +msgstr "Bloqueado" #: lib/groupnav.php:102 #, php-format msgid "%s blocked users" -msgstr "" +msgstr "%s usuarios bloqueados" #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" -msgstr "" +msgstr "Modificar as propiedades do grupo %s" #: lib/groupnav.php:113 msgid "Logo" -msgstr "" +msgstr "Logotipo" #: lib/groupnav.php:114 #, php-format msgid "Add or edit %s logo" -msgstr "" +msgstr "Engadir ou modificar o logotipo de %s" #: lib/groupnav.php:120 #, php-format msgid "Add or edit %s design" -msgstr "" +msgstr "Engadir ou modificar o deseño de %s" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" -msgstr "" +msgstr "Grupos con máis membros" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" -msgstr "" +msgstr "Grupos con máis notas" #: lib/grouptagcloudsection.php:56 #, php-format msgid "Tags in %s group's notices" -msgstr "" +msgstr "Etiquetas nas notas do grupo %s" #. TRANS: Client exception 406 #: lib/htmloutputter.php:104 msgid "This page is not available in a media type you accept" -msgstr "" +msgstr "Esta páxina non está dispoñible nun formato axeitado para vostede" #: lib/imagefile.php:72 msgid "Unsupported image file format." -msgstr "" +msgstr "Non se soporta o formato da imaxe." #: lib/imagefile.php:88 #, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "" +msgstr "Ese ficheiro é grande de máis. O tamaño máximo por ficheiro son %s." #: lib/imagefile.php:93 msgid "Partial upload." -msgstr "" +msgstr "Carga parcial." #: lib/imagefile.php:101 lib/mediafile.php:170 msgid "System error uploading file." -msgstr "" +msgstr "Houbo un erro no sistema ao cargar o ficheiro." #: lib/imagefile.php:109 msgid "Not an image or corrupt file." -msgstr "" +msgstr "O ficheiro está mal ou non é unha imaxe." #: lib/imagefile.php:122 msgid "Lost our file." -msgstr "" +msgstr "Perdeuse o noso ficheiro." #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" -msgstr "" +msgstr "Non se coñece o tipo de ficheiro" #: lib/imagefile.php:244 msgid "MB" -msgstr "" +msgstr "MB" #: lib/imagefile.php:246 msgid "kB" -msgstr "" +msgstr "kB" #: lib/jabber.php:387 #, php-format msgid "[%s]" -msgstr "" +msgstr "[%s]" #: lib/jabber.php:567 #, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "Non se coñece a fonte %d da caixa de entrada." #: lib/joinform.php:114 msgid "Join" -msgstr "" +msgstr "Unirse" #: lib/leaveform.php:114 msgid "Leave" -msgstr "" +msgstr "Deixar" #: lib/logingroupnav.php:80 msgid "Login with a username and password" -msgstr "" +msgstr "Identificarse cun nome de usuario e contrasinal" #: lib/logingroupnav.php:86 msgid "Sign up for a new account" -msgstr "" +msgstr "Rexistrar unha conta nova" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 msgid "Email address confirmation" -msgstr "" +msgstr "Confirmación do enderezo de correo electrónico" #. TRANS: Body for address confirmation email. #: lib/mail.php:177 @@ -5941,15 +6296,36 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" +"Ola, %s:\n" +"\n" +"Alguén acaba de introducir este enderezo de correo electrónico en %s.\n" +"\n" +"Se foi vostede, e quere confirmalo, utilice o seguinte URL:\n" +"\n" +"%s\n" +"\n" +"En caso contrario, simplemente ignore esta mensaxe.\n" +"\n" +"Grazas polo seu tempo, \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 "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" @@ -5963,21 +6339,32 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" +"Agora %1$s segue as súas notas en %2$s.\n" +"\n" +"%3$s\n" +"\n" +"%4$s%5$s%6$s\n" +"Atentamente,\n" +"%7$s.\n" +"\n" +"----\n" +"Modifique o seu enderezo de correo electrónico ou as súas preferencias de " +"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 "" +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 "" +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" @@ -5989,32 +6376,41 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" +"Ten un novo enderezo de correo electrónico para publicar en %1$s.\n" +"\n" +"Envíe un correo electrónico a %2$s para publicar mensaxes novas.\n" +"\n" +"Máis información en %3$s.\n" +"\n" +"Atentamente,\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 "" +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 "" +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 "" +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 " @@ -6029,15 +6425,26 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" +"%1$s (%2$s) pregúntase que estivo a facer vostede estes días, e convídao a " +"publicar algunha nova.\n" +"\n" +"Así que anímese, conte algo :)\n" +"\n" +"%3$s\n" +"\n" +"Non responda a esta mensaxe, non lle chegará ao remitente.\n" +"\n" +"Atentamente,\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 "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" @@ -6055,15 +6462,29 @@ msgid "" "With kind regards,\n" "%5$s\n" msgstr "" +"%1$s (%2$s) envioulle unha mensaxe privada:\n" +"\n" +"------------------------------------------------------\n" +"%3$s\n" +"------------------------------------------------------\n" +"\n" +"Pode responder á mensaxe aquí:\n" +"\n" +"%4$s\n" +"\n" +"Non responda a esta mensaxe, non lle chegará ao remitente.\n" +"\n" +"Atentamente,\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 "" +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" @@ -6083,23 +6504,43 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" +"%1$s (@%7$s) acaba de marcar a súa nota en %2$s coma unha das súas " +"favoritas.\n" +"\n" +"O URL da súa nota é:\n" +"\n" +"%3$s\n" +"\n" +"O texto da nota di:\n" +"\n" +"%4$s\n" +"\n" +"Pode ver a lista das notas favoritas de %1$s en:\n" +"\n" +"%5$s\n" +"\n" +"Atentamente,\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 "" +"Pode ler a conversa completa en:\n" +"\n" +"%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +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" @@ -6125,210 +6566,244 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) acaba de enviar unha nota á súa atención (unha resposta) en %2" +"$s.\n" +"\n" +"A nota está en:\n" +"\n" +"%3$s\n" +"\n" +"Di:\n" +"\n" +"%4$s\n" +"\n" +"%5$sPode responder en:\n" +"\n" +"%6$s\n" +"\n" +"A lista de todas as respostas está en:\n" +"\n" +"%7$s\n" +"\n" +"Atentamente,\n" +"%2$s\n" +"\n" +"P.S.: pode desactivar estas notificacións por correo electrónico en %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "" +msgstr "Só o usuario pode ler as súas caixas de entrada." #: 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 "" +"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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "" +msgstr "de" #: lib/mailhandler.php:37 msgid "Could not parse message." -msgstr "" +msgstr "Non se puido analizar a mensaxe." #: lib/mailhandler.php:42 msgid "Not a registered user." -msgstr "" +msgstr "Non está rexistrado." #: lib/mailhandler.php:46 msgid "Sorry, that is not your incoming email address." -msgstr "" +msgstr "Ese non é o seu enderezo de correo electrónico para recibir correos." #: lib/mailhandler.php:50 msgid "Sorry, no incoming email allowed." -msgstr "" +msgstr "Non se permite recibir correo electrónico." #: lib/mailhandler.php:228 #, php-format msgid "Unsupported message type: %s" -msgstr "" +msgstr "Non se soporta o tipo de mensaxe: %s" #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" +"Houbo un erro na base de datos ao gardar o seu ficheiro. Volva intentalo." #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." -msgstr "" +msgstr "O ficheiro subido supera a directiva upload_max_filesize no php.ini." #: lib/mediafile.php:147 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." msgstr "" +"O ficheiro subido supera a directiva MAX_FILE_SIZE especificada no " +"formulario HTML." #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "" +msgstr "O ficheiro só se subiu parcialmente." #: lib/mediafile.php:159 msgid "Missing a temporary folder." -msgstr "" +msgstr "Falta un cartafol temporal." #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "Non se puido escribir o ficheiro no disco." #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +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 "" +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 "" +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 "" +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 "" +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 "" +msgstr "Neste servidor non se soporta o tipo de ficheiro %s." #: lib/messageform.php:120 msgid "Send a direct notice" -msgstr "" +msgstr "Enviar unha nota directa" #: lib/messageform.php:146 msgid "To" -msgstr "" +msgstr "A" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" -msgstr "" +msgstr "Caracteres dispoñibles" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "" +msgstr "Enviar" #: lib/noticeform.php:160 msgid "Send a notice" -msgstr "" +msgstr "Enviar unha nota" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" -msgstr "" +msgstr "Que hai de novo, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" -msgstr "" +msgstr "Anexar" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" -msgstr "" +msgstr "Anexar un ficheiro" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "" - -#: lib/noticeform.php:215 -msgid "Do not share my location" -msgstr "" +msgstr "Publicar a miña localidade" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "Non publicar a miña localidade" + +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" msgstr "" +"Estase tardando máis do esperado en obter a súa xeolocalización, vólvao " +"intentar máis tarde" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 +#: lib/noticelist.php:436 msgid "N" -msgstr "" +msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" -msgstr "" +msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" -msgstr "" +msgstr "L" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" -msgstr "" +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 "" +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 "en" -#: lib/noticelist.php:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" -msgstr "" +msgstr "no contexto" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "" - -#: lib/noticelist.php:629 -msgid "Reply to this notice" -msgstr "" +msgstr "Repetida por" #: lib/noticelist.php:630 -msgid "Reply" -msgstr "" +msgid "Reply to this notice" +msgstr "Responder a esta nota" -#: lib/noticelist.php:674 +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "Responder" + +#: lib/noticelist.php:675 msgid "Notice repeated" -msgstr "" +msgstr "Repetiuse a nota" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "" +msgstr "Facerlle un aceno a este usuario" #: lib/nudgeform.php:128 msgid "Nudge" -msgstr "" +msgstr "Facer un aceno" #: lib/nudgeform.php:128 msgid "Send a nudge to this user" -msgstr "" +msgstr "Facerlle un aceno a este usuario" #: lib/oauthstore.php:283 msgid "Error inserting new profile" -msgstr "" +msgstr "Houbo un erro ao inserir o novo perfil" #: lib/oauthstore.php:291 msgid "Error inserting avatar" -msgstr "" +msgstr "Houbo un erro ao inserir o avatar" #: lib/oauthstore.php:306 msgid "Error updating remote profile" @@ -6336,117 +6811,117 @@ msgstr "Houbo un erro ao actualizar o perfil remoto" #: lib/oauthstore.php:311 msgid "Error inserting remote profile" -msgstr "" +msgstr "Houbo un erro ao inserir o perfil remoto" #: lib/oauthstore.php:345 msgid "Duplicate notice" -msgstr "" +msgstr "Nota duplicada" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." -msgstr "" +msgstr "Non se puido inserir unha subscrición nova." #: lib/personalgroupnav.php:99 msgid "Personal" -msgstr "" +msgstr "Persoal" #: lib/personalgroupnav.php:104 msgid "Replies" -msgstr "" +msgstr "Respostas" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "" +msgstr "Favoritas" #: lib/personalgroupnav.php:125 msgid "Inbox" -msgstr "" +msgstr "Caixa de entrada" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" -msgstr "" +msgstr "As mensaxes recibidas" #: lib/personalgroupnav.php:130 msgid "Outbox" -msgstr "" +msgstr "Caixa de saída" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "" +msgstr "As mensaxes enviadas" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" -msgstr "" +msgstr "Etiquetas nas notas de %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" -msgstr "" +msgstr "Descoñecida" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" -msgstr "" +msgstr "Subscricións" #: lib/profileaction.php:126 msgid "All subscriptions" -msgstr "" +msgstr "Todas as subscricións" #: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90 msgid "Subscribers" -msgstr "" +msgstr "Subscritores" #: lib/profileaction.php:161 msgid "All subscribers" -msgstr "" +msgstr "Todos os subscritores" #: lib/profileaction.php:191 msgid "User ID" -msgstr "" +msgstr "ID do usuario" #: lib/profileaction.php:196 msgid "Member since" -msgstr "" +msgstr "Membro dende" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "" +msgstr "Media diaria" #: lib/profileaction.php:264 msgid "All groups" -msgstr "" +msgstr "Todos os grupos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." -msgstr "" +msgstr "Aínda non se implantou o método." #: lib/publicgroupnav.php:78 msgid "Public" -msgstr "" +msgstr "Públicas" #: lib/publicgroupnav.php:82 msgid "User groups" -msgstr "" +msgstr "Grupos do usuario" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" -msgstr "" +msgstr "Últimas etiquetas" #: lib/publicgroupnav.php:88 msgid "Featured" -msgstr "" +msgstr "Salientadas" #: lib/publicgroupnav.php:92 msgid "Popular" -msgstr "" +msgstr "Populares" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "" +msgstr "Sen argumentos \"return-to\"." #: lib/repeatform.php:107 msgid "Repeat this notice?" -msgstr "" +msgstr "Quere repetir esta nota?" #: lib/repeatform.php:132 msgid "Yes" @@ -6454,255 +6929,297 @@ msgstr "Si" #: lib/repeatform.php:132 msgid "Repeat this notice" -msgstr "" +msgstr "Repetir esta nota" #: lib/revokeroleform.php:91 #, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "" +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 "" +msgstr "Non se estableceu ningún usuario único para o modo de usuario único." #: lib/sandboxform.php:67 msgid "Sandbox" -msgstr "" +msgstr "Illar" #: lib/sandboxform.php:78 msgid "Sandbox this user" -msgstr "" +msgstr "Illar a este usuario" #: lib/searchaction.php:120 msgid "Search site" -msgstr "" +msgstr "Buscar no sitio" #: lib/searchaction.php:126 msgid "Keyword(s)" -msgstr "" +msgstr "Termos de busca" #: lib/searchaction.php:127 msgid "Search" -msgstr "" +msgstr "Buscar" #: lib/searchaction.php:162 msgid "Search help" -msgstr "" +msgstr "Buscar na axuda" #: lib/searchgroupnav.php:80 msgid "People" -msgstr "" +msgstr "Xente" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "" +msgstr "Atopar xente neste sitio" #: lib/searchgroupnav.php:83 msgid "Find content of notices" -msgstr "" +msgstr "Buscar nos contidos das notas" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "" +msgstr "Buscar grupos neste sitio" #: lib/section.php:89 msgid "Untitled section" -msgstr "" +msgstr "Sección sen título" #: lib/section.php:106 msgid "More..." -msgstr "" +msgstr "Máis..." #: lib/silenceform.php:67 msgid "Silence" -msgstr "" +msgstr "Silenciar" #: lib/silenceform.php:78 msgid "Silence this user" -msgstr "" +msgstr "Silenciar a este usuario" #: lib/subgroupnav.php:83 #, php-format msgid "People %s subscribes to" -msgstr "" +msgstr "Persoas ás que está subscrito %s" #: lib/subgroupnav.php:91 #, php-format msgid "People subscribed to %s" -msgstr "" +msgstr "Persoas subscritas a %s" #: lib/subgroupnav.php:99 #, php-format msgid "Groups %s is a member of" -msgstr "" +msgstr "Grupos aos que pertence %s" #: lib/subgroupnav.php:105 msgid "Invite" -msgstr "" +msgstr "Convidar" #: lib/subgroupnav.php:106 #, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "" +msgstr "Convide a amigos e compañeiros a unírselle en %s" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "" +msgstr "Nube de etiquetas que as persoas se puxeron a si mesmas" #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "" +msgstr "Nube de etiquetas que lle puxo a outras persoas" #: lib/tagcloudsection.php:56 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Non se puido gardar o tema visual." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "O tema visual contén nomes de extensión inseguros." + +#: lib/themeuploader.php:241 +#, 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:259 +msgid "Error opening theme archive." +msgstr "Houbo un erro ao abrir o arquivo do tema visual." #: lib/topposterssection.php:74 msgid "Top posters" -msgstr "" +msgstr "Os que máis publican" #: lib/unsandboxform.php:69 msgid "Unsandbox" -msgstr "" +msgstr "Deixar de illar" #: lib/unsandboxform.php:80 msgid "Unsandbox this user" -msgstr "" +msgstr "Deixar de illar a este usuario" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "Dar voz" #: lib/unsilenceform.php:78 msgid "Unsilence this user" -msgstr "" +msgstr "Darlle voz a este usuario" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" -msgstr "" +msgstr "Cancelar a subscrición a este usuario" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" -msgstr "" - -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "" +msgstr "Cancelar a subscrición" #: lib/userprofile.php:117 msgid "Edit Avatar" -msgstr "" +msgstr "Modificar o avatar" #: lib/userprofile.php:234 lib/userprofile.php:248 msgid "User actions" -msgstr "" +msgstr "Accións do usuario" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "Procedendo a borrar o usuario..." #: lib/userprofile.php:263 msgid "Edit profile settings" -msgstr "" +msgstr "Modificar a configuración do perfil" #: lib/userprofile.php:264 msgid "Edit" -msgstr "" +msgstr "Modificar" #: lib/userprofile.php:287 msgid "Send a direct message to this user" -msgstr "" +msgstr "Enviarlle unha mensaxe directa a este usuario" #: lib/userprofile.php:288 msgid "Message" -msgstr "" +msgstr "Mensaxe" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +msgstr "Moderar" #: lib/userprofile.php:364 msgid "User role" -msgstr "" +msgstr "Rol do usuario" #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" -msgstr "" +msgstr "Administrador" #: lib/userprofile.php:367 msgctxt "role" msgid "Moderator" -msgstr "" +msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" -msgstr "" +msgstr "hai uns segundos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" -msgstr "" +msgstr "hai como un minuto" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, php-format msgid "about %d minutes ago" -msgstr "" +msgstr "hai como %d minutos" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1064 +#: lib/util.php:1112 msgid "about an hour ago" -msgstr "" +msgstr "hai como unha hora" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, php-format msgid "about %d hours ago" -msgstr "" +msgstr "hai como %d horas" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1071 +#: lib/util.php:1119 msgid "about a day ago" -msgstr "" +msgstr "hai como un día" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, php-format msgid "about %d days ago" -msgstr "" +msgstr "hai como %d días" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1078 +#: lib/util.php:1126 msgid "about a month ago" -msgstr "" +msgstr "hai como un mes" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, php-format msgid "about %d months ago" -msgstr "" +msgstr "hai como %d meses" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1085 +#: lib/util.php:1133 msgid "about a year ago" -msgstr "" +msgstr "hai como un ano" #: lib/webcolor.php:82 #, php-format msgid "%s is not a valid color!" -msgstr "" +msgstr "%s non é unha cor correcta!" #: 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 "" +msgstr "%s non é unha cor correcta! Use 3 ou 6 caracteres hexadecimais." diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po index 05d4087815..598dd033a7 100644 --- a/locale/he/LC_MESSAGES/statusnet.po +++ b/locale/he/LC_MESSAGES/statusnet.po @@ -7,48 +7,27 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:56+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:22+0000\n" "Language-Team: Hebrew\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: he\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy -msgid "Access" -msgstr "קבל" - #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -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 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 -#, fuzzy -msgctxt "LABEL" -msgid "Private" -msgstr "פרטיות" - #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." @@ -66,101 +45,70 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "×ין משתמש ×›×–×”." - -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "הגדרות" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Save" -msgstr "שמור" +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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -msgid "%1$s and friends, page %2$d" -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:114 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 -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,85 +116,48 @@ 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 -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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "עידכון המשתמש נכשל." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -257,14 +168,9 @@ msgstr "עידכון המשתמש נכשל." msgid "User has no profile." msgstr "למשתמש ×ין פרופיל." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "שמירת הפרופיל נכשלה." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -284,16 +190,9 @@ msgstr "" msgid "Unable to save your design settings." msgstr "" -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -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." @@ -323,194 +222,119 @@ msgstr "" msgid "All the direct messages sent to %s" msgstr "" -#: actions/apidirectmessagenew.php:126 -msgid "No message text!" -msgstr "" - -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format -msgid "That's too long. Max message size is %d chars." -msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות." - -#: actions/apidirectmessagenew.php:146 -msgid "Recipient user not found." -msgstr "" - -#: actions/apidirectmessagenew.php:150 +#: 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 -#, fuzzy -msgid "This status is already a favorite." -msgstr "זהו כבר זיהוי ×”-Jabber שלך." - -#: actions/apifavoritecreate.php:130 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 -msgid "Could not delete favorite." -msgstr "" - #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" - -#: actions/apifriendshipscreate.php:118 -#, php-format -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" +msgid "Could not follow user: profile not found." +msgstr "שמירת הפרופיל נכשלה." #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "עידכון המשתמש נכשל." - -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." msgstr "" -#: actions/apifriendshipsshow.php:134 -#, fuzzy -msgid "Could not determine source user." -msgstr "עידכון המשתמש נכשל." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "" -#: actions/apifriendshipsshow.php:142 -#, fuzzy -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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "הביוגרפיה ×רוכה מידי (לכל היותר 140 ×ותיות)" +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' ××™× ×” חוקית" +msgstr "גודל ×œ× ×—×•×§×™." -#: actions/apigroupcreate.php:275 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 -#, 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 -#, fuzzy +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." -msgstr "כבר נכנסת למערכת!" +msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format -msgid "Could not join user %1$s to group %2$s." -msgstr "נכשלה ההפניה לשרת: %s" - -#: actions/apigroupleave.php:114 -#, fuzzy -msgid "You are not a member of this group." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: actions/apigroupleave.php:124 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 -#, 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 -#, 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/apigrouplist.php:98 #, php-format -msgid "%s groups" +msgid "%s's groups" msgstr "" -#: actions/apigrouplistall.php:95 +#. 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 "" + +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "" @@ -519,22 +343,17 @@ msgstr "" msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "גודל ×œ× ×—×•×§×™." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -542,21 +361,6 @@ msgstr "גודל ×œ× ×—×•×§×™." msgid "There was a problem with your session token. Try again, please." msgstr "" -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "×©× ×”×ž×©×ª×ž×© ×ו הסיסמה ×œ× ×—×•×§×™×™×" - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "שגי××” ביצירת ×©× ×”×ž×©×ª×ž×©." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "שגי×ת מסד × ×ª×•× ×™× ×‘×”×›× ×¡×ª התגובה: %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -597,14 +401,8 @@ msgid "" "give access to your %4$s account to third parties you trust." msgstr "" -#. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 -#, 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 +410,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 +427,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 "" @@ -642,100 +440,47 @@ msgstr "" msgid "No such notice." msgstr "×ין הודעה כזו." -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון" - -#: actions/apistatusesretweet.php:91 -#, fuzzy -msgid "Already repeated that notice." -msgstr "כבר נכנסת למערכת!" - -#: actions/apistatusesshow.php:138 -#, fuzzy -msgid "Status deleted." -msgstr "התמונה עודכנה." - -#: actions/apistatusesshow.php:144 +#: actions/apistatusesshow.php:145 msgid "No status with that ID found." msgstr "" -#: actions/apistatusesupdate.php:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 -#, fuzzy -msgid "Not found." -msgstr "×œ× × ×ž×¦×" - -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy -msgid "Unsupported format." -msgstr "פורמט התמונה ×ינו נתמך." - -#: actions/apitimelinefavorites.php:109 -#, 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 -#, 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:107 actions/publicrss.php:103 -#, php-format -msgid "%s public timeline" -msgstr "" - -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "תגובת עבור %s" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, 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 "" -#: 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/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 @@ -758,23 +503,10 @@ msgstr "גודל ×œ× ×—×•×§×™." msgid "Avatar" msgstr "תמונה" -#: actions/avatarsettings.php:78 -#, php-format -msgid "You can upload your personal avatar. The maximum file size is %s." -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 "למשתמש ×ין פרופיל." - #: 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 @@ -787,24 +519,14 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 -#, fuzzy +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" -msgstr "מחק" +msgstr "" #: actions/avatarsettings.php:166 actions/grouplogo.php:236 msgid "Upload" msgstr "ההעלה" -#: actions/avatarsettings.php:231 actions/grouplogo.php:289 -msgid "Crop" -msgstr "" - -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "העל××” חלקית." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "" @@ -821,22 +543,11 @@ msgstr "התמונה עודכנה." msgid "Failed updating avatar." msgstr "עדכון התמונה נכשל." -#: actions/avatarsettings.php:397 -#, fuzzy -msgid "Avatar deleted." -msgstr "התמונה עודכנה." - #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "כבר נכנסת למערכת!" +msgstr "זיהוי ×”-Jabber כבר שייך למשתמש ×חר." -#: actions/block.php:105 actions/block.php:128 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,44 +559,24 @@ 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 -#, fuzzy -msgid "Do not block this user" -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/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 -#, 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 "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -895,46 +586,33 @@ msgstr "" #: 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 -#, fuzzy +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 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 "×ין משתמש ×›×–×”." - -#. TRANS: Title for mini-posting window loaded from bookmarklet. -#: actions/bookmarklet.php:51 -#, fuzzy, php-format -msgid "Post to %s" -msgstr "תגובת עבור %s" - #: actions/confirmaddress.php:75 msgid "No confirmation code." msgstr "×ין קוד ×ישור." @@ -949,9 +627,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 @@ -972,60 +650,30 @@ msgstr "כתובת זו כבר ×ושרה." msgid "Couldn't update user." msgstr "עידכון המשתמש נכשל." -#. 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 "" - #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "×שר כתובת" +msgstr "×שר" #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." msgstr "הכתובת \"%s\" ×ושרה עבור חשבונך." -#: actions/conversation.php:99 -#, fuzzy -msgid "Conversation" -msgstr "מיקו×" - #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" msgstr "הודעות" -#: actions/deleteapplication.php:63 -#, fuzzy -msgid "You must be logged in to delete an application." -msgstr "עידכון המשתמש נכשל." - #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "להודעה ×ין פרופיל" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" +msgstr "קוד ×”×ישור ×œ× × ×ž×¦×." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." msgstr "" -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "×ין הודעה כזו." - #: actions/deleteapplication.php:149 msgid "" "Are you sure you want to delete this application? This will clear all data " @@ -1033,25 +681,13 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "×ין הודעה כזו." - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -msgstr "ת×ר ×ת עצמך ו×ת נוש××™ העניין שלך ב-140 ×ותיות" - #. 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "×œ× ×ž×—×•×‘×¨." @@ -1066,39 +702,19 @@ msgid "" "be undone." msgstr "" -#: actions/deletenotice.php:109 actions/deletenotice.php:141 -msgid "Delete notice" -msgstr "" - #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" msgstr "" #. TRANS: Submit button title for 'No' when deleting a notice. #: actions/deletenotice.php:151 -#, fuzzy msgid "Do not delete this notice" -msgstr "×ין הודעה כזו." - -#. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 -msgid "Delete this notice" msgstr "" -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "עידכון המשתמש נכשל." - -#: actions/deleteuser.php:74 -#, fuzzy -msgid "You can only delete local users." -msgstr "ניתן להשתמש במנוי המקומי!" - -#: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy -msgid "Delete user" -msgstr "מחק" +#. TRANS: Submit button title for 'Yes' when deleting a notice. +#: actions/deletenotice.php:158 lib/noticelist.php:657 +msgid "Delete this notice" +msgstr "" #: actions/deleteuser.php:136 msgid "" @@ -1106,12 +722,6 @@ msgid "" "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 "×ין משתמש ×›×–×”." - #. 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 @@ -1123,112 +733,80 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, 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 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "שנה סיסמה" - -#: actions/designadminpanel.php:381 -#, fuzzy -msgid "Site logo" -msgstr "הודעה חדשה" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" msgstr "שנה" -#: actions/designadminpanel.php:405 -#, 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 +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 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -#, fuzzy -msgid "Change colours" -msgstr "שנה סיסמה" - -#: actions/designadminpanel.php:513 lib/designsettings.php:191 -#, fuzzy -msgid "Content" -msgstr "התחבר" - -#: actions/designadminpanel.php:526 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 -msgid "Links" -msgstr "היכנס" +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: 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,84 +816,31 @@ msgstr "" msgid "Save" msgstr "שמור" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "" -#: actions/disfavor.php:94 -#, fuzzy -msgid "Add to favorites" -msgstr "מועדפי×" - #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "×ין מסמך ×›×–×”." +msgstr "×ין הודעה כזו." #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "להודעה ×ין פרופיל" - -#: actions/editapplication.php:66 -msgid "You must be logged in to edit an application." msgstr "" -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." -msgstr "×ין הודעה כזו." - #: actions/editapplication.php:161 msgid "Use this form to edit your application." msgstr "" -#: actions/editapplication.php:177 actions/newapplication.php:159 -msgid "Name is required." -msgstr "" - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "×”×©× ×”×ž×œ× ×רוך מידי (מותרות 255 ×ותיות בלבד)" - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "כינוי ×–×” כבר תפוס. נסה כינוי ×חר." - #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "הרשמות" +msgstr "ההרשמה נדחתה" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "ל×תר הבית יש כתובת ×œ× ×—×•×§×™×ª." - -#: actions/editapplication.php:203 actions/newapplication.php:188 -msgid "Organization is required." -msgstr "" - -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "×©× ×”×ž×™×§×•× ×רוך מידי (מותר עד 255 ×ותיות)." - -#: actions/editapplication.php:209 actions/newapplication.php:194 -msgid "Organization homepage is required." -msgstr "" - #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." msgstr "" @@ -1324,20 +849,11 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "עידכון המשתמש נכשל." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" msgstr "" -#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -msgid "You must be logged in to create a group." -msgstr "" - #: 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." @@ -1348,35 +864,14 @@ msgid "Use this form to edit the group." msgstr "" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, 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' ××™× ×” חוקית" - -#: actions/editgroup.php:258 -#, fuzzy -msgid "Could not update group." -msgstr "עידכון המשתמש נכשל." - -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." -msgstr "שמירת מידע התמונה נכשל" - -#: actions/editgroup.php:280 -#, fuzzy -msgid "Options saved." -msgstr "ההגדרות נשמרו." - -#. TRANS: Title for e-mail settings. -#: 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. @@ -1385,18 +880,6 @@ msgstr "הגדרות הפרופיל" msgid "Manage how you get email from %%site.name%%." msgstr "" -#. 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 "כתובת ×ž×¡×¨×™× ×ž×™×“×™×™×" - -#. TRANS: Form note in e-mail settings form. -#: actions/emailsettings.php:112 -msgid "Current confirmed email address." -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. #. TRANS: Button label to remove a confirmed IM address. @@ -1405,27 +888,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 "הסר" - -#: actions/emailsettings.php:122 -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. -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "בטל" +msgstr "שיחזור" #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 @@ -1437,10 +902,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. @@ -1463,20 +927,8 @@ 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 "חדש" - -#. TRANS: Form legend for e-mail preferences form. -#: actions/emailsettings.php:174 -#, fuzzy -msgid "Email preferences" -msgstr "העדפות" - -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:180 -msgid "Send me notices of new subscriptions through email." msgstr "" #. TRANS: Checkbox label in e-mail preferences form. @@ -1509,38 +961,6 @@ msgstr "" msgid "Publish a MicroID for my email address." msgstr "" -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "העדפות נשמרו." - -#. TRANS: Message given saving e-mail address without having provided one. -#: actions/emailsettings.php:353 -msgid "No email address." -msgstr "" - -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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/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 -msgid "That is already your email address." -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 "" - #. 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. @@ -1549,13 +969,6 @@ msgstr "" msgid "Couldn't insert confirmation code." msgstr "הכנסת קוד ×”×ישור נכשלה." -#. 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 "" - #. 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. @@ -1564,51 +977,20 @@ msgstr "" msgid "No pending confirmation to cancel." 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 "זוהי כתובת ×ž×¡×¨×™× ×ž×™×“×™×™× ×©×’×•×™×”." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -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 "" -#. 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 "" - -#. 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 "" - -#. 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 "" - #: actions/favor.php:79 msgid "This notice is already a favorite!" msgstr "" @@ -1617,16 +999,10 @@ msgstr "" msgid "Disfavor favorite" msgstr "" -#: actions/favorited.php:65 lib/popularnoticesection.php:91 -#: lib/publicgroupnav.php:93 -#, fuzzy -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." @@ -1656,13 +1032,8 @@ 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" - -#: actions/featured.php:69 lib/featureduserssection.php:87 -#: lib/publicgroupnav.php:89 -msgid "Featured users" msgstr "" #: actions/featured.php:71 @@ -1676,33 +1047,20 @@ msgid "A selection of some great users on %s" msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "הודעה חדשה" +msgstr "×ין הודעה כזו." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "הודעה חדשה" - -#: actions/file.php:42 -#, fuzzy -msgid "No attachments." -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!" @@ -1713,64 +1071,27 @@ msgid "That user has blocked you from subscribing." msgstr "" #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "×œ× ×ž×•×¨×©×”." +msgstr "ההרשמה ×ושרה" #: actions/finishremotesubscribe.php:113 -#, fuzzy 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" - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "שגי××” בעדכון פרופיל מרוחק" - -#: actions/getfile.php:79 -#, fuzzy -msgid "No such file." -msgstr "×ין הודעה כזו." +msgstr "" #: actions/getfile.php:83 -#, fuzzy 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 "" #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: actions/grantrole.php:82 -#, fuzzy -msgid "User already has this role." -msgstr "למשתמש ×ין פרופיל." - -#: actions/groupblock.php:71 actions/groupunblock.php:71 -#: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 -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 -msgid "No profile with that ID." msgstr "" #: actions/groupblock.php:81 actions/groupunblock.php:81 @@ -1782,20 +1103,9 @@ msgstr "" msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -#, fuzzy -msgid "User is already blocked from group." -msgstr "למשתמש ×ין פרופיל." - -#: actions/groupblock.php:100 -#, fuzzy -msgid "User is not a member of group." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "×ין משתמש ×›×–×”." +msgstr "" #: actions/groupblock.php:160 #, php-format @@ -1807,80 +1117,36 @@ 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." msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "×ין זיהוי." +msgstr "×ין זיהוי Jabber ×›×–×”." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." msgstr "" -#: actions/groupdesignsettings.php:144 -#, fuzzy -msgid "Group design" -msgstr "קבוצות" - #: actions/groupdesignsettings.php:155 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." 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 "עידכון המשתמש נכשל." - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy -msgid "Design preferences saved." -msgstr "העדפות נשמרו." - -#: actions/grouplogo.php:142 actions/grouplogo.php:195 -msgid "Group logo" -msgstr "" - -#: actions/grouplogo.php:153 -#, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "" - #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." msgstr "" -#: actions/grouplogo.php:399 -#, fuzzy -msgid "Logo updated." -msgstr "התמונה עודכנה." - -#: actions/grouplogo.php:401 -#, fuzzy -msgid "Failed updating logo." -msgstr "עדכון התמונה נכשל." - -#: actions/groupmembers.php:100 lib/groupnav.php:92 -#, php-format -msgid "%s group members" -msgstr "" - #: actions/groupmembers.php:103 #, php-format msgid "%1$s group members, page %2$d" @@ -1910,20 +1176,11 @@ msgstr "" 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:62 lib/atomusernoticefeed.php:68 -#, 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 @@ -1946,29 +1203,13 @@ msgid "" msgstr "" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "צור חשבון חדש" - -#: actions/groupsearch.php:52 -#, 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 "" -"חפש ×× ×©×™× ×‘-%%site.name%% לפי ש×, מיקו×, ×ו תחומי עניין. הפרד בעזרת ×¨×•×•×—×™× " -"בין הביטויי×; ×¢×œ×™×”× ×œ×”×™×•×ª בני לפחות 3 ×ותיות." - -#: actions/groupsearch.php:58 -#, fuzzy -msgid "Group search" -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 @@ -1989,20 +1230,13 @@ msgid "Only an admin can unblock group members." msgstr "" #: actions/groupunblock.php:95 -#, fuzzy msgid "User is not blocked from group." -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 "הגדרות ×ž×¡×¨×™× ×ž×™×“×™×™×" +msgstr "הגדרות הפרופיל" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2018,16 +1252,8 @@ 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 "עמוד ×–×” ×ינו זמין בסוג מדיה ש×תה יכול לקבל" - -#. 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." @@ -2057,9 +1283,8 @@ 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 @@ -2071,16 +1296,6 @@ msgstr "שלח לי הודעות דרך Jabber/GTalk." msgid "Post a notice when my Jabber/GTalk status changes." 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 "" - -#. 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." @@ -2127,17 +1342,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "זוהי כתובת ×ž×¡×¨×™× ×ž×™×“×™×™× ×©×’×•×™×”." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -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. @@ -2145,12 +1353,6 @@ msgstr "×”×ישור בוטל." msgid "That is not your Jabber ID." msgstr "זהו ×œ× ×–×™×”×•×™ ×”-Jabber שלך." -#. TRANS: Message given after successfully removing a registered IM address. -#: actions/imsettings.php:447 -#, fuzzy -msgid "The IM address was removed." -msgstr "הכתובת הוסרה." - #: actions/inbox.php:59 #, php-format msgid "Inbox for %1$s - page %2$d" @@ -2170,30 +1372,17 @@ msgid "Invites have been disabled." msgstr "" #: actions/invite.php:41 -#, fuzzy, 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" +msgid "You must be logged in to invite other users to use %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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "" @@ -2218,33 +1407,18 @@ 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 -#, fuzzy 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. @@ -2283,14 +1457,7 @@ msgstr "" 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 "×ין כינוי" - -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "" @@ -2299,97 +1466,75 @@ msgstr "" 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 "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#. 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 "הסטטוס של %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 -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 -#, fuzzy, php-format +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "×©× ×ž×©×ª×ž×© ×ו סיסמה ×œ× × ×›×•× ×™×." + +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"היכנס בעזרת ×©× ×”×ž×©×ª×ž×© והסיסמה שלך. עדיין ×ין לך ×©× ×ž×©×ª×ž×©? [הרש×](%%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 "למשתמש ×ין פרופיל." +msgstr "" #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "נכשלה יצירת OpenID מתוך: %s" +msgstr "" #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "למשתמש ×ין פרופיל." +msgstr "" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "×ין תוצ×ות" +msgstr "" #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "×ין הודעה כזו." - -#: actions/newapplication.php:64 -msgid "You must be logged in to register an application." msgstr "" #: actions/newapplication.php:143 @@ -2401,13 +1546,8 @@ msgid "Source URL is required." msgstr "" #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "שמירת מידע התמונה נכשל" - -#: actions/newgroup.php:53 -msgid "New group" -msgstr "" +msgstr "שמירת הפרופיל נכשלה." #: actions/newgroup.php:110 msgid "Use this form to create a new group." @@ -2417,12 +1557,10 @@ msgstr "" 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "×ין תוכן!" @@ -2430,22 +1568,24 @@ msgstr "×ין תוכן!" msgid "No recipient specified." msgstr "" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "הודעה חדשה" +msgstr "" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "" @@ -2453,11 +1593,6 @@ msgstr "" msgid "New notice" msgstr "הודעה חדשה" -#: actions/newnotice.php:217 -#, fuzzy -msgid "Notice posted" -msgstr "הודעות" - #: actions/noticesearch.php:68 #, php-format msgid "" @@ -2472,9 +1607,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 @@ -2491,18 +1626,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 @@ -2525,24 +1660,10 @@ msgstr "" msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2556,46 +1677,34 @@ 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 -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:159 #, php-format -msgid "Only %s URLs over plain HTTP please." +msgid "Content type %s not supported." msgstr "" -#. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:183 actions/oembed.php:202 lib/apiaction.php:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 -msgid "Not a supported data format." +#. 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 "" #: actions/opensearch.php:64 msgid "People Search" msgstr "חיפוש ×נשי×" -#: actions/opensearch.php:67 -msgid "Notice Search" -msgstr "" - #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "הגדרות" +msgstr "הגדרות הפרופיל" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2613,43 +1722,17 @@ msgstr "" msgid "Automatic shortening service to use." msgstr "" -#: actions/othersettings.php:122 -#, fuzzy -msgid "View profile designs" -msgstr "הגדרות הפרופיל" - #: 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 "×©× ×”×ž×™×§×•× ×רוך מידי (מותר עד 255 ×ותיות)." - #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "הודעה חדשה" - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "הודעה חדשה" +msgstr "" #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "השרת ×œ× ×”×—×–×™×¨ כתובת פרופיל" - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "תוכן ההודעה ×œ× ×—×•×§×™" - -#: actions/otp.php:104 -msgid "Login token expired." -msgstr "" +msgstr "×œ× ×”×ª×‘×§×© ×ישור!" #: actions/outbox.php:58 #, php-format @@ -2669,16 +1752,6 @@ msgstr "" msgid "Change password" msgstr "שנה סיסמה" -#: actions/passwordsettings.php:69 -#, fuzzy -msgid "Change your password." -msgstr "שנה סיסמה" - -#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy -msgid "Password change" -msgstr "הסיסמה נשמרה." - #: actions/passwordsettings.php:104 msgid "Old password" msgstr "סיסמה ישנה" @@ -2692,7 +1765,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 "×שר" @@ -2704,11 +1777,7 @@ msgstr "×–×”×” לסיסמה למעלה" msgid "Change" msgstr "שנה" -#: actions/passwordsettings.php:154 actions/register.php:230 -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 "הסיסמ×ות ×œ× ×ª×•×מות." @@ -2729,7 +1798,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 "" @@ -2738,24 +1807,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." @@ -2765,11 +1834,6 @@ msgstr "" msgid "Site" msgstr "" -#: actions/pathsadminpanel.php:238 -#, fuzzy -msgid "Server" -msgstr "שיחזור" - #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." msgstr "" @@ -2778,11 +1842,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "הודעה חדשה" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2815,34 +1874,14 @@ msgstr "" msgid "Theme directory" msgstr "" -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "תמונה" - #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "הגדרות" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "התמונה עודכנה." - -#: actions/pathsadminpanel.php:292 -#, fuzzy -msgid "Avatar directory" -msgstr "התמונה עודכנה." +msgstr "תמונה" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" msgstr "" -#: actions/pathsadminpanel.php:305 -msgid "Background server" -msgstr "" - #: actions/pathsadminpanel.php:309 msgid "Background path" msgstr "" @@ -2851,21 +1890,6 @@ msgstr "" msgid "Background directory" msgstr "" -#: actions/pathsadminpanel.php:320 -#, fuzzy -msgid "SSL" -msgstr "סמס" - -#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy -msgid "Never" -msgstr "שיחזור" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "הודעות" - #: actions/pathsadminpanel.php:325 msgid "Always" msgstr "" @@ -2878,19 +1902,13 @@ msgstr "" msgid "When to use SSL" msgstr "" -#: actions/pathsadminpanel.php:335 -#, fuzzy -msgid "SSL server" -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 @@ -2906,19 +1924,18 @@ msgid "People search" msgstr "חיפוש סיסמה" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "×œ× ×¢×•×ž×“ ×‘×›×œ×œ×™× ×œ-OpenID." +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 msgid "Invalid notice content." -msgstr "תוכן ההודעה ×œ× ×—×•×§×™" +msgstr "גודל ×œ× ×—×•×§×™." #: actions/postnotice.php:101 #, php-format @@ -2935,52 +1952,50 @@ msgid "" 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 "הכתובת של ×תר הבית שלך, בלוג, ×ו פרופיל ב×תר ×חר " -#: 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 "מיקומך, למשל \"עיר, מדינה ×ו מחוז, ×רץ\"" @@ -3020,42 +2035,24 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, 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." msgstr "" -#: actions/profilesettings.php:241 -msgid "Language is too long (max 50 chars)." -msgstr "" - #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "כתובת ×תר הבית '%s' ××™× ×” חוקית" - -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "שמירת הפרופיל נכשלה." +msgstr "גודל ×œ× ×—×•×§×™." #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "שמירת הפרופיל נכשלה." -#: actions/profilesettings.php:383 -#, fuzzy -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." @@ -3066,33 +2063,21 @@ msgstr "ההגדרות נשמרו." msgid "Beyond the page limit (%s)." msgstr "" -#: actions/public.php:92 -msgid "Could not retrieve public stream." -msgstr "" - -#: actions/public.php:130 -#, fuzzy, php-format -msgid "Public timeline, page %d" -msgstr "קו זמן ציבורי" - #: actions/public.php:132 lib/publicgroupnav.php:79 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 @@ -3129,9 +2114,8 @@ msgid "" msgstr "" #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "הזנת ×–×¨× ×”×¦×™×‘×•×¨×™" +msgstr "" #: actions/publictagcloud.php:63 #, php-format @@ -3182,10 +2166,6 @@ msgstr "שגי××” ב×ישור הקוד." 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 " @@ -3196,10 +2176,6 @@ msgstr "" 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 "" @@ -3270,7 +2246,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 "שגי××” ביצירת ×©× ×”×ž×©×ª×ž×©." @@ -3278,79 +2254,84 @@ 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 -#, 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:507 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 -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 -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 -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:494 +#: 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3369,7 +2350,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3390,11 +2371,6 @@ msgstr "" msgid "Remote subscribe" msgstr "הרשמה מרוחקת" -#: actions/remotesubscribe.php:124 -#, fuzzy -msgid "Subscribe to a remote user" -msgstr "ההרשמה ×ושרה" - #: actions/remotesubscribe.php:129 msgid "User nickname" msgstr "כינוי משתמש" @@ -3421,47 +2397,24 @@ msgid "Invalid profile URL (bad format)" msgstr "כתובת פרופיל ×œ× ×—×•×§×™×ª (פורמט ×œ× ×ª×§×™×Ÿ)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Not a valid profile URL (no YADIS document)." +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 "×סימון הבקשה ×œ× ×”×ª×§×‘×œ." +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 "הודעה חדשה" - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון" - -#: actions/repeat.php:90 -#, fuzzy -msgid "You already repeated that notice." -msgstr "כבר נכנסת למערכת!" - -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "צור" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "צור" +msgstr "×יפוס" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3469,31 +2422,16 @@ msgstr "צור" msgid "Replies to %s" msgstr "תגובת עבור %s" -#: actions/replies.php:128 -#, fuzzy, php-format -msgid "Replies to %1$s, page %2$d" -msgstr "תגובת עבור %s" - -#: actions/replies.php:145 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 1.0)" -msgstr "הזנת הודעות של %s" - -#: actions/replies.php:152 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 2.0)" -msgstr "הזנת הודעות של %s" - #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "הזנת הודעות של %s" +msgstr "תגובת עבור %s" #: 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 @@ -3506,43 +2444,33 @@ 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 -msgid "Replies to %1$s on %2$s!" -msgstr "תגובת עבור %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 -#, 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 "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" +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 "" @@ -3568,45 +2496,20 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "הגדרות" - -#: actions/showapplication.php:82 -msgid "You must be logged in to view an application." -msgstr "" - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "להודעה ×ין פרופיל" +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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -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 -#: 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 "סטטיסטיקה" @@ -3616,18 +2519,10 @@ msgstr "סטטיסטיקה" 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 "" @@ -3659,28 +2554,19 @@ 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 וחברי×" - -#: actions/showfavorites.php:132 -msgid "Could not retrieve favorite notices." 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" - -#: actions/showfavorites.php:185 -#, fuzzy, php-format -msgid "Feed for favorites of %s (Atom)" -msgstr "הזנות ×”×—×‘×¨×™× ×©×œ %s" +msgstr "" #: actions/showfavorites.php:206 msgid "" @@ -3691,80 +2577,54 @@ 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 "" -#: actions/showgroup.php:82 lib/groupnav.php:86 +#: actions/showgroup.php:84 #, php-format -msgid "%s group" +msgid "%1$s group, page %2$d" msgstr "" -#: actions/showgroup.php:84 -#, fuzzy, php-format -msgid "%1$s group, page %2$d" -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 msgid "URL" msgstr "" -#: actions/showgroup.php:283 actions/tagother.php:128 -#: actions/userauthorization.php:187 lib/userprofile.php:195 -#, fuzzy -msgid "Note" -msgstr "הודעות" - #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" msgstr "" -#: actions/showgroup.php:302 -msgid "Group actions" +#: actions/showgroup.php:338 +#, php-format +msgid "Notice feed for %s group (RSS 1.0)" msgstr "" -#: actions/showgroup.php:338 -#, fuzzy, php-format -msgid "Notice feed for %s group (RSS 1.0)" -msgstr "הזנת הודעות של %s" - #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "הזנת הודעות של %s" - -#: actions/showgroup.php:350 -#, fuzzy, php-format -msgid "Notice feed for %s group (Atom)" -msgstr "הזנת הודעות של %s" +msgstr "" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "הזנת הודעות של %s" - -#: actions/showgroup.php:393 actions/showgroup.php:453 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 @@ -3776,12 +2636,7 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 -#, 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." @@ -3791,7 +2646,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." @@ -3800,14 +2655,10 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: 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 "" @@ -3823,9 +2674,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 @@ -3833,29 +2683,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" - -#: actions/showstream.php:129 -#, fuzzy, php-format -msgid "Notice feed for %s (RSS 1.0)" -msgstr "הזנת הודעות של %s" - -#: actions/showstream.php:136 -#, fuzzy, php-format -msgid "Notice feed for %s (RSS 2.0)" -msgstr "הזנת הודעות של %s" - -#: actions/showstream.php:143 -#, fuzzy, php-format -msgid "Notice feed for %s (Atom)" -msgstr "הזנת הודעות של %s" +msgstr "" #: actions/showstream.php:148 #, php-format @@ -3876,8 +2711,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 @@ -3897,19 +2732,13 @@ msgid "" "[StatusNet](http://status.net/) tool. " msgstr "" -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "תגובת עבור %s" - #: actions/silence.php:65 actions/unsilence.php:65 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" @@ -3940,11 +2769,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "הודעה חדשה" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -3969,11 +2793,6 @@ msgstr "" msgid "Contact email address for your site" msgstr "" -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "מיקו×" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4011,43 +2830,21 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "הודעה חדשה" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -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." msgstr "" -#: actions/sitenoticeadminpanel.php:176 -#, fuzzy -msgid "Site notice text" -msgstr "הודעה חדשה" - #: 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 "הודעה חדשה" - #. 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. @@ -4058,15 +2855,8 @@ 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 "עמוד ×–×” ×ינו זמין בסוג מדיה ש×תה יכול לקבל" - -#. 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 @@ -4078,38 +2868,20 @@ msgstr "" 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 -#, fuzzy -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 -#, fuzzy msgid "SMS preferences" -msgstr "העדפות" +msgstr "העדפות נשמרו." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4118,62 +2890,24 @@ msgid "" "from my carrier." msgstr "" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -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 -#, 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 "קוד ×”×ישור ×”×–×” ×ינו מיועד לך!" - -#. 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 "" +"קוד ×ישור נשלח ×ל כתובת ×”×ž×¡×¨×™× ×”×ž×™×“×™×™× ×©×”×•×¡×¤×ª. עליך ל×שר ×ת %s לשליחת ×ž×¡×¨×™× " +"×ž×™×“×™×™× ×ליך." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy 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 -#, fuzzy -msgid "The SMS phone number was removed." -msgstr "הכתובת הוסרה." +msgstr "×ין קוד ×ישור." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4194,26 +2928,12 @@ msgid "" "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:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" -#: actions/snapshotadminpanel.php:65 -#, fuzzy -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 "" @@ -4254,49 +2974,23 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "הגדרות" - -#: actions/subedit.php:70 -#, fuzzy -msgid "You are not subscribed to that profile." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "×ין הודעה כזו." - #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: actions/subscribe.php:145 -#, fuzzy -msgid "Subscribed" -msgstr "×”×™×¨×©× ×›×ž× ×•×™" - -#: actions/subscribers.php:50 -#, fuzzy, php-format -msgid "%s subscribers" -msgstr "מנויי×" +msgstr "" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "כל המנויי×" +msgstr "" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4325,16 +3019,6 @@ msgid "" "%) and be the first?" msgstr "" -#: actions/subscriptions.php:52 -#, fuzzy, php-format -msgid "%s subscriptions" -msgstr "כל המנויי×" - -#: actions/subscriptions.php:54 -#, fuzzy, 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 "×לה ×”×× ×©×™× ×©×œ×”×•×“×¢×•×ª ×©×œ×”× ×תה מ×זין." @@ -4354,55 +3038,34 @@ msgid "" "automatically subscribe to people you already follow there." msgstr "" -#: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format -msgid "%s is not listening to anyone." -msgstr "%1$s כעת מ×זין להודעות שלך ב-%2$s" - -#: actions/subscriptions.php:208 -#, fuzzy -msgid "Jabber" -msgstr "×ין זיהוי Jabber ×›×–×”." - #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 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 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "הזנת הודעות של %s" +msgstr "" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "הזנת הודעות של %s" - -#: actions/tag.php:99 -#, fuzzy, php-format -msgid "Notice feed for tag %s (Atom)" -msgstr "הזנת הודעות של %s" +msgstr "" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "×ין מסמך ×›×–×”." +msgstr "" #: actions/tagother.php:65 #, php-format msgid "Tag %s" msgstr "" -#: actions/tagother.php:77 lib/userprofile.php:76 -#, fuzzy -msgid "User profile" -msgstr "למשתמש ×ין פרופיל." - #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" @@ -4424,47 +3087,16 @@ msgid "" 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." msgstr "" -#: actions/tagrss.php:35 -#, fuzzy -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 "כבר נכנסת למערכת!" - -#: actions/unsandbox.php:72 -#, fuzzy -msgid "User is not sandboxed." -msgstr "למשתמש ×ין פרופיל." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "למשתמש ×ין פרופיל." - #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "השרת ×œ× ×”×—×–×™×¨ כתובת פרופיל" - -#: actions/unsubscribe.php:98 -#, fuzzy -msgid "Unsubscribed" -msgstr "בטל מנוי" +msgstr "×œ× ×”×ª×‘×§×© ×ישור!" #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format @@ -4472,13 +3104,6 @@ msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." 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 "" @@ -4511,32 +3136,16 @@ msgid "Maximum length of a profile bio in characters." msgstr "" #: actions/useradminpanel.php:231 -#, fuzzy msgid "New users" -msgstr "מחק" - -#: actions/useradminpanel.php:235 -msgid "New user welcome" -msgstr "" +msgstr "הודעה חדשה" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "כל המנויי×" - -#: actions/useradminpanel.php:242 -#, fuzzy -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" @@ -4551,16 +3160,13 @@ 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 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4570,18 +3176,16 @@ 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" msgstr "דחה" #: actions/userauthorization.php:220 -#, fuzzy msgid "Reject this subscription" -msgstr "כל המנויי×" +msgstr "×שר מנוי" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4592,28 +3196,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 "" -"המנוי ×ושר, ×בל ×œ× ×”×ª×§×‘×œ×” כתובת ×ליה ניתן לחזור. בדוק ×ת הור×ות ×”×תר וחפש " -"כיצד ל×שר מנוי. ×סימון המנוי שלך הו×:" #: 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 "" -"המנוי נדחה, ×בל ×œ× ×”×ª×§×‘×œ×” כתובת לחזרה. בדוק ×ת הור×ות ×”×תר וחפש כיצד ×œ×”×©×œ×™× " -"דחיית מנוי." #: actions/userauthorization.php:303 #, php-format @@ -4641,19 +3239,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' ×ינו מת××™×" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "הגדרות הפרופיל" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4667,19 +3260,14 @@ 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 -#, fuzzy, 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." @@ -4690,29 +3278,24 @@ 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 -#, 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 " @@ -4720,7 +3303,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 " @@ -4728,447 +3311,331 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -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 "" -#: classes/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "עידכון המשתמש נכשל." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "×ין הודעה כזו." - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "עידכון המשתמש נכשל." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -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 -msgid "Could not insert message." -msgstr "" - -#: classes/Message.php:71 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "שגי×ת מסד × ×ª×•× ×™× ×‘×”×›× ×¡×ª התגובה: %s" +msgstr "שגי××” בהכנסת התמונה." -#: classes/Notice.php:245 -#, fuzzy -msgid "Problem saving notice. Too long." -msgstr "בעיה בשמירת ההודעה." - -#: classes/Notice.php:249 -#, 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:276 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:283 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "בעיה בשמירת ההודעה." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "בעיה בשמירת ההודעה." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 +#: classes/Notice.php:1759 #, 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 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 -msgid "Already subscribed!" -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:82 -#, fuzzy -msgid "User has blocked you." -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 "הכנסת מנוי חדש נכשלה." -#: classes/Subscription.php:167 -#, fuzzy -msgid "Not subscribed!" -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/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "מחיקת המנוי ×œ× ×”×¦×œ×™×—×”." - -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "מחיקת המנוי ×œ× ×”×¦×œ×™×—×”." - -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." -msgstr "שמירת מידע התמונה נכשל" +msgstr "עידכון המשתמש נכשל." -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "יצירת המנוי נכשלה." +msgstr "שמירת הפרופיל נכשלה." -#: classes/User_group.php:510 -#, fuzzy +#. 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 "יצירת המנוי נכשלה." - -#. 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 -#, fuzzy -msgid "Upload an avatar" -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 msgid "Change email handling" msgstr "" -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:137 -#, fuzzy -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 -#, fuzzy, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "×ישי" - #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "התחבר" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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:474 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" -msgstr "גודל ×œ× ×—×•×§×™." +msgstr "" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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 -msgctxt "MENU" -msgid "Logout" -msgstr "צ×" - #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "צור חשבון חדש" - -#. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "הירש×" +msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "היכנס" - -#. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Help me!" -msgstr "עזרה" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" -msgstr "עזרה" - #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 -#, fuzzy -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 -#, 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:605 msgid "Local views" msgstr "" -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, fuzzy -msgid "Page notice" -msgstr "הודעה חדשה" - #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "הרשמות" +msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "עזרה" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "×ודות" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "רשימת ש×לות נפוצות" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "פרטיות" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "מקור" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "צור קשר" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5179,58 +3646,50 @@ msgstr "" "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 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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 -#, fuzzy +#: lib/action.php:1247 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:1257 msgid "Before" -msgstr "לפני >>" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5238,11 +3697,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5272,110 +3731,58 @@ msgstr "" msgid "Unable to delete design setting." msgstr "" -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, 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 "הודעה חדשה" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -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 -#, 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 -msgid "Access configuration" -msgstr "הרשמות" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy +#: 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 "הרשמות" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "הודעה חדשה" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "הרשמות" +msgstr "×ין קוד ×ישור." #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, 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 "הכתובת של ×תר הבית שלך, בלוג, ×ו פרופיל ב×תר ×חר " - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "מקור" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 @@ -5384,9 +3791,8 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "הכתובת של ×תר הבית שלך, בלוג, ×ו פרופיל ב×תר ×חר " +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5446,47 +3852,21 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -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 "" -#. TRANS: DT element label in attachment list item. -#: lib/attachmentlist.php:279 -#, fuzzy -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:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "הסיסמה נשמרה." - -#: lib/authenticationplugin.php:235 -#, fuzzy +#: 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 @@ -5497,46 +3877,47 @@ msgstr "" msgid "Command failed" msgstr "" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -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 "למשתמש ×ין פרופיל." +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "עידכון המשתמש נכשל." +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 -#, fuzzy, php-format -msgid "Could not find a local user with nickname %s" -msgstr "עידכון המשתמש נכשל." +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "תגובת עבור %s" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5544,56 +3925,26 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "" -#: lib/command.php:323 -#, fuzzy -msgid "You are already a member of that group" -msgstr "כבר נכנסת למערכת!" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 -#, fuzzy, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "נכשלה ההפניה לשרת: %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 "נכשלה יצירת OpenID מתוך: %s" - -#. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 -#, fuzzy, 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:263 +#: lib/command.php:360 #, 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 -#, php-format -msgid "Homepage: %s" +msgid "%1$s joined group %2$s." msgstr "" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "×ודות: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5602,150 +3953,102 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון" - -#: lib/command.php:519 -#, fuzzy -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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "הודעות" +#: lib/command.php:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "" -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "בעיה בשמירת ההודעה." +msgstr "שגי××” ביצירת ×©× ×”×ž×©×ª×ž×©." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "תגובת עבור %s" - -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "בעיה בשמירת ההודעה." - -#: lib/command.php:620 -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 "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: 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" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" +msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "" -#: lib/command.php:685 -msgid "Notification off." -msgstr "" - -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." -msgstr "" - -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "בטל מנוי" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" msgstr[1] "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "הרשמה מרוחקת" - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 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 "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" msgstr[1] "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5787,11 +4090,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "×ין קוד ×ישור." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5816,30 +4114,10 @@ msgstr "" msgid "Updates by SMS" msgstr "" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "התחבר" - -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "" -#: lib/designsettings.php:105 -#, fuzzy -msgid "Upload file" -msgstr "ההעלה" - -#: lib/designsettings.php:109 -#, fuzzy -msgid "" -"You can upload your personal background image. The maximum file size is 2MB." -msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות." - #: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5848,15 +4126,6 @@ msgstr "" msgid "Disfavor this notice" msgstr "" -#: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy -msgid "Favor this notice" -msgstr "×ין הודעה כזו." - -#: lib/favorform.php:140 -msgid "Favor" -msgstr "" - #: lib/feed.php:85 msgid "RSS 1.0" msgstr "" @@ -5906,45 +4175,28 @@ msgstr "" 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 "הכתובת של ×תר הבית שלך, בלוג, ×ו פרופיל ב×תר ×חר " - #: 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 ×ותיות" - -#: lib/groupeditform.php:179 -#, fuzzy -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 "" -#: lib/groupnav.php:85 -msgid "Group" +#: lib/groupnav.php:101 +msgid "Blocked" msgstr "" -#: lib/groupnav.php:101 -#, fuzzy -msgid "Blocked" -msgstr "×ין משתמש ×›×–×”." - #: lib/groupnav.php:102 -#, fuzzy, php-format +#, php-format msgid "%s blocked users" -msgstr "×ין משתמש ×›×–×”." +msgstr "" #: lib/groupnav.php:108 #, php-format @@ -5952,9 +4204,8 @@ msgid "Edit %s group properties" msgstr "" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "צ×" +msgstr "היכנס" #: lib/groupnav.php:114 #, php-format @@ -5988,11 +4239,6 @@ msgstr "עמוד ×–×” ×ינו זמין בסוג מדיה ש×תה יכול לק msgid "Unsupported image file format." msgstr "פורמט התמונה ×ינו נתמך." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "העל××” חלקית." @@ -6005,11 +4251,6 @@ msgstr "שגי×ת מערכת בהעל×ת הקובץ." msgid "Not an image or corrupt file." msgstr "זהו ×œ× ×§×•×‘×¥ תמונה, ×ו שחל בו שיבוש." -#: lib/imagefile.php:122 -#, fuzzy -msgid "Lost our file." -msgstr "×ין הודעה כזו." - #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" msgstr "" @@ -6032,29 +4273,8 @@ msgstr "" msgid "Unknown inbox source %d." msgstr "" -#: lib/joinform.php:114 -#, fuzzy -msgid "Join" -msgstr "היכנס" - -#: lib/leaveform.php:114 -#, fuzzy -msgid "Leave" -msgstr "שמור" - -#: lib/logingroupnav.php:80 -#, fuzzy -msgid "Login with a username and password" -msgstr "×©× ×”×ž×©×ª×ž×© ×ו הסיסמה ×œ× ×—×•×§×™×™×" - #: lib/logingroupnav.php:86 -#, fuzzy 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. @@ -6081,9 +4301,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" @@ -6096,26 +4323,15 @@ 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 -#, 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" @@ -6128,31 +4344,20 @@ msgid "" "%4$s" msgstr "" -#. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 -#, php-format -msgid "%s status" -msgstr "" - -#. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 -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 " @@ -6169,13 +4374,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" @@ -6195,13 +4400,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" @@ -6223,7 +4428,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" @@ -6231,13 +4436,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" @@ -6274,31 +4479,14 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 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 -#, fuzzy, 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 "" @@ -6329,25 +4517,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 "" @@ -6360,117 +4547,79 @@ msgstr "" msgid "To" msgstr "×ל" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy -msgid "Available characters" -msgstr "לפחות 6 ×ותיות" - -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "שלח" +msgstr "" -#: lib/noticeform.php:160 -#, fuzzy -msgid "Send a notice" -msgstr "הודעה חדשה" - -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "מה המצב %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "שמירת הפרופיל נכשלה." +msgstr "" -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "שמירת הפרופיל נכשלה." - -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 -#, 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:567 -#, fuzzy -msgid "in context" -msgstr "×ין תוכן!" - -#: lib/noticelist.php:602 -#, fuzzy -msgid "Repeated by" -msgstr "צור" - -#: lib/noticelist.php:629 -msgid "Reply to this notice" +#: lib/noticelist.php:502 +msgid "web" msgstr "" #: lib/noticelist.php:630 -#, fuzzy -msgid "Reply" -msgstr "הגב" - -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "הודעות" - -#: lib/nudgeform.php:116 -msgid "Nudge this user" +msgid "Reply to this notice" msgstr "" +#: lib/noticelist.php:631 +msgid "Reply" +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 "שגי××” בהכנסת הפרופיל" @@ -6487,11 +4636,6 @@ msgstr "שגי××” בעדכון פרופיל מרוחק" msgid "Error inserting remote profile" msgstr "שגי××” בהכנסת פרופיל מרוחק" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "הודעה חדשה" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "הכנסת מנוי חדש נכשלה." @@ -6520,16 +4664,12 @@ msgstr "" 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:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "" @@ -6545,16 +4685,6 @@ msgstr "כל המנויי×" msgid "Subscribers" msgstr "מנויי×" -#: lib/profileaction.php:161 -#, fuzzy -msgid "All subscribers" -msgstr "מנויי×" - -#: lib/profileaction.php:191 -#, fuzzy -msgid "User ID" -msgstr "מתשמש" - #: lib/profileaction.php:196 msgid "Member since" msgstr "חבר מ××–" @@ -6564,11 +4694,7 @@ msgstr "חבר מ××–" msgid "Daily average" msgstr "" -#: lib/profileaction.php:264 -msgid "All groups" -msgstr "" - -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6584,40 +4710,20 @@ msgstr "" msgid "Recent tags" msgstr "" -#: lib/publicgroupnav.php:88 -msgid "Featured" -msgstr "" - -#: lib/publicgroupnav.php:92 -#, fuzzy -msgid "Popular" -msgstr "×נשי×" - -#: lib/redirectingaction.php:94 -#, fuzzy +#: 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" msgstr "כן" -#: lib/repeatform.php:132 -#, fuzzy -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 "" @@ -6625,16 +4731,6 @@ msgstr "" msgid "Sandbox" msgstr "" -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "×ין משתמש ×›×–×”." - -#: lib/searchaction.php:120 -#, fuzzy -msgid "Search site" -msgstr "חיפוש" - #: lib/searchaction.php:126 msgid "Keyword(s)" msgstr "" @@ -6643,11 +4739,6 @@ msgstr "" msgid "Search" msgstr "חיפוש" -#: lib/searchaction.php:162 -#, fuzzy -msgid "Search help" -msgstr "חיפוש" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "×נשי×" @@ -6673,24 +4764,8 @@ msgid "More..." msgstr "" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "הודעה חדשה" - -#: lib/silenceform.php:78 -#, fuzzy -msgid "Silence this user" -msgstr "×ין משתמש ×›×–×”." - -#: lib/subgroupnav.php:83 -#, fuzzy, php-format -msgid "People %s subscribes to" -msgstr "הרשמה מרוחקת" - -#: lib/subgroupnav.php:91 -#, fuzzy, php-format -msgid "People subscribed to %s" -msgstr "הרשמה מרוחקת" +msgstr "" #: lib/subgroupnav.php:99 #, php-format @@ -6717,9 +4792,44 @@ msgid "People Tagcloud as tagged" msgstr "" #: lib/tagcloudsection.php:56 -#, fuzzy msgid "None" -msgstr "ל×" +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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" #: lib/topposterssection.php:74 msgid "Top posters" @@ -6729,51 +4839,18 @@ msgstr "" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "×ין משתמש ×›×–×”." - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -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 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "למשתמש ×ין פרופיל." - -#: lib/userprofile.php:117 -#, fuzzy -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 -#, fuzzy -msgid "Edit profile settings" -msgstr "הגדרות הפרופיל" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" @@ -6782,20 +4859,10 @@ msgstr "" msgid "Send a direct message to this user" msgstr "" -#: lib/userprofile.php:288 -#, fuzzy -msgid "Message" -msgstr "הודעה חדשה" - #: lib/userprofile.php:326 msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "למשתמש ×ין פרופיל." - #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" @@ -6807,70 +4874,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "לפני מספר שניות" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "לפני כדקה" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "לפני כשעה" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "לפני כיו×" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "לפני כחודש" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "לפני כשנה" -#: lib/webcolor.php:82 -#, fuzzy, 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/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po index dc063eec9d..da63fd6ea7 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:48:59+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:25+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,38 +86,38 @@ 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 -#, fuzzy msgid "No such page." -msgstr "Strona njeeksistuje" +msgstr "Strona njeeksistuje." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -124,39 +125,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:114 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 " @@ -164,79 +165,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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ć." @@ -256,7 +257,7 @@ msgstr "Profil njeje so skÅ‚adować daÅ‚." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -266,16 +267,6 @@ msgid "" "current configuration." msgstr "" -#: 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 "" - #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 msgid "Could not update your design." @@ -287,11 +278,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 @@ -313,191 +304,196 @@ msgstr "Direktne powÄ›sće do %s" msgid "All the direct messages sent to %s" msgstr "WÅ¡Ä› do %s pósÅ‚ane direktne powÄ›sće" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Žadyn powÄ›sćowy tekst!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "To je pÅ™edoÅ‚ho. Maksimalna powÄ›sćowa wulkosć je %d znamjeÅ¡kow." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "PÅ™ijimowar njenamakany." -#: actions/apidirectmessagenew.php:150 +#: 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 "" - -#: actions/apifriendshipscreate.php:118 -#, php-format -msgid "Could not follow user: %s is already on your list." -msgstr "" - -#: actions/apifriendshipsdestroy.php:109 -msgid "Could not unfollow user: User not found." -msgstr "" +msgid "Could not follow user: profile not found." +msgstr "NjebÄ› móžno wužiwarja sÅ‚Ä›dować: profil njenamakany." #: actions/apifriendshipsdestroy.php:120 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "NjepÅ‚aćiwy 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 -#, 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 "Skupina njenamakana!" +msgstr "Skupina njenamakana." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 "" @@ -508,15 +504,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 @@ -558,15 +554,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 @@ -577,12 +573,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:463 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 @@ -590,8 +586,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" @@ -605,13 +601,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ć." @@ -620,91 +616,82 @@ msgstr "NjemóžeÅ¡ status druheho wužiwarja zniÄić." msgid "No such notice." msgstr "Zdźělenka njeeksistuje." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Njemóžno twoju zdźělenku wospjetować." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Njenamakany." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "" - -#: actions/apitimelineretweetedtome.php:111 -#, php-format -msgid "Repeated to %s" -msgstr "" +msgstr "%s aktualizacijow wote wÅ¡Ä›ch!" #: actions/apitimelineretweetsofme.php:114 #, php-format 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 -#, php-format -msgid "Updates tagged with %1$s on %2$s!" -msgstr "" - #: actions/attachment.php:73 msgid "No such attachment." msgstr "PÅ™iwěšk njeeksistuje." @@ -758,7 +745,7 @@ msgid "Preview" msgstr "PÅ™ehlad" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "ZniÄić" @@ -768,7 +755,7 @@ msgstr "Nahrać" #: actions/avatarsettings.php:231 actions/grouplogo.php:289 msgid "Crop" -msgstr "" +msgstr "PÅ™irÄ›zać" #: actions/avatarsettings.php:305 msgid "No file uploaded." @@ -780,7 +767,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." @@ -788,7 +775,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." @@ -798,11 +785,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 " @@ -814,17 +801,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 "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ć" @@ -833,23 +819,20 @@ 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 -#, fuzzy msgctxt "BUTTON" 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 -msgid "Failed to save block information." -msgstr "" - +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -859,42 +842,38 @@ msgstr "" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." 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 msgid "%1$s blocked profiles, page %2$d" msgstr "%1$s zablokowa profile, stronu %2$d" -#: actions/blockedfromgroup.php:115 -msgid "A list of the users blocked from joining this group." -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 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "skupiny na %s" +msgstr "Na %s pósÅ‚ać" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -910,9 +889,9 @@ msgstr "Tutón wobkrućenski kod njeje za tebje!" #. 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 "Njespóznany adresowy typ %s" +msgstr "Njespóznaty adresowy typ %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -931,14 +910,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" @@ -973,7 +952,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:1307 msgid "There was a problem with your session token." msgstr "" @@ -1004,7 +983,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." @@ -1033,7 +1012,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Tutu zdźělenku wuÅ¡mórnyć" @@ -1071,45 +1050,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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Å at njesteji k dispoziciji: %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" @@ -1118,57 +1105,57 @@ 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 -msgid "Turn background image on or off." -msgstr "" - -#: actions/designadminpanel.php:482 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 @@ -1178,7 +1165,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ć" @@ -1230,7 +1217,7 @@ msgstr "Wopisanje je trÄ›bne." #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "ŽórÅ‚owy URL je pÅ™edoÅ‚hi." #: actions/editapplication.php:200 actions/newapplication.php:185 msgid "Source URL is not valid." @@ -1238,7 +1225,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)." @@ -1246,15 +1233,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 "" - -#: actions/editapplication.php:218 actions/newapplication.php:206 -msgid "Callback is too long." -msgstr "" - -#: actions/editapplication.php:225 actions/newapplication.php:215 -msgid "Callback URL is not valid." -msgstr "" +msgstr "Startowa strona organizacije je trÄ›bna." #: actions/editapplication.php:258 msgid "Could not update application." @@ -1263,7 +1242,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." @@ -1292,7 +1271,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ć." @@ -1331,7 +1311,6 @@ msgstr "Aktualna wobkrućena e-mejlowa adresa." #: 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 "Wotstronić" @@ -1348,7 +1327,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 "PÅ™etorhnyć" @@ -1363,7 +1341,6 @@ msgstr "E-mejlowa adresa, kaž na pÅ™. \"WužiwarskeMjeno@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 "PÅ™idać" @@ -1389,36 +1366,24 @@ 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 "Nowy" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Nastajenja" +msgstr "E-mejlowe nastajenja" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 msgid "Send me notices of new subscriptions through email." 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 "" - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:193 msgid "Send me email when someone sends me a private message." -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 "E-mejl pósÅ‚ać, hdyž nÄ›chtó priwatnu powÄ›sć sćele." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 @@ -1437,9 +1402,8 @@ msgstr "MicroID za moju e-mejlowu adresu publikować" #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Designowe nastajenja skÅ‚adowane." +msgstr "E-mejlowe nastajenja skÅ‚adowane." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1449,10 +1413,10 @@ msgstr "Žana e-mejlowa adresa." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 msgid "Cannot normalize that email address" -msgstr "" +msgstr "Tuta e-mejlowa adresa njehodźi so normalizować" #. 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." @@ -1473,7 +1437,7 @@ msgstr "Ta e-mejlowa adresa hižo sÅ‚uÅ¡a k druhemu wužiwarjej." #: actions/emailsettings.php:391 actions/imsettings.php:348 #: actions/smssettings.php:373 msgid "Couldn't insert confirmation code." -msgstr "" +msgstr "Wobkrućenski kod njehodźi so zasunyć." #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1482,25 +1446,15 @@ msgid "" "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. -#. 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 "" - #. 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 "to je wopaÄna IM-adresa." +msgstr "To je wopaÄna e-mejlowa adresa." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Wobkrućenje pÅ™etorhnjene." +msgstr "E-mejlowe wobkrućenje pÅ™etorhnjene." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1510,9 +1464,8 @@ msgstr "To njeje twoja e-mejlowa adresa." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Adresa bu wotstronjena." +msgstr "E-mejlowa adresa bu wotstronjena." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1523,7 +1476,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 @@ -1539,10 +1492,6 @@ msgstr "Nowa adresa za dochadźace e-mejle pÅ™idata." msgid "This notice is already a favorite!" msgstr "Tuta zdźělenka je hižo faworit!" -#: actions/favor.php:92 lib/disfavorform.php:140 -msgid "Disfavor favorite" -msgstr "" - #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 msgid "Popular notices" @@ -1574,31 +1523,20 @@ msgid "" "notice to your favorites!" msgstr "" -#: actions/favoritesrss.php:111 actions/showfavorites.php:77 -#: lib/personalgroupnav.php:115 -#, php-format -msgid "%s's favorite notices" -msgstr "" - -#: actions/favoritesrss.php:115 -#, php-format -msgid "Updates favored by %1$s on %2$s!" -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." @@ -1620,17 +1558,13 @@ msgstr "Žane nahrate pÅ™iwěški." msgid "Not expecting this response!" msgstr "NjewoÄakowana wotmoÅ‚wa!" -#: actions/finishremotesubscribe.php:80 -msgid "User being listened to does not exist." -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." @@ -1645,9 +1579,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "" #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Zmylk pÅ™i zasunjenju zdaleneho profila" +msgstr "Zmylk pÅ™i aktualizaciji zdaleneho profila." #: actions/getfile.php:79 msgid "No such file." @@ -1663,7 +1596,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." @@ -1675,13 +1608,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." @@ -1726,7 +1659,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." @@ -1749,7 +1682,7 @@ msgstr "" #: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 msgid "Couldn't update your design." -msgstr "" +msgstr "Twój design njeda so aktualizować." #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 msgid "Design preferences saved." @@ -1777,12 +1710,12 @@ 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 msgid "%s group members" -msgstr "" +msgstr "%s skupinskich ÄÅ‚onow" #: actions/groupmembers.php:103 #, php-format @@ -1803,11 +1736,11 @@ msgstr "Blokować" #: actions/groupmembers.php:487 msgid "Make user an admin of the group" -msgstr "" +msgstr "Wužiwarja k administratorej skupiny Äinić" #: actions/groupmembers.php:519 msgid "Make Admin" -msgstr "" +msgstr "Za administratora pomjenować" #: actions/groupmembers.php:519 msgid "Make this user an admin" @@ -1817,7 +1750,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 "" @@ -1826,7 +1759,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 @@ -1874,6 +1807,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 @@ -1884,15 +1819,15 @@ 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." -msgstr "" +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 @@ -1920,10 +1855,6 @@ msgstr "IM k dispoziciji njesteji." msgid "IM address" msgstr "IM-adresa" -#: 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 @@ -1944,9 +1875,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Nastajenja" +msgstr "IM-nastajenja" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -1963,11 +1893,6 @@ msgstr "" 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." @@ -1978,11 +1903,6 @@ msgstr "Nastajenja skÅ‚adowane." msgid "No Jabber ID." msgstr "Žadyn ID Jabber." -#. 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" @@ -1993,11 +1913,6 @@ msgstr "NjepÅ‚aćiwy ID Jabber" msgid "That is already your Jabber ID." msgstr "To je hižo twój ID 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 "" - #. 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 @@ -2014,15 +1929,13 @@ msgstr "to je wopaÄna IM-adresa." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Abonoment njeje so daÅ‚ zniÄić." +msgstr "IM-wobkrućenje njeda so zhaÅ¡eć." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Wobkrućenje pÅ™etorhnjene." +msgstr "IM-wobkrućenje pÅ™etorhnjene." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2032,32 +1945,34 @@ msgstr "To njeje twój ID Jabber." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Adresa bu wotstronjena." +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." msgstr "PÅ™eproÅ¡enja buchu znjemóžnjene." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "DyrbiÅ¡ pÅ™izjewjeny być, zo by skupinu wobdźěłaÅ‚." +msgstr "" +"DyrbiÅ¡ pÅ™izjewjeny być, zo by druheho wužiwarja pÅ™eprosyÅ‚, zo by wón %s " +"wužiwaÅ‚." #: actions/invite.php:72 #, php-format @@ -2078,7 +1993,7 @@ msgstr "Sy tutych wužiwarjow hižo abonowaÅ‚:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2086,11 +2001,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 "" @@ -2167,78 +2082,81 @@ 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." msgstr "Žane pÅ™imjeno abo žadyn 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 +#: actions/joingroup.php:141 #, 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." msgstr "DyrbiÅ¡ pÅ™izjewjeny być, zo by skupinu wopušćiÅ‚." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Njejsy ÄÅ‚on teje skupiny." -#. 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 +#: actions/leavegroup.php:137 #, 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2252,17 +2170,16 @@ 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 -#, fuzzy msgid "No current status." -msgstr "Žadyn aktualny status" +msgstr "Žadyn aktualny status." #: actions/newapplication.php:52 msgid "New Application" @@ -2278,7 +2195,7 @@ msgstr "Wužij tutón formular, zo by nowu aplikaciju registrowaÅ‚." #: actions/newapplication.php:176 msgid "Source URL is required." -msgstr "" +msgstr "ŽórÅ‚owy URL je trÄ›bny." #: actions/newapplication.php:258 actions/newapplication.php:267 msgid "Could not create application." @@ -2296,12 +2213,15 @@ msgstr "Wužij tutón formular, zo by nowu skupinu wutworiÅ‚." msgid "New message" msgstr "Nowa powÄ›sć" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "NjemóžeÅ¡ tutomu wužiwarju powÄ›sć pósÅ‚ać." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Žadyn wobsah!" @@ -2309,7 +2229,8 @@ msgstr "Žadyn wobsah!" msgid "No recipient specified." msgstr "Žadyn pÅ™ijimowar podaty." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2318,12 +2239,14 @@ msgstr "" msgid "Message sent" msgstr "PowÄ›sć pósÅ‚ana" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Direktna powÄ›sć do %s pósÅ‚ana." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Zmylk Ajax" @@ -2331,7 +2254,7 @@ msgstr "Zmylk Ajax" msgid "New notice" msgstr "Nowa zdźělenka" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Zdźělenka wotpósÅ‚ana" @@ -2349,7 +2272,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 @@ -2368,24 +2291,11 @@ 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 "" +msgstr "Aktualizacije z \"%s\"" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." -msgstr "" - -#: actions/nudge.php:94 -msgid "Nudge sent" -msgstr "" - -#: actions/nudge.php:97 -msgid "Nudge sent!" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/oauthappssettings.php:59 @@ -2398,16 +2308,16 @@ 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" -msgstr "" +msgstr "Zwjazane aplikacije" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." @@ -2422,39 +2332,29 @@ msgstr "Njejsy wužiwar tuteje aplikacije." 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:79 actions/shownotice.php:100 -#, fuzzy +#: 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 -#, php-format -msgid "%1$s's status on %2$s" -msgstr "" +msgstr "Zdźělenka nima profil." #. 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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Njeje podpÄ›rany datowy format." @@ -2480,24 +2380,16 @@ msgstr " (swobodna sÅ‚užba)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "URL skrótÅ¡ić z" #: 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 "Žadyn wužiwarski ID podaty." @@ -2506,10 +2398,6 @@ msgstr "Žadyn wužiwarski ID podaty." msgid "No login token specified." msgstr "Žane pÅ™izjewjenske znamjeÅ¡ko podate." -#: actions/otp.php:90 -msgid "No login token requested." -msgstr "" - #: actions/otp.php:95 msgid "Invalid login token specified." msgstr "NjepÅ‚aćiwe pÅ™izjewjenske znamjeÅ¡ko podate." @@ -2521,16 +2409,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 "" - -#: actions/outbox.php:116 -msgid "This is your outbox, which lists private messages you have sent." -msgstr "" +msgstr "Wuchadny póst za %s" #: actions/passwordsettings.php:58 msgid "Change password" @@ -2557,23 +2441,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." @@ -2583,18 +2467,18 @@ msgstr "WopaÄne stare hesÅ‚o" #: actions/passwordsettings.php:181 msgid "Error saving user; invalid." -msgstr "" +msgstr "Zmylk pÅ™i skÅ‚adowanju wužiwarja; njepÅ‚aćiwy." #: actions/passwordsettings.php:186 actions/recoverpassword.php:381 msgid "Can't save new password." -msgstr "" +msgstr "Nowe hesÅ‚o njeda so skÅ‚adować." #: actions/passwordsettings.php:192 actions/recoverpassword.php:211 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" @@ -2603,24 +2487,19 @@ msgid "Path and server settings for this StatusNet site." msgstr "Šćežka a serwerowe nastajenja za tute sydÅ‚o StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Å at njesteji k dispoziciji: %s" +msgstr "Å atowy zapis njeda so Äitać: %s" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Awatarowy zapis" +msgstr "Do awataroweho zapisa njeda so pisać: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format -msgid "Background directory not writable: %s." -msgstr "Pozadkowy zapis" - -#: actions/pathsadminpanel.php:177 #, php-format -msgid "Locales directory not readable: %s." -msgstr "" +msgid "Background directory not writable: %s." +msgstr "Do pozadkoweho zapisa njeda so pisać: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2758,9 +2637,9 @@ msgid "People search" msgstr "Za ludźimi pytać" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "NjepÅ‚aćiwa e-mejlowa adresa." +msgstr "NjepÅ‚aćiwa wosobowa tafliÄka: %s." #: actions/peopletag.php:142 #, php-format @@ -2768,9 +2647,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "NjepÅ‚aćiwy wobsah zdźělenki" +msgstr "NjepÅ‚aćiwy wobsah zdźělenki." #: actions/postnotice.php:101 #, php-format @@ -2785,54 +2663,52 @@ 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" msgstr "Profilowe informacije" -#: 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 "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" @@ -2870,7 +2746,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)." @@ -2883,26 +2759,13 @@ msgstr "ÄŒasowe pasmo njeje wubrane." msgid "Language is too long (max 50 chars)." msgstr "Mjeno rÄ›Äe je pÅ™edoÅ‚he (maks. 50 znamjeÅ¡kow)." -#: 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 "Nastajenja mÄ›stna njedachu so skÅ‚adować." #: actions/profilesettings.php:375 msgid "Couldn't save profile." -msgstr "" - -#: actions/profilesettings.php:383 -msgid "Couldn't save tags." -msgstr "" +msgstr "Profil njeda so skÅ‚adować." #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 @@ -2912,16 +2775,7 @@ msgstr "Nastajenja skÅ‚adowane." #: 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 "" +msgstr "Limit stronow (%s) pÅ™ekroÄeny." #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" @@ -2998,37 +2852,21 @@ msgid "" "one!" msgstr "" -#: actions/publictagcloud.php:134 -msgid "Tag cloud" -msgstr "" - #: actions/recoverpassword.php:36 msgid "You are already logged in!" msgstr "Sy hižo pÅ™izjewjeny!" -#: 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 "" +msgstr "Zmylk z wobkrućenskim kodom." #: 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 "" +msgstr "Tutón wobkrućenski kod je pÅ™estary. ProÅ¡u zapoÄÅ„ hišće raz." #: actions/recoverpassword.php:152 msgid "" @@ -3042,19 +2880,20 @@ 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." msgstr "" +"Twoje pÅ™imjeno na tutym serwerje abo twoje zregistrowana e-mejlowa adresa." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" -msgstr "" +msgstr "Wobnowić" #: actions/recoverpassword.php:208 msgid "Reset password" @@ -3062,11 +2901,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" @@ -3095,7 +2934,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 "" @@ -3103,98 +2942,116 @@ msgid "" "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 "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:507 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:494 +#: 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 "WÅ¡Ä› prawa wumÄ›njenjene." + +#. 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3213,7 +3070,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3229,11 +3086,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" @@ -3266,16 +3123,12 @@ 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." 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 "Žana zdźělenka podata." @@ -3288,7 +3141,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Wospjetowany" @@ -3296,37 +3149,11 @@ msgstr "Wospjetowany" msgid "Repeated!" msgstr "Wospjetowany!" -#: 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 #, 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 @@ -3339,13 +3166,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)." -msgstr "" - -#: actions/repliesrss.php:72 -#, php-format -msgid "Replies to %1$s on %2$s!" +"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action." +"newnotice%%%%?status_textarea=%3$s)." msgstr "" #: actions/revokerole.php:75 @@ -3356,21 +3178,13 @@ 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" -#: 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:391 +#: lib/adminpanelaction.php:392 msgid "Sessions" msgstr "Posedźenja" @@ -3410,10 +3224,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" @@ -3424,12 +3238,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" @@ -3441,7 +3255,7 @@ msgstr "" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Aplikaciske akcije" #: actions/showapplication.php:236 msgid "Reset key & secret" @@ -3449,7 +3263,7 @@ msgstr "" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Aplikaciske informacije" #: actions/showapplication.php:263 msgid "Consumer key" @@ -3486,25 +3300,6 @@ msgstr "ChceÅ¡ woprawdźe swój pÅ™etrjebowarski kluÄ a potajny kod wróćo sta msgid "%1$s's favorite notices, page %2$d" msgstr "Preferowane zdźělenki wot %1$s, strona %2$d" -#: 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 " @@ -3514,16 +3309,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 @@ -3533,7 +3328,7 @@ msgstr "" #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format msgid "%s group" -msgstr "" +msgstr "skupina %s" #: actions/showgroup.php:84 #, php-format @@ -3549,11 +3344,6 @@ msgstr "Skupinski profil" msgid "URL" msgstr "URL" -#: 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 "Aliasy" @@ -3562,27 +3352,7 @@ msgstr "Aliasy" msgid "Group actions" msgstr "Skupinske akcije" -#: 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:453 lib/groupnav.php:91 +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" msgstr "Čłonojo" @@ -3596,11 +3366,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." @@ -3610,7 +3380,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." @@ -3619,7 +3389,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "Administratorojo" @@ -3627,19 +3397,15 @@ msgstr "Administratorojo" msgid "No such message." msgstr "PowÄ›sć njeeksistuje." -#: 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 "" +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." @@ -3660,21 +3426,6 @@ msgstr "%1$s, strona %2$d" msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" msgstr "PowÄ›sćowy kanal za %1$s je %2$s (RSS 1.0) markÄ›rowaÅ‚" -#: 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" @@ -3694,8 +3445,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 @@ -3715,19 +3466,6 @@ msgid "" "[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 "ZakÅ‚adne nastajenja za tute sydÅ‚o StatusNet." @@ -3763,7 +3501,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" @@ -3781,10 +3519,6 @@ msgstr "" 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 "Lokalny" @@ -3795,7 +3529,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" @@ -3817,10 +3551,6 @@ msgstr "Tekstowy limit" msgid "Maximum number of characters for notices." msgstr "Maksimalna liÄba znamjeÅ¡kow za zdźělenki." -#: 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 "" @@ -3872,24 +3602,13 @@ msgstr "SMS k dispoziciji njesteji." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM-adresa" - -#. 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 "" +msgstr "SMS-adresa" #. 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 @@ -3898,7 +3617,6 @@ msgstr "" #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Wobkrućić" @@ -3915,9 +3633,8 @@ msgstr "" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Nastajenja" +msgstr "SMS-nastajenja" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -3928,20 +3645,14 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Nastajenja skÅ‚adowane." +msgstr "SMS-nastajenja skÅ‚adowane." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." msgstr "Žane telefonowe ÄisÅ‚o." -#. 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." @@ -3962,25 +3673,23 @@ 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 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Wobkrućenje pÅ™etorhnjene." +msgstr "SMS-wobkrućenje pÅ™etorhnjene." #. 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 "To twoje telefonowe ÄisÅ‚o njeje." #. 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 telefonowe ÄisÅ‚o" +msgstr "Telefonowe ÄisÅ‚o za SMS bu wotstronjene." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4008,7 +3717,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 "" @@ -4016,18 +3725,10 @@ msgstr "" msgid "Manage snapshot configuration" msgstr "Konfiguraciju wobrazowkoweho fota zrjadować" -#: 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 "" @@ -4036,10 +3737,6 @@ msgstr "" 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 "" @@ -4052,10 +3749,6 @@ msgstr "Frekwenca" 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 "" @@ -4068,9 +3761,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." @@ -4116,14 +3810,7 @@ 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 "" +msgstr "%s abonentow nima. ChceÅ¡ prÄ›ni być?" #: actions/subscriptions.php:52 #, php-format @@ -4154,11 +3841,6 @@ msgid "" "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" @@ -4167,26 +3849,6 @@ msgstr "Jabber" msgid "SMS" msgstr "SMS" -#: 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 "Žadyn argument ID." @@ -4220,38 +3882,13 @@ 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/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Å‚." -#: actions/unsandbox.php:72 -msgid "User is not sandboxed." -msgstr "" - -#: actions/unsilence.php:72 -msgid "User is not silenced." -msgstr "" - #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Žadyn profil z tym ID." +msgstr "Žadyn profilowy ID w napraÅ¡owanju." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4284,7 +3921,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 @@ -4292,10 +3929,6 @@ msgstr "" msgid "Profile" msgstr "Profil" -#: actions/useradminpanel.php:222 -msgid "Bio Limit" -msgstr "" - #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." msgstr "" @@ -4316,10 +3949,6 @@ msgstr "Powitanski tekst za nowych wužiwarjow (maks. 255 znamjeÅ¡kow)." msgid "Default subscription" msgstr "Standardny abonement" -#: actions/useradminpanel.php:242 -msgid "Automatically subscribe new users to this user." -msgstr "" - #: actions/useradminpanel.php:251 msgid "Invitations" msgstr "PÅ™eproÅ¡enja" @@ -4334,7 +3963,7 @@ msgstr "" #: actions/userauthorization.php:105 msgid "Authorize subscription" -msgstr "" +msgstr "Abonement awtorizować" #: actions/userauthorization.php:110 msgid "" @@ -4343,7 +3972,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 +3995,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" @@ -4390,44 +4019,20 @@ msgid "" "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 "" +msgstr "URL awatara '%s' njeje pÅ‚aćiwy" #: 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 "" +msgstr "WopaÄny wobrazowy typ za awatarowy URL '%s'." #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4447,12 +4052,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 +4069,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 +4099,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,194 +4107,246 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -msgid "You are banned from sending direct messages." +#. 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: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 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Zmylk datoweje banki pÅ™i zasunjenju wužiwarja OAuth-aplikacije." +msgstr "Zmylk datoweje banki pÅ™i zasunjenju haÅ¡eje tafliÄki: %s" -#: classes/Notice.php:245 -msgid "Problem saving notice. Too long." -msgstr "" - -#: classes/Notice.php:249 -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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -msgid "You are banned from posting notices on this site." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" msgstr "" -#: classes/Notice.php:332 classes/Notice.php:358 -msgid "Problem saving notice." -msgstr "" - -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -msgid "You have been banned from subscribing." +#. 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 "" -#: classes/Subscription.php:78 +#. 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:339 +msgid "Unable to save tag." +msgstr "Njeje móžno, tafliÄku skÅ‚adować." + +#. 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 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" @@ -4701,199 +4358,173 @@ msgid "Other" msgstr "Druhe" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Strona bjez titula" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Wosobinski" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Zwjazać" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "PÅ™eprosyć" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Wotzjewić" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrować" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "PÅ™i sydle pÅ™izjewić" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "PÅ™izjewjenje" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Pomhaj!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Pomoc" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Za ludźimi abo tekstom pytać" -#: lib/action.php:493 +#: lib/action.php:516 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 -msgid "Site notice" -msgstr "" - -#. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 -msgid "Local views" -msgstr "" - -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -msgid "Page notice" -msgstr "" - -#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -msgid "Secondary site navigation" -msgstr "" - #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Pomoc" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Wo" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Huste praÅ¡enja" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Priwatnosć" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 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:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4901,13 +4532,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4915,55 +4546,45 @@ msgid "" "org/licensing/licenses/agpl-3.0.html)." msgstr "" -#. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -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:873 #, 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:880 #, 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:884 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:897 #, 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 -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:1247 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:1257 msgid "Before" -msgstr "" +msgstr "PÅ™ed" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -4971,18 +4592,18 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "" +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,90 +4613,74 @@ 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 "" - -#. 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 "" +msgstr "saveSettings() njeimplementowany." #. 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 -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 -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:95 +#: 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 @@ -5088,11 +4693,6 @@ msgstr "Wopisaj swoju aplikaciju z %d znamjeÅ¡kami" msgid "Describe your application" msgstr "Wopisaj swoju aplikaciju" -#. 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" @@ -5101,12 +4701,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 @@ -5116,12 +4716,12 @@ msgstr "" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 msgid "Browser" -msgstr "" +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 +4731,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 +4751,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 @@ -5166,7 +4766,6 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" msgstr "WotwoÅ‚ać" @@ -5174,7 +4773,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 @@ -5184,74 +4783,65 @@ 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" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -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" -msgstr "" +msgstr "PÅ™ikaz wuwjedźeny" #: 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" -msgstr "Zdźělenka z tym ID njeeksistuje" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Zdźělenka z tym ID njeeksistuje." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Wužiwar nima poslednju powÄ›sć" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "Wužiwar nima poslednju powÄ›sć." -#. 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 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Tutón pÅ™ikaz hišće njeje implementowany." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" +msgid "Nudge sent to %s." msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5259,55 +4849,34 @@ msgid "" "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 "Sy hižo ÄÅ‚on teje skupiny" - -#. 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 "NjebÄ› móžno wužiwarja %1$s skupinje %2%s pÅ™idać." - -#. 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 "NjebÄ› móžno wužiwarja %1$s ze skupiny %2$s wotstronić." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 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 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Wo: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5316,116 +4885,105 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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Å‚." -#. 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 "Direktna powÄ›sć do %s pósÅ‚ana" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." -msgstr "" - -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "NjemóžeÅ¡ swójsku powÄ›sć wospjetować" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Tuta zdźělenka bu hižo wospjetowana" +msgstr "Zmylk pÅ™i sÅ‚anju direktneje powÄ›sće," #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Zdźělenka wot %s wospjetowana" +msgid "Notice from %s repeated." +msgstr "PowÄ›sć wot %s wospjetowana." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Zmylk pÅ™i wospjetowanju zdźělenki" -#: lib/command.php:562 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "" +msgid "Reply to %s sent." +msgstr "WotmoÅ‚wa na %s pósÅ‚ana." -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "WotmoÅ‚wa na %s pósÅ‚ana" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." +msgstr "Zmylk pÅ™i skÅ‚adowanju powÄ›sće" + +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "" - -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "OMB-profile njedadźa so pÅ™ez pÅ™ikaz abonować." -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." 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 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." -msgstr "" +msgstr "PÅ™ikaz hišće njeimplementowany." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "" +msgstr "Zdźělenje znjemóžnjene." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." -msgstr "" +msgstr "Zdźělenje njeda so znjemóžnić." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." -msgstr "" +msgstr "Zdźělenje zmóžnjene." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." +msgstr "Zdźělenje njeda so zmóžnić." + +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" - -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, php-format -msgid "Unsubscribed %s" -msgstr "%s wotskazany" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "" +msgstr "Njejsy nikoho abonowaÅ‚." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Sy tutu wosobu abonowaÅ‚:" @@ -5433,11 +4991,16 @@ msgstr[1] "Sy tutej wosobje abonowaÅ‚:" msgstr[2] "Sy tute wosoby abonowaÅ‚:" msgstr[3] "Sy tute wosoby abonowaÅ‚:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "" +msgstr "Nichtó njeje će abonowaÅ‚." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Tuta wosoba je će abonowaÅ‚a:" @@ -5445,11 +5008,16 @@ msgstr[1] "Tutej wosobje stej će abonowaÅ‚oj:" msgstr[2] "Tute wosoby su će abonowali:" msgstr[3] "Tute wosoby su će abonowali:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." -msgstr "" +msgstr "Njejsy ÄÅ‚on w žanej skupinje." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Sy ÄÅ‚on tuteje skupiny:" @@ -5457,7 +5025,7 @@ msgstr[1] "Sy ÄÅ‚on tuteju skupinow:" msgstr[2] "Sy ÄÅ‚on tutych skupinow:" msgstr[3] "Sy ÄÅ‚on tutych skupinow:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5505,15 +5073,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" @@ -5521,11 +5089,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" @@ -5533,7 +5101,7 @@ msgstr "Zwiski" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Awtorizowane zwjazane aplikacije" #: lib/dberroraction.php:60 msgid "Database error" @@ -5547,22 +5115,8 @@ msgstr "Dataju nahrać" 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 "" +"MóžeÅ¡ swój wosobinski pozadkowy wobraz nahrać. Maksimalna datajowa wulkosć " +"je 2 MB." #: lib/feed.php:85 msgid "RSS 1.0" @@ -5582,7 +5136,7 @@ msgstr "FOAF" #: lib/feedlist.php:64 msgid "Export data" -msgstr "" +msgstr "Daty eksportować" #: lib/galleryaction.php:121 msgid "Filter tags" @@ -5606,17 +5160,13 @@ msgstr "" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "Start" #: 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 "Skupinu abo temu wopisać" @@ -5630,6 +5180,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 @@ -5644,15 +5196,10 @@ msgstr "Skupina" msgid "Blocked" msgstr "Blokowany" -#: lib/groupnav.php:102 -#, php-format -msgid "%s blocked users" -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" @@ -5676,24 +5223,21 @@ msgstr "Skupiny z najwjace ÄÅ‚onami" msgid "Groups with most posts" msgstr "Skupiny z njawjace powÄ›sćemi" -#: 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 "" +"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." @@ -5701,11 +5245,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." @@ -5735,7 +5279,7 @@ msgstr "Njeznate žórÅ‚o postoweho kašćika %d." #: lib/joinform.php:114 msgid "Join" -msgstr "" +msgstr "Zastupić" #: lib/leaveform.php:114 msgid "Leave" @@ -5778,8 +5322,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" @@ -5795,19 +5346,13 @@ 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 -#, 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" @@ -5821,30 +5366,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 " @@ -5861,13 +5406,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" @@ -5887,13 +5432,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" @@ -5915,21 +5460,19 @@ 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 "" - -#: lib/mail.php:651 -#, php-format -msgid "%s (@%s) sent a notice to your attention" -msgstr "" +"DospoÅ‚nu rozmoÅ‚wu móžes tu Äitać:\n" +"\n" +"%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" @@ -5958,7 +5501,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 "" @@ -5966,13 +5509,13 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 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." @@ -5994,6 +5537,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." @@ -6015,30 +5560,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." @@ -6051,11 +5596,11 @@ msgstr "Direktnu zdźělenku pósÅ‚ać" msgid "To" msgstr "Komu" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "K dispoziciji stejace znamjeÅ¡ka" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "PósÅ‚ać" @@ -6064,94 +5609,90 @@ msgstr "PósÅ‚ać" msgid "Send a notice" msgstr "Zdźělenku pósÅ‚ać" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" -msgstr "" +msgstr "Å to je, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "PÅ™ipowÄ›snyć" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Dataju pÅ™ipowÄ›snyć" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "MÄ›stno dźělić" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Njedźěl moje mÄ›stno" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 "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 "w" + +#: lib/noticelist.php:502 +msgid "web" msgstr "" -#: lib/noticelist.php:567 +#: lib/noticelist.php:568 msgid "in context" -msgstr "" +msgstr "w konteksće" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Wospjetowany wot" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Na tutu zdźělenku wotmoÅ‚wić" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "WotmoÅ‚wić" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Zdźělenka wospjetowana" -#: 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 "Zmylk pÅ™i zasunjenju noweho profila" @@ -6162,7 +5703,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" @@ -6174,7 +5715,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" @@ -6190,7 +5731,7 @@ msgstr "Fawority" #: lib/personalgroupnav.php:125 msgid "Inbox" -msgstr "" +msgstr "Dochadny póst" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" @@ -6198,7 +5739,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" @@ -6209,7 +5750,7 @@ msgstr "Twoje pósÅ‚ane powÄ›sće" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Njeznaty" @@ -6240,15 +5781,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" @@ -6262,15 +5803,11 @@ msgstr "Wužiwarske skupiny" msgid "Recent tags" msgstr "" -#: lib/publicgroupnav.php:88 -msgid "Featured" -msgstr "" - #: lib/publicgroupnav.php:92 msgid "Popular" msgstr "Woblubowany" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Žane wróćenske argumenty." @@ -6291,17 +5828,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 "" - -#: lib/sandboxform.php:67 -msgid "Sandbox" -msgstr "" - -#: lib/sandboxform.php:78 -msgid "Sandbox this user" -msgstr "" +msgstr "Žadyn jednotliwy wužiwar za modus jednotliweho wužiwarja definowany." #: lib/searchaction.php:120 msgid "Search site" @@ -6343,38 +5872,25 @@ msgstr "WotrÄ›zk bjez titula" msgid "More..." msgstr "Wjace..." -#: 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 "" +msgstr "Ludźo, kotrychž %s abonuje" #: lib/subgroupnav.php:91 #, php-format msgid "People subscribed to %s" -msgstr "" +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" msgstr "PÅ™eprosyć" -#: 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" @@ -6389,6 +5905,52 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "SkÅ‚adowanje Å¡ata je so njeporadźiÅ‚o." + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Zmylk pÅ™i woÄinjenju Å¡atoweho archiwa." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6397,18 +5959,10 @@ msgstr "" 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 "Tutoho wužiwarja wotskazać" @@ -6417,11 +5971,6 @@ msgstr "Tutoho wužiwarja wotskazać" msgid "Unsubscribe" msgstr "Wotskazać" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "Wužiwar %s (%d) nima profil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Awatar wobdźěłać" @@ -6432,7 +5981,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" @@ -6452,7 +6001,7 @@ msgstr "PowÄ›sć" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +msgstr "ModerÄ›rować" #: lib/userprofile.php:364 msgid "User role" @@ -6466,59 +6015,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:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "pÅ™ed nÄ›hdźe jednym lÄ›tom" @@ -6533,8 +6082,3 @@ msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" "%s pÅ‚aćiwa barba njeje! Wužij 3 heksadecimalne znamjeÅ¡ka abo 6 " "heksadecimalnych znamjeÅ¡kow." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" diff --git a/locale/ia/LC_MESSAGES/statusnet.po b/locale/ia/LC_MESSAGES/statusnet.po index cda28819e8..9575fa6036 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:04+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:33+0000\n" "Language-Team: Interlingua\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,38 +83,38 @@ 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 -#, fuzzy msgid "No such page." -msgstr "Pagina non existe" +msgstr "Pagina non existe." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -122,33 +122,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:114 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." @@ -156,7 +156,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 " @@ -166,86 +166,85 @@ 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" "Tu debe specificar un parametro nominate 'device' con un del valores: sms, " -"im, none" +"im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Non poteva actualisar le usator." @@ -265,7 +264,7 @@ msgstr "Non poteva salveguardar le profilo." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -324,47 +323,48 @@ msgstr "Messages directe a %s" msgid "All the direct messages sent to %s" msgstr "Tote le messages directe inviate a %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Message sin texto!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Isto es troppo longe. Le maximo es %d characteres." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Usator destinatario non trovate." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -379,9 +379,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." @@ -391,124 +391,134 @@ 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Alias invalide: \"%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 -#, 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 "Gruppo non trovate!" +msgstr "Gruppo non trovate." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "Gruppos del quales %s es membro" +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." @@ -519,15 +529,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 @@ -596,12 +606,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:463 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 @@ -609,8 +619,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" @@ -626,11 +636,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." @@ -639,71 +649,77 @@ msgstr "Tu non pote deler le stato de un altere usator." msgid "No such notice." msgstr "Nota non trovate." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Non pote repeter tu proprie nota." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trovate." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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!" @@ -718,16 +734,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." @@ -781,7 +801,7 @@ msgid "Preview" msgstr "Previsualisation" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Deler" @@ -821,11 +841,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 " @@ -840,17 +860,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 "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" @@ -859,23 +878,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -885,8 +905,8 @@ msgstr "Falleva de salveguardar le information del blocada." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Gruppo non existe." @@ -918,9 +938,9 @@ msgstr "Disblocar iste usator" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Publicar in " +msgstr "Publicar in %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -936,9 +956,9 @@ msgstr "Iste codice de confirmation non es pro te!" #. 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 "Typo de adresse %s non recognoscite" +msgstr "Le typo de adresse %s non es recognoscite." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -999,7 +1019,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:1307 msgid "There was a problem with your session token." msgstr "Il habeva un problema con tu indicio de session." @@ -1033,10 +1053,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." @@ -1064,7 +1084,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Deler iste nota" @@ -1104,45 +1124,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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Thema non disponibile: %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" @@ -1152,57 +1182,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 @@ -1212,7 +1250,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" @@ -1326,7 +1364,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." @@ -1365,7 +1404,6 @@ msgstr "Adresse de e-mail actualmente confirmate." #: 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 "Remover" @@ -1384,7 +1422,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 "Cancellar" @@ -1399,7 +1436,6 @@ msgstr "Le adresse de e-mail, como \"nomine@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 "Adder" @@ -1426,16 +1462,14 @@ 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 "Nove" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferentias" +msgstr "Preferentias de e-mail" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1474,9 +1508,8 @@ msgstr "Publicar un MicroID pro mi adresse de e-mail." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Preferentias de apparentia salveguardate." +msgstr "Preferentias de e-mail salveguardate." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1489,7 +1522,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." @@ -1532,15 +1565,13 @@ msgstr "Nulle confirmation pendente a cancellar." #. 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 "Iste adresse de messageria instantanee es erronee." +msgstr "Iste adresse de e-mail es erronee." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Confirmation cancellate." +msgstr "Confirmation de e-mail cancellate." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1550,9 +1581,8 @@ msgstr "Isto non es tu adresse de e-mail." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Le adresse ha essite removite." +msgstr "Le adresse de e-mail ha essite removite." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1690,9 +1720,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "Le servicio remote usa un version incognite del protocollo OMB." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Error in actualisar le profilo remote" +msgstr "Error durante le actualisation del profilo remote." #: actions/getfile.php:79 msgid "No such file." @@ -1720,13 +1749,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." @@ -1867,7 +1896,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" @@ -2012,9 +2041,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferentias" +msgstr "Preferentias de messageria instantanee" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2086,15 +2114,13 @@ msgstr "Iste adresse de messageria instantanee es erronee." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Non poteva deler confirmation de e-mail." +msgstr "Non poteva deler confirmation de messageria instantanee." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Confirmation cancellate." +msgstr "Confirmation de messageria instantanee cancellate." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2104,9 +2130,8 @@ msgstr "Isto non es tu ID de Jabber." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Le adresse ha essite removite." +msgstr "Le adresse de messageria instantanee ha essite removite." #: actions/inbox.php:59 #, php-format @@ -2129,9 +2154,9 @@ msgid "Invites have been disabled." msgstr "Le invitationes ha essite disactivate." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "Tu debe aperir un session pro invitar altere usatores a usar %s" +msgstr "Tu debe aperir un session pro invitar altere usatores a usar %s." #: actions/invite.php:72 #, php-format @@ -2152,7 +2177,7 @@ msgstr "Tu es a subscribite a iste usatores:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2276,64 +2301,61 @@ msgstr "Tu debe aperir un session pro facer te membro de un gruppo." msgid "No nickname or ID." msgstr "Nulle pseudonymo o 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" -msgstr "%1$s es ora membro del gruppo %2$s" +msgstr "%1$s se jungeva al gruppo %2$s" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "Tu debe aperir un session pro quitar un gruppo." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Tu non es membro de iste gruppo." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2341,14 +2363,16 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Aperi un session con tu nomine de usator e contrasigno. Non ha ancora un " -"nomine de usator? [Crea](%%action.register%%) un nove conto." +"Non ha ancora un nomine de usator? [Crea](%%action.register%%) un nove conto." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2370,9 +2394,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "Non pote facer %1$s administrator del gruppo %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Nulle stato actual" +msgstr "Nulle stato actual." #: actions/newapplication.php:52 msgid "New Application" @@ -2406,12 +2429,15 @@ msgstr "Usa iste formulario pro crear un nove gruppo." msgid "New message" msgstr "Nove message" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Tu non pote inviar un message a iste usator." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Nulle contento!" @@ -2419,7 +2445,8 @@ msgstr "Nulle contento!" msgid "No recipient specified." msgstr "Nulle destinatario specificate." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2430,12 +2457,14 @@ msgstr "" msgid "Message sent" msgstr "Message inviate" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Message directe a %s inviate." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Error de Ajax" @@ -2443,7 +2472,7 @@ msgstr "Error de Ajax" msgid "New notice" msgstr "Nove nota" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Nota publicate" @@ -2496,7 +2525,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." @@ -2539,9 +2568,9 @@ msgid "You are not a user of that application." msgstr "Tu non es usator de iste application." #: actions/oauthconnectionssettings.php:186 -#, fuzzy, php-format +#, php-format msgid "Unable to revoke access for app: %s." -msgstr "Impossibile revocar le accesso del application: " +msgstr "Impossibile revocar le accesso del application: %s." #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." @@ -2553,31 +2582,30 @@ msgstr "" "Le programmatores pote modificar le parametros de registration pro lor " "applicationes " -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "Le nota ha nulle profilo" +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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "typo de contento " +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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Formato de datos non supportate." @@ -2681,7 +2709,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" @@ -2693,11 +2721,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." @@ -2718,7 +2746,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" @@ -2727,24 +2755,24 @@ msgid "Path and server settings for this StatusNet site." msgstr "Configuration de cammino e servitor pro iste sito StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Directorio de thema non legibile: %s" +msgstr "Directorio de thema non legibile: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Directorio de avatar non scriptibile: %s" +msgstr "Directorio de avatar non scriptibile: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Directorio de fundo non scriptibile: %s" +msgstr "Directorio de fundo non scriptibile: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Directorio de localitates non scriptibile: %s" +msgstr "Directorio de localitates non scriptibile: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2884,9 +2912,9 @@ msgid "People search" msgstr "Recerca de personas" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Etiquetta de personas invalide: %s" +msgstr "Etiquetta de personas invalide: %s." #: actions/peopletag.php:142 #, php-format @@ -2894,9 +2922,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "Usatores auto-etiquettate con %1$s - pagina %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Le contento del nota es invalide" +msgstr "Le contento del nota es invalide." #: actions/postnotice.php:101 #, php-format @@ -2924,43 +2951,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\"" @@ -3003,7 +3030,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)." @@ -3043,9 +3070,9 @@ msgid "Settings saved." msgstr "Preferentias confirmate." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "Ultra le limite de pagina (%s)" +msgstr "Ultra le limite de pagina (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3150,7 +3177,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." @@ -3264,7 +3291,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." @@ -3272,40 +3299,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:507 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 -#, fuzzy +#: 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. " @@ -3313,44 +3339,68 @@ 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:494 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"io comprende que le contento e datos de %1$s es private e confidential." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Tote le derectos reservate." + +#. 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 "" -" excepte iste datos private: contrasigno, adresse de e-mail, adresse de " -"messageria instantanee, numero de telephono." +"Mi texto e files es disponibile sub %s excepte iste datos private: " +"contrasigno, adresse de e-mail, adresse de messageria instantanee, numero de " +"telephono." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3382,7 +3432,7 @@ msgstr "" "\n" "Gratias pro inscriber te, e nos spera que iste servicio te place." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3451,7 +3501,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." @@ -3465,7 +3515,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repetite" @@ -3503,10 +3553,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 @@ -3520,8 +3570,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)." @@ -3539,7 +3589,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" @@ -3553,7 +3603,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" @@ -3596,7 +3646,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" @@ -3607,12 +3657,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" @@ -3702,22 +3752,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." @@ -3775,7 +3825,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" @@ -3789,11 +3839,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." @@ -3808,7 +3858,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." @@ -3821,7 +3871,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" @@ -3899,11 +3949,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 @@ -3965,9 +4015,8 @@ msgid "Minimum text limit is 0 (unlimited)." msgstr "Le limite minimal del texto es 0 (illimitate)." #: actions/siteadminpanel.php:171 -#, fuzzy msgid "Dupe limit must be one or more seconds." -msgstr "Le limite de duplicatos debe esser 1 o plus secundas." +msgstr "Le limite de duplicatos debe esser un o plus secundas." #: actions/siteadminpanel.php:221 msgid "General" @@ -4033,7 +4082,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" @@ -4058,9 +4107,8 @@ msgid "Unable to save site notice." msgstr "Impossibile salveguardar le aviso del sito." #: actions/sitenoticeadminpanel.php:113 -#, fuzzy msgid "Max length for the site-wide notice is 255 chars." -msgstr "Le longitude maxime del aviso a tote le sito es 255 characteres" +msgstr "Le longitude maxime del aviso a tote le sito es 255 characteres." #: actions/sitenoticeadminpanel.php:176 msgid "Site notice text" @@ -4094,9 +4142,8 @@ msgstr "SMS non es disponibile." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Adresse de messageria instantanee" +msgstr "Adresse SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4120,7 +4167,6 @@ msgstr "Entra le codice que tu ha recipite in tu telephono." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Confirmar" @@ -4137,9 +4183,8 @@ msgstr "Numero de telephono, sin punctuation o spatios, con indicativo" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferentias" +msgstr "Preferentias de SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4152,9 +4197,8 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Preferentias confirmate." +msgstr "Preferentias de SMS confirmate." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4192,9 +4236,8 @@ msgstr "Iste codice de confirmation es incorrecte." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Confirmation cancellate." +msgstr "Confirmation de SMS cancellate." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4204,9 +4247,8 @@ msgstr "Isto non es tu numero de telephono." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Numero de telephono pro SMS" +msgstr "Le numero de telephono pro SMS ha essite removite." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4237,7 +4279,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" @@ -4258,7 +4300,6 @@ msgid "Invalid snapshot report URL." msgstr "Le URL pro reportar instantaneos es invalide." #: actions/snapshotadminpanel.php:200 -#, fuzzy msgid "Randomly during web hit" msgstr "Aleatorimente durante un accesso web" @@ -4298,7 +4339,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." @@ -4477,10 +4519,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." @@ -4494,7 +4532,6 @@ msgid "User is not silenced." msgstr "Le usator non es silentiate." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." msgstr "Nulle ID de profilo in requesta." @@ -4592,7 +4629,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" @@ -4603,7 +4640,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" @@ -4722,18 +4759,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, " @@ -4742,11 +4779,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 " @@ -4758,7 +4795,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 " @@ -4770,7 +4807,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 " @@ -4779,93 +4816,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:805 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4873,71 +4957,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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problema salveguardar nota." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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." @@ -4977,215 +5109,215 @@ msgid "Other" msgstr "Altere" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Navigation primari del sito" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Connecter" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Admin" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Invitar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Clauder session" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Crear conto" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 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:504 msgctxt "MENU" msgid "Login" msgstr "Aperir session" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Adjuta me!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Adjuta" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Cercar personas o texto" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Adjuta" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "A proposito" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "CdS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Confidentialitate" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Insignia" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" "**%%site.name%%** es un servicio de microblog offerite per [%%site.broughtby%" -"%](%%site.broughtbyurl%%). " +"%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5197,55 +5329,55 @@ 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:866 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:873 #, 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:880 #, 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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +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:1236 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:1247 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:1257 msgid "Before" msgstr "Ante" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" "Expectava le elemento-radice de un syndication, ma recipeva un documento XML " @@ -5255,11 +5387,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "Non pote ancora tractar contento remote." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Non pote ancora tractar contento XML incastrate." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Non pote ancora tractar contento Base64 incastrate." @@ -5290,64 +5422,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:95 +#: 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 " @@ -5438,25 +5570,22 @@ msgstr "Cancellar" #. TRANS: Application access type #: lib/applicationlist.php:136 -#, fuzzy msgid "read-write" -msgstr "Lectura e scriptura" +msgstr "lectura-scriptura" #. TRANS: Application access type #: lib/applicationlist.php:138 -#, fuzzy msgid "read-only" -msgstr "Lectura solmente" +msgstr "lectura solmente" #. 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 "" +msgstr "Accesso \"%2$s\" approbate le %1$s." #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" msgstr "Revocar" @@ -5484,11 +5613,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" @@ -5504,44 +5633,53 @@ msgstr "Commando complete" msgid "Command failed" msgstr "Commando fallite" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Non existe un nota con iste ID" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Non existe un nota con iste ID." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Usator non ha ultime nota" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "Le usator non ha un ultime nota." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Non poteva trovar un usator con pseudonymo %s" +msgid "Could not find a user with nickname %s." +msgstr "Non poteva trovar un usator con pseudonymo %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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Non poteva trovar un usator local con pseudonymo %s" +msgid "Could not find a local user with nickname %s." +msgstr "Non poteva trovar un usator local con pseudonymo %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Pardono, iste commando non es ancora implementate." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Non ha multe senso pulsar te mesme!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Pulsata inviate a %s" +msgid "Nudge sent to %s." +msgstr "Pulsata inviate a %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5552,55 +5690,53 @@ msgstr "" "Subscriptores: %2$s\n" "Notas: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Nota marcate como favorite." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Tu es ja membro de iste gruppo" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, 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." +msgid "%1$s joined group %2$s." +msgstr "%1$s se jungeva al gruppo %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s quitava le gruppo %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Pagina personal: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "A proposito: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5611,144 +5747,169 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "Message troppo longe - maximo es %1$d characteres, tu inviava %2$d." -#. 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 "Message directe a %s inviate" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Error durante le invio del message directe." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Non pote repeter tu proprie nota" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Iste nota ha ja essite repetite" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Nota de %s repetite" +msgid "Notice from %s repeated." +msgstr "Nota de %s repetite." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Error durante le repetition del nota." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Nota troppo longe - maximo es %d characteres, tu inviava %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "Nota troppo longe - maximo es %d characteres, tu inviava %d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Responsa a %s inviate" +msgid "Reply to %s sent." +msgstr "Responsa a %s inviate." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Errur durante le salveguarda del nota." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Specifica le nomine del usator al qual subscriber te" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Specifica le nomine del usator al qual subscriber te." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Impossibile subscriber se a profilos OMB per medio de un commando." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Subscribite a %s" +msgid "Subscribed to %s." +msgstr "Subscribite a %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Specifica le nomine del usator al qual cancellar le subscription" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Specifica le nomine del usator al qual cancellar le subscription." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "Subscription a %s cancellate" +msgid "Unsubscribed from %s." +msgstr "Subscription a %s cancellate." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Commando non ancora implementate." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notification disactivate." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Non pote disactivar notification." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notification activate." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Non pote activar notification." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Le commando de apertura de session es disactivate" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Le commando de apertura de session es disactivate." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" "Iste ligamine pote esser usate solmente un vice, e es valide durante " -"solmente 2 minutas: %s" +"solmente 2 minutas: %s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "Subscription de %s cancellate" +msgid "Unsubscribed %s." +msgstr "Subscription de %s cancellate." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Tu non es subscribite a alcuno." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Tu es subscribite a iste persona:" msgstr[1] "Tu es subscribite a iste personas:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Necuno es subscribite a te." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Iste persona es subscribite a te:" msgstr[1] "Iste personas es subscribite a te:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Tu non es membro de alcun gruppo." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Tu es membro de iste gruppo:" msgstr[1] "Tu es membro de iste gruppos:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6123,8 +6284,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" @@ -6150,19 +6321,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" @@ -6184,30 +6355,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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "Iste numero de telephono attende confirmation." +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 " @@ -6235,13 +6406,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" @@ -6275,13 +6446,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" @@ -6320,21 +6491,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 "" +"Le conversation complete pote esser legite hic:\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) 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" @@ -6360,6 +6534,28 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) ha inviate un nota a tu attention (un '@-responsa') in %2$s.\n" +"\n" +"Le nota es hic:\n" +"\n" +"%3$s\n" +"\n" +"Illo dice:\n" +"\n" +"%4$s\n" +"\n" +"%5$sTu pote responder hic:\n" +"\n" +"%6$s\n" +"\n" +"Le lista de tote le @-responsas pro te es hic:\n" +"\n" +"%7$s\n" +"\n" +"Cordialmente,\n" +"%2$s\n" +"\n" +"P.S. Tu pote disactivar iste notificationes electronic hic: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6374,9 +6570,9 @@ msgstr "" "altere usatores in conversation. Altere personas pote inviar te messages que " "solmente tu pote leger." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "de" +msgstr "via" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6433,24 +6629,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." @@ -6463,11 +6659,11 @@ msgstr "Inviar un nota directe" msgid "To" msgstr "A" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Characteres disponibile" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Inviar" @@ -6476,28 +6672,28 @@ msgstr "Inviar" msgid "Send a notice" msgstr "Inviar un nota" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Como sta, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Annexar" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Annexar un file" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Divulgar mi loco" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Non divulgar mi loco" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6506,51 +6702,55 @@ 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" +msgstr "in" -#: lib/noticelist.php:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "in contexto" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetite per" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Responder a iste nota" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Nota repetite" @@ -6623,7 +6823,7 @@ msgstr "Tu messages inviate" msgid "Tags in %s's notices" msgstr "Etiquettas in le notas de %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Incognite" @@ -6660,7 +6860,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." @@ -6684,7 +6884,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." @@ -6705,7 +6905,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." @@ -6803,6 +7003,60 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Salveguarda del apparentia fallite." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" +"Le thema contine nomines de extension de file insecur; pote esser insecur." + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6831,11 +7085,6 @@ msgstr "Cancellar subscription a iste usator" msgid "Unsubscribe" msgstr "Cancellar subscription" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "Le usator %s (%d) non ha un profilo." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Modificar avatar" @@ -6883,56 +7132,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "circa un anno retro" @@ -6945,8 +7194,3 @@ msgstr "%s non es un color valide!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s non es un color valide! Usa 3 o 6 characteres hexadecimal." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Message troppo longe - maximo es %1$d characteres, tu inviava %2$d." diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po index 731a948685..6fb275b237 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:07+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:34+0000\n" "Language-Team: Icelandic\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: is\n" "X-Message-Group: out-statusnet\n" @@ -21,48 +21,16 @@ msgstr "" "= 31 && n % 100 != 41 && n % 100 != 51 && n % 100 != 61 && n % 100 != 71 && " "n % 100 != 81 && n % 100 != 91);\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy -msgid "Access" -msgstr "Samþykkja" - -#. TRANS: Page notice -#: actions/accessadminpanel.php:67 -#, fuzzy -msgid "Site access settings" -msgstr "Stillingar fyrir mynd" - -#. TRANS: Form legend for registration form. -#: actions/accessadminpanel.php:161 -#, fuzzy -msgid "Registration" -msgstr "Nýskrá" - #. TRANS: Checkbox instructions for admin setting "Private" #: 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 -#, fuzzy -msgctxt "LABEL" -msgid "Private" -msgstr "Friðhelgi" - #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." msgstr "" -#. TRANS: Checkbox label for configuring site as invite only. -#: actions/accessadminpanel.php:176 -#, fuzzy -msgid "Invite only" -msgstr "Bjóða" - #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." @@ -73,97 +41,67 @@ msgstr "" msgid "Closed" msgstr "" -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "Stillingar fyrir mynd" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -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/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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -#, fuzzy, php-format +#: actions/all.php:90 +#, php-format msgid "%1$s and friends, page %2$d" -msgstr "%s og vinirnir, síða %d" +msgstr "%s og vinirnir" #. 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:114 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 -#, 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,84 +109,48 @@ 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." -msgstr "" - -#. TRANS: H1 text -#: actions/all.php:178 -msgid "You and friends" +"post a notice to 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. %1$s is a user nickname, %2$s is a site name. -#: actions/allrss.php:121 actions/apitimelinefriends.php:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Gat ekki uppfært notanda." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -259,14 +161,9 @@ msgstr "Gat ekki uppfært notanda." msgid "User has no profile." msgstr "Notandi hefur enga persónulega síðu." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Gat ekki vistað persónulega síðu." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,27 +173,6 @@ msgid "" "current configuration." msgstr "" -#: 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 "" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Gat ekki uppfært hóp." - -#: actions/apiblockcreate.php:105 -#, fuzzy -msgid "You cannot block yourself!" -msgstr "Gat ekki uppfært notanda." - #: actions/apiblockcreate.php:126 msgid "Block user failed." msgstr "Mistókst að loka á notanda." @@ -305,11 +181,6 @@ msgstr "Mistókst að loka á notanda." msgid "Unblock user failed." msgstr "Mistókst að opna fyrir notanda." -#: actions/apidirectmessage.php:89 -#, fuzzy, php-format -msgid "Direct messages from %s" -msgstr "Bein skilaboð til %s" - #: actions/apidirectmessage.php:93 #, php-format msgid "All the direct messages sent from %s" @@ -325,49 +196,41 @@ msgstr "Bein skilaboð til %s" msgid "All the direct messages sent to %s" msgstr "Öll bein skilaboð til %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Enginn texti í skilaboðum!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "Þetta er of langt. Hámarkslengd skilaboða er 140 tákn." +msgstr "Þetta er of langt. Hámarkslengd babls er %d tákn." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Móttakandi fannst ekki." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 -#, 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." msgstr "Gat ekki búið til uppáhald." -#: actions/apifavoritedestroy.php:122 -#, 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." -msgstr "Get ekki fylgst með notanda: Notandinn finnst ekki." +msgid "Could not follow user: profile not found." +msgstr "" +"Get ekki fylgst með notanda: %s. Þessi notandi er nú þegar í listanum þínum." #: actions/apifriendshipscreate.php:118 #, php-format @@ -376,167 +239,111 @@ msgstr "" "Get ekki fylgst með notanda: %s. Þessi notandi er nú þegar í listanum þínum." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "Get ekki fylgst með notanda: Notandinn finnst ekki." +msgstr "" +"Get ekki fylgst með notanda: %s. Þessi notandi er nú þegar í listanum þínum." -#: actions/apifriendshipsdestroy.php:120 -#, fuzzy -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." -msgstr "Tvo notendakenni eða skjáarnöfn verða að vera uppgefin." - -#: actions/apifriendshipsshow.php:134 -msgid "Could not determine source user." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." msgstr "" -#: actions/apifriendshipsshow.php:142 -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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "Lýsing er of löng (í mesta lagi 140 tákn)." +msgstr "Staðsetning er of löng (í mesta lagi %d stafir)." -#: 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 -#, fuzzy, php-format -msgid "Invalid alias: \"%s\"." -msgstr "Ógilt merki: \"%s\"" - -#: actions/apigroupcreate.php:275 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 -#, 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 "Aðferð í forritsskilum fannst ekki!" +msgstr "Fannst ekki." -#: actions/apigroupjoin.php:110 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 -msgid "You have been blocked from that group by the admin." -msgstr "" - -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "Gat ekki bætt notandanum %s í hópinn %s" +msgstr "Gat ekki skráð hópmeðlimi." -#: actions/apigroupleave.php:114 -#, 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 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 -#, 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 -#, fuzzy, php-format -msgid "%1$s groups %2$s is a member of." -msgstr "Hópar sem %s er meðlimur í" +msgstr "Gat ekki búið til hóp." #. 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 -#, fuzzy, php-format -msgid "groups on %s" -msgstr "Hópsaðgerðir" - #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Ótæk stærð." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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,21 +351,6 @@ msgstr "Ótæk stærð." msgid "There was a problem with your session token. Try again, please." msgstr "Það kom upp vandamál með setutókann þinn. Vinsamlegast reyndu aftur." -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "Ótækt notendanafn eða lykilorð." - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "Villa kom upp í stillingu notanda." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -600,12 +392,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:463 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 +405,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ð" @@ -622,20 +414,15 @@ msgstr "Lykilorð" msgid "Deny" msgstr "" -#: actions/apioauthauthorize.php:334 -#, fuzzy -msgid "Allow" -msgstr "Allt" - #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: 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." @@ -644,97 +431,65 @@ msgstr "Þú getur ekki eytt stöðu annars notanda." msgid "No such notice." msgstr "Ekkert svoleiðis babl." -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "Get ekki kveikt á tilkynningum." - -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." -msgstr "Eyða þessu babli" +msgstr "Get ekki eytt þ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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Fannst ekki." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy -msgid "Unsupported format." -msgstr "Skráarsnið myndar ekki stutt." - -#: actions/apitimelinefavorites.php:109 -#, fuzzy, php-format -msgid "%1$s / Favorites from %2$s" -msgstr "%s / Uppáhaldsbabl frá %s" - -#: actions/apitimelinefavorites.php:118 -#, 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/apitimelinefavorites.php:110 #, php-format -msgid "%1$s / Updates mentioning %2$s" -msgstr "" +msgid "%1$s / Favorites from %2$s" +msgstr "Staða %1$s á %2$s" -#: actions/apitimelinementions.php:130 +#: actions/apitimelinefavorites.php:119 +#, php-format +msgid "%1$s updates favorited by %2$s / %2$s." +msgstr "%1$s færslur sem svara færslum frá %2$s / %3$s." + +#: 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:107 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:112 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!" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "Svör við %s" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format -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 -#, php-format -msgid "Updates tagged with %1$s on %2$s!" -msgstr "" - -#: actions/attachment.php:73 -msgid "No such attachment." -msgstr "" +#: actions/apitrends.php:87 +msgid "API method under construction." +msgstr "Aðferð í forritsskilum er í þróun." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -757,17 +512,11 @@ msgstr "Ótæk stærð." msgid "Avatar" msgstr "Mynd" -#: actions/avatarsettings.php:78 -#, php-format -msgid "You can upload your personal avatar. The maximum file size is %s." -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 "Notandi með enga persónulega síðu sem passar við" +msgstr "Notandi hefur enga persónulega síðu." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -785,7 +534,7 @@ msgid "Preview" msgstr "Forsýn" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Eyða" @@ -797,11 +546,6 @@ msgstr "Hlaða upp" msgid "Crop" msgstr "Skera af" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "Engin persónuleg síða tilgreind" - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "" @@ -819,20 +563,15 @@ msgstr "Mynd hefur verið uppfærð." msgid "Failed updating avatar." msgstr "Mistókst að uppfæra mynd" -#: actions/avatarsettings.php:397 -msgid "Avatar deleted." -msgstr "" - #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Þú hefur nú þegar lokað á þennan notanda." +msgstr "Þú ert nú þegar í áskrift að þessum notendum:" -#: 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,43 +583,24 @@ 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 "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 -#, fuzzy -msgid "Do not block this user" -msgstr "Opna á þennan notanda" - -#. 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/deletenotice.php:154 actions/deleteuser.php:159 -#: actions/groupblock.php:185 -#, fuzzy -msgctxt "BUTTON" -msgid "Yes" -msgstr "Já" +msgstr "Athugasemd" #. 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" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -890,29 +610,11 @@ msgstr "Mistókst að vista upplýsingar um notendalokun" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Enginn þannig hópur." -#: actions/blockedfromgroup.php:97 -#, php-format -msgid "%s blocked profiles" -msgstr "" - -#: actions/blockedfromgroup.php:100 -#, fuzzy, php-format -msgid "%1$s blocked profiles, page %2$d" -msgstr "%s og vinirnir, síða %d" - -#: actions/blockedfromgroup.php:115 -msgid "A list of the users blocked from joining this group." -msgstr "" - -#: actions/blockedfromgroup.php:288 -msgid "Unblock user from group" -msgstr "" - #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" msgstr "Opna" @@ -923,9 +625,9 @@ msgstr "Opna á þennan notanda" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Ljósmynd" +msgstr "Svör við %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -941,9 +643,9 @@ msgstr "Þessi staðfestingarlykill er ekki fyrir þig!" #. 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 "Óþekkt gerð tölvupóstfangs %s" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -972,9 +674,8 @@ msgid "Couldn't delete email confirmation." msgstr "Gat ekki eytt tölvupóstsstaðfestingu." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Staðfesta tölvupóstfang" +msgstr "Núverandi staðfesta tölvupóstfangið." #: actions/confirmaddress.php:161 #, php-format @@ -982,42 +683,25 @@ msgid "The address \"%s\" has been confirmed for your account." msgstr "" "Þetta tölvupóstfang, \"%s\", hefur verið staðfest fyrir aðganginn þinn." -#: actions/conversation.php:99 -msgid "Conversation" -msgstr "" - #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" msgstr "Babl" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "Þú verður að hafa skráð þig inn til að búa til hóp." +msgstr "Þú verður aða hafa skráð þig inn til að ganga úr hóp." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Babl hefur enga persónulega síðu" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Þú ert ekki meðlimur í þessum hópi." +msgstr "Staðfestingarlykill fannst ekki." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." msgstr "Það komu upp vandamál varðandi setutókann þinn." -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "Ekkert svoleiðis babl." - #: actions/deleteapplication.php:149 msgid "" "Are you sure you want to delete this application? This will clear all data " @@ -1027,15 +711,8 @@ msgstr "" #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 -#, fuzzy msgid "Do not delete this application" -msgstr "Gat ekki uppfært hóp." - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -msgstr "Eyða þessu babli" +msgstr "Get ekki eytt þessu babli." #. 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 @@ -1043,7 +720,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)." @@ -1066,43 +743,17 @@ msgstr "Eyða babli" msgid "Are you sure you want to delete this notice?" msgstr "Ertu viss um að þú viljir eyða þessu babli?" -#. TRANS: Submit button title for 'No' when deleting a notice. -#: actions/deletenotice.php:151 -msgid "Do not delete this notice" -msgstr "" - #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Eyða þessu babli" -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "Gat ekki uppfært notanda." - -#: actions/deleteuser.php:74 -#, fuzzy -msgid "You can only delete local users." -msgstr "Þú getur ekki eytt stöðu annars notanda." - -#: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy -msgid "Delete user" -msgstr "Eyða" - #: 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 "" -#. TRANS: Submit button title for 'Yes' when deleting a user. -#: actions/deleteuser.php:163 lib/deleteuserform.php:77 -#, fuzzy -msgid "Delete this user" -msgstr "Eyða þessu babli" - #. 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 @@ -1114,109 +765,76 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, fuzzy -msgid "Invalid logo URL." -msgstr "Ótæk stærð." - -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Þessi síða er ekki aðgengileg í " +msgstr "" -#: actions/designadminpanel.php:376 -#, fuzzy -msgid "Change logo" -msgstr "Breyta" - -#: actions/designadminpanel.php:381 -#, fuzzy +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "Bjóða" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" -msgstr "Breyta" - -#: actions/designadminpanel.php:405 -#, fuzzy -msgid "Site theme" msgstr "Babl vefsíðunnar" -#: actions/designadminpanel.php:406 -#, fuzzy -msgid "Theme for the site." -msgstr "Skrá þig út af síðunni" +#: 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 "" + +#: 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 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -msgid "Change colours" -msgstr "" - -#: actions/designadminpanel.php:513 lib/designsettings.php:191 -msgid "Content" -msgstr "" - -#: actions/designadminpanel.php:526 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 -msgid "Links" +#: actions/designadminpanel.php:651 +msgid "Advanced" msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: 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 +844,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 "" @@ -1239,69 +857,22 @@ msgid "Add to favorites" msgstr "Bæta við sem uppáhaldsbabli" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Ekkert svoleiðis skjal." - -#: actions/editapplication.php:54 -#, fuzzy -msgid "Edit Application" -msgstr "Aðrir valkostir" - -#: actions/editapplication.php:66 -#, fuzzy -msgid "You must be logged in to edit an application." -msgstr "Þú verður að hafa skráð þig inn til að búa til hóp." - -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." msgstr "Ekkert svoleiðis babl." -#: actions/editapplication.php:161 -#, fuzzy -msgid "Use this form to edit your application." -msgstr "Notaðu þetta eyðublað til að breyta hópnum." - -#: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy -msgid "Name is required." -msgstr "Sama og lykilorðið hér fyrir ofan. Nauðsynlegt." - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Fullt nafn er of langt (í mesta lagi 255 stafir)." - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Stuttnefni nú þegar í notkun. Prófaðu eitthvað annað." - -#: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy -msgid "Description is required." -msgstr "Lýsing" +#: actions/editapplication.php:54 +msgid "Edit Application" +msgstr "" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "Heimasíða er ekki gild vefslóð." - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "" -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "Staðsetning er of löng (í mesta lagi 255 stafir)." - #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." msgstr "" @@ -1314,11 +885,6 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Gat ekki uppfært hóp." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" @@ -1330,41 +896,30 @@ msgstr "Þú verður að hafa skráð þig inn til að búa til hóp." #: 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 "Þú verður að vera stjórnandi til að geta breytt hópnum" +msgstr "Þú verður að hafa skráð þig inn til að búa til hóp." #: actions/editgroup.php:158 msgid "Use this form to edit the group." msgstr "Notaðu þetta eyðublað til að breyta hópnum." #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format -msgid "description is too long (max %d chars)." -msgstr "Lýsing er of löng (í mesta lagi 140 tákn)." - -#: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format -msgid "Invalid alias: \"%s\"" -msgstr "" +msgid "description is too long (max %d chars)." +msgstr "Staðsetning er of löng (í mesta lagi 255 stafir)." #: actions/editgroup.php:258 msgid "Could not update group." msgstr "Gat ekki uppfært hóp." -#: actions/editgroup.php:264 classes/User_group.php:496 -msgid "Could not create aliases." -msgstr "" - #: actions/editgroup.php:280 msgid "Options saved." msgstr "Valmöguleikar vistaðir." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Tölvupóstsstillingar" +msgstr "Stillingar persónulegrar síðu" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1373,13 +928,6 @@ msgstr "Tölvupóstsstillingar" msgid "Manage how you get email from %%site.name%%." msgstr "Stilla það hvernig þú færð tölvupóst frá %%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 "Tölvupóstföng" - #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." @@ -1393,10 +941,9 @@ msgstr "Núverandi staðfesta tölvupóstfangið." #: 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 "Fjarlægja" +msgstr "Endurheimta" #: actions/emailsettings.php:122 msgid "" @@ -1406,17 +953,6 @@ msgstr "" "Býð eftir staðfestingu frá þessu netfangi. Athugaðu innhólfið þitt (og " "ruslpóstinn þinn!). Þar ættu að vera skilaboð með ítarlegri leiðbeiningum." -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "Hætta við" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1427,10 +963,9 @@ msgstr "Tölvupóstfang eins og \"notandi@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 "Bæta við" +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1453,16 +988,14 @@ msgstr "Búa til nýtt tölvupóstfang til að senda til. Skrifar yfir það gam #. 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 "Nýtt" +msgstr "" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Stillingar" +msgstr "Tölvupóstföng" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1479,11 +1012,6 @@ msgstr "Senda mér tölvupóst þegar einhver setur babl í mér í uppáhald hj msgid "Send me email when someone sends me a private message." msgstr "Senda mér tölvupóst þegar einhver sendir mér persónuleg skilaboð." -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:199 -msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "" - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." @@ -1499,12 +1027,6 @@ msgstr "Ég vil babla í gegnum tölvupóst." msgid "Publish a MicroID for my email address." msgstr "Birta MicroID fyrir tölvupóstfangið mitt." -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Stillingar vistaðar." - #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." @@ -1516,7 +1038,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." @@ -1557,17 +1079,10 @@ msgstr "" msgid "No pending confirmation to cancel." msgstr "Engin staðfesting í bið sem þarf að hætta við." -#. 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 "Þetta er rangt snarskilaboðafang." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Hætt við staðfestingu." +msgstr "Engin staðfesting í bið sem þarf að hætta við." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1577,9 +1092,8 @@ msgstr "Þetta er ekki tölvupóstfangið þitt." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Tölvupóstfangið hefur verið fjarlægt." +msgstr "Móttökutölvupóstfang fjarlægt." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1647,11 +1161,6 @@ msgstr "" msgid "%s's favorite notices" msgstr "Uppáhaldsbabl %s" -#: actions/favoritesrss.php:115 -#, fuzzy, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "Færslur frá %1$s á %2$s!" - #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" @@ -1663,24 +1172,13 @@ msgid "Featured users, page %d" msgstr "Notendur í sviðsljósinu, síða %d" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" -msgstr "Úrval nokkurra frábærra notenda á %s" - -#: actions/file.php:34 -#, fuzzy -msgid "No notice ID." -msgstr "Ekkert svoleiðis babl." - -#: actions/file.php:38 -#, fuzzy -msgid "No notice." -msgstr "Ekkert svoleiðis babl." +msgstr "" #: actions/file.php:42 -#, fuzzy msgid "No attachments." -msgstr "Ekkert svoleiðis skjal." +msgstr "" #: actions/file.php:51 msgid "No uploaded attachments." @@ -1691,9 +1189,8 @@ msgid "Not expecting this response!" msgstr "Bjóst ekki við þessu svari!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "Notandi sem verið er að hlusta á er ekki til." +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1704,87 +1201,41 @@ msgid "That user has blocked you from subscribing." msgstr "Þessi notandi hefur bannað þér að gerast áskrifandi" #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Engin heimild." +msgstr "Þú ert ekki áskrifandi." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Gat ekki breytt beiðnistókum í aðgangstóka." +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Óþekkt útgáfa OMB samskiptamátans." - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Villa kom upp í uppfærslu persónulegrar fjarsíðu" - -#: actions/getfile.php:79 -#, fuzzy -msgid "No such file." -msgstr "Ekkert svoleiðis babl." - -#: actions/getfile.php:83 -#, fuzzy -msgid "Cannot read file." -msgstr "Týndum skránni okkar" - -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Ótæk stærð." +msgstr "" #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Þú getur ekki sent þessum notanda skilaboð." - -#: actions/grantrole.php:82 -#, fuzzy -msgid "User already has this role." -msgstr "Notandi hefur enga persónulega síðu." +msgstr "Það hefur verið lagt bann við babli frá þér á þessari 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" -#: actions/groupblock.php:81 actions/groupunblock.php:81 -#: actions/makeadmin.php:81 -msgid "No group specified." -msgstr "" - #: actions/groupblock.php:91 msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -msgid "User is already blocked from group." -msgstr "" - -#: actions/groupblock.php:100 -msgid "User is not a member of group." -msgstr "" - -#: actions/groupblock.php:134 actions/groupmembers.php:360 -msgid "Block user from group" -msgstr "" - #: actions/groupblock.php:160 #, php-format msgid "" @@ -1793,32 +1244,13 @@ msgid "" "the group in the future." msgstr "" -#. 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 "" - -#. 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 "" - #: actions/groupblock.php:206 msgid "Database error blocking user from group." msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "Ekkert einkenni" - -#: actions/groupdesignsettings.php:68 -msgid "You must be logged in to edit a group." -msgstr "" - -#: actions/groupdesignsettings.php:144 -msgid "Group design" -msgstr "" +msgstr "Ekkert Jabber-kenni" #: actions/groupdesignsettings.php:155 msgid "" @@ -1826,29 +1258,10 @@ msgid "" "palette of your choice." msgstr "" -#: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 -#: lib/designsettings.php:391 lib/designsettings.php:413 -msgid "Couldn't update your design." -msgstr "" - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -msgid "Design preferences saved." -msgstr "" - #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" msgstr "Einkennismynd hópsins" -#: actions/grouplogo.php:153 -#, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "" - -#: actions/grouplogo.php:365 -msgid "Pick a square area of the image to be the logo." -msgstr "" - #: actions/grouplogo.php:399 msgid "Logo updated." msgstr "Einkennismynd uppfærð." @@ -1863,9 +1276,9 @@ msgid "%s group members" msgstr "Hópmeðlimir %s" #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "Hópmeðlimir %s, síða %d" +msgstr "Hópmeðlimir %s" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1879,14 +1292,6 @@ msgstr "Stjórnandi" msgid "Block" msgstr "Loka" -#: 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 "" @@ -1895,17 +1300,11 @@ 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" -#. 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 -msgid "Updates from members of %1$s on %2$s!" -msgstr "Færslur frá %1$s á %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" @@ -1930,22 +1329,10 @@ msgstr "" msgid "Create a new group" msgstr "Búa til nýjan hóp" -#: 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 "Hópleit" -#: actions/groupsearch.php:79 actions/noticesearch.php:117 -#: actions/peoplesearch.php:83 -msgid "No results." -msgstr "" - #: actions/groupsearch.php:82 #, php-format msgid "" @@ -1964,19 +1351,14 @@ msgstr "" 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 "Vill kom upp við að aflétta notendalokun." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "Snarskilaboðastillingar" +msgstr "Stillingar fyrir mynd" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -1993,16 +1375,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 "Þessi síða er ekki aðgengileg í " +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 "Snarskilaboðafang" +msgstr "Tölvupóstföng" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2034,9 +1414,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Stillingar" +msgstr "Stillingar vistaðar." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2105,17 +1484,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Þetta er rangt snarskilaboðafang." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Gat ekki eytt tölvupóstsstaðfestingu." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Hætt við staðfestingu." +msgstr "Enginn staðfestingarlykill." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2125,14 +1497,8 @@ msgstr "Þetta er ekki Jabber-kennið þitt." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Tölvupóstfangið hefur verið fjarlægt." - -#: actions/inbox.php:59 -#, fuzzy, php-format -msgid "Inbox for %1$s - page %2$d" -msgstr "Innhólf %s" +msgstr "Móttökutölvupóstfang fjarlægt." #: actions/inbox.php:62 #, php-format @@ -2149,9 +1515,9 @@ 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 "Þú verður að vera innskráð(ur) til að geta boðið öðrum að nota %s" +msgstr "Þú verður að hafa skráð þig inn til að bæta þér í hóp." #: actions/invite.php:72 #, php-format @@ -2172,7 +1538,7 @@ msgstr "Þú ert nú þegar í áskrift að þessum notendum:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2220,10 +1586,9 @@ msgstr "Bættu persónulegum skilaboðum við boðskortið ef þú vilt." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "Senda" +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 @@ -2293,69 +1658,51 @@ msgstr "" msgid "You must be logged in to join a group." msgstr "Þú verður að hafa skráð þig inn til að bæta þér í hóp." -#: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy -msgid "No nickname or ID." -msgstr "Ekkert stuttnefni." - -#. 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 -msgid "%1$s joined group %2$s" -msgstr "%s bætti sér í hópinn %s" - #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "Þú verður aða hafa skráð þig inn til að ganga úr hóp." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Þú ert ekki meðlimur í þessum hópi." -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%s gekk úr hópnum %s" +msgstr "Staða %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 "Þú 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 -#, 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,64 +1710,29 @@ msgstr "" "Af öryggisástæðum, vinsamlegast sláðu aftur inn notendanafnið þitt og " "lykilorð áður en þú breytir stillingunum þínum." -#: actions/login.php:270 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Skráðu þig inn með notendanafninu þínu og lykilorði. Ertu ekki með " -"notendanafn? [Nýskráðu þig](%%action.register%%) eða prófaðu [OpenID](%%" -"action.openidlogin%%). " #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "" -#: actions/makeadmin.php:96 +#: actions/makeadmin.php:133 #, php-format -msgid "%1$s is already an admin for group \"%2$s\"." +msgid "Can't get membership record for %1$s in group %2$s." msgstr "" -#: actions/makeadmin.php:133 -#, fuzzy, php-format -msgid "Can't get membership record for %1$s in group %2$s." -msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s" - -#: actions/makeadmin.php:146 -#, fuzzy, php-format -msgid "Can't make %1$s an admin for group %2$s." -msgstr "Gat ekki fjarlægt notandann %s úr hópnum %s" - #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Engin núverandi staða" - -#: actions/newapplication.php:52 -#, fuzzy -msgid "New Application" -msgstr "Ekkert svoleiðis babl." - -#: actions/newapplication.php:64 -#, fuzzy -msgid "You must be logged in to register an application." -msgstr "Þú verður að hafa skráð þig inn til að búa til hóp." - -#: actions/newapplication.php:143 -#, fuzzy -msgid "Use this form to register a new application." -msgstr "Notaðu þetta eyðublað til að búa til nýjan hóp." +msgstr "" #: actions/newapplication.php:176 msgid "Source URL is required." msgstr "" -#: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy -msgid "Could not create application." -msgstr "Gat ekki búið til uppáhald." - #: actions/newgroup.php:53 msgid "New group" msgstr "Nýr hópur" @@ -2433,12 +1745,15 @@ msgstr "Notaðu þetta eyðublað til að búa til nýjan hóp." msgid "New message" msgstr "Ný skilaboð" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Þú getur ekki sent þessum notanda skilaboð." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Ekkert innihald!" @@ -2446,23 +1761,15 @@ msgstr "Ekkert innihald!" msgid "No recipient specified." msgstr "Enginn móttökuaðili tilgreindur." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" "Ekki senda þér skilaboð. Þú getur sagt þetta í hljóði við sjálfa(n) þig í " "staðinn." -#: actions/newmessage.php:181 -msgid "Message sent" -msgstr "" - -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "Bein skilaboð send til %s" - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax villa" @@ -2470,7 +1777,7 @@ msgstr "Ajax villa" msgid "New notice" msgstr "Nýtt babl" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Babl sent inn" @@ -2487,11 +1794,6 @@ msgstr "" msgid "Text search" msgstr "Textaleit" -#: actions/noticesearch.php:91 -#, fuzzy, php-format -msgid "Search results for \"%1$s\" on %2$s" -msgstr "Skilaboð frá %1$s á %2$s" - #: actions/noticesearch.php:121 #, php-format msgid "" @@ -2512,16 +1814,14 @@ msgid "Updates with \"%s\"" msgstr "" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Allar færslur sem passa við \"%s\"" +msgstr "Færslur frá %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 "" -"Þessi notandi leyfir ekki að ýta við sér eða hefur ekki staðfest eða skráð " -"tölvupóstinn sinn." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2531,38 +1831,14 @@ msgstr "Ãtt við notanda" msgid "Nudge sent!" msgstr "Ãtt við notanda!" -#: actions/oauthappssettings.php:59 -#, fuzzy -msgid "You must be logged in to list your applications." -msgstr "Þú verður að hafa skráð þig inn til að bæta þér í hóp." - -#: actions/oauthappssettings.php:74 -#, fuzzy -msgid "OAuth applications" -msgstr "Aðrir valkostir" - #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Þú ert ekki meðlimur í þessum hópi." - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2576,31 +1852,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 "Babl hefur enga persónulega síðu" +msgstr "Notandi 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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Enginn stuðningur við gagnasnið." @@ -2613,9 +1888,8 @@ msgid "Notice Search" msgstr "Leit í babli" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Aðrar stillingar" +msgstr "Stillingar fyrir mynd" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2633,10 +1907,6 @@ msgstr "" msgid "Automatic shortening service to use." msgstr "Þjónusta sem sér um sjálfkrafa styttingu." -#: actions/othersettings.php:122 -msgid "View profile designs" -msgstr "" - #: actions/othersettings.php:123 msgid "Show or hide profile designs." msgstr "" @@ -2646,35 +1916,9 @@ msgid "URL shortening service is too long (max 50 chars)." msgstr "" "Þjónusta sjálfvirkrar vefslóðastyttingar er of löng (í mesta lagi 50 stafir)." -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "Engin persónuleg síða tilgreind" - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "Engin persónuleg síða tilgreind" - #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Ekkert einkenni persónulegrar síðu í beiðni." - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "Ótækt bablinnihald" - -#: actions/otp.php:104 -#, fuzzy -msgid "Login token expired." -msgstr "Skrá þig inn á síðuna" - -#: actions/outbox.php:58 -#, fuzzy, php-format -msgid "Outbox for %1$s - page %2$d" -msgstr "Úthólf %s" +msgstr "Engin heimildarbeiðni!" #: actions/outbox.php:61 #, php-format @@ -2711,7 +1955,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" @@ -2723,11 +1967,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." @@ -2748,7 +1992,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 "" @@ -2757,39 +2001,29 @@ 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 "Þessi síða er ekki aðgengileg í " +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Þessi síða er ekki aðgengileg í " +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Þessi síða er ekki aðgengileg í " +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Þessi síða er ekki aðgengileg í " +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." msgstr "" -#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 -#, fuzzy -msgid "Site" -msgstr "Bjóða" - -#: actions/pathsadminpanel.php:238 -#, fuzzy -msgid "Server" -msgstr "Endurheimta" - #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." msgstr "" @@ -2798,11 +2032,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "Babl vefsíðunnar" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2835,21 +2064,6 @@ msgstr "" msgid "Theme directory" msgstr "" -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "Mynd" - -#: actions/pathsadminpanel.php:284 -#, fuzzy -msgid "Avatar server" -msgstr "Stillingar fyrir mynd" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "Mynd hefur verið uppfærð." - #: actions/pathsadminpanel.php:292 msgid "Avatar directory" msgstr "" @@ -2870,21 +2084,6 @@ msgstr "" msgid "Background directory" msgstr "" -#: actions/pathsadminpanel.php:320 -#, fuzzy -msgid "SSL" -msgstr "SMS" - -#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy -msgid "Never" -msgstr "Endurheimta" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "Babl" - #: actions/pathsadminpanel.php:325 msgid "Always" msgstr "" @@ -2898,18 +2097,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Endurheimta" +msgstr "" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Babl vefsíðunnar" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2925,19 +2122,13 @@ msgid "People search" msgstr "Leit að fólki" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Ekki gilt persónumerki: %s" - -#: actions/peopletag.php:142 -#, fuzzy, php-format -msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Notendur sjálfmerktir með %s - síða %d" +msgstr "Ekki tækt tölvupóstfang." #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Ótækt bablinnihald" +msgstr "Ótæk stærð." #: actions/postnotice.php:101 #, php-format @@ -2963,46 +2154,45 @@ 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 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "Lýstu þér og áhugamálum þínum í 140 táknum" +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 "Lýstu þér og þínum " +msgstr "" -#: 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\"" @@ -3046,10 +2236,10 @@ 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 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "Lýsingin er of löng (í mesta lagi 140 tákn)." +msgstr "Staðsetning er of löng (í mesta lagi %d stafir)." #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." @@ -3068,11 +2258,6 @@ msgstr "Ógilt merki: \"%s\"" msgid "Couldn't update user for autosubscribe." msgstr "Gat ekki uppfært notanda í sjálfvirka áskrift." -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Gat ekki vistað merki." - #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Gat ekki vistað persónulega síðu." @@ -3209,24 +2394,10 @@ msgstr "" msgid "Could not update user with confirmed email address." msgstr "Gat ekki uppfært notanda með staðfestu tölvupóstfangi." -#: 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 "Stuttnefnið þitt á þessum vefþjóni eða skráða tölvupóstfangið." @@ -3295,7 +2466,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." @@ -3303,81 +2474,99 @@ 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 -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:507 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:494 +#: 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:542 -#, 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" @@ -3394,22 +2583,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Til hamingju %s! Frábært að þú skulir hafa skráð þig á %%%%site.name%%%%. " -"Héðan vilt þú kannski...\n" -"\n" -"* Fara á [persónulegu síðuna þína](%s) senda inn þitt fyrsta babl.\n" -"* Bæta við [Jabber/GTalk snarskilaboðafangi](%%%%action.imsettings%%%%) svo " -"þú getir sent inn babl í snarskilaboðum.\n" -"* [Leita að fólki](%%%%action.peoplesearch%%%%) sem þú þekkir eða hefur sömu " -"áhugamál og þú. \n" -"* Uppfæra [persónulegu síðuna](%%%%action.profilesettings%%%%) þína til þess " -"að leyfa öðrum að kynnast þér betur.\n" -"* Lesa [vefleiðbeiningarnar](%%%%doc.help%%%%) til þess að læra að babla " -"betur.\n" -"\n" -"Takk fyrir að skrá þig og við vonum að þú njótir þjónustunnar." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3433,10 +2608,6 @@ msgstr "" msgid "Remote subscribe" msgstr "Fara í fjaráskrift" -#: actions/remotesubscribe.php:124 -msgid "Subscribe to a remote user" -msgstr "" - #: actions/remotesubscribe.php:129 msgid "User nickname" msgstr "Stuttnefni notanda" @@ -3463,46 +2634,16 @@ msgid "Invalid profile URL (bad format)" msgstr "Ótækt veffang persónulegrar síðu (vitlaust snið)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Ekki tækt veffang á persónulega síðu (ekkert YADIS skjal)." +msgstr "" #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." msgstr "" -"Þetta er staðbundinn persónuaðgangur! Skráðu þig inn til að gerast " -"áskrifandi." #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "Gat ekki komist yfir beiðnistóka." - -#: actions/repeat.php:57 -#, fuzzy -msgid "Only logged-in users can repeat notices." -msgstr "Aðeins notandinn getur lesið hans eigin pósthólf." - -#: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy -msgid "No notice specified." -msgstr "Engin persónuleg síða tilgreind" - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "Þú getur ekki nýskráð þig nema þú samþykkir leyfið." - -#: actions/repeat.php:90 -#, fuzzy -msgid "You already repeated that notice." -msgstr "Þú hefur nú þegar lokað á þennan notanda." - -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy -msgid "Repeated" -msgstr "à sviðsljósinu" +msgstr "" #: actions/repeat.php:119 msgid "Repeated!" @@ -3515,30 +2656,20 @@ msgid "Replies to %s" msgstr "Svör við %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Skilaboð til %1$s á %2$s" - -#: 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 "" +msgstr "Svör við %s" #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "Bablveita fyrir hópinn %s" +msgstr "Svör við %s" #: 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 @@ -3551,34 +2682,13 @@ 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 -msgid "Replies to %1$s on %2$s!" -msgstr "Skilaboð til %1$s á %2$s" - #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Þú getur ekki sent þessum notanda skilaboð." - -#: actions/revokerole.php:82 -#, fuzzy -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 -#, fuzzy -msgid "StatusNet" -msgstr "Tölfræði" - -#: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy -msgid "You cannot sandbox users on this site." -msgstr "Þú getur ekki sent þessum notanda skilaboð." +msgstr "Það hefur verið lagt bann við babli frá þér á þessari síðu." #: actions/sandbox.php:72 msgid "User is already sandboxed." @@ -3586,7 +2696,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 "" @@ -3610,47 +2720,18 @@ msgstr "" 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 "Stillingar fyrir mynd" - -#: actions/showapplication.php:82 -#, fuzzy -msgid "You must be logged in to view an application." -msgstr "Þú verður aða hafa skráð þig inn til að ganga úr hóp." - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "Babl hefur enga persónulega síðu" - #. 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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Stuttnefni" - #. TRANS: Form input field label. -#: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy -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" @@ -3660,18 +2741,10 @@ msgstr "Tölfræði" 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 "" @@ -3698,34 +2771,19 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Ertu viss um að þú viljir eyða þessu babli?" - -#: actions/showfavorites.php:79 -#, fuzzy, php-format -msgid "%1$s's favorite notices, page %2$d" -msgstr "Uppáhaldsbabl %s" - #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." msgstr "Gat ekki sótt uppáhaldsbabl." #: actions/showfavorites.php:171 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "Bablveita uppáhaldsbabls %s" +msgstr "" #: actions/showfavorites.php:178 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "Bablveita uppáhaldsbabls %s" - -#: actions/showfavorites.php:185 -#, fuzzy, php-format -msgid "Feed for favorites of %s (Atom)" -msgstr "Bablveita uppáhaldsbabls %s" +msgstr "" #: actions/showfavorites.php:206 msgid "" @@ -3736,16 +2794,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 @@ -3758,9 +2816,9 @@ msgid "%s group" msgstr "%s hópurinn" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "Hópmeðlimir %s, síða %d" +msgstr "Hópar, síða %d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3794,17 +2852,7 @@ msgstr "" 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 -#, fuzzy, php-format -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" @@ -3818,11 +2866,7 @@ msgstr "(Ekkert)" msgid "All members" msgstr "Allir meðlimir" -#: actions/showgroup.php:447 -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." @@ -3832,7 +2876,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." @@ -3841,10 +2885,6 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 -msgid "Admins" -msgstr "" - #: actions/showmessage.php:81 msgid "No such message." msgstr "Engin þannig skilaboð." @@ -3863,44 +2903,14 @@ msgstr "Skilaboð til %1$s á %2$s" msgid "Message from %1$s on %2$s" msgstr "Skilaboð frá %1$s á %2$s" -#: actions/shownotice.php:90 -#, fuzzy -msgid "Notice deleted." -msgstr "Babl sent inn" - -#: actions/showstream.php:73 -#, php-format -msgid " tagged %s" -msgstr "" - #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s og vinirnir, síða %d" +msgstr "Hópar, síða %d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Bablveita fyrir %s" - -#: 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 @@ -3917,8 +2927,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 @@ -3938,16 +2948,6 @@ msgid "" "[StatusNet](http://status.net/) tool. " msgstr "" -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "Svör við %s" - -#: actions/silence.php:65 actions/unsilence.php:65 -#, fuzzy -msgid "You cannot silence users on this site." -msgstr "Þú getur ekki sent þessum notanda skilaboð." - #: actions/silence.php:72 msgid "User is already silenced." msgstr "" @@ -3961,9 +2961,8 @@ msgid "Site name must have non-zero length." msgstr "" #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "Ekki tækt tölvupóstfang" +msgstr "Ekki tækt tölvupóstfang." #: actions/siteadminpanel.php:159 #, php-format @@ -3982,11 +2981,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "Babl vefsíðunnar" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -4007,16 +3001,6 @@ msgstr "" 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 "Nýtt tölvupóstfang til að senda á %s" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "Staðbundin sýn" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4025,11 +3009,6 @@ msgstr "" msgid "Default timezone for the site; usually UTC." msgstr "" -#: actions/siteadminpanel.php:262 -#, fuzzy -msgid "Default language" -msgstr "Tungumál (ákjósanlegt)" - #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" @@ -4054,44 +3033,18 @@ msgstr "" msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -msgid "Site Notice" -msgstr "Babl vefsíðunnar" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "Ný skilaboð" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Vandamál komu upp við að vista babl." - #: 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 "Babl vefsíðunnar" - #: 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 "Babl vefsíðunnar" - #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "SMS stillingar" +msgstr "Stillingar fyrir mynd" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4102,15 +3055,13 @@ msgstr "Þú getur fengið SMS í gegnum tölvupóst frá %%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 "Þessi síða er ekki aðgengileg í " +msgstr "" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Snarskilaboðafang" +msgstr "Tölvupóstföng" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4132,18 +3083,10 @@ msgstr "Staðfestingarlykill" msgid "Enter the code you received on your phone." msgstr "Sláðu inn lykilinn sem þú fékkst í símann þinn." -#. TRANS: Button label to confirm SMS confirmation code in SMS settings. -#: actions/smssettings.php:148 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Staðfesta" - #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "SMS símanúmer" +msgstr "Ekkert símanúmer." #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4152,9 +3095,8 @@ msgstr "Símanúmer, með svæðisnúmeri ef við á, án greinarmerkja eða bil #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Stillingar" +msgstr "Stillingar vistaðar." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4165,12 +3107,6 @@ msgstr "" "Sendu mér babl í gegnum SMS. Ég veit að það er möguleiki að " "farsímafyrirtækið rukki fyrir móttöku á SMSunum." -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Stillingar vistaðar." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." @@ -4191,13 +3127,6 @@ msgstr "Þetta er nú þegar símanúmerið þitt." msgid "That phone number already belongs to another user." msgstr "Þetta símanúmer tilheyri nú þegar öðrum notanda." -#. 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." @@ -4205,9 +3134,8 @@ msgstr "Þetta er rangur staðfestingarlykill." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Hætt við staðfestingu." +msgstr "SMS staðfesting" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4215,12 +3143,6 @@ msgstr "Hætt við staðfestingu." msgid "That is not your phone number." msgstr "Þetta er ekki símanúmerið þitt." -#. 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 símanúmer" - #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" @@ -4250,18 +3172,13 @@ 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 "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Stikl aðalsíðu" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Staðfesting tölvupóstfangs" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." @@ -4303,16 +3220,12 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Stillingar fyrir mynd" - #: actions/subedit.php:70 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." @@ -4320,16 +3233,6 @@ msgstr "Gat ekki vistað áskrift." msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "Ekkert svoleiðis babl." - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Þú ert ekki áskrifandi." - #: actions/subscribe.php:145 msgid "Subscribed" msgstr "Þú ert nú í áskrift" @@ -4340,9 +3243,9 @@ msgid "%s subscribers" msgstr "%s áskrifendur" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s áskrifendur, síða %d" +msgstr "%s áskrifendur" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4377,9 +3280,9 @@ msgid "%s subscriptions" msgstr "%s áskriftir" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "%s áskriftir, síða %d" +msgstr "%s áskriftir" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4400,11 +3303,6 @@ msgid "" "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 snarskilaboðaþjónusta" @@ -4414,9 +3312,9 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Notendur sjálfmerktir með %s - síða %d" +msgstr "Babl merkt með %s" #: actions/tag.php:87 #, php-format @@ -4424,19 +3322,13 @@ msgid "Notice feed for tag %s (RSS 1.0)" msgstr "" #: actions/tag.php:93 -#, fuzzy, php-format -msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Bablveita fyrir %s" - -#: actions/tag.php:99 #, php-format -msgid "Notice feed for tag %s (Atom)" +msgid "Notice feed for tag %s (RSS 2.0)" msgstr "" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "Ekkert einkenni gefið upp." +msgstr "" #: actions/tagother.php:65 #, php-format @@ -4485,29 +3377,13 @@ 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." -msgstr "Þú hefur nú þegar lokað á þennan notanda." - -#: actions/unsandbox.php:72 -#, fuzzy -msgid "User is not sandboxed." -msgstr "Notandi hefur ekkert nýtt babl" - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "Notandi hefur enga persónulega síðu." +msgstr "Þú ert ekki áskrifandi." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Ekkert einkenni persónulegrar síðu í beiðni." +msgstr "Engin persónulega síða með þessu einkenni" #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4519,13 +3395,6 @@ msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -#. TRANS: User admin panel title -#: actions/useradminpanel.php:59 -#, fuzzy -msgctxt "TITLE" -msgid "User" -msgstr "Notandi" - #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." msgstr "" @@ -4557,11 +3426,6 @@ msgstr "" msgid "Maximum length of a profile bio in characters." msgstr "" -#: actions/useradminpanel.php:231 -#, fuzzy -msgid "New users" -msgstr "Bjóða nýjum notendum að vera með" - #: actions/useradminpanel.php:235 msgid "New user welcome" msgstr "" @@ -4570,28 +3434,6 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "Allar áskriftir" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "" -"Gerast sjálfkrafa áskrifandi að hverjum þeim sem gerist áskrifandi að þér " -"(best fyrir ómannlega notendur)" - -#: actions/useradminpanel.php:251 -#, fuzzy -msgid "Invitations" -msgstr "Boðskort hefur verið sent út" - -#: actions/useradminpanel.php:256 -#, fuzzy -msgid "Invitations enabled" -msgstr "Boðskort hefur verið sent út" - #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" @@ -4601,17 +3443,13 @@ msgid "Authorize subscription" msgstr "Heimila áskriftir" #: 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 "" -"Vinsamlegast athugaðu þessi atriði til þess að vera viss um að þú viljir " -"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 "" @@ -4628,10 +3466,6 @@ msgstr "Gerast áskrifandi að þessum notanda" msgid "Reject" msgstr "Hafna" -#: actions/userauthorization.php:220 -msgid "Reject this subscription" -msgstr "" - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "Engin heimildarbeiðni!" @@ -4641,29 +3475,22 @@ msgid "Subscription authorized" msgstr "Ãskrift heimiluð" #: 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 "" -"Ãskriftin hefur verið heimiluð en afturkallsveffang var ekki sent. Athugaðu " -"leiðbeiningar síðunnar um það hvernig á að heimila áskrift. Ãskriftartókinn " -"þinn er;" #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "Ãskrift hafnað" #: 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 "" -"Ãskriftinni hefur verið hafnað en afturkallsveffang var ekki sent. Athugaðu " -"leiðbeiningar síðunnar um það hvernig á að hafna áskrift alveg." #: actions/userauthorization.php:303 #, php-format @@ -4691,17 +3518,13 @@ 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 "Get ekki lesið slóðina fyrir myndina '%s'" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Röng gerð myndar fyrir '%s'" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -msgid "Profile design" msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 @@ -4716,19 +3539,14 @@ 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 "Hópmeðlimir %s, síða %d" +msgstr "Hópar, síða %d" #: 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." @@ -4739,29 +3557,24 @@ 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 -#, 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 " @@ -4769,7 +3582,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 " @@ -4777,184 +3590,173 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -msgstr "Hópssíðan" +#. 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/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Gat ekki uppfært hóp." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Hópssíðan" - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Gat ekki uppfært hóp." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Gat ekki búið til uppáhald." - -#: classes/Message.php:45 -#, 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. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format -msgid "Database error inserting hashtag: %s" -msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s" - -#: classes/Notice.php:245 -msgid "Problem saving notice. Too long." +#. 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 "" -#: classes/Notice.php:249 +#. TRANS: Server exception. %s are the error details. +#: classes/Notice.php:193 +#, php-format +msgid "Database error inserting hashtag: %s" +msgstr "Villa kom upp við að setja inn mynd" + +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 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:276 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 -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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Vandamál komu upp við að vista babl." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Vandamál komu upp við að vista babl." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%1$s (%2$s)" +msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 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 -msgid "Already subscribed!" +#. 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:82 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +msgstr "Gat ekki vistað merki." + +#. 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 -#, fuzzy -msgid "Not subscribed!" -msgstr "Ekki í áskrift!" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Gat ekki vistað áskrift." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Gat ekki eytt áskrift." +#. 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 "Gat ekki vistað áskrift." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Gat ekki eytt áskrift." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Gat ekki vistað áskrift." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Gat ekki eytt áskrift." - -#: classes/User.php:363 -#, 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Gat ekki skráð hópmeðlimi." +msgstr "Gat ekki búið til hóp." -#: 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 -#, fuzzy -msgid "Could not save local group info." -msgstr "Gat ekki vistað áskrift." - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" @@ -4975,11 +3777,6 @@ msgstr "Breyta lykilorðinu þínu" msgid "Change email handling" msgstr "Breyta tölvupóstumsjón" -#. 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" @@ -4990,235 +3787,146 @@ msgstr "Aðrir valkostir" msgid "Other" msgstr "Annað" -#. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Stikl aðalsíðu" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -#, fuzzy -msgctxt "MENU" -msgid "Personal" -msgstr "Persónulegt" +msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "" -"Breyttu tölvupóstinum þínum, einkennismyndinni þinni, lykilorðinu þínu, " -"persónulegu síðunni þinni" +msgstr "Breyta lykilorðinu þínu" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Gat ekki framsent til vefþjóns: %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:468 msgid "Connect" msgstr "Tengjast" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Admin" -msgstr "Stjórnandi" - -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "Bjóða" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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 -#, fuzzy -msgctxt "MENU" -msgid "Logout" -msgstr "Útskráning" - -#. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "Nýskrá" - -#. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Login to the site" msgstr "Skrá þig inn á síðuna" -#: lib/action.php:481 -#, fuzzy +#. TRANS: Main menu option when logged in to log out the current user +#: lib/action.php:490 msgctxt "MENU" -msgid "Login" -msgstr "Innskráning" +msgid "Logout" +msgstr "Einkennismerki" + +#. TRANS: Tooltip for main menu option "Register" +#: lib/action.php:495 +msgctxt "TOOLTIP" +msgid "Create an account" +msgstr "Búa til nýjan hóp" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "Hjálp!" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" msgstr "Hjálp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "Leita að fólki eða texta" - -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -msgstr "Leita" +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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Hjálp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Um" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Spurt og svarað" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Friðhelgi" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 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:808 msgid "Contact" msgstr "Tengiliður" -#: lib/action.php:784 -msgid "Badge" -msgstr "" - #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** er örbloggsþjónusta í boði [%%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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5229,56 +3937,50 @@ msgstr "" "sem er gefinn út undir [GNU Affero almenningsleyfinu](http://www.fsf.org/" "licensing/licenses/agpl-3.0.html)." -#. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Ãður" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5286,160 +3988,40 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "Þú getur ekki sent þessum notanda skilaboð." - -#. 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 "Nýskráning ekki leyfð." - -#. TRANS: Client error message. -#: lib/adminpanelaction.php:229 -#, fuzzy -msgid "showForm() not implemented." -msgstr "Skipun hefur ekki verið fullbúin" - -#. TRANS: Client error message -#: lib/adminpanelaction.php:259 -#, fuzzy -msgid "saveSettings() not implemented." -msgstr "Skipun hefur ekki verið fullbúin" - #. 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:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Staðfesting tölvupóstfangs" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy -msgctxt "MENU" -msgid "Site" -msgstr "Bjóða" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "SMS staðfesting" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "Persónulegt" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy -msgid "User configuration" -msgstr "SMS staðfesting" +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 "Notandi" -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy -msgid "Access configuration" -msgstr "SMS staðfesting" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "SMS staðfesting" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "SMS staðfesting" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "Babl vefsíðunnar" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "SMS staðfesting" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format -msgid "Describe your application in %d characters" -msgstr "Lýstu hópnum eða umfjöllunarefninu með 140 táknum" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Lýstu hópnum eða umfjöllunarefninu með 140 táknum" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:224 -#, fuzzy -msgid "URL of the homepage of this application" -msgstr "Vefslóð vefsíðu hópsins eða umfjöllunarefnisins" - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "Frumþula" - -#. 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 -#, fuzzy -msgid "URL for the homepage of the organization" -msgstr "Vefslóð vefsíðu hópsins eða umfjöllunarefnisins" +msgstr "Lýsing" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5499,10 +4081,9 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Fjarlægja" +msgstr "Endurheimta" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5514,11 +4095,6 @@ msgstr "" 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 "" @@ -5527,16 +4103,6 @@ msgstr "" msgid "Tags for this attachment" msgstr "" -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Lykilorðabreyting" - -#: lib/authenticationplugin.php:235 -#, fuzzy -msgid "Password changing is not allowed" -msgstr "Lykilorðabreyting" - #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" msgstr "Niðurstöður skipunar" @@ -5549,45 +4115,21 @@ msgstr "Fullkláruð skipun" msgid "Command failed" msgstr "Misheppnuð skipun" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "Enginn persónuleg síða með þessu einkenni." - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Notandi hefur ekkert nýtt babl" - -#. 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 "Gat ekki uppfært notanda með staðfestu tölvupóstfangi." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Gat ekki uppfært notanda með staðfestu tölvupóstfangi." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Fyrirgefðu en þessi skipun hefur ekki enn verið útbúin." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Ãtt við notanda" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5595,55 +4137,39 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Babl gert að uppáhaldi." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Þú ert nú þegar meðlimur í þessum hópi" - -#. 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 "Gat ekki bætt notandanum %s í hópinn %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 "Gat ekki fjarlægt notandann %s úr hópnum %s" - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Heimasíða: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Um: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5652,150 +4178,105 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Skilaboð eru of löng - 140 tákn eru í mesta lagi leyfð en þú sendir %d" - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "Bein skilaboð send til %s" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Villa kom upp við að senda bein skilaboð" -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Get ekki kveikt á tilkynningum." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Eyða þessu babli" - -#. 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 "Babl sent inn" - -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Vandamál komu upp við að vista babl." +msgstr "Villa kom upp í stillingu notanda." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Skilaboð eru of löng - 140 tákn eru í mesta lagi leyfð en þú sendir %d" - -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "Svara þessu babli" - -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "Vandamál komu upp við að vista babl." - -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Tilgreindu nafn notandans sem þú vilt gerast áskrifandi að" - -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "Þú ert ekki áskrifandi." - -#: lib/command.php:634 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Subscribed to %s" -msgstr "Nú ert þú áskrifandi að %s" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Tilgreindu nafn notandans sem þú vilt hætta sem áskrifandi að" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Nú ert þú ekki lengur áskrifandi að %s" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Skipun hefur ekki verið fullbúin" -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Tilkynningar af." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Get ekki slökkt á tilkynningum." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Tilkynningar á." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Get ekki kveikt á tilkynningum." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Nú ert þú ekki lengur áskrifandi að %s" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Þú ert ekki áskrifandi." - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Þú ert nú þegar í áskrift að þessum notendum:" msgstr[1] "Þú ert nú þegar í áskrift að þessum notendum:" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Gat ekki leyft öðrum að gerast áskrifandi að þér." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Gat ekki leyft öðrum að gerast áskrifandi að þér." msgstr[1] "Gat ekki leyft öðrum að gerast áskrifandi að þér." -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "Þú ert ekki meðlimur í þessum hópi." - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Þú ert ekki meðlimur í þessum hópi." msgstr[1] "Þú ert ekki meðlimur í þessum hópi." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5837,11 +4318,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Enginn staðfestingarlykill." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5851,9 +4327,8 @@ msgid "You may wish to run the installer to fix this." msgstr "" #: lib/common.php:139 -#, fuzzy msgid "Go to the installer." -msgstr "Skrá þig inn á síðuna" +msgstr "" #: lib/connectsettingsaction.php:110 msgid "IM" @@ -5867,11 +4342,6 @@ msgstr "Færslur sendar með snarskilaboðaþjónustu (instant messaging)" msgid "Updates by SMS" msgstr "Færslur sendar með SMS" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "Tengjast" - #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" msgstr "" @@ -5880,16 +4350,6 @@ msgstr "" msgid "Database error" msgstr "" -#: lib/designsettings.php:105 -msgid "Upload file" -msgstr "" - -#: lib/designsettings.php:109 -#, fuzzy -msgid "" -"You can upload your personal background image. The maximum file size is 2MB." -msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn." - #: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5934,11 +4394,6 @@ msgstr "Sía merki" msgid "All" msgstr "Allt" -#: lib/galleryaction.php:139 -#, fuzzy -msgid "Select tag to filter" -msgstr "Veldu farsímafyrirtæki" - #: lib/galleryaction.php:140 msgid "Tag" msgstr "Merki" @@ -5960,15 +4415,10 @@ msgstr "" msgid "URL of the homepage or blog of the group or topic" msgstr "Vefslóð vefsíðu hópsins eða umfjöllunarefnisins" -#: lib/groupeditform.php:168 -#, fuzzy -msgid "Describe the group or topic" -msgstr "Lýstu hópnum eða umfjöllunarefninu með 140 táknum" - #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Lýstu hópnum eða umfjöllunarefninu með 140 táknum" +msgstr "" #: lib/groupeditform.php:179 msgid "" @@ -5984,15 +4434,6 @@ msgstr "" msgid "Group" msgstr "Hópur" -#: 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" @@ -6007,11 +4448,6 @@ msgstr "Einkennismerki" msgid "Add or edit %s logo" msgstr "Bæta við eða breyta einkennismerki %s" -#: lib/groupnav.php:120 -#, php-format -msgid "Add or edit %s design" -msgstr "" - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Hóparnir með flestu meðlimina" @@ -6035,11 +4471,6 @@ msgstr "" msgid "Unsupported image file format." msgstr "Skráarsnið myndar ekki stutt." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Upphal að hluta til." @@ -6123,8 +4554,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" @@ -6140,21 +4578,19 @@ msgid "" msgstr "" #. 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 "" -"Lýsing: %s\n" -"\n" +msgstr "Staðsetning: %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 "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" @@ -6176,30 +4612,24 @@ 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 -#, 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 " @@ -6216,13 +4646,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" @@ -6242,13 +4672,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 "%s heldur upp á babl frá þér" +msgstr "Senda mér tölvupóst þegar einhver setur babl í mér í uppáhald hjá sé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" @@ -6270,7 +4700,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" @@ -6278,13 +4708,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6321,10 +4746,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "frá" +msgstr "" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6342,11 +4766,6 @@ msgstr "Afsakið en þetta er ekki móttökutölvupóstfangið þitt." msgid "Sorry, no incoming email allowed." msgstr "Því miður er móttökutölvupóstur ekki leyfður." -#: lib/mailhandler.php:228 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "Skráarsnið myndar ekki stutt." - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6377,25 +4796,20 @@ 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 -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 "" @@ -6408,101 +4822,82 @@ msgstr "Senda bein skilaboð" msgid "To" msgstr "Til" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Leyfileg tákn" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Senda" +msgstr "" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "Senda babl" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Hvað er að frétta %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Gat ekki vistað merki." +msgstr "" -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Gat ekki vistað merki." - -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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 -#, 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:567 -msgid "in context" +#: lib/noticelist.php:502 +msgid "web" msgstr "" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "à sviðsljósinu" +msgstr "" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Svara þessu babli" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Svara" -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "Babl sent inn" - #: lib/nudgeform.php:116 msgid "Nudge this user" msgstr "Ãta við þessum notanda" @@ -6531,11 +4926,6 @@ msgstr "Villa kom upp í uppfærslu persónulegrar fjarsíðu" msgid "Error inserting remote profile" msgstr "Villa kom upp við að setja inn persónulega fjarsíðu" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Eyða babli" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Gat ekki sett inn nýja áskrift." @@ -6573,11 +4963,6 @@ msgstr "Skilaboð sem þú hefur sent" msgid "Tags in %s's notices" msgstr "Merki í babli %s" -#: lib/plugin.php:114 -#, fuzzy -msgid "Unknown" -msgstr "Óþekkt aðgerð" - #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" msgstr "Ãskriftir" @@ -6594,10 +4979,6 @@ msgstr "Ãskrifendur" msgid "All subscribers" msgstr "Allir áskrifendur" -#: lib/profileaction.php:191 -msgid "User ID" -msgstr "" - #: lib/profileaction.php:196 msgid "Member since" msgstr "Meðlimur síðan" @@ -6611,7 +4992,7 @@ msgstr "" msgid "All groups" msgstr "Allir hópar" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6635,48 +5016,23 @@ msgstr "à sviðsljósinu" msgid "Popular" msgstr "Vinsælt" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Ekkert einkenni gefið upp." - -#: lib/repeatform.php:107 -#, fuzzy -msgid "Repeat this notice?" -msgstr "Svara þessu babli" +msgstr "" #: lib/repeatform.php:132 msgid "Yes" msgstr "Já" -#: lib/repeatform.php:132 -#, fuzzy -msgid "Repeat this notice" -msgstr "Svara þessu babli" - #: lib/revokeroleform.php:91 #, 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 "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "Innhólf" - -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "Opna á þennan notanda" - -#: lib/searchaction.php:120 -msgid "Search site" -msgstr "" - #: lib/searchaction.php:126 msgid "Keyword(s)" msgstr "" @@ -6685,10 +5041,6 @@ msgstr "" msgid "Search" msgstr "Leita" -#: lib/searchaction.php:162 -msgid "Search help" -msgstr "" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "Fólk" @@ -6713,16 +5065,6 @@ msgstr "Ónafngreindur hluti" msgid "More..." msgstr "" -#: lib/silenceform.php:67 -#, fuzzy -msgid "Silence" -msgstr "Babl vefsíðunnar" - -#: lib/silenceform.php:78 -#, fuzzy -msgid "Silence this user" -msgstr "Loka á þennan notanda" - #: lib/subgroupnav.php:83 #, php-format msgid "People %s subscribes to" @@ -6761,6 +5103,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Vill kom upp við að aflétta notendalokun." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Aðalbablararnir" @@ -6769,20 +5151,10 @@ msgstr "Aðalbablararnir" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "Opna á þennan notanda" - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -msgid "Unsilence this user" -msgstr "Opna á þennan notanda" - #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" msgstr "Hætta sem áskrifandi að þessum notanda" @@ -6791,15 +5163,6 @@ msgstr "Hætta sem áskrifandi að þessum notanda" msgid "Unsubscribe" msgstr "Fara úr áskrift" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Notandi hefur enga persónulega síðu." - -#: lib/userprofile.php:117 -msgid "Edit Avatar" -msgstr "" - #: lib/userprofile.php:234 lib/userprofile.php:248 msgid "User actions" msgstr "Notandaaðgerðir" @@ -6808,10 +5171,6 @@ msgstr "Notandaaðgerðir" msgid "User deletion in progress..." msgstr "" -#: lib/userprofile.php:263 -msgid "Edit profile settings" -msgstr "" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" @@ -6828,11 +5187,6 @@ msgstr "Skilaboð" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "Persónuleg síða notanda" - #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" @@ -6844,70 +5198,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "fyrir um einu ári síðan" -#: 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 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Skilaboð eru of löng - 140 tákn eru í mesta lagi leyfð en þú sendir %d" diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po index b3aa969ae5..db7cb67ceb 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:10+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:41+0000\n" "Language-Team: Italian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +87,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +126,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:114 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 +160,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 +170,75 @@ 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 +#: 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 "" -"Puoi provare a [richiamare %1$s](../%2$s) dal suo profilo o [scrivere " -"qualche cosa alla sua attenzione](%%%%action.newnotice%%%%?status_textarea=%3" -"$s)." +"[Scrivi qualche cosa](%%%%action.newnotice%%%%?status_textarea=%s) su questo " +"argomento!" -#: 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." -msgstr "" -"Perché non [crei un account](%%%%action.register%%%%) e richiami %s o scrivi " -"un messaggio alla sua attenzione." +"post a notice to them." +msgstr "Perché non [crei un accout](%%action.register%%) e ne scrivi uno tu!" #. 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +246,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 +266,7 @@ msgstr "Impossibile salvare il profilo." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -326,47 +325,48 @@ msgstr "Messaggi diretti a %s" msgid "All the direct messages sent to %s" msgstr "Tutti i messaggi diretti inviati a %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Nessun testo nel messaggio!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Troppo lungo. La dimensione massima di un messaggio è di %d caratteri." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Destinatario non trovato." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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." -msgstr "Impossibile seguire l'utente: utente non trovato." +msgid "Could not follow user: profile not found." +msgstr "Impossibile non seguire l'utente: utente non trovato." #: actions/apifriendshipscreate.php:118 #, php-format @@ -381,9 +381,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." -msgstr "Devono essere forniti due ID utente o nominativi." +#: 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." @@ -393,121 +393,128 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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" @@ -522,15 +529,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 +604,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:463 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 +617,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 +634,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." @@ -640,68 +647,74 @@ msgstr "Non puoi eliminare il messaggio di un altro utente." msgid "No such notice." msgstr "Nessun messaggio." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Non puoi ripetere un tuo messaggio." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Non trovato." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 +729,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 +796,7 @@ msgid "Preview" msgstr "Anteprima" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Elimina" @@ -819,11 +836,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,17 +855,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 "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" @@ -857,23 +873,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -883,8 +900,8 @@ msgstr "Salvataggio delle informazioni per il blocco non riuscito." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Nessuna gruppo." @@ -997,7 +1014,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:1307 msgid "There was a problem with your session token." msgstr "Si è verificato un problema con il tuo token di sessione." @@ -1030,7 +1047,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." @@ -1061,7 +1078,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Elimina questo messaggio" @@ -1101,45 +1118,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" @@ -1149,57 +1174,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 @@ -1209,7 +1242,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" @@ -1323,7 +1356,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." @@ -1362,7 +1396,6 @@ msgstr "Indirizzo email attualmente confermato." #: 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 "Rimuovi" @@ -1396,7 +1429,6 @@ msgstr "Indirizzo email, del tipo \"nomeutente@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 "Aggiungi" @@ -1424,16 +1456,14 @@ 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 "Nuovo" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferenze" +msgstr "Preferenze dell'email" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1473,9 +1503,8 @@ msgstr "Pubblica un MicroID per il mio indirizzo email" #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Preferenze dell'aspetto salvate." +msgstr "Preferenze dell'email salvate." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1488,7 +1517,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." @@ -1531,15 +1560,13 @@ msgstr "Nessuna conferma da annullare." #. 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 "Quello è l'indirizzo di messaggistica sbagliato." +msgstr "Quello è l'indirizzo email sbagliato." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Conferma annullata." +msgstr "Conferma dell'email annullata." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1549,9 +1576,8 @@ msgstr "Quello non è il tuo indirizzo email." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "L'indirizzo è stato rimosso." +msgstr "L'indirizzo email è stato rimosso." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1719,13 +1745,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." @@ -1866,7 +1892,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" @@ -2013,9 +2039,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferenze" +msgstr "Preferenze messaggistica" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2085,15 +2110,13 @@ msgstr "Quello è l'indirizzo di messaggistica sbagliato." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Impossibile eliminare l'email di conferma." +msgstr "Impossibile eliminare la conferma della messaggistica." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Conferma annullata." +msgstr "Conferma della messaggistica annullata." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2103,14 +2126,13 @@ msgstr "Quello non è il tuo ID di Jabber." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "L'indirizzo è stato rimosso." +msgstr "L'indirizzo di messaggistica è stato rimosso." #: actions/inbox.php:59 #, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "Casella posta in arrivo di %s - pagina %2$d" +msgstr "Casella posta in arrivo di %1$s - pagina %2$d" #: actions/inbox.php:62 #, php-format @@ -2151,7 +2173,7 @@ msgstr "Hai già un abbonamento a questi utenti:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2274,9 +2296,7 @@ msgstr "Devi eseguire l'accesso per iscriverti a un gruppo." msgid "No nickname or ID." msgstr "Nessun soprannome o 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s fa ora parte del gruppo %2$s" @@ -2285,50 +2305,49 @@ msgstr "%1$s fa ora parte del gruppo %2$s" msgid "You must be logged in to leave a group." msgstr "Devi eseguire l'accesso per lasciare un gruppo." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Non fai parte di quel gruppo." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2336,14 +2355,16 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Accedi col tuo nome utente e password. Non hai ancora un nome utente? [Crea]" -"(%%action.register%%) un nuovo account." +"Non hai ancora un nome utente? [Crea](%%action.register%%) un nuovo account." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2401,12 +2422,15 @@ msgstr "Usa questo modulo per creare un nuovo gruppo." msgid "New message" msgstr "Nuovo messaggio" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Non puoi inviare un messaggio a questo utente." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Nessun contenuto!" @@ -2414,7 +2438,8 @@ msgstr "Nessun contenuto!" msgid "No recipient specified." msgstr "Nessun destinatario specificato." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Non inviarti un messaggio, piuttosto ripetilo a voce dolcemente." @@ -2423,12 +2448,14 @@ msgstr "Non inviarti un messaggio, piuttosto ripetilo a voce dolcemente." msgid "Message sent" msgstr "Messaggio inviato" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Messaggio diretto a %s inviato." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Errore di Ajax" @@ -2436,7 +2463,7 @@ msgstr "Errore di Ajax" msgid "New notice" msgstr "Nuovo messaggio" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Messaggio inviato" @@ -2488,10 +2515,8 @@ msgstr "Messaggi che corrispondono al termine \"%1$s\" su %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 "" -"Questo utente non consente i richiami oppure non ha confermato o impostato " -"ancora il suo indirizzo email." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2545,30 +2570,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Non è un formato di dati supportato." @@ -2598,7 +2623,7 @@ msgstr "Accorcia gli URL con" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "Servizio di autoriduzione da usare." +msgstr "Servizio di autoriduzione da usare" #: actions/othersettings.php:122 msgid "View profile designs" @@ -2606,7 +2631,7 @@ msgstr "Visualizza aspetto" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "Mostra o nasconde gli aspetti del profilo." +msgstr "Mostra o nasconde gli aspetti del profilo" #: actions/othersettings.php:153 msgid "URL shortening service is too long (max 50 chars)." @@ -2673,7 +2698,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" @@ -2685,11 +2710,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." @@ -2710,7 +2735,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" @@ -2916,43 +2941,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\"" @@ -2995,7 +3020,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)." @@ -3254,7 +3279,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." @@ -3262,39 +3287,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:507 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. " @@ -3303,34 +3328,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Comprendo che i contenuti e i dati di %1$s sono privati e confidenziali." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Tutti i diritti riservati." + +#. 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, " @@ -3340,7 +3388,7 @@ msgstr "" "dati personali: password, indirizzo email, indirizzo messaggistica " "istantanea e numero di telefono." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3374,7 +3422,7 @@ msgstr "" "Grazie per la tua iscrizione e speriamo tu possa divertiti usando questo " "servizio." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3457,7 +3505,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Ripetuti" @@ -3495,10 +3543,8 @@ msgstr "Feed delle risposte di %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." -msgstr "" -"Questa è l'attività delle risposte a %1$s, ma %2$s non ha ricevuto ancora " -"alcun messaggio." +"notice to them yet." +msgstr "Questa è l'attività di %1$s, ma %2$s non ha ancora scritto nulla." #: actions/replies.php:204 #, php-format @@ -3512,11 +3558,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 "" -"Puoi provare a [richiamare %1$s](../%2$s) o [scrivere qualche cosa alla sua " -"attenzione](%%%%action.newnotice%%%%?status_textarea=%s)." +"[Scrivi qualche cosa](%%%%action.newnotice%%%%?status_textarea=%s) su questo " +"argomento!" #: actions/repliesrss.php:72 #, php-format @@ -3531,7 +3577,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" @@ -3545,7 +3591,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" @@ -3588,7 +3634,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" @@ -3599,12 +3645,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" @@ -3690,25 +3736,15 @@ msgstr "" "Non hai ancora scelto alcun messaggio come preferito. Fai clic sul pulsate a " "forma di cuore per salvare i messaggi e rileggerli in un altro momento." -#: 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 :)" -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 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 " -"interessante in modo che lo inserisca tra i suoi preferiti. :)" +"Perché non [crei un account](%%action.register%%) e aggiungi un messaggio " +"tra i tuoi preferiti!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3766,7 +3802,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" @@ -3780,11 +3816,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." @@ -3800,7 +3836,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." @@ -3812,7 +3848,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" @@ -3889,11 +3925,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 "" -"Puoi provare a richiamare %1$s o [scrivere qualche cosa che attiri la sua " -"attenzione](%%%%action.newnotice%%%%?status_textarea=%2$s)." +"[Scrivi qualche cosa](%%%%action.newnotice%%%%?status_textarea=%s) su questo " +"argomento!" #: actions/showstream.php:243 #, php-format @@ -4081,9 +4117,8 @@ msgstr "Il servizio SMS non è disponibile." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Indirizzo di messaggistica istantanea" +msgstr "Indirizzo SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4107,7 +4142,6 @@ msgstr "Inserisci il codice che hai ricevuto sul tuo telefono." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Conferma" @@ -4124,9 +4158,8 @@ msgstr "Numero di telefono, senza punteggiatura o spazi, con il prefisso" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferenze" +msgstr "Preferenze dell'SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4139,9 +4172,8 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Preferenze salvate." +msgstr "Preferenze dell'SMS salvate." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4180,9 +4212,8 @@ msgstr "Quello è il numero di conferma errato." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Conferma annullata." +msgstr "Conferma dell'SMS annullata." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4192,9 +4223,8 @@ msgstr "Quello non è il tuo numero di telefono." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Numero di telefono per SMS" +msgstr "Il numero di telefono per SMS è stato rimosso." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4224,7 +4254,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" @@ -4284,7 +4314,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." @@ -4464,10 +4495,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." @@ -4579,7 +4606,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" @@ -4708,18 +4735,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, " @@ -4728,11 +4755,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 " @@ -4744,7 +4771,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 " @@ -4756,7 +4783,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 " @@ -4765,95 +4792,135 @@ 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:805 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 #, 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: 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4861,71 +4928,107 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problema nel salvare il messaggio." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 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." -msgstr "Impossibile eliminare l'auto-abbonamento." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Impossibile salvare l'abbonamento." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Impossibile eliminare il token di abbonamento 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 "Impossibile salvare l'abbonamento." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Impossibile eliminare l'abbonamento." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Impossibile salvare 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." @@ -4965,199 +5068,199 @@ msgid "Other" msgstr "Altro" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Esplorazione sito primaria" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personale" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Connetti" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Amministra" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Invita" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Esci" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrati" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Accedi al sito" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Accedi" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Aiutami!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Aiuto" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Cerca persone o del testo" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Aiuto" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Informazioni" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacy" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Sorgenti" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contatti" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Badge" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5167,13 +5270,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5185,34 +5288,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:866 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:873 #, 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:880 #, 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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5220,24 +5323,24 @@ msgstr "" "licenza %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1236 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:1247 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:1257 msgid "Before" msgstr "Precedenti" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "Atteso un elemento root del feed, ma ricevuto un documento XML intero." @@ -5245,11 +5348,11 @@ msgstr "Atteso un elemento root del feed, ma ricevuto un documento XML intero." msgid "Can't handle remote content yet." msgstr "Impossibile gestire contenuti remoti." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Impossibile gestire contenuti XML incorporati." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Impossibile gestire contenuti Base64." @@ -5280,64 +5383,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:95 +#: 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 " @@ -5470,11 +5573,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" @@ -5490,44 +5593,46 @@ msgstr "Comando completato" msgid "Command failed" msgstr "Comando non riuscito" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Un messaggio con quel ID non esiste" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Un messaggio con quel ID non esiste." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." msgstr "L'utente non ha un ultimo messaggio." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Impossibile trovare un utente col soprannome %s" +msgid "Could not find a user with nickname %s." +msgstr "Impossibile trovare un utente col soprannome %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 -#, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Impossibile trovare un utente locale col soprannome %s" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Questo comando non è ancora implementato." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Non ha molto senso se cerchi di richiamarti!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Richiamo inviato a %s" +msgid "Nudge sent to %s." +msgstr "Richiamo inviato a %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5538,55 +5643,39 @@ msgstr "" "Abbonati: %2$s\n" "Messaggi: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Messaggio indicato come preferito." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Fai già parte di quel gruppo" - -#. 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 "Impossibile iscrivere l'utente %1$s al gruppo %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 "Impossibile rimuovere l'utente %1$s dal gruppo %2$s." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Pagina web: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Informazioni: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5597,144 +5686,146 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "Messaggio troppo lungo: massimo %1$d caratteri, inviati %2$d." -#. 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 "Messaggio diretto a %s inviato." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Errore nell'inviare il messaggio diretto." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Impossibile ripetere un proprio messaggio" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Hai già ripetuto quel messaggio" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Messaggio da %s ripetuto" +msgid "Notice from %s repeated." +msgstr "Messaggio da %s ripetuto." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Errore nel ripetere il messaggio." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Messaggio troppo lungo: massimo %d caratteri, inviati %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "Messaggio troppo lungo: massimo %1$d caratteri, inviati %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Risposta a %s inviata" +msgid "Reply to %s sent." +msgstr "Risposta a %s inviata." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Errore nel salvare il messaggio." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "Specifica il nome dell'utente a cui abbonarti." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Impossibile abbonarsi ai profili OMB attraverso un comando." -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Abbonati a %s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "Specifica il nome dell'utente da cui annullare l'abbonamento." -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Abbonamento a %s annullato" - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Comando non ancora implementato." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notifiche disattivate." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Impossibile disattivare le notifiche." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notifiche attivate." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Impossibile attivare le notifiche." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Il comando di accesso è disabilitato" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Il comando di accesso è disabilitato." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -"Questo collegamento è utilizzabile una sola volta ed è valido solo per 2 " -"minuti: %s" -#: lib/command.php:761 -#, php-format -msgid "Unsubscribed %s" -msgstr "%s ha annullato l'abbonamento" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Il tuo abbonamento è stato annullato." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Persona di cui hai già un abbonamento:" msgstr[1] "Persone di cui hai già un abbonamento:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Nessuno è abbonato ai tuoi messaggi." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Questa persona è abbonata ai tuoi messaggi:" msgstr[1] "Queste persone sono abbonate ai tuoi messaggi:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Non fai parte di alcun gruppo." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Non fai parte di questo gruppo:" msgstr[1] "Non fai parte di questi gruppi:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6113,8 +6204,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" @@ -6140,19 +6241,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" @@ -6174,31 +6275,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 " @@ -6226,13 +6327,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" @@ -6266,13 +6367,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" @@ -6311,7 +6412,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 +6423,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" @@ -6354,6 +6455,29 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) ti ha appena inviato un messaggio (una \"@-risposta\") su %2" +"$s.\n" +"\n" +"Il messaggio è qui:\n" +"\n" +"%3$s\n" +"\n" +"E dice:\n" +"\n" +"%4$s\n" +"\n" +"%5$sPuoi rispondere qui:\n" +"\n" +"%6$s\n" +"\n" +"L'elenco di tutte le tue @-risposte si trova qui:\n" +"\n" +"%7$s\n" +"\n" +"Cordiali saluti,\n" +"%2$s\n" +"\n" +"P.S: puoi disabilitare le notifiche via email qui: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6368,7 +6492,7 @@ msgstr "" "iniziare una conversazione con altri utenti. Altre persone possono mandare " "messaggi riservati solamente a te." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "via" @@ -6426,24 +6550,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." @@ -6456,11 +6580,11 @@ msgstr "Invia un messaggio diretto" msgid "To" msgstr "A" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Caratteri disponibili" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Invia" @@ -6469,28 +6593,28 @@ msgstr "Invia" msgid "Send a notice" msgstr "Invia un messaggio" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Cosa succede, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Allega" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Allega un file" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Condividi la mia posizione" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Non condividere la mia posizione" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6499,51 +6623,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "in una discussione" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Ripetuto da" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Rispondi a questo messaggio" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Rispondi" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Messaggio ripetuto" @@ -6616,7 +6744,7 @@ msgstr "I tuoi messaggi inviati" msgid "Tags in %s's notices" msgstr "Etichette nei messaggi di %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Sconosciuto" @@ -6653,7 +6781,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" @@ -6677,7 +6805,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." @@ -6698,7 +6826,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." @@ -6796,6 +6924,56 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Salvataggio del tema non riuscito." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6824,11 +7002,6 @@ msgstr "Annulla l'abbonamento da questo utente" msgid "Unsubscribe" msgstr "Disabbonati" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "L'utente %s (%d) non ha un profilo." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Modifica immagine" @@ -6876,56 +7049,56 @@ msgid "Moderator" msgstr "Moderatore" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "circa un anno fa" @@ -6938,8 +7111,3 @@ msgstr "%s non è un colore valido." #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s non è un colore valido. Usa 3 o 6 caratteri esadecimali." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Messaggio troppo lungo: massimo %1$d caratteri, inviati %2$d." diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po index d70e8262de..027ea92c21 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:13+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:44+0000\n" "Language-Team: Japanese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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 "アクセス" @@ -44,10 +45,9 @@ msgstr "匿åユーザー(ログインã—ã¦ã„ã¾ã›ã‚“)ãŒã‚µã‚¤ãƒˆã‚’見る #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" -msgstr "プライベート" +msgstr "プライãƒã‚·ãƒ¼" #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 @@ -74,51 +74,39 @@ msgstr "é–‰ã˜ã‚‰ã‚ŒãŸ" msgid "Save access settings" msgstr "アクセス設定ã®ä¿å­˜" -#. 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 -#, fuzzy -msgctxt "BUTTON" -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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +114,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:114 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,86 +156,83 @@ 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) ã—ãŸã‚Šã§ãã¾ã™ã€‚" +"最åˆã® [ã“ã®ãƒˆãƒ”ック投稿](%%%%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 "" -"[アカウントを登録](%%%%action.register%%%%) ã—㦠%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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, 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" -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "ユーザを更新ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" @@ -267,7 +252,7 @@ msgstr "プロフィールをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -326,47 +311,48 @@ msgstr "%s ã¸ã®ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" msgid "All the direct messages sent to %s" msgstr "%s ã¸é€ã£ãŸå…¨ã¦ã®ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "メッセージã®æœ¬æ–‡ãŒã‚ã‚Šã¾ã›ã‚“ï¼" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "é•·ã™ãŽã¾ã™ã€‚メッセージã¯æœ€å¤§ %d å­—ã¾ã§ã§ã™ã€‚" -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "å—ã‘å–り手ã®ãƒ¦ãƒ¼ã‚¶ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: actions/apidirectmessagenew.php:150 +#: 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -382,9 +368,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 "" #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -394,122 +380,117 @@ 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字)" +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 -#, 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "ã™ã§ã«ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã™ã€‚" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "管ç†è€…ã«ã‚ˆã£ã¦ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -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 上ã®ã‚°ãƒ«ãƒ¼ãƒ—" @@ -524,15 +505,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 +576,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:463 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 +589,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 +606,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 "ä»–ã®ãƒ¦ãƒ¼ã‚¶ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。" @@ -638,67 +619,73 @@ msgstr "ä»–ã®ãƒ¦ãƒ¼ã‚¶ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’消ã™ã“ã¨ã¯ã§ãã¾ã›ã‚“。" msgid "No such notice." msgstr "ãã®ã‚ˆã†ãªã¤ã¶ã‚„ãã¯ã‚ã‚Šã¾ã›ã‚“。" -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "ã‚ãªãŸã®ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã›ã¾ã›ã‚“。" -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "é•·ã™ãŽã¾ã™ã€‚ã¤ã¶ã‚„ãã¯æœ€å¤§ 140 å­—ã¾ã§ã§ã™ã€‚" +msgstr "é•·ã™ãŽã¾ã™ã€‚ã¤ã¶ã‚„ãã¯æœ€å¤§ %d å­—ã¾ã§ã§ã™ã€‚" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“。" -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s ã®ãƒ‘ブリックタイムライン" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "皆ã‹ã‚‰ã® %s アップデート!" @@ -713,16 +700,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 +766,7 @@ msgid "Preview" msgstr "プレビュー" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "削除" @@ -787,11 +778,6 @@ msgstr "アップロード" msgid "Crop" msgstr "切りå–ã‚Š" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "プロファイル記述ãŒã‚ã‚Šã¾ã›ã‚“。" - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã¨ãªã‚‹ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’正方形ã§æŒ‡å®š" @@ -816,62 +802,39 @@ 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 -#, fuzzy -msgid "" -"Are you sure you want to block this user? Afterwards, they will be " -"unsubscribed from you, unable to subscribe to you in the future, and you " -"will not be notified of any @-replies from them." -msgstr "" -"ã‚ãªãŸã¯ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’ブロックã—ãŸã„ã®ã‚’確信ã—ã¦ã„ã¾ã™ã‹? ãã®å¾Œã€ãれらã¯ã‚ãª" -"ãŸã‹ã‚‰ãƒ•ã‚©ãƒ­ãƒ¼ã‚’外ã•ã‚Œã‚‹ã§ã—ょã†ã€å°†æ¥ã€ã‚ãªãŸã«ãƒ•ã‚©ãƒ­ãƒ¼ã§ããªã„ã§ã€ã‚ãªãŸã¯" -"ã©ã‚“㪠@-返信 ã«ã¤ã„ã¦ã‚‚ãれらã‹ã‚‰é€šçŸ¥ã•ã‚Œãªã„ã§ã—ょã†ã€‚" - #. 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 -#, fuzzy msgctxt "BUTTON" msgid "No" -msgstr "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 "ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’アンブロックã™ã‚‹" -#. 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/deletenotice.php:154 actions/deleteuser.php:159 -#: actions/groupblock.php:185 -#, fuzzy -msgctxt "BUTTON" -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 "ブロック情報ã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -881,8 +844,8 @@ msgstr "ブロック情報ã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "ãã®ã‚ˆã†ãªã‚°ãƒ«ãƒ¼ãƒ—ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -914,9 +877,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." @@ -932,9 +895,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 @@ -995,7 +958,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:1307 msgid "There was a problem with your session token." msgstr "ã‚ãªãŸã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ã«é–¢ã™ã‚‹å•é¡ŒãŒã‚ã‚Šã¾ã—ãŸã€‚" @@ -1003,16 +966,6 @@ msgstr "ã‚ãªãŸã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒˆãƒ¼ã‚¯ãƒ³ã«é–¢ã™ã‚‹å•é¡ŒãŒã‚ã‚Šã¾ã— msgid "Delete application" msgstr "アプリケーション削除" -#: actions/deleteapplication.php:149 -#, fuzzy -msgid "" -"Are you sure you want to delete this application? This will clear all data " -"about the application from the database, including all existing user " -"connections." -msgstr "" -"ã‚ãªãŸã¯æœ¬å½“ã«ã“ã®ãƒ¦ãƒ¼ã‚¶ã‚’削除ã—ãŸã„ã§ã™ã‹? ã“ã‚Œã¯ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ãªã—ã§ãƒ‡ãƒ¼ã‚¿" -"ベースã‹ã‚‰ãƒ¦ãƒ¼ã‚¶ã«é–¢ã™ã‚‹ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿ã‚’クリアã—ã¾ã™ã€‚" - #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 msgid "Do not delete this application" @@ -1029,7 +982,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 +1013,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "ã“ã®ã¤ã¶ã‚„ãを削除" @@ -1100,45 +1053,49 @@ 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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "テーマãŒåˆ©ç”¨ã§ãã¾ã›ã‚“: %s" +msgstr "IM ãŒåˆ©ç”¨ä¸å¯ã€‚" -#: 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: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 +1105,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 +1173,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 +1287,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 "別åを作æˆã§ãã¾ã›ã‚“。" @@ -1361,10 +1327,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 "" @@ -1374,17 +1339,6 @@ msgstr "" "ã“ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æ‰¿èªå¾…ã¡ã§ã™ã€‚å—信ボックス(ã¨ã‚¹ãƒ‘ムボックス)ã«è¿½åŠ ã®æŒ‡ç¤ºãŒæ›¸" "ã‹ã‚ŒãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå±Šã„ã¦ã„ãªã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。" -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "中止" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1395,10 +1349,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. @@ -1421,16 +1374,14 @@ msgstr "投稿ã®ãŸã‚ã®æ–°ã—ã„Eメールアドレスを作りã¾ã™; å¤ã„ #. 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 "New" +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 @@ -1470,12 +1421,6 @@ msgstr "メールã§ã¤ã¶ã‚„ãを投稿ã—ãŸã„。" msgid "Publish a MicroID for my email address." msgstr "ç§ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ãŸã‚ã«MicroIDを発行ã—ã¦ãã ã•ã„。" -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "デザイン設定ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸã€‚" - #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." @@ -1487,7 +1432,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 "有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -1528,17 +1473,10 @@ msgstr "" msgid "No pending confirmation to cancel." 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 "ãã® IM アドレスã¯ä¸æ­£ã§ã™ã€‚" - #. 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. @@ -1548,9 +1486,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." @@ -1689,11 +1626,6 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "" "リモートサービスã¯ã€ä¸æ˜Žãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã® OMB プロトコルを使用ã—ã¦ã„ã¾ã™ã€‚" -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "リモートプロファイル更新エラー" - #: actions/getfile.php:79 msgid "No such file." msgstr "ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -1702,34 +1634,19 @@ msgstr "ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“。" msgid "Cannot read file." msgstr "ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“。" -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "ä¸æ­£ãªãƒˆãƒ¼ã‚¯ãƒ³ã€‚" - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "ã‚ãªãŸã¯ã“ã®ã‚µã‚¤ãƒˆã®ã‚µãƒ³ãƒ‰ãƒœãƒƒã‚¯ã‚¹ãƒ¦ãƒ¼ã‚¶ãŒã§ãã¾ã›ã‚“。" - -#: actions/grantrole.php:82 -#, fuzzy -msgid "User already has this role." -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 +1786,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 ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³" @@ -2013,9 +1930,8 @@ 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 @@ -2085,17 +2001,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "ãã® IM アドレスã¯ä¸æ­£ã§ã™ã€‚" -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -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. @@ -2105,9 +2014,8 @@ msgstr "ãã® Jabber ID ã¯ã‚ãªãŸã®ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" #. 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 #, php-format @@ -2129,9 +2037,9 @@ 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 "ä»–ã®ãƒ¦ãƒ¼ã‚¶ãŒ%sを使用ã™ã‚‹ã‚ˆã†èª˜ã†ãŸã‚ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" +msgstr "グループを編集ã™ã‚‹ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" #: actions/invite.php:72 #, php-format @@ -2152,10 +2060,10 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" -msgstr "" +msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" @@ -2200,10 +2108,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 @@ -2273,14 +2180,7 @@ msgstr "" 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 "ニックãƒãƒ¼ãƒ ãŒã‚ã‚Šã¾ã›ã‚“。" - -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s ã¯ã‚°ãƒ«ãƒ¼ãƒ— %2$s ã«å‚加ã—ã¾ã—ãŸ" @@ -2289,50 +2189,49 @@ msgstr "%1$s ã¯ã‚°ãƒ«ãƒ¼ãƒ— %2$s ã«å‚加ã—ã¾ã—ãŸ" msgid "You must be logged in to leave a group." msgstr "グループã‹ã‚‰é›¢ã‚Œã‚‹ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã„ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2239,11 @@ msgstr "" "セキュリティー上ã®ç†ç”±ã«ã‚ˆã‚Šã€è¨­å®šã‚’変更ã™ã‚‹å‰ã«ãƒ¦ãƒ¼ã‚¶åã¨ãƒ‘スワードを入力ã—" "ã¦ä¸‹ã•ã„。" -#: actions/login.php:270 +#: actions/login.php:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"ユーザåã¨ãƒ‘スワードã§ã€ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。 ã¾ã ãƒ¦ãƒ¼ã‚¶åã‚’æŒã£ã¦ã„ã¾ã›ã‚“" -"ã‹? æ–°ã—ã„アカウントを [登録](%%action.register%%)。" #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2369,9 +2265,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "%1$s をグループ %2$s ã®ç®¡ç†è€…ã«ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "ç¾åœ¨ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã‚ã‚Šã¾ã›ã‚“" +msgstr "çµæžœãªã—。" #: actions/newapplication.php:52 msgid "New Application" @@ -2405,12 +2300,15 @@ msgstr "ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’使ã£ã¦æ–°ã—ã„グループを作æˆã—ã¾ã™ã€‚ msgid "New message" msgstr "æ–°ã—ã„メッセージ" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "コンテンツãŒã‚ã‚Šã¾ã›ã‚“ï¼" @@ -2418,7 +2316,8 @@ msgstr "コンテンツãŒã‚ã‚Šã¾ã›ã‚“ï¼" msgid "No recipient specified." msgstr "å—å–人ãŒæ›¸ã‹ã‚Œã¦ã„ã¾ã›ã‚“。" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2428,12 +2327,14 @@ msgstr "" msgid "Message sent" msgstr "メッセージをé€ã‚Šã¾ã—ãŸ" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "ダイレクトメッセージを %s ã«é€ã‚Šã¾ã—ãŸ" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax エラー" @@ -2441,7 +2342,7 @@ msgstr "Ajax エラー" msgid "New notice" msgstr "æ–°ã—ã„ã¤ã¶ã‚„ã" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "ã¤ã¶ã‚„ãを投稿ã—ã¾ã—ãŸ" @@ -2492,10 +2393,8 @@ 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 "" -"ã“ã®ãƒ¦ãƒ¼ã‚¶ã¯ã€åˆå›³ã‚’許å¯ã—ã¦ã„ãªã„ã‹ã€ç¢ºèªã•ã‚Œã¦ã„ãŸçŠ¶æ…‹ã§ãªã„ã‹ã€ãƒ¡ãƒ¼ãƒ«è¨­å®š" -"ã‚’ã—ã¦ã„ã¾ã›ã‚“。" #: actions/nudge.php:94 msgid "Nudge sent" @@ -2535,9 +2434,9 @@ msgid "You are not a user of that application." msgstr "ã‚ãªãŸã¯ãã®ã‚¢ãƒ—リケーションã®ãƒ¦ãƒ¼ã‚¶ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" #: actions/oauthconnectionssettings.php:186 -#, fuzzy, php-format +#, php-format msgid "Unable to revoke access for app: %s." -msgstr "アプリケーションã®ãŸã‚ã®å–消ã—アクセスãŒã§ãã¾ã›ã‚“: " +msgstr "" #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." @@ -2549,31 +2448,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$ ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹" +msgstr "%2$s ã«ãŠã‘ã‚‹ %1$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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„データ形å¼ã€‚" @@ -2678,7 +2576,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 "パスワード確èª" @@ -2690,11 +2588,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 "パスワードãŒä¸€è‡´ã—ã¾ã›ã‚“。" @@ -2715,7 +2613,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 "パス" @@ -2724,24 +2622,19 @@ msgid "Path and server settings for this StatusNet site." msgstr "パス㨠StatusNet サイトã®ã‚µãƒ¼ãƒãƒ¼è¨­å®š" #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "テーマディレクトリãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“: %s" +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" - -#: actions/pathsadminpanel.php:177 -#, fuzzy, php-format -msgid "Locales directory not readable: %s." -msgstr "場所ディレクトリãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“: %s" +msgstr "ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2881,9 +2774,9 @@ msgid "People search" msgstr "ピープルサーãƒ" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "æ­£ã—ã„ã‚¿ã‚°ã§ã¯ã‚ã‚Šã¾ã›ã‚“: %s" +msgstr "有効ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" #: actions/peopletag.php:142 #, php-format @@ -2891,9 +2784,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "ユーザ自身ãŒã¤ã‘ãŸã‚¿ã‚° %1$s - ページ %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "ä¸æ­£ãªã¤ã¶ã‚„ã内容" +msgstr "ä¸æ­£ãªãƒˆãƒ¼ã‚¯ãƒ³ã€‚" #: actions/postnotice.php:101 #, php-format @@ -2920,43 +2812,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 "自分ã®ã„る場所。例:「都市, 都é“府県 (ã¾ãŸã¯åœ°åŸŸ), 国ã€" @@ -2998,10 +2890,10 @@ 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文字)。" +msgstr "自己紹介ãŒé•·ã™ãŽã¾ã™ (最長%d文字)。" #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." @@ -3038,9 +2930,9 @@ msgid "Settings saved." msgstr "設定ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸã€‚" #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "ページ制é™ã‚’超ãˆã¾ã—㟠(%s)" +msgstr "" #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3259,7 +3151,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 "ユーザ設定エラー" @@ -3267,82 +3159,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 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:507 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 -#, fuzzy +#: 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:494 -#, fuzzy, php-format +#: 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 "個人情報を除ã: パスワードã€ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã€IMアドレスã€é›»è©±ç•ªå·" +msgstr "" -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3375,7 +3286,7 @@ msgstr "" "å‚加ã—ã¦ãã ã•ã£ã¦ã‚ã‚ŠãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚ç§ãŸã¡ã¯ã‚ãªãŸãŒã“ã®ã‚µãƒ¼ãƒ“スを楽ã—ã‚“" "ã§ä½¿ã£ã¦ãれるã“ã¨ã‚’願ã£ã¦ã„ã¾ã™ã€‚" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3459,7 +3370,7 @@ msgstr "自分ã®ã¤ã¶ã‚„ãã¯ç¹°ã‚Šè¿”ã›ã¾ã›ã‚“。" msgid "You already repeated that notice." msgstr "ã™ã§ã«ãã®ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¦ã„ã¾ã™ã€‚" -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "ç¹°ã‚Šè¿”ã•ã‚ŒãŸ" @@ -3497,10 +3408,8 @@ 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." -msgstr "" -"ã“れ㯠%1$s ã¸ã®è¿”信を表示ã—ãŸã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã§ã™ã€ã—ã‹ã— %2$s ã¯ã¾ã ã¤ã¶ã‚„ãã‚’" -"å—ã‘å–ã£ã¦ã„ã¾ã›ã‚“。" +"notice to them yet." +msgstr "ã“れ㯠%1$s ã®ã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã§ã™ãŒã€%2$s ã¯ã¾ã ãªã«ã‚‚投稿ã—ã¦ã„ã¾ã›ã‚“。" #: actions/replies.php:204 #, php-format @@ -3514,28 +3423,18 @@ 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)ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" +"最åˆã® [ã“ã®ãƒˆãƒ”ック投稿](%%%%action.newnotice%%%%?status_textarea=%s) ã‚’ã—ã¦" +"ãã ã•ã„!" #: actions/repliesrss.php:72 #, php-format msgid "Replies to %1$s on %2$s!" msgstr "%2$s 上㮠%1$s ã¸ã®è¿”ä¿¡!" -#: actions/revokerole.php:75 -#, fuzzy -msgid "You cannot revoke user roles on this site." -msgstr "ã‚ãªãŸã¯ã“ã®ã‚µã‚¤ãƒˆã§ãƒ¦ãƒ¼ã‚¶ã‚’黙らã›ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。" - -#: actions/revokerole.php:82 -#, fuzzy -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" @@ -3549,7 +3448,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 "セッション" @@ -3592,7 +3491,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 "åå‰" @@ -3603,12 +3502,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 "統計データ" @@ -3658,11 +3557,6 @@ msgstr "" "注æ„: ç§ãŸã¡ã¯HMAC-SHA1ç½²åをサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ ç§ãŸã¡ã¯å¹³æ–‡ç½²åメソッドをサ" "ãƒãƒ¼ãƒˆã—ã¾ã›ã‚“。" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "本当ã«ã“ã®ã¤ã¶ã‚„ãを削除ã—ã¾ã™ã‹ï¼Ÿ" - #: actions/showfavorites.php:79 #, php-format msgid "%1$s's favorite notices, page %2$d" @@ -3696,25 +3590,15 @@ 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 :)" -msgstr "" -"%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%%%%) ã—ãªã„ã®ã§ã™ã‹ã€‚ãã—ã¦ã€å½¼ã‚‰ãŒãŠæ°—ã«å…¥ã‚Šã«åŠ ãˆã‚‹ãŠã‚‚" -"ã—ã‚ã„何ã‹ã‚’投稿ã—ã¾ã›ã‚“ã‹:)" +"ãªãœ [アカウント登録](%%action.register%%) ã—ãªã„ã®ã§ã™ã‹ã€ãã—ã¦ã€ã‚ãªãŸã®ãŠ" +"æ°—ã«å…¥ã‚Šã«ã¤ã¶ã‚„ãを加ãˆã‚‹æœ€åˆã«ãªã‚Šã¾ã—ょã†!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3772,7 +3656,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 "メンãƒãƒ¼" @@ -3786,11 +3670,11 @@ msgstr "(ãªã—)" msgid "All members" msgstr "å…¨ã¦ã®ãƒ¡ãƒ³ãƒãƒ¼" -#: actions/showgroup.php:447 +#: actions/showgroup.php:439 msgid "Created" msgstr "作æˆæ—¥" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3805,7 +3689,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." @@ -3818,7 +3702,7 @@ msgstr "" "wikipedia.org/wiki/Micro-blogging) サービス。メンãƒãƒ¼ã¯å½¼ã‚‰ã®æš®ã‚‰ã—ã¨èˆˆå‘³ã«é–¢" "ã™ã‚‹çŸ­ã„メッセージを共有ã—ã¾ã™ã€‚" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "管ç†è€…" @@ -3895,11 +3779,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) ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" +"最åˆã® [ã“ã®ãƒˆãƒ”ック投稿](%%%%action.newnotice%%%%?status_textarea=%s) ã‚’ã—ã¦" +"ãã ã•ã„!" #: actions/showstream.php:243 #, php-format @@ -3940,9 +3824,8 @@ 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." @@ -3958,14 +3841,12 @@ msgid "Unknown language \"%s\"." msgstr "ä¸æ˜Žãªè¨€èªž \"%s\"" #: actions/siteadminpanel.php:165 -#, fuzzy msgid "Minimum text limit is 0 (unlimited)." -msgstr "最å°ã®ãƒ†ã‚­ã‚¹ãƒˆåˆ¶é™ã¯140å­—ã§ã™ã€‚" +msgstr "" #: actions/siteadminpanel.php:171 -#, fuzzy msgid "Dupe limit must be one or more seconds." -msgstr "デュープ制é™ã¯1秒以上ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。" +msgstr "" #: actions/siteadminpanel.php:221 msgid "General" @@ -4015,9 +3896,8 @@ msgid "Default timezone for the site; usually 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" @@ -4045,39 +3925,14 @@ msgstr "" "ã©ã‚Œãらã„é•·ã„é–“(秒)ã€ãƒ¦ãƒ¼ã‚¶ã¯ã€å†ã³åŒã˜ã‚‚ã®ã‚’投稿ã™ã‚‹ã®ã‚’å¾…ãŸãªã‘ã‚Œã°ãªã‚‰ãª" "ã„ã‹ã€‚" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -msgid "Site Notice" -msgstr "サイトã¤ã¶ã‚„ã" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "æ–°ã—ã„メッセージ" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -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 -#, fuzzy -msgid "Site notice text" -msgstr "サイトã¤ã¶ã‚„ã" - #: 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 "サイトã¤ã¶ã‚„ã" - #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 msgid "SMS settings" @@ -4096,12 +3951,6 @@ msgstr "" msgid "SMS is not available." msgstr "SMS ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。" -#. TRANS: Form legend for SMS settings form. -#: actions/smssettings.php:111 -#, fuzzy -msgid "SMS address" -msgstr "IMアドレス" - #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 msgid "Current confirmed SMS-enabled phone number." @@ -4122,13 +3971,6 @@ msgstr "確èªã‚³ãƒ¼ãƒ‰" 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 -#, fuzzy -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" @@ -4141,9 +3983,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 @@ -4154,12 +3995,6 @@ msgstr "" "SMSを通ã—ã¦ã¤ã¶ã‚„ãã‚’ç§ã«é€ã£ã¦ãã ã•ã„; ç§ã¯ã€ç§ã®ã‚­ãƒ£ãƒªã‚¢ã‹ã‚‰æ³•å¤–ãªæ–™é‡‘を被" "ã‚‹ã‹ã‚‚ã—ã‚Œãªã„ã®ã‚’ç†è§£ã—ã¦ã„ã¾ã™ã€‚" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "設定ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸã€‚" - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." @@ -4196,9 +4031,8 @@ msgstr "ãã‚Œã¯é–“é•ã£ãŸç¢ºèªç•ªå·ã§ã™ã€‚" #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: 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. @@ -4206,12 +4040,6 @@ msgstr "承èªä½œæ¥­ãŒä¸­æ­¢ã•ã‚Œã¾ã—ãŸã€‚" msgid "That is not your phone number." 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 電話番å·" - #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" @@ -4241,14 +4069,13 @@ 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." @@ -4294,16 +4121,12 @@ msgstr "レãƒãƒ¼ãƒˆ URL" msgid "Snapshots will be sent to this URL" msgstr "ã“ã®URLã«ã‚¹ãƒŠãƒƒãƒ—ショットをé€ã‚‹ã§ã—ょã†" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -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 "フォローをä¿å­˜ã§ãã¾ã›ã‚“。" @@ -4311,16 +4134,6 @@ msgstr "フォローをä¿å­˜ã§ãã¾ã›ã‚“。" msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“。" - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "ã‚ãªãŸã¯ãã®ãƒ—ロファイルã«ãƒ•ã‚©ãƒ­ãƒ¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。" - #: actions/subscribe.php:145 msgid "Subscribed" msgstr "フォローã—ã¦ã„ã‚‹" @@ -4482,10 +4295,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 "ã‚ãªãŸã¯ãã®ãƒ¦ãƒ¼ã‚¶ã‚’ブロックã—ã¦ã„ã¾ã›ã‚“。" @@ -4499,9 +4308,8 @@ msgid "User is not silenced." msgstr "ユーザã¯ã‚µã‚¤ãƒ¬ãƒ³ã‚¹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。" #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "リクエスト内ã«ãƒ—ロファイルIDãŒã‚ã‚Šã¾ã›ã‚“。" +msgstr "ログイントークンãŒè¦æ±‚ã•ã‚Œã¦ã„ã¾ã›ã‚“。" #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4515,13 +4323,6 @@ msgstr "" "リスニーストリームライセンス ‘%1$s’ ã¯ã€ã‚µã‚¤ãƒˆãƒ©ã‚¤ã‚»ãƒ³ã‚¹ ‘%2$s’ ã¨äº’æ›æ€§ãŒã‚" "ã‚Šã¾ã›ã‚“。" -#. 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 "ã“ã® StatusNet サイトã®ãƒ¦ãƒ¼ã‚¶è¨­å®šã€‚" @@ -4598,7 +4399,7 @@ msgstr "" "ユーザã®ã¤ã¶ã‚„ãをフォローã™ã‚‹ã«ã¯è©³ç´°ã‚’確èªã—ã¦ä¸‹ã•ã„。ã ã‚Œã‹ã®ã¤ã¶ã‚„ãã‚’" "フォローã™ã‚‹ãŸã‚ã«å°‹ã­ãªã„å ´åˆã¯ã€\"Reject\" をクリックã—ã¦ä¸‹ã•ã„。" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "ライセンス" @@ -4699,9 +4500,8 @@ msgstr "" "方法をカスタマイズã—ã¦ãã ã•ã„。" #: actions/userdesignsettings.php:282 -#, fuzzy msgid "Enjoy your hotdog!" -msgstr "ã‚ãªãŸã®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 @@ -4728,18 +4528,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, " @@ -4748,11 +4548,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 " @@ -4760,7 +4560,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 " @@ -4768,103 +4568,136 @@ 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:805 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 "" -"ã©ã‚“ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚‚ %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: 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 -#, 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. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format -msgid "Database error inserting hashtag: %s" -msgstr "ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°è¿½åŠ  DB エラー: %s" +#. 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 "" -#: classes/Notice.php:245 +#. TRANS: Server exception. %s are the error details. +#: classes/Notice.php:193 +#, php-format +msgid "Database error inserting hashtag: %s" +msgstr "OAuth アプリケーションユーザã®è¿½åŠ æ™‚DBエラー。" + +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4872,77 +4705,103 @@ msgstr "" "多ã™ãŽã‚‹é‡è¤‡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒé€Ÿã™ãŽã¾ã™; 数分間休ã¿ã‚’å–ã£ã¦ã‹ã‚‰å†åº¦æŠ•ç¨¿ã—ã¦ãã ã•" "ã„。" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "ã¤ã¶ã‚„ãã‚’ä¿å­˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#. 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 "RT @%1$s %2$s" +msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist." msgstr "" -#: classes/Subscription.php:74 lib/oauthstore.php:465 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +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 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -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 "フォローをä¿å­˜ã§ãã¾ã›ã‚“。" -#: 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 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 -#, fuzzy -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" @@ -4979,232 +4838,161 @@ msgid "Other" msgstr "ãã®ä»–" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, php-format msgid "%1$s - %2$s" msgstr "" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" msgstr "å称未設定ページ" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "プライマリサイトナビゲーション" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "パーソナル" +msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "接続" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -msgctxt "MENU" -msgid "Admin" -msgstr "管ç†è€…" - -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "招待" +msgstr "基本サイト設定" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" -msgstr "ログアウト" +msgstr "ロゴ" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 msgctxt "TOOLTIP" msgid "Create an account" -msgstr "アカウントを作æˆ" - -#. TRANS: Main menu option when not logged in to register a new account -#: lib/action.php:475 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "登録" - -#. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Login to the site" -msgstr "サイトã¸ãƒ­ã‚°ã‚¤ãƒ³" - -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "ログイン" +msgstr "æ–°ã—ã„グループを作æˆ" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "助ã‘ã¦ï¼" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" msgstr "ヘルプ" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "人々ã‹ãƒ†ã‚­ã‚¹ãƒˆã‚’検索" - -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -msgstr "検索" +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:538 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:605 msgid "Local views" msgstr "ローカルビュー" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "ページã¤ã¶ã‚„ã" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "セカンダリサイトナビゲーション" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "ヘルプ" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "About" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "よãã‚る質å•" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "プライãƒã‚·ãƒ¼" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "ソース" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "連絡先" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "ãƒãƒƒã‚¸" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5216,54 +5004,54 @@ msgstr "" "org/licensing/licenses/agpl-3.0.html)。" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "å‰>>" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5271,11 +5059,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5306,68 +5094,42 @@ 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 -#, 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 -#, 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 -#, fuzzy -msgid "Edit site notice" -msgstr "サイトã¤ã¶ã‚„ã" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "パス設定" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "APIリソースã¯èª­ã¿æ›¸ãアクセスãŒå¿…è¦ã§ã™ã€ã—ã‹ã—ã‚ãªãŸã¯èª­ã¿ã‚¢ã‚¯ã‚»ã‚¹ã—ã‹æŒã£ã¦" @@ -5456,18 +5218,6 @@ msgstr "" msgid "Cancel" msgstr "中止" -#. TRANS: Application access type -#: lib/applicationlist.php:136 -#, fuzzy -msgid "read-write" -msgstr "リードライト" - -#. TRANS: Application access type -#: lib/applicationlist.php:138 -#, fuzzy -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 @@ -5476,10 +5226,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 @@ -5504,11 +5253,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 "パスワード変更ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“" @@ -5524,44 +5273,21 @@ msgstr "コマンド完了" msgid "Command failed" msgstr "コマンド失敗" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "ãã® ID ã«ã‚ˆã‚‹ã¤ã¶ã‚„ãã¯å­˜åœ¨ã—ã¦ã„ã¾ã›ã‚“" - -#: 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 -#, fuzzy, php-format -msgid "Could not find a local user with nickname %s" -msgstr "ユーザを更新ã§ãã¾ã›ã‚“" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "ã™ã¿ã¾ã›ã‚“ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "%s ã¸åˆå›³ã‚’é€ã‚Šã¾ã—ãŸ" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5572,55 +5298,39 @@ msgstr "" "フォローã•ã‚Œã¦ã„ã‚‹: %2$s\n" "ã¤ã¶ã‚„ã: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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 "ユーザ %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 -msgid "Could not remove user %1$s from group %2$s" -msgstr "ユーザ %1$s をグループ %2$s ã‹ã‚‰å‰Šé™¤ã§ãã¾ã›ã‚“。" - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "ホームページ: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "About: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5629,140 +5339,117 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "メッセージãŒé•·ã™ãŽã¾ã™ - 最大 %1$d å­—ã€ã‚ãªãŸãŒé€ã£ãŸã®ã¯ %2$d。" -#. 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 "ダイレクトメッセージを %s ã«é€ã‚Šã¾ã—ãŸ" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 "%s ã‹ã‚‰ã¤ã¶ã‚„ããŒç¹°ã‚Šè¿”ã•ã‚Œã¦ã„ã¾ã™" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "ã¤ã¶ã‚„ãç¹°ã‚Šè¿”ã—エラー" -#: lib/command.php:562 -#, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "ã¤ã¶ã‚„ããŒé•·ã™ãŽã¾ã™ - 最大 %d å­—ã€ã‚ãªãŸãŒé€ã£ãŸã®ã¯ %d" - -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "%s ã¸è¿”ä¿¡ã‚’é€ã‚Šã¾ã—ãŸ" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "ã¤ã¶ã‚„ãä¿å­˜ã‚¨ãƒ©ãƒ¼ã€‚" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "フォローã™ã‚‹ãƒ¦ãƒ¼ã‚¶ã®åå‰ã‚’指定ã—ã¦ãã ã•ã„" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +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 "ã‚ãªãŸã¯ãã®ãƒ—ロファイルã«ãƒ•ã‚©ãƒ­ãƒ¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "%s をフォローã—ã¾ã—ãŸ" - -#: 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 "%s ã®ãƒ•ã‚©ãƒ­ãƒ¼ã‚’ã‚„ã‚ã‚‹" - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "コマンドã¯ã¾ã å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "通知オフ。" -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "通知をオフã§ãã¾ã›ã‚“。" -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "通知オン。" -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "通知をオンã§ãã¾ã›ã‚“。" -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "ログインコマンドãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "ã“ã®ãƒªãƒ³ã‚¯ã¯ã€ã‹ã¤ã¦ã ã‘使用å¯èƒ½ã§ã‚ã‚Šã€2分間ã ã‘良ã„ã§ã™: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "%s ã®ãƒ•ã‚©ãƒ­ãƒ¼ã‚’ã‚„ã‚ã‚‹" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "ã‚ãªãŸã¯ã ã‚Œã«ã‚‚フォローã•ã‚Œã¦ã„ã¾ã›ã‚“。" -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "ã‚ãªãŸã¯ã“ã®äººã«ãƒ•ã‚©ãƒ­ãƒ¼ã•ã‚Œã¦ã„ã¾ã™:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "誰もフォローã—ã¦ã„ã¾ã›ã‚“。" -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "ã“ã®äººã¯ã‚ãªãŸã«ãƒ•ã‚©ãƒ­ãƒ¼ã•ã‚Œã¦ã„ã‚‹:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "ã‚ãªãŸã¯ã©ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。" -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "ã‚ãªãŸã¯ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ã‚ã‚Šã¾ã›ã‚“:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6099,9 +5786,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" @@ -6114,32 +5808,22 @@ 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 +#: 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 -#, fuzzy, php-format +#: lib/mail.php:308 +#, php-format msgid "" "You have a new posting address on %1$s.\n" "\n" @@ -6150,41 +5834,27 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -"ã‚ãªãŸã¯ %1$s ã«é–¢ã™ã‚‹æ–°ã—ã„投稿アドレスをæŒã£ã¦ã„ã¾ã™ã€‚\n" -"\n" -"%2$s ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ã£ã¦ã€æ–°ã—ã„メッセージを投稿ã—ã¦ãã ã•ã„。\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 "SMS確èª" -#. TRANS: Main body heading for SMS-by-email address confirmation message -#: lib/mail.php:457 -#, 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 -#, fuzzy, php-format +#: 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" @@ -6198,27 +5868,16 @@ 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 "%s ã‹ã‚‰ã®æ–°ã—ã„プライベートメッセージ" #. TRANS: Body for direct-message notification email -#: lib/mail.php:535 -#, fuzzy, php-format +#: lib/mail.php:541 +#, php-format msgid "" "%1$s (%2$s) sent you a private message:\n" "\n" @@ -6235,30 +5894,16 @@ 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) ã¯ãŠæ°—ã«å…¥ã‚Šã¨ã—ã¦ã‚ãªãŸã®ã¤ã¶ã‚„ãを加ãˆã¾ã—ãŸ" #. TRANS: Body for favorite notification email -#: lib/mail.php:586 -#, fuzzy, php-format +#: 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" @@ -6277,26 +5922,9 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" -"%1$s (@%7$s) ã¯å½¼ã‚‰ã®ãŠæ°—ã«å…¥ã‚Šã®ã²ã¨ã‚Šã¨ã—㦠%2$s ã‹ã‚‰ã‚ãªãŸã®ã¤ã¶ã‚„ãを加ãˆ" -"ã¾ã—ãŸã€‚\n" -"\n" -"ã‚ãªãŸã®ã¤ã¶ã‚„ãã®ï¼µï¼²ï¼¬:\n" -"\n" -"%3$s\n" -"\n" -"ã‚ãªãŸã®ã¤ã¶ã‚„ãã®ãƒ†ã‚­ã‚¹ãƒˆ:\n" -"\n" -"%4$s\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" @@ -6304,13 +5932,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" @@ -6350,7 +5978,7 @@ msgstr "" "ã«å¼•ã込むプライベートメッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚人々ã¯ã‚ãªãŸã ã‘ã¸ã®" "メッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "from" @@ -6411,24 +6039,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 ã¯ã“ã®ã‚µãƒ¼ãƒã®ã‚µãƒãƒ¼ãƒˆã—ã¦ã„るファイルタイプã§ã¯ã‚ã‚Šã¾ã›ã‚“。" @@ -6441,42 +6069,41 @@ msgstr "直接ã¤ã¶ã‚„ãã‚’é€ã‚‹" msgid "To" msgstr "To" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "利用å¯èƒ½ãªæ–‡å­—" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "投稿" +msgstr "" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "ã¤ã¶ã‚„ãã‚’é€ã‚‹" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "最近ã©ã† %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "添付" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "ファイル添付" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "ã‚ãªãŸã®å ´æ‰€ã‚’共有ã™ã‚‹" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "ã‚ãªãŸã®å ´æ‰€ã‚’共有ã—ãªã„" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6484,56 +6111,51 @@ msgstr "" "ã™ã¿ã¾ã›ã‚“ã€ã‚ãªãŸã®ä½ç½®ã‚’検索ã™ã‚‹ã®ãŒäºˆæƒ³ã‚ˆã‚Šé•·ãã‹ã‹ã£ã¦ã„ã¾ã™ã€å¾Œã§ã‚‚ã†ä¸€" "度試ã¿ã¦ãã ã•ã„" -#. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 -#, fuzzy -msgid "N" -msgstr "北" - #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 -#, fuzzy +#: lib/noticelist.php:438 msgid "S" -msgstr "å—" +msgstr "" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 -#, fuzzy +#: lib/noticelist.php:440 msgid "E" -msgstr "æ±" +msgstr "" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 -#, fuzzy +#: 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 "" -#: lib/noticelist.php:447 +#: lib/noticelist.php:453 msgid "at" msgstr "at" -#: lib/noticelist.php:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "ã“ã®ã¤ã¶ã‚„ãã¸è¿”ä¿¡" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "返信" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¾ã—ãŸ" @@ -6606,7 +6228,7 @@ msgstr "ã‚ãªãŸãŒé€ã£ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" msgid "Tags in %s's notices" msgstr "%s ã®ã¤ã¶ã‚„ãã®ã‚¿ã‚°" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "ä¸æ˜Ž" @@ -6643,7 +6265,7 @@ msgstr "" msgid "All groups" msgstr "å…¨ã¦ã®ã‚°ãƒ«ãƒ¼ãƒ—" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "未実装ã®ãƒ¡ã‚½ãƒƒãƒ‰ã€‚" @@ -6667,7 +6289,7 @@ msgstr "フィーãƒãƒ£ãƒ¼ã•ã‚ŒãŸ" msgid "Popular" msgstr "人気" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "return-to 引数ãŒã‚ã‚Šã¾ã›ã‚“。" @@ -6683,12 +6305,7 @@ msgstr "Yes" msgid "Repeat this notice" 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 "single-user モードã®ãŸã‚ã®ã‚·ãƒ³ã‚°ãƒ«ãƒ¦ãƒ¼ã‚¶ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“。" @@ -6786,6 +6403,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "ブロックã®å‰Šé™¤ã‚¨ãƒ©ãƒ¼" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "上ä½æŠ•ç¨¿è€…" @@ -6814,11 +6471,6 @@ msgstr "ã“ã®åˆ©ç”¨è€…ã‹ã‚‰ã®ãƒ•ã‚©ãƒ­ãƒ¼ã‚’解除ã™ã‚‹" msgid "Unsubscribe" msgstr "フォロー解除" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "ユーザã¯ãƒ—ロフィールをもã£ã¦ã„ã¾ã›ã‚“。" - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "ã‚¢ãƒã‚¿ãƒ¼ã‚’編集ã™ã‚‹" @@ -6848,78 +6500,65 @@ msgid "Message" msgstr "メッセージ" #: lib/userprofile.php:326 -#, fuzzy msgid "Moderate" -msgstr "管ç†" - -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "ユーザプロファイル" - -#: lib/userprofile.php:366 -#, fuzzy -msgctxt "role" -msgid "Administrator" -msgstr "管ç†è€…" +msgstr "" #: lib/userprofile.php:367 -#, fuzzy msgctxt "role" msgid "Moderator" -msgstr "管ç†" +msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "数秒å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "ç´„ 1 分å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "ç´„ 1 時間å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "ç´„ 1 æ—¥å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "ç´„ 1 ヵ月å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "ç´„ 1 å¹´å‰" @@ -6932,8 +6571,3 @@ msgstr "%sã¯æœ‰åŠ¹ãªè‰²ã§ã¯ã‚ã‚Šã¾ã›ã‚“!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s ã¯æœ‰åŠ¹ãªè‰²ã§ã¯ã‚ã‚Šã¾ã›ã‚“! 3ã‹6ã®16進数を使ã£ã¦ãã ã•ã„。" - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "メッセージãŒé•·ã™ãŽã¾ã™ - 最大 %1$d å­—ã€ã‚ãªãŸãŒé€ã£ãŸã®ã¯ %2$d。" diff --git a/locale/ka/LC_MESSAGES/statusnet.po b/locale/ka/LC_MESSAGES/statusnet.po new file mode 100644 index 0000000000..f51cb3c27d --- /dev/null +++ b/locale/ka/LC_MESSAGES/statusnet.po @@ -0,0 +1,6339 @@ +# Translation of StatusNet to Georgian +# +# Author@translatewiki.net: Zaal +# -- +# -- +# 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-09-09 18:07+0000\n" +"PO-Revision-Date: 2010-09-09 18:09:12+0000\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" +"X-Translation-Project: translatewiki.net at http://translatewiki.net\n" +"X-Language-Code: ka\n" +"X-Message-Group: out-statusnet\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Page title +#. TRANS: Menu item for site administration +#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376 +msgid "Access" +msgstr "შესვლáƒ" + +#. TRANS: Page notice +#: actions/accessadminpanel.php:67 +msgid "Site access settings" +msgstr "სáƒáƒ˜áƒ¢áƒ–ე შესვლის პáƒáƒ áƒáƒ›áƒ”ტრები" + +#. TRANS: Form legend for registration form. +#: actions/accessadminpanel.php:161 +msgid "Registration" +msgstr "რეგისტრáƒáƒªáƒ˜áƒ" + +#. TRANS: Checkbox instructions for admin setting "Private" +#: 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 +msgctxt "LABEL" +msgid "Private" +msgstr "პირáƒáƒ“ი" + +#. TRANS: Checkbox instructions for admin setting "Invite only" +#: actions/accessadminpanel.php:174 +msgid "Make registration invitation only." +msgstr "რეგისტრáƒáƒªáƒ˜áƒ მხáƒáƒšáƒáƒ“ მáƒáƒ¬áƒ•áƒ”ვით." + +#. TRANS: Checkbox label for configuring site as invite only. +#: actions/accessadminpanel.php:176 +msgid "Invite only" +msgstr "მხáƒáƒšáƒáƒ“ მáƒáƒ¬áƒ•áƒ”ვით" + +#. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) +#: actions/accessadminpanel.php:183 +msgid "Disable new registrations." +msgstr "áƒáƒ®áƒáƒšáƒ˜ რეგისტრáƒáƒªáƒ˜áƒ”ბის გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ." + +#. TRANS: Checkbox label for disabling new user registrations. +#: actions/accessadminpanel.php:185 +msgid "Closed" +msgstr "დáƒáƒ®áƒ£áƒ áƒ£áƒšáƒ˜" + +#. TRANS: Title / tooltip for button to save access settings in site admin panel +#: actions/accessadminpanel.php:202 +msgid "Save access settings" +msgstr "შეინáƒáƒ®áƒ” შესვლის პáƒáƒ áƒáƒ›áƒ”ტრები" + +#. 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 "შეინáƒáƒ®áƒ”" + +#. 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 "áƒáƒ¡áƒ”თი გვერდი áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." + +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:498 lib/galleryaction.php:59 +#: lib/mailbox.php:82 lib/profileaction.php:77 +msgid "No such user." +msgstr "áƒáƒ¡áƒ”თი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." + +#. 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 დრმეგáƒáƒ‘რები, გვერდი %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 დრმეგáƒáƒ‘რები" + +#. 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 "" +"ეს áƒáƒ áƒ˜áƒ¡ $s-ს დრმეგáƒáƒ‘რების გáƒáƒœáƒáƒ®áƒšáƒ”ბების ნáƒáƒ™áƒáƒ“ი, მáƒáƒ’რáƒáƒ› ჯერჯერáƒáƒ‘ით áƒáƒ áƒáƒ•áƒ˜áƒ¡ " +"დáƒáƒ£áƒžáƒáƒ¡áƒ¢áƒáƒ•áƒ¡." + +#: actions/all.php:143 +#, php-format +msgid "" +"Try subscribing to more people, [join a group](%%action.groups%%) or post " +"something yourself." +msgstr "" +" გáƒáƒ®áƒ“ი მეტი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მიმდევáƒáƒ áƒ˜, [გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ“ი ჯგუფში](%%action.groups%%) " +"áƒáƒœ თáƒáƒ•áƒáƒ“ დáƒáƒžáƒáƒ¡áƒ¢áƒ” რáƒáƒ›áƒ”." + +#: 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 "" +"[გáƒáƒ®áƒ¡áƒ”ნი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜](%%%%action.register%%%%) დრგáƒáƒ›áƒáƒ”ხმáƒáƒ£áƒ áƒ” %s-ს áƒáƒœ დáƒáƒ£áƒ¢áƒáƒ•áƒ” " +"შეტყáƒáƒ‘ინებáƒ." + +#. TRANS: H1 text +#: 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: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: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 მეთáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: 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 "ეს მეთáƒáƒ“ი მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ POST-ს." + +#: 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:133 +msgid "Could not update user." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: 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 "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს პრáƒáƒ¤áƒ˜áƒšáƒ˜ áƒáƒ  გáƒáƒáƒ©áƒœáƒ˜áƒ." + +#: actions/apiaccountupdateprofile.php:147 +msgid "Could not save profile." +msgstr "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•áƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: 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 "" +"სáƒáƒ›áƒ¬áƒ£áƒ®áƒáƒ áƒáƒ“ სერვერმრვერ გáƒáƒ£áƒ«áƒšáƒ áƒáƒ›áƒ“ენ POST მáƒáƒœáƒáƒªáƒ”მებს (%s ბáƒáƒ˜áƒ¢áƒ˜) მიმდინáƒáƒ áƒ” " +"კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ›áƒ." + +#: 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 "სáƒáƒ›áƒ¬áƒ£áƒ®áƒáƒ áƒáƒ“ თქვენი დიზáƒáƒ˜áƒœáƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრების შენáƒáƒ®áƒ•áƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/apiaccountupdateprofilebackgroundimage.php:187 +#: actions/apiaccountupdateprofilecolors.php:142 +msgid "Could not update your design." +msgstr "დიზáƒáƒ˜áƒœáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/apiblockcreate.php:105 +msgid "You cannot block yourself!" +msgstr "სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•áƒ˜áƒ¡ დáƒáƒ‘ლáƒáƒ™áƒ•áƒ შეუძლებელიáƒ." + +#: actions/apiblockcreate.php:126 +msgid "Block user failed." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ‘ლáƒáƒ™áƒ•áƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/apiblockdestroy.php:114 +msgid "Unblock user failed." +msgstr "ვერ მáƒáƒ®áƒ”რხდრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელზე ბლáƒáƒ™áƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ." + +#: actions/apidirectmessage.php:89 +#, php-format +msgid "Direct messages from %s" +msgstr "პირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებები %s-სგáƒáƒœ" + +#: actions/apidirectmessage.php:93 +#, php-format +msgid "All the direct messages sent from %s" +msgstr "%s-ს მიერ გáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜ ყველრპირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებáƒ" + +#: actions/apidirectmessage.php:101 +#, php-format +msgid "Direct messages to %s" +msgstr "%s-სთვის გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜ პირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებები" + +#: actions/apidirectmessage.php:105 +#, php-format +msgid "All the direct messages sent to %s" +msgstr "%s-სთვის გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜ ყველრპირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებáƒ" + +#: actions/apidirectmessagenew.php:118 +msgid "No message text!" +msgstr "შეტყáƒáƒ‘ინების ტექსტი áƒáƒ  áƒáƒ áƒ˜áƒ¡!" + +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format +msgid "That's too long. Max message size is %d chars." +msgstr "ეს ძáƒáƒšáƒ˜áƒáƒœ გრძელიáƒ. შეტყáƒáƒ‘ინებáƒáƒ¨áƒ˜ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბირ%d სიმბáƒáƒšáƒ." + +#: actions/apidirectmessagenew.php:138 +msgid "Recipient user not found." +msgstr "მიმღები მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/apidirectmessagenew.php:142 +msgid "Can't send direct messages to users who aren't your friend." +msgstr "ვერ გáƒáƒ£áƒ’ზáƒáƒ•áƒœáƒ˜ პირდáƒáƒžáƒ˜áƒ  შეტყáƒáƒ‘ინებáƒáƒ¡ იმáƒáƒ¡, ვისთáƒáƒœáƒáƒª áƒáƒ  მეგáƒáƒ‘რáƒáƒ‘." + +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 +msgid "No status found with that ID." +msgstr "სტáƒáƒ¢áƒ£áƒ¡áƒ˜ áƒáƒ¡áƒ”თი ID-თ ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/apifavoritecreate.php:120 +msgid "This status is already a favorite." +msgstr "ეს სტáƒáƒ¢áƒ£áƒ¡áƒ˜ უკვე ფáƒáƒ•áƒáƒ áƒ˜áƒ¢áƒ˜áƒ." + +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 +msgid "Could not create favorite." +msgstr "ფáƒáƒ•áƒáƒ áƒ˜áƒ¢áƒ˜áƒ¡ შექმნრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/apifavoritedestroy.php:123 +msgid "That status is not a favorite." +msgstr "ეს სტáƒáƒ¢áƒ£áƒ¡áƒ˜ áƒáƒ áƒ áƒáƒ áƒ˜áƒ¡ ფáƒáƒ•áƒáƒ áƒ˜áƒ¢áƒ˜." + +#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87 +msgid "Could not delete favorite." +msgstr "ფáƒáƒ•áƒáƒ áƒ˜áƒ¢áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: 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 "თქვენ უკვე ხáƒáƒ áƒ— %s-ის მიმდევáƒáƒ áƒ˜." + +#: actions/apifriendshipsdestroy.php:109 +msgid "Could not unfollow user: User not found." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ჩáƒáƒ›áƒáƒ¨áƒáƒ áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ. მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/apifriendshipsdestroy.php:120 +msgid "You cannot unfollow yourself." +msgstr "სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•áƒ˜áƒ¡ ჩáƒáƒ›áƒáƒ¨áƒáƒ áƒ”ბრშეუძლებელიáƒ." + +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "სáƒáƒ­áƒ˜áƒ áƒáƒ 2 სწáƒáƒ áƒ˜ სáƒáƒ®áƒ”ლის áƒáƒœ ID-ს მáƒáƒ¬áƒáƒ“ებáƒ." + +#: actions/apifriendshipsshow.php:134 +msgid "Could not determine source user." +msgstr "áƒáƒ•áƒ¢áƒáƒ áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის გáƒáƒœáƒ¡áƒáƒ–ღვრრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/apifriendshipsshow.php:142 +msgid "Could not find target user." +msgstr "სáƒáƒ¡áƒ£áƒ áƒ•áƒ”ლი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: 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 "მეტსáƒáƒ®áƒ”ლში დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბირმხáƒáƒšáƒáƒ“ პáƒáƒ¢áƒáƒ áƒ áƒáƒ¡áƒáƒ”ბი დრციფრები." + +#: 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 "მეტსáƒáƒ®áƒ”ლი უკვე გáƒáƒ›áƒáƒ§áƒ”ნებულიáƒ. სცáƒáƒ“ე სხვáƒ." + +#: 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 "მეტსáƒáƒ®áƒ”ლი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ." + +#: 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 "სáƒáƒ¡áƒ¢áƒáƒ áƒ¢áƒ გვერდი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ 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 "სრული სáƒáƒ®áƒ”ლი ძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს 255 სიმბáƒáƒšáƒ)." + +#: 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: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 "áƒáƒ“გილმდებáƒáƒ áƒ”áƒáƒ‘რძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს 255 სიმბáƒáƒšáƒ)." + +#: actions/apigroupcreate.php:246 actions/editgroup.php:219 +#: actions/newgroup.php:159 +#, php-format +msgid "Too many aliases! Maximum %d." +msgstr "" + +#: 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: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 "ჯგუფი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 +msgid "You are already a member of that group." +msgstr "თქვენ უკვე ხáƒáƒ áƒ— áƒáƒ› ჯგუფის წევრი." + +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 +msgid "You have been blocked from that group by the admin." +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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format +msgid "Could not join user %1$s to group %2$s." +msgstr "ვერ მáƒáƒ®áƒ”რხდრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელ %1$s-სთáƒáƒœ ერთáƒáƒ“ ჯგუფ %2$s-ში გáƒáƒ”რთიáƒáƒœáƒ”ბáƒ." + +#: actions/apigroupleave.php:115 +msgid "You are not a member of this group." +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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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: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: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:92 actions/usergroups.php:63 +#, php-format +msgid "%s groups" +msgstr "%s ჯგუფები" + +#: 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 პáƒáƒ áƒáƒ›áƒ”ტრი áƒáƒ  áƒáƒ áƒ˜áƒ¡ მáƒáƒ¬áƒáƒ“ებული." + +#: 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 "" + +#: actions/apioauthauthorize.php:135 +msgid "Invalid nickname / password!" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ მეტსáƒáƒ®áƒ”ლი / პáƒáƒ áƒáƒšáƒ˜!" + +#: actions/apioauthauthorize.php:159 +msgid "Database error deleting OAuth application user." +msgstr "ბáƒáƒ–áƒáƒ› დáƒáƒ£áƒ¨áƒ•áƒ შეცდáƒáƒ›áƒ OAuth áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ˜áƒ¡áƒáƒ¡." + +#: actions/apioauthauthorize.php:185 +msgid "Database error inserting OAuth application user." +msgstr "ბáƒáƒ–áƒáƒ› დáƒáƒ£áƒ¨áƒ•áƒ შეცდáƒáƒ›áƒ OAuth áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ჩáƒáƒ¡áƒ›áƒ˜áƒ¡áƒáƒ¡." + +#: actions/apioauthauthorize.php:214 +#, php-format +msgid "" +"The request token %s has been authorized. Please exchange it for an access " +"token." +msgstr "" + +#: actions/apioauthauthorize.php:227 +#, php-format +msgid "The request token %s has been denied and revoked." +msgstr "" + +#: actions/apioauthauthorize.php:259 +msgid "An application would like to connect to your account" +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒáƒ¡ უნდრრáƒáƒ› დáƒáƒ£áƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ“ეს თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¡" + +#: actions/apioauthauthorize.php:276 +msgid "Allow or deny access" +msgstr "დáƒáƒ£áƒ¨áƒ•áƒ˜ áƒáƒœ áƒáƒ™áƒ áƒ«áƒáƒšáƒ” შესვლáƒ" + +#: actions/apioauthauthorize.php:292 +#, php-format +msgid "" +"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like " +"the ability to <strong>%3$s</strong> your %4$s account data. You should only " +"give access to your %4$s account to third parties you trust." +msgstr "" + +#. TRANS: Main menu option when logged in for access to user settings +#: actions/apioauthauthorize.php:310 lib/action.php:463 +msgid "Account" +msgstr "áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜" + +#: 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 "მეტსáƒáƒ®áƒ”ლი" + +#. 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 "პáƒáƒ áƒáƒšáƒ˜" + +#: actions/apioauthauthorize.php:328 +msgid "Deny" +msgstr "áƒáƒ™áƒ áƒ«áƒáƒšáƒ•áƒ" + +#: actions/apioauthauthorize.php:334 +msgid "Allow" +msgstr "დáƒáƒ¨áƒ•áƒ”ბáƒ" + +#: actions/apioauthauthorize.php:351 +msgid "Allow or deny access to your account information." +msgstr "დáƒáƒ£áƒ¨áƒ•áƒ˜ áƒáƒœ áƒáƒ™áƒ áƒ«áƒáƒšáƒ” წვდáƒáƒ›áƒ თქვენი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒáƒ–ე." + +#: actions/apistatusesdestroy.php:112 +msgid "This method requires a POST or DELETE." +msgstr "ეს მეთáƒáƒ“ი მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ POST-ს áƒáƒœ DELETE-ს." + +#: actions/apistatusesdestroy.php:135 +msgid "You may not delete another user's status." +msgstr "სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სტáƒáƒ¢áƒ£áƒ¡áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ áƒáƒ  შეგიძლიáƒáƒ—." + +#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 +#: actions/deletenotice.php:52 actions/shownotice.php:92 +msgid "No such notice." +msgstr "áƒáƒ¡áƒ”თი შეტყáƒáƒ‘ინებრáƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." + +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 +msgid "Cannot repeat your own notice." +msgstr "სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ შეტყáƒáƒ‘ინების გáƒáƒ›áƒ”áƒáƒ áƒ”ბრáƒáƒ  შეიძლებáƒ." + +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 +msgid "Already repeated that notice." +msgstr "ეს შეტყáƒáƒ‘ინებრუკვე გáƒáƒ›áƒ”áƒáƒ áƒ”ბულიáƒ." + +#: actions/apistatusesshow.php:139 +msgid "Status deleted." +msgstr "სტáƒáƒ¢áƒ£áƒ¡áƒ˜ წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜áƒ." + +#: actions/apistatusesshow.php:145 +msgid "No status with that ID found." +msgstr "áƒáƒ¡áƒ”თი ID-ს სტáƒáƒ¢áƒ£áƒ¡áƒ˜ ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" + +#: actions/apistatusesupdate.php:242 actions/newnotice.php:157 +#: lib/mailhandler.php:60 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "შეტყáƒáƒ‘ინების დáƒáƒ¡áƒáƒ«áƒ•áƒ”ბი ზáƒáƒ›áƒáƒ %d სიმბáƒáƒšáƒ." + +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 +msgid "Not found." +msgstr "ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 +#, php-format +msgid "Max notice size is %d chars, including attachment URL." +msgstr "შეყáƒáƒ‘ინების დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი ზáƒáƒ›áƒáƒ %d სიმბáƒáƒšáƒ მიმáƒáƒ’რებული URL-ის ჩáƒáƒ—ვლით." + +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 +msgid "Unsupported format." +msgstr "ფáƒáƒ áƒ›áƒáƒ¢áƒ˜ áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი." + +#: actions/apitimelinementions.php:131 +#, php-format +msgid "%1$s updates that reply to updates from %2$s / %3$s." +msgstr "" + +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 +#, php-format +msgid "%s public timeline" +msgstr "%s სáƒáƒ¯áƒáƒ áƒ ნáƒáƒ™áƒáƒ“ი" + +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 +#, php-format +msgid "%s updates from everyone!" +msgstr "%s გáƒáƒœáƒáƒ®áƒšáƒ”ბები ყველáƒáƒ¡áƒ’áƒáƒœ!" + +#: actions/apitimelinetag.php:105 actions/tag.php:67 +#, php-format +msgid "Notices tagged with %s" +msgstr "შეტყáƒáƒ‘ინებები მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ რáƒáƒ’áƒáƒ áƒª %s" + +#: 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 "áƒáƒ¡áƒ”თი მიმáƒáƒ’რებული დáƒáƒ™áƒ£áƒ›áƒ”ნტი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: 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 "მეტსáƒáƒ®áƒ”ლი უცნáƒáƒ‘იáƒ." + +#: actions/avatarbynickname.php:64 +msgid "No size." +msgstr "ზáƒáƒ›áƒ უცნáƒáƒ‘იáƒ." + +#: actions/avatarbynickname.php:69 +msgid "Invalid size." +msgstr "ზáƒáƒ›áƒ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ." + +#. TRANS: Link description in user account settings menu. +#: actions/avatarsettings.php:67 actions/showgroup.php:230 +#: lib/accountsettingsaction.php:118 +msgid "Avatar" +msgstr "áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜" + +#: actions/avatarsettings.php:78 +#, php-format +msgid "You can upload your personal avatar. The maximum file size is %s." +msgstr "" +"თქვენ შეგიძლიáƒáƒ— áƒáƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ— პერსáƒáƒœáƒáƒšáƒ£áƒ áƒ˜ áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜. ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი ზáƒáƒ›áƒáƒ %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 "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ áƒ”შე." + +#: actions/avatarsettings.php:119 actions/avatarsettings.php:197 +#: actions/grouplogo.php:254 +msgid "Avatar settings" +msgstr "áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები." + +#: actions/avatarsettings.php:127 actions/avatarsettings.php:205 +#: actions/grouplogo.php:202 actions/grouplogo.php:262 +msgid "Original" +msgstr "áƒáƒ áƒ˜áƒ’ინáƒáƒšáƒ˜" + +#: actions/avatarsettings.php:142 actions/avatarsettings.php:217 +#: actions/grouplogo.php:213 actions/grouplogo.php:274 +msgid "Preview" +msgstr "წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ“áƒáƒ®áƒ”დვáƒ" + +#: actions/avatarsettings.php:149 actions/showapplication.php:252 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 +msgid "Delete" +msgstr "წáƒáƒ¨áƒšáƒ" + +#: actions/avatarsettings.php:166 actions/grouplogo.php:236 +msgid "Upload" +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ" + +#: actions/avatarsettings.php:231 actions/grouplogo.php:289 +msgid "Crop" +msgstr "მáƒáƒ­áƒ áƒ" + +#: actions/avatarsettings.php:305 +msgid "No file uploaded." +msgstr "áƒáƒ áƒªáƒ”რთი ფáƒáƒ˜áƒšáƒ˜ áƒáƒ  áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ულáƒ" + +#: actions/avatarsettings.php:332 +msgid "Pick a square area of the image to be your avatar" +msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ სურáƒáƒ—ის კვáƒáƒ“რáƒáƒ¢áƒ£áƒšáƒ˜ მáƒáƒœáƒáƒ™áƒ•áƒ”თი თქვენი áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜áƒ¡áƒ—ვის" + +#: actions/avatarsettings.php:370 +msgid "Avatar updated." +msgstr "áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜ გáƒáƒœáƒáƒ®áƒšáƒ“áƒ." + +#: actions/avatarsettings.php:373 +msgid "Failed updating avatar." +msgstr "áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/avatarsettings.php:397 +msgid "Avatar deleted." +msgstr "áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜ წáƒáƒ˜áƒ¨áƒáƒšáƒ." + +#: actions/block.php:69 +msgid "You already blocked that user." +msgstr "თქვენ უკვე დáƒáƒ‘ლáƒáƒ™áƒ”თ ეს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი." + +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 +msgid "Block user" +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:153 actions/deleteapplication.php:154 +#: actions/deletenotice.php:147 actions/deleteuser.php:152 +#: actions/groupblock.php:178 +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:157 actions/deleteuser.php:156 +msgid "Do not block this user" +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:160 actions/deleteapplication.php:161 +#: actions/deletenotice.php:154 actions/deleteuser.php:159 +#: actions/groupblock.php:185 +msgctxt "BUTTON" +msgid "Yes" +msgstr "დიáƒáƒ®" + +#. 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 "დáƒáƒ‘ლáƒáƒ™áƒ” ეს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი" + +#: actions/block.php:187 +msgid "Failed to save block information." +msgstr "დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ შენáƒáƒ®áƒ•áƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. +#: 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:170 +#: lib/command.php:383 +msgid "No such group." +msgstr "áƒáƒ¡áƒ”თი ჯგუფი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/blockedfromgroup.php:97 +#, php-format +msgid "%s blocked profiles" +msgstr "%s დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ პრáƒáƒ¤áƒ˜áƒšáƒ˜" + +#: actions/blockedfromgroup.php:100 +#, php-format +msgid "%1$s blocked profiles, page %2$d" +msgstr "%1$s დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ პრáƒáƒ¤áƒ˜áƒšáƒ˜, გვერდი %2$d" + +#: actions/blockedfromgroup.php:115 +msgid "A list of the users blocked from joining this group." +msgstr "áƒáƒ› ჯგუფში გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ”ბისგáƒáƒœ დáƒáƒ‘ლáƒáƒ™áƒ˜áƒš მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრსიáƒ." + +#: actions/blockedfromgroup.php:288 +msgid "Unblock user from group" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ბლáƒáƒ™áƒ˜áƒ áƒ”ბის მáƒáƒ®áƒ¡áƒœáƒ ჯგუფიდáƒáƒœ" + +#: actions/blockedfromgroup.php:320 lib/unblockform.php:69 +msgid "Unblock" +msgstr "ბლáƒáƒ™áƒ˜áƒ áƒ”ბის მáƒáƒ®áƒ¡áƒœáƒ" + +#: actions/blockedfromgroup.php:320 lib/unblockform.php:80 +msgid "Unblock this user" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ბლáƒáƒ™áƒ˜áƒ áƒ”ბის მáƒáƒ®áƒ¡áƒœáƒ" + +#. TRANS: Title for mini-posting window loaded from bookmarklet. +#: actions/bookmarklet.php:51 +#, php-format +msgid "Post to %s" +msgstr "დáƒáƒ£áƒžáƒáƒ¡áƒ¢áƒ” %s-ს" + +#: actions/confirmaddress.php:75 +msgid "No confirmation code." +msgstr "დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი კáƒáƒ“ი áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/confirmaddress.php:80 +msgid "Confirmation code not found." +msgstr "დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი კáƒáƒ“ი ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/confirmaddress.php:85 +msgid "That confirmation code is not for you!" +msgstr "ეს დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი კáƒáƒ“ი თქვენთვის áƒáƒ  áƒáƒ áƒ˜áƒ¡!" + +#. 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 "მისáƒáƒ›áƒáƒ áƒ—ის áƒáƒ›áƒáƒ£áƒªáƒœáƒáƒ‘ი ტიპი %s." + +#. TRANS: Client error for an already confirmed email/jabbel/sms address. +#: actions/confirmaddress.php:96 +msgid "That address has already been confirmed." +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. +#. 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 "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#. 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 "ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/confirmaddress.php:146 +msgid "Confirm address" +msgstr "მისáƒáƒ›áƒáƒ áƒ—ის დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜" + +#: actions/confirmaddress.php:161 +#, php-format +msgid "The address \"%s\" has been confirmed for your account." +msgstr "მისáƒáƒ›áƒáƒ áƒ—ი \"%s\" დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ“რთქვენი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡áƒ—ვის." + +#: actions/conversation.php:99 +msgid "Conversation" +msgstr "სáƒáƒ£áƒ‘áƒáƒ áƒ˜" + +#: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 +#: lib/profileaction.php:229 lib/searchgroupnav.php:82 +msgid "Notices" +msgstr "შეტყáƒáƒ‘ინებები" + +#: actions/deleteapplication.php:63 +msgid "You must be logged in to delete an application." +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ წáƒáƒ¡áƒáƒ¨áƒšáƒ”ლáƒáƒ“ სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ•áƒ áƒáƒ¢áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#: actions/deleteapplication.php:71 +msgid "Application not found." +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/deleteapplication.php:78 actions/editapplication.php:77 +#: actions/showapplication.php:94 +msgid "You are not the owner of this application." +msgstr "თქვენ áƒáƒ  ხáƒáƒ áƒ— áƒáƒ› áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მფლáƒáƒ‘ელი." + +#: actions/deleteapplication.php:102 actions/editapplication.php:127 +#: actions/newapplication.php:110 actions/showapplication.php:118 +#: lib/action.php:1307 +msgid "There was a problem with your session token." +msgstr "" + +#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 +msgid "Delete application" +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ" + +#: actions/deleteapplication.php:149 +msgid "" +"Are you sure you want to delete this application? This will clear all data " +"about the application from the database, including all existing user " +"connections." +msgstr "" +"ნáƒáƒ›áƒ“ვილáƒáƒ“ გნებáƒáƒ•áƒ— áƒáƒ› áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ? ეს მáƒáƒ¥áƒ›áƒ”დებრწáƒáƒ¨áƒšáƒ˜áƒ¡ ყველáƒáƒœáƒáƒ˜áƒ  " +"მáƒáƒœáƒáƒªáƒ”მებს áƒáƒ› áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ, ყველრშეერთებული მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ჩáƒáƒ—ვლით." + +#. TRANS: Submit button title for 'No' when deleting an application. +#: actions/deleteapplication.php:158 +msgid "Do not delete this application" +msgstr "áƒáƒ  წáƒáƒ¨áƒáƒšáƒ ეს áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ" + +#. TRANS: Submit button title for 'Yes' when deleting an application. +#: actions/deleteapplication.php:164 +msgid "Delete this application" +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 +#: 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 "áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–ებული áƒáƒ  ხáƒáƒ áƒ—." + +#: actions/deletenotice.php:71 +msgid "Can't delete this notice." +msgstr "áƒáƒ› შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ შეუძლებელიáƒ." + +#: actions/deletenotice.php:103 +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" +msgstr "შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ" + +#: actions/deletenotice.php:144 +msgid "Are you sure you want to delete this notice?" +msgstr "ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ áƒáƒ› შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ?" + +#. TRANS: Submit button title for 'No' when deleting a notice. +#: actions/deletenotice.php:151 +msgid "Do not delete this notice" +msgstr "áƒáƒ  წáƒáƒ¨áƒáƒšáƒ ეს შეტყáƒáƒ‘ინებáƒ" + +#. TRANS: Submit button title for 'Yes' when deleting a notice. +#: actions/deletenotice.php:158 lib/noticelist.php:657 +msgid "Delete this notice" +msgstr "შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ" + +#: actions/deleteuser.php:67 +msgid "You cannot delete users." +msgstr "თქვენ ვერ შეძლებთ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების წáƒáƒ¨áƒšáƒáƒ¡." + +#: actions/deleteuser.php:74 +msgid "You can only delete local users." +msgstr "თქვენ მხáƒáƒšáƒáƒ“ áƒáƒ“გილáƒáƒ‘რივი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების წáƒáƒ¨áƒšáƒ გძáƒáƒšáƒ£áƒ«áƒ—." + +#: actions/deleteuser.php:110 actions/deleteuser.php:133 +msgid "Delete user" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ" + +#: 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 "" +"ნáƒáƒ›áƒ“ვილáƒáƒ“ გნებáƒáƒ•áƒ— áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ? ეს მáƒáƒ¥áƒ›áƒ”დებრწáƒáƒ¨áƒšáƒ˜áƒ¡ ყველრმáƒáƒœáƒáƒªáƒ”მს " +"მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის შესáƒáƒ®áƒ”ბ სáƒáƒ áƒ”ზერვრáƒáƒ¡áƒšáƒ˜áƒ¡ გáƒáƒ áƒ”შე." + +#. TRANS: Submit button title for 'Yes' when deleting a user. +#: actions/deleteuser.php:163 lib/deleteuserform.php:77 +msgid "Delete this user" +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 "áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წáƒáƒ¨áƒšáƒ" + +#: actions/designadminpanel.php:74 +msgid "Design settings for this StatusNet site." +msgstr "áƒáƒ› სáƒáƒ˜áƒ¢áƒ˜áƒ¡ დიზáƒáƒ˜áƒœáƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები" + +#: actions/designadminpanel.php:318 +msgid "Invalid logo URL." +msgstr "ლáƒáƒ’áƒáƒ¡ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ URL-ი" + +#: actions/designadminpanel.php:322 +#, php-format +msgid "Theme not available: %s." +msgstr "იერსáƒáƒ®áƒ” áƒáƒ  áƒáƒ áƒ˜áƒ¡ ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ %s." + +#: actions/designadminpanel.php:426 +msgid "Change logo" +msgstr "შეცვáƒáƒšáƒ” ლáƒáƒ’áƒ" + +#: actions/designadminpanel.php:431 +msgid "Site logo" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ ლáƒáƒ’áƒ" + +#: actions/designadminpanel.php:443 +msgid "Change theme" +msgstr "შეცვáƒáƒšáƒ” იერსáƒáƒ®áƒ”" + +#: actions/designadminpanel.php:460 +msgid "Site theme" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ იერსáƒáƒ®áƒ”" + +#: actions/designadminpanel.php:461 +msgid "Theme for the site." +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 "" +"თქვენ შეგიძლიáƒáƒ— áƒáƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ— სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ StatusNet–იერსáƒáƒ®áƒ” .ZIP áƒáƒ áƒ¥áƒ˜áƒ•áƒ˜áƒ¡ სáƒáƒ®áƒ˜áƒ—." + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 +msgid "Change background image" +msgstr "შეცვáƒáƒšáƒ” ფáƒáƒœáƒ£áƒ áƒ˜ სურáƒáƒ—ი" + +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 +#: lib/designsettings.php:178 +msgid "Background" +msgstr "ფáƒáƒœáƒ˜" + +#: 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:527 lib/designsettings.php:139 +msgid "On" +msgstr "ჩáƒáƒ áƒ—ვáƒ" + +#. TRANS: Used as radio button label to not add a background image. +#: actions/designadminpanel.php:544 lib/designsettings.php:155 +msgid "Off" +msgstr "გáƒáƒ›áƒáƒ áƒ—ვáƒ" + +#: actions/designadminpanel.php:545 lib/designsettings.php:156 +msgid "Turn background image on or off." +msgstr "ჩáƒáƒ áƒ—ე áƒáƒœ გáƒáƒ›áƒáƒ áƒ—ე ფáƒáƒœáƒ£áƒ áƒ˜ სურáƒáƒ—ის ფუნქციáƒ." + +#: actions/designadminpanel.php:550 lib/designsettings.php:161 +msgid "Tile background image" +msgstr "გáƒáƒáƒ›áƒ áƒáƒ•áƒšáƒ” ფáƒáƒœáƒ£áƒ áƒ˜ სურáƒáƒ—ი" + +#: actions/designadminpanel.php:564 lib/designsettings.php:170 +msgid "Change colours" +msgstr "შეცვáƒáƒšáƒ” ფერები" + +#: actions/designadminpanel.php:587 lib/designsettings.php:191 +msgid "Content" +msgstr "შიგთáƒáƒ•áƒ¡áƒ˜" + +#: actions/designadminpanel.php:600 lib/designsettings.php:204 +msgid "Sidebar" +msgstr "გვერდითი პáƒáƒœáƒ”ლი" + +#: actions/designadminpanel.php:613 lib/designsettings.php:217 +msgid "Text" +msgstr "ტექსტი" + +#: actions/designadminpanel.php:626 lib/designsettings.php:230 +msgid "Links" +msgstr "ბმულები" + +#: 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:677 lib/designsettings.php:248 +msgid "Restore default designs" +msgstr "დáƒáƒáƒ‘რუნე პირვáƒáƒœáƒ“ელი დიზáƒáƒ˜áƒœáƒ˜" + +#: actions/designadminpanel.php:683 lib/designsettings.php:254 +msgid "Reset back to default" +msgstr "პირვáƒáƒœáƒ“ელის პáƒáƒ áƒáƒ›áƒ”ტრების დáƒáƒ‘რუნებáƒ" + +#. 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 "შენáƒáƒ®áƒ•áƒ" + +#: actions/designadminpanel.php:686 lib/designsettings.php:257 +msgid "Save design" +msgstr "შეინáƒáƒ®áƒ” დიზáƒáƒ˜áƒœáƒ˜" + +#: actions/disfavor.php:81 +msgid "This notice is not a favorite!" +msgstr "ეს შეტყáƒáƒ‘ინებრáƒáƒ  áƒáƒ áƒ˜áƒ¡ რჩეული!" + +#: actions/disfavor.php:94 +msgid "Add to favorites" +msgstr "რჩეულებში დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" + +#: actions/doc.php:158 +#, php-format +msgid "No such document \"%s\"" +msgstr "áƒáƒ¡áƒ”თი დáƒáƒ™áƒ£áƒ›áƒ”ნტი áƒáƒ  áƒáƒ áƒ˜áƒ¡ \"%s\"" + +#: actions/editapplication.php:54 +msgid "Edit Application" +msgstr "ჩáƒáƒáƒ¡áƒ¬áƒáƒ áƒ” áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ" + +#: actions/editapplication.php:66 +msgid "You must be logged in to edit an application." +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¡áƒáƒ¡áƒ¬áƒáƒ áƒ”ბლáƒáƒ“ სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ•áƒ áƒáƒ¢áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 +#: actions/showapplication.php:87 +msgid "No such application." +msgstr "áƒáƒ¡áƒ”თი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/editapplication.php:161 +msgid "Use this form to edit your application." +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒáƒ¨áƒ˜ ცვლილებების შესáƒáƒ¢áƒáƒœáƒáƒ“ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ეს ფáƒáƒ áƒ›áƒ." + +#: actions/editapplication.php:177 actions/newapplication.php:159 +msgid "Name is required." +msgstr "სáƒáƒ®áƒ”ლი სáƒáƒ•áƒáƒšáƒ“ებულáƒáƒ." + +#: actions/editapplication.php:180 actions/newapplication.php:165 +msgid "Name is too long (max 255 chars)." +msgstr "სáƒáƒ®áƒ”ლი ძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს 255 სიმბáƒáƒšáƒ)." + +#: actions/editapplication.php:183 actions/newapplication.php:162 +msgid "Name already in use. Try another one." +msgstr "სáƒáƒ®áƒ”ლი უკვე გáƒáƒ›áƒáƒ§áƒ”ნებულიáƒ. სცáƒáƒ“ე სხვáƒ." + +#: actions/editapplication.php:186 actions/newapplication.php:168 +msgid "Description is required." +msgstr "áƒáƒ¦áƒ¬áƒ”რრსáƒáƒ•áƒáƒšáƒ“ებულáƒáƒ." + +#: actions/editapplication.php:194 +msgid "Source URL is too long." +msgstr "წყáƒáƒ áƒáƒ¡ URL ძáƒáƒšáƒ˜áƒáƒœ გრძელიáƒ." + +#: actions/editapplication.php:200 actions/newapplication.php:185 +msgid "Source URL is not valid." +msgstr "წყáƒáƒ áƒáƒ¡ URL áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ." + +#: actions/editapplication.php:203 actions/newapplication.php:188 +msgid "Organization is required." +msgstr "áƒáƒ áƒ’áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ სáƒáƒ•áƒáƒšáƒ“ებულáƒáƒ." + +#: actions/editapplication.php:206 actions/newapplication.php:191 +msgid "Organization is too long (max 255 chars)." +msgstr "áƒáƒ áƒ’áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ ძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს 255 სიმბáƒáƒšáƒ)." + +#: actions/editapplication.php:209 actions/newapplication.php:194 +msgid "Organization homepage is required." +msgstr "áƒáƒ áƒ’áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ ვებ. გვერდი სáƒáƒ•áƒáƒšáƒ“ებულáƒáƒ." + +#: actions/editapplication.php:258 +msgid "Could not update application." +msgstr "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/editgroup.php:56 +#, php-format +msgid "Edit %s group" +msgstr "%s ჯგუფის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ" + +#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 +msgid "You must be logged in to create a group." +msgstr "გჯუფის შესáƒáƒ¥áƒ›áƒœáƒ”ლáƒáƒ“ სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#: 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 "ჯგუფის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ—ვის სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ“მინის უფლებები." + +#: actions/editgroup.php:158 +msgid "Use this form to edit the group." +msgstr "ჯგუფის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ—ვის გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ეს ფáƒáƒ áƒ›áƒ." + +#: actions/editgroup.php:205 actions/newgroup.php:145 +#, php-format +msgid "description is too long (max %d chars)." +msgstr "áƒáƒ¦áƒ¬áƒ”რრძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს %d სიმბáƒáƒšáƒ)." + +#: actions/editgroup.php:258 +msgid "Could not update group." +msgstr "ჯგუფის გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/editgroup.php:280 +msgid "Options saved." +msgstr "პáƒáƒ áƒáƒ›áƒ”ტრები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ." + +#. TRANS: Title for e-mail settings. +#: actions/emailsettings.php:61 +msgid "Email settings" +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%%–სგáƒáƒœ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მიღების მáƒáƒ áƒ—ვáƒ." + +#. 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 "ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი" + +#. TRANS: Form note in e-mail settings form. +#: actions/emailsettings.php:112 +msgid "Current confirmed email address." +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. +#. 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 "წáƒáƒ¨áƒšáƒ" + +#: actions/emailsettings.php:122 +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. +#. 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 "გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" + +#. TRANS: Instructions for e-mail address input form. +#: actions/emailsettings.php:135 +msgid "Email address, like \"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. +#. 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 "დáƒáƒ›áƒáƒ¢áƒ”ბáƒ" + +#. 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 "შემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ" + +#. 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 "გáƒáƒáƒ’ზáƒáƒ•áƒœáƒ” ელ. ფáƒáƒ¡áƒ¢áƒ áƒáƒ› მისáƒáƒ›áƒáƒ áƒ—ზე áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებების დáƒáƒ¡áƒáƒžáƒáƒ¡áƒ¢áƒáƒ“." + +#. 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 "áƒáƒ®áƒáƒšáƒ˜" + +#. TRANS: Form legend for e-mail preferences form. +#: actions/emailsettings.php:174 +msgid "Email preferences" +msgstr "ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები" + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:180 +msgid "Send me notices of new subscriptions through email." +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 "" +"გáƒáƒ›áƒáƒ›áƒ˜áƒ’ზáƒáƒ•áƒœáƒ” ელ. წერილი რáƒáƒ“ესáƒáƒª ვინმე ჩემს შეტყáƒáƒ‘ინებáƒáƒ¡ რჩეულებში დáƒáƒ˜áƒ›áƒáƒ¢áƒ”ბს." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:193 +msgid "Send me email when someone sends me a private message." +msgstr "გáƒáƒ›áƒáƒ›áƒ˜áƒ’ზáƒáƒ•áƒœáƒ” ელ. წერილი რáƒáƒ“ესáƒáƒª ვინმე პირáƒáƒ“ შეტყáƒáƒ‘ინებáƒáƒ¡ მáƒáƒ›áƒ¬áƒ”რს." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:199 +msgid "Send me email when someone sends me an \"@-reply\"." +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 "" + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:212 +msgid "I want to post notices by email." +msgstr "მინდრდáƒáƒ•áƒžáƒáƒ¡áƒ¢áƒ შეტყáƒáƒ‘ინებები ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ—." + +#. TRANS: Checkbox label in e-mail preferences form. +#: actions/emailsettings.php:219 +msgid "Publish a MicroID for my email address." +msgstr "გáƒáƒ›áƒáƒáƒ¥áƒ•áƒ”ყნე MicroID ჩემი ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ისთვის." + +#. TRANS: Confirmation message for successful e-mail preferences save. +#: actions/emailsettings.php:334 +msgid "Email preferences saved." +msgstr "ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ." + +#. TRANS: Message given saving e-mail address without having provided one. +#: actions/emailsettings.php:353 +msgid "No email address." +msgstr " ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი მითითებული áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#. 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 "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი." + +#. TRANS: Message given saving e-mail address that is already set. +#: actions/emailsettings.php:370 +msgid "That is already your email address." +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 "ეს ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი დáƒáƒ™áƒáƒ•áƒ”ბულიáƒ." + +#. 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 "დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜áƒ¡ კáƒáƒ“ის ჩáƒáƒ¡áƒ›áƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#. 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 "" +"დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი კáƒáƒ“ი გáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ თქვენს მიერ მითითებულ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ " +"მისáƒáƒ›áƒáƒ áƒ—ზე. შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ სáƒáƒ¤áƒáƒ¡áƒ¢áƒ ყუთი (დრსპáƒáƒ›áƒ˜áƒ¡ ყუთიც!), რáƒáƒ› მიიღáƒáƒ— " +"დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბელი კáƒáƒ“ი დრინსტრუქცირგáƒáƒ›áƒáƒ§áƒ”ნებისთვის." + +#. 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 "გáƒáƒ¡áƒáƒ£áƒ¥áƒ›áƒ”ბელიáƒáƒ áƒáƒ¤áƒ”რიáƒ. áƒáƒ  áƒáƒ áƒ˜áƒ¡ მáƒáƒ›áƒšáƒáƒ“ინე დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜." + +#. 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 "ეს áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—იáƒ." + +#. TRANS: Message given after successfully canceling e-mail address confirmation. +#: actions/emailsettings.php:438 +msgid "Email confirmation cancelled." +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 "ეს áƒáƒ  áƒáƒ áƒ˜áƒ¡ თქვენი ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი." + +#. TRANS: Message given after successfully removing a registered e-mail address. +#: actions/emailsettings.php:479 +msgid "The email address was removed." +msgstr "ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი მáƒáƒ¨áƒáƒ áƒ”ბულიáƒ." + +#: actions/emailsettings.php:493 actions/smssettings.php:568 +msgid "No incoming email address." +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 +msgid "Couldn't update user record." +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 "შემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი მáƒáƒ¨áƒáƒ áƒ”ბულიáƒ." + +#. 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 "დáƒáƒ›áƒáƒ¢áƒ”ბულირáƒáƒ®áƒáƒšáƒ˜ შემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ." + +#: actions/favor.php:79 +msgid "This notice is already a favorite!" +msgstr "ეს შეტყáƒáƒ‘ინებრუკვე რჩეულიáƒ!" + +#: actions/favor.php:92 lib/disfavorform.php:140 +msgid "Disfavor favorite" +msgstr "რჩეულის გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ" + +#: actions/favorited.php:65 lib/popularnoticesection.php:91 +#: lib/publicgroupnav.php:93 +msgid "Popular notices" +msgstr "პáƒáƒžáƒ£áƒšáƒáƒ áƒ£áƒšáƒ˜ შეტყáƒáƒ‘ინებები" + +#: actions/favorited.php:67 +#, php-format +msgid "Popular notices, page %d" +msgstr "პáƒáƒžáƒ£áƒšáƒáƒ áƒ£áƒšáƒ˜ შეტყáƒáƒ‘ინებები, გვერდი %d" + +#: actions/favorited.php:79 +msgid "The most popular notices on the site right now." +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 +msgid "" +"Why not [register an account](%%action.register%%) and be the first to add a " +"notice to your favorites!" +msgstr "" +"[დáƒáƒ áƒ”გისტრირდი](%%action.register%%) დრშეიტáƒáƒœáƒ” შეტყáƒáƒ‘ინებრშენს რჩეულებში!" + +#: actions/favoritesrss.php:111 actions/showfavorites.php:77 +#: lib/personalgroupnav.php:115 +#, php-format +msgid "%s's favorite notices" +msgstr "%s-ს რჩეული შეტყáƒáƒ‘ინებები" + +#: actions/favoritesrss.php:115 +#, php-format +msgid "Updates favored by %1$s on %2$s!" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბები áƒáƒ áƒ©áƒ”ული %1$s-ს მიერ %2$s-ზე!" + +#: actions/featured.php:69 lib/featureduserssection.php:87 +#: lib/publicgroupnav.php:89 +msgid "Featured users" +msgstr "წáƒáƒ áƒ›áƒáƒ“გენილი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები" + +#: actions/featured.php:71 +#, php-format +msgid "Featured users, page %d" +msgstr "წáƒáƒ áƒ›áƒáƒ“გენილი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები, გვერდი $d" + +#: actions/featured.php:99 +#, php-format +msgid "A selection of some great users on %s" +msgstr "ზáƒáƒ’იერთ ჩინებულ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრგáƒáƒœáƒ§áƒáƒ¤áƒ˜áƒšáƒ”ბრ%s-ზე" + +#: actions/file.php:34 +msgid "No notice ID." +msgstr "შეტყáƒáƒ‘ინების ID áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/file.php:38 +msgid "No notice." +msgstr "შეტყáƒáƒ‘ინებრáƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/file.php:42 +msgid "No attachments." +msgstr "მიმáƒáƒ’რებული დáƒáƒ™áƒ£áƒ›áƒ”ნტი áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/file.php:51 +msgid "No uploaded attachments." +msgstr "áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული მიმáƒáƒ’რებული დáƒáƒ™áƒ£áƒ›áƒ”ნტი áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/finishremotesubscribe.php:69 +msgid "Not expecting this response!" +msgstr "ეს უკუქმედებრáƒáƒ  áƒáƒ áƒ˜áƒ¡ მáƒáƒ¡áƒáƒšáƒáƒ“ნელი." + +#: actions/finishremotesubscribe.php:80 +msgid "User being listened to does not exist." +msgstr "მისáƒáƒ“ევნებელი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." + +#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 +msgid "You can use the local subscription!" +msgstr "შეგიძლიáƒáƒ— გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— áƒáƒ“გილáƒáƒ‘რივი გáƒáƒ›áƒáƒ¬áƒ”რáƒ!" + +#: actions/finishremotesubscribe.php:99 +msgid "That user has blocked you from subscribing." +msgstr "áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელმრáƒáƒ’იკრძáƒáƒšáƒáƒ— მიდევნებáƒ." + +#: actions/finishremotesubscribe.php:110 +msgid "You are not authorized." +msgstr "თქვენ áƒáƒ  ხáƒáƒ áƒ— áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–ირებული." + +#: actions/finishremotesubscribe.php:113 +msgid "Could not convert request token to access token." +msgstr "" + +#: actions/finishremotesubscribe.php:118 +msgid "Remote service uses unknown version of OMB protocol." +msgstr "დáƒáƒ¨áƒáƒ áƒ”ბული სერვისი OMB პრáƒáƒ¢áƒáƒ™áƒáƒšáƒ˜áƒ¡ უცნáƒáƒ‘ ვერსიáƒáƒ¡ იყენებს." + +#: actions/finishremotesubscribe.php:138 +msgid "Error updating remote profile." +msgstr "შეცდáƒáƒ›áƒ დáƒáƒ¨áƒáƒ áƒ”ბული პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბისáƒáƒ¡." + +#: actions/getfile.php:79 +msgid "No such file." +msgstr "áƒáƒ¡áƒ”თი ფáƒáƒ˜áƒšáƒ˜ áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." + +#: actions/getfile.php:83 +msgid "Cannot read file." +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ წáƒáƒ™áƒ˜áƒ—ხვრვერ ხერხდებáƒ." + +#: actions/grantrole.php:62 actions/revokerole.php:62 +msgid "Invalid role." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ რáƒáƒšáƒ˜." + +#: actions/grantrole.php:66 actions/revokerole.php:66 +msgid "This role is reserved and cannot be set." +msgstr "ეს რáƒáƒšáƒ˜ დáƒáƒ áƒ”ზერვებულირდრგáƒáƒ›áƒáƒ§áƒ”ნებრშეუძლებელიáƒ." + +#: actions/grantrole.php:75 +msgid "You cannot grant user roles on this site." +msgstr "თქვენ áƒáƒ  შეგიძლიáƒáƒ— რáƒáƒšáƒ”ბის მინიჭებრáƒáƒ› სáƒáƒ˜áƒ¢áƒ–ე." + +#: actions/grantrole.php:82 +msgid "User already has this role." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს უკვე áƒáƒ¥áƒ•áƒ¡ ეს რáƒáƒšáƒ˜." + +#: 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 "პრáƒáƒ¤áƒ˜áƒšáƒ˜ მითითებული áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: 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 "áƒáƒ¡áƒ”თი ID-ს მქáƒáƒœáƒ” პრáƒáƒ¤áƒ˜áƒšáƒ˜ ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#: actions/groupblock.php:81 actions/groupunblock.php:81 +#: actions/makeadmin.php:81 +msgid "No group specified." +msgstr "ჯგუფი მითითებული áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/groupblock.php:91 +msgid "Only an admin can block group members." +msgstr "მხáƒáƒšáƒáƒ“ áƒáƒ“მინს შეუძლირჯგუფიდáƒáƒœ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების გáƒáƒ áƒ˜áƒªáƒ®áƒ•áƒ." + +#: actions/groupblock.php:95 +msgid "User is already blocked from group." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი უკვე გáƒáƒ áƒ˜áƒªáƒ®áƒ£áƒšáƒ˜áƒ ჯგუფიდáƒáƒœ." + +#: actions/groupblock.php:100 +msgid "User is not a member of group." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ  áƒáƒ áƒ˜áƒ¡ ჯგუფის წევრი." + +#: actions/groupblock.php:134 actions/groupmembers.php:360 +msgid "Block user from group" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის გáƒáƒ áƒ˜áƒªáƒ®áƒ•áƒ ჯგუფიდáƒáƒœ." + +#: 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 "" +"ნáƒáƒ›áƒ“ვილáƒáƒ“ გნებáƒáƒ•áƒ— გáƒáƒ áƒ˜áƒªáƒ®áƒáƒ— \"%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 "áƒáƒ  გáƒáƒ áƒ˜áƒªáƒ®áƒ ემ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ› ჯგუფიდáƒáƒœ" + +#. 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 "გáƒáƒ áƒ˜áƒªáƒ®áƒ” ეს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი áƒáƒ› ჯგუფიდáƒáƒœ" + +#: actions/groupblock.php:206 +msgid "Database error blocking user from group." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ჯგუფიდáƒáƒœ გáƒáƒ áƒ˜áƒªáƒ®áƒ•áƒ˜áƒ¡áƒáƒ¡ მáƒáƒ®áƒ“რშეცდáƒáƒ›áƒ ბáƒáƒ–áƒáƒ¨áƒ˜." + +#: actions/groupbyid.php:74 actions/userbyid.php:70 +msgid "No ID." +msgstr "ID უცნáƒáƒ‘იáƒ." + +#: actions/groupdesignsettings.php:68 +msgid "You must be logged in to edit a group." +msgstr "ჯგუფის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ—ვის სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#: actions/groupdesignsettings.php:144 +msgid "Group design" +msgstr "ჯგუფის დიზáƒáƒ˜áƒœáƒ˜" + +#: actions/groupdesignsettings.php:155 +msgid "" +"Customize the way your group looks with a background image and a colour " +"palette of your choice." +msgstr "" +"áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ, რáƒáƒ’áƒáƒ  გნებáƒáƒ•áƒ— გáƒáƒ›áƒáƒ˜áƒ§áƒ£áƒ áƒ”ბáƒáƒ“ეს თქვენი ჯგუფი ფáƒáƒœáƒ£áƒ áƒ˜ სურáƒáƒ—ისრდრფერთრ" +"პáƒáƒšáƒ˜áƒ¢áƒ áƒ˜áƒ¡ შეცვლით." + +#: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 +#: lib/designsettings.php:391 lib/designsettings.php:413 +msgid "Couldn't update your design." +msgstr "დიზáƒáƒ˜áƒœáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 +msgid "Design preferences saved." +msgstr "დიზáƒáƒ˜áƒœáƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ." + +#: actions/grouplogo.php:142 actions/grouplogo.php:195 +msgid "Group logo" +msgstr "ჯგუფის ლáƒáƒ’áƒ" + +#: actions/grouplogo.php:153 +#, php-format +msgid "" +"You can upload a logo image for your group. The maximum file size is %s." +msgstr "" +"თქვენ შეგიძლიáƒáƒ— áƒáƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ— ლáƒáƒ’áƒáƒ¡ თქვენი ჯგუფისáƒáƒ—ვის. ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი ზáƒáƒ›áƒáƒ %s." + +#: actions/grouplogo.php:365 +msgid "Pick a square area of the image to be the logo." +msgstr "áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ სურáƒáƒ—ის კვáƒáƒ“რáƒáƒ¢áƒ£áƒšáƒ˜ მáƒáƒœáƒáƒ™áƒ•áƒ”თი ლáƒáƒ’áƒáƒ¡áƒáƒ—ვის." + +#: actions/grouplogo.php:399 +msgid "Logo updated." +msgstr "ლáƒáƒ’რგáƒáƒœáƒáƒ®áƒšáƒ“áƒ." + +#: actions/grouplogo.php:401 +msgid "Failed updating logo." +msgstr "ლáƒáƒ’áƒáƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/groupmembers.php:100 lib/groupnav.php:92 +#, php-format +msgid "%s group members" +msgstr "%s ჯგუფის წევრი" + +#: actions/groupmembers.php:103 +#, php-format +msgid "%1$s group members, page %2$d" +msgstr "%1$s ჯგუფის წევრი, გვერდი %2$d" + +#: 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 "%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 "%1$s-ის წევრების გáƒáƒœáƒáƒ®áƒšáƒ”ბები %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 "ჯგუფები" + +#: actions/groups.php:64 +#, php-format +msgid "Groups, page %d" +msgstr "ჯგუფები, გვერდი $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 "" +"%%%%site.name%%%%-ის ჯგუფები გáƒáƒ«áƒšáƒ”ვთ სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡ მáƒáƒ«áƒ”ბნáƒáƒ— დრესáƒáƒ£áƒ‘რáƒáƒ— მსგáƒáƒ•áƒ¡áƒ˜ " +"ინტერესების მქáƒáƒœáƒ” ხáƒáƒšáƒ®áƒ¡. ჯგუფში გáƒáƒ”რთიáƒáƒœáƒ”ბის შემდეგ, შეძლებთ მიწერáƒáƒ— " +"შეტყáƒáƒ‘ინებები ჯგუფის სხვრწევრებს áƒáƒ¡áƒ”თი სინტáƒáƒ¥áƒ¡áƒ˜áƒ— - \"!ჯგუფის სáƒáƒ®áƒ”ლი\". ვერ " +"ხედáƒáƒ•áƒ— მáƒáƒ¡áƒáƒ¬áƒáƒœ ჯგუფს? სცáƒáƒ“ეთ [ძიებáƒ](%%%%action.groupsearch%%%%) áƒáƒœ " +"[შექმენით სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜!](%%%%action.newgroup%%%%)" + +#: 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 "" +"მáƒáƒ«áƒ”ბნეთ ჯგუფები %%site.name%%-ზე მáƒáƒ—ი სáƒáƒ®áƒ”ლის, áƒáƒ“გილის, áƒáƒœ áƒáƒ¦áƒ¬áƒ”რის " +"მიხედვით. გáƒáƒ›áƒáƒ§áƒáƒ•áƒ˜áƒ— ფრáƒáƒ–ები სივრცით; სáƒáƒ«áƒ˜áƒ”ბრფრáƒáƒ–რ3 სიმბáƒáƒšáƒáƒ–ე მეტი უნდრ" +"იყáƒáƒ¡." + +#: 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 "" +"თუ ვერ პáƒáƒ£áƒšáƒáƒ‘თ ჯგუფს რáƒáƒ›áƒ”ლსáƒáƒª ეძებთ, შეგიძლიáƒáƒ— თვითáƒáƒœ [შექმნáƒáƒ—](%%action." +"newgroup%%)." + +#: actions/groupsearch.php:85 +#, php-format +msgid "" +"Why not [register an account](%%action.register%%) and [create the group](%%" +"action.newgroup%%) yourself!" +msgstr "" +"[დáƒáƒáƒ áƒ”გისტრირეთ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜](%%action.register%%) დრ[შექმენით ჯგუფი](%%action." +"newgroup%%) თვითáƒáƒœ!" + +#: actions/groupunblock.php:91 +msgid "Only an admin can unblock group members." +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 "IM პáƒáƒ áƒáƒ›áƒ”ტრები" + +#. 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 "" +"თქვენ შეგიძლიáƒáƒ— მიიღáƒáƒ— დრგáƒáƒáƒ’ზáƒáƒ•áƒœáƒáƒ— შეტყáƒáƒ‘ინებები Jabber/GTalk [ჩეთით](%%" +"doc.im%%). მáƒáƒ›áƒáƒ áƒ—ეთ თქვენი მისáƒáƒ›áƒáƒ áƒ—ი დრპáƒáƒ áƒáƒ›áƒ”ტრები ქვევით." + +#. 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 "IM áƒáƒ  áƒáƒ áƒ˜áƒ¡ ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜." + +#. 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 "IM მისáƒáƒ›áƒáƒ áƒ—ი" + +#: actions/imsettings.php:113 +msgid "Current confirmed Jabber/GTalk address." +msgstr "მიმდინáƒáƒ áƒ” დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბული Jabber/GTalk მისáƒáƒ›áƒáƒ áƒ—ი." + +#. 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 "" +"áƒáƒ› მისáƒáƒ›áƒáƒ áƒ—ის დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბრმáƒáƒšáƒáƒ“ინშიáƒ. შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ თქვენი Jabber/GTalk áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜ " +"შეტყáƒáƒ‘ინებისáƒáƒ—ვის შემდგáƒáƒ›áƒ˜ ინსტრუქციებით. (დáƒáƒ˜áƒ›áƒáƒ¢áƒ”თ %s მეგáƒáƒ‘რების სიáƒáƒ¨áƒ˜?)" + +#. 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 მისáƒáƒ›áƒáƒ áƒ—ი, რáƒáƒ’áƒáƒ áƒª \"UserName@example.org\". პირველ რიგში " +"დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› დáƒáƒ˜áƒ›áƒáƒ¢áƒ”თ %s მეგáƒáƒ‘რების სიáƒáƒ¨áƒ˜ თქვენს IM კლიენტში áƒáƒœ GTalk-ში." + +#. TRANS: Form legend for IM preferences form. +#: actions/imsettings.php:155 +msgid "IM preferences" +msgstr "IM პáƒáƒ áƒáƒ›áƒ”ტრები" + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:160 +msgid "Send me notices through 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 სტáƒáƒ¢áƒ£áƒ¡áƒ˜ შეიცვლებáƒ." + +#. 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-ით ხáƒáƒšáƒ®áƒ˜áƒ¡áƒ’áƒáƒœ, რáƒáƒ›áƒšáƒ—რმიმდევáƒáƒ áƒ˜ áƒáƒ  ვáƒáƒ ." + +#. TRANS: Checkbox label in IM preferences form. +#: actions/imsettings.php:179 +msgid "Publish a MicroID for my Jabber/GTalk address." +msgstr "გáƒáƒ›áƒáƒáƒ¥áƒ•áƒ”ყნე MicroID ჩემი Jabber/GTalk მისáƒáƒ›áƒáƒ áƒ—ისთვის." + +#. 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 "Jabber ID უცნáƒáƒ‘იáƒ." + +#. TRANS: Message given saving IM address that cannot be normalised. +#: actions/imsettings.php:317 +msgid "Cannot normalize that Jabber ID" +msgstr "Jabber ID-ს ნáƒáƒ áƒ›áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ ვერ ხერხდებáƒ" + +#. TRANS: Message given saving IM address that not valid. +#: actions/imsettings.php:322 +msgid "Not a valid Jabber ID" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ Jabber ID" + +#. TRANS: Message given saving IM address that is already set. +#: actions/imsettings.php:326 +msgid "That is already your Jabber ID." +msgstr "ეს უკვე áƒáƒ áƒ˜áƒ¡ თქვენი 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 უკვე ეკუთვნის სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს." + +#. 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 "" +"დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜áƒ¡ კáƒáƒ“ი გáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ თქვენს IM მისáƒáƒ›áƒáƒ áƒ—ზე. თქვენ უნდრმისცეთ უფლებრ%" +"s-ს გáƒáƒ›áƒáƒ’იგზáƒáƒ•áƒœáƒáƒ— შეტყáƒáƒ‘ინებები." + +#. TRANS: Message given canceling IM address confirmation for the wrong IM address. +#: actions/imsettings.php:388 +msgid "That is the wrong IM address." +msgstr "ეს áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ IM მისáƒáƒ›áƒáƒ áƒ—იáƒ." + +#. TRANS: Server error thrown on database error canceling IM address confirmation. +#: actions/imsettings.php:397 +msgid "Couldn't delete IM confirmation." +msgstr "IM დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#. TRANS: Message given after successfully canceling IM address confirmation. +#: actions/imsettings.php:402 +msgid "IM confirmation cancelled." +msgstr "IM დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜ გáƒáƒ£áƒ¥áƒ›áƒ“áƒ." + +#. 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 "ეს áƒáƒ  áƒáƒ áƒ˜áƒ¡ თქვენი Jabber ID" + +#. TRANS: Message given after successfully removing a registered IM address. +#: actions/imsettings.php:447 +msgid "The IM address was removed." +msgstr "IM მისáƒáƒ›áƒáƒ áƒ—ი მáƒáƒ¨áƒáƒ áƒ”ბულიáƒ." + +#: actions/inbox.php:59 +#, php-format +msgid "Inbox for %1$s - page %2$d" +msgstr "%1$s-ის შემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ ფáƒáƒ¡áƒ¢áƒ - გვერდი %2$d" + +#: actions/inbox.php:62 +#, php-format +msgid "Inbox for %s" +msgstr "%s-ის შემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ ფáƒáƒ¡áƒ¢áƒ" + +#: actions/inbox.php:115 +msgid "This is your inbox, which lists your incoming private messages." +msgstr "" +"ეს áƒáƒ áƒ˜áƒ¡ თქვენი სáƒáƒ¤áƒáƒ¡áƒ¢áƒ ყუთი, რáƒáƒ›áƒ”ლშიც ჩáƒáƒ›áƒáƒ—ვლილირშემáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ პირáƒáƒ“ი წერილები." + +#: actions/invite.php:39 +msgid "Invites have been disabled." +msgstr "მáƒáƒ¬áƒ•áƒ”ვები გáƒáƒ—იშულიáƒ." + +#: actions/invite.php:41 +#, php-format +msgid "You must be logged in to invite other users to use %s." +msgstr "%s-ში სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების დáƒáƒ¡áƒáƒžáƒáƒ¢áƒ˜áƒ¯áƒ”ბლáƒáƒ“ სáƒáƒ¬áƒ˜áƒ áƒáƒ áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#: actions/invite.php:72 +#, php-format +msgid "Invalid email address: %s" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ელექტრáƒáƒœáƒ£áƒšáƒ˜ ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი: %s" + +#: 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:430 +#, 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 "" +"ეს ხáƒáƒšáƒ®áƒ˜ უკვე áƒáƒ áƒ˜áƒáƒœ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები დრთქვენ áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒ®áƒ“ით მáƒáƒ—ი " +"გáƒáƒœáƒáƒ®áƒšáƒ”ბების გáƒáƒ›áƒáƒ›áƒ¬áƒ”რები:" + +#: 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 "%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 +#, 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-მრდáƒáƒ’პáƒáƒ¢áƒ˜áƒŸáƒáƒ— რáƒáƒ› გáƒáƒ”რთიენდეთ %2$s-ზე (%3$s).\n" +"\n" +"%2$s áƒáƒ áƒ˜áƒ¡ მიკრáƒ-ბლáƒáƒ’ინგის სერვისი, რáƒáƒ›áƒ”ლიც შესáƒáƒ«áƒšáƒ”ბლáƒáƒ‘áƒáƒ¡ გáƒáƒ«áƒšáƒ”ვთ სáƒáƒ¥áƒ›áƒ˜áƒ¡ " +"კურსში იყáƒáƒ— თქვენს ნáƒáƒªáƒœáƒáƒ‘ებთáƒáƒœ დრსáƒáƒ˜áƒœáƒ¢áƒ”რესრხáƒáƒšáƒ®áƒ—áƒáƒœ.\n" +"\n" +"თქვენ შეგიძლიáƒáƒ— გáƒáƒ£áƒ–იáƒáƒ áƒáƒ— სიáƒáƒ®áƒšáƒ”ები თქვენს შესáƒáƒ®áƒ”ბ, თქვენი áƒáƒ–რები, áƒáƒœ თქვენი " +"ინტერნეტ-ცხáƒáƒ•áƒ áƒ”ბრხáƒáƒšáƒ®áƒ¡ ვინც გიცნáƒáƒ‘თ. %2$s სáƒáƒ£áƒ™áƒ”თესáƒáƒ áƒáƒ®áƒáƒšáƒ˜ áƒáƒ“áƒáƒ›áƒ˜áƒáƒœáƒ”ბის " +"გáƒáƒ¡áƒáƒªáƒœáƒáƒ‘áƒáƒ—, ვინც იზიáƒáƒ áƒ”ბენ თქვენს ინტერესებს.\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 +msgid "No nickname or ID." +msgstr "მეტსáƒáƒ®áƒ”ლი áƒáƒœ ID უცნáƒáƒ‘იáƒ." + +#: actions/joingroup.php:141 +#, php-format +msgid "%1$s joined group %2$s" +msgstr "%1$s გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ“რჯგუფში %2$s" + +#: actions/leavegroup.php:60 +msgid "You must be logged in to leave a group." +msgstr "გჯუფის დáƒáƒ¢áƒáƒ•áƒ”ბისáƒáƒ—ვის სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 +msgid "You are not a member of that group." +msgstr "თვენ áƒáƒ  ხáƒáƒ áƒ— áƒáƒ› ჯგუფის წევრი." + +#: actions/leavegroup.php:137 +#, php-format +msgid "%1$s left group %2$s" +msgstr "%1$s-მრდáƒáƒ¢áƒáƒ•áƒ ჯგუფი %2$s" + +#: 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: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 "" +"ჯერ კიდევ áƒáƒ  გáƒáƒ¥áƒ•áƒ— მáƒáƒ›áƒ®. სáƒáƒ®áƒ”ლი? [დáƒáƒáƒ áƒ”გისტრირე](%%action.register%%) áƒáƒ®áƒáƒšáƒ˜ " +"áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜." + +#: 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 "%1$s უკვე áƒáƒ áƒ˜áƒ¡ \"%2$s\" ჯგუფის áƒáƒ“მინი." + +#: actions/makeadmin.php:133 +#, php-format +msgid "Can't get membership record for %1$s in group %2$s." +msgstr "%1$s–ის წევრáƒáƒ‘ის ჩáƒáƒœáƒáƒ¬áƒ”რის გáƒáƒ›áƒáƒ—ხáƒáƒ•áƒœáƒ %2$s ჯგუფიდáƒáƒœ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: actions/makeadmin.php:146 +#, php-format +msgid "Can't make %1$s an admin for group %2$s." +msgstr "%1$s–ის %2$s ჯგუფის áƒáƒ“მინáƒáƒ“ ქცევრვერ ხერხდებáƒ." + +#: 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 "წყáƒáƒ áƒáƒ¡ URL სáƒáƒ•áƒáƒšáƒ“ებულáƒáƒ." + +#: 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 "áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ" + +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 +msgid "You can't send a message to this user." +msgstr "áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს შეტყáƒáƒ‘ინებáƒáƒ¡ ვერ გáƒáƒ£áƒ’ზáƒáƒ•áƒœáƒ˜." + +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 +msgid "No content!" +msgstr "შიგთáƒáƒ•áƒ¡áƒ˜ áƒáƒ  áƒáƒ áƒ˜áƒ¡!" + +#: actions/newmessage.php:158 +msgid "No recipient specified." +msgstr "მიმღები მითითებული áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 +msgid "" +"Don't send a message to yourself; just say it to yourself quietly instead." +msgstr "ნუ გáƒáƒ£áƒ’ზáƒáƒ•áƒœáƒ˜ შეტყáƒáƒ‘ინებáƒáƒ¡ სáƒáƒ™áƒ£áƒ—áƒáƒ  თáƒáƒ•áƒ¡; უბრáƒáƒšáƒáƒ“ ჩუმáƒáƒ“ ჩáƒáƒ£áƒ©áƒ£áƒ áƒ©áƒ£áƒšáƒ”." + +#: actions/newmessage.php:181 +msgid "Message sent" +msgstr "შეტყáƒáƒ‘ინებრგáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ" + +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 +#, php-format +msgid "Direct message to %s sent." +msgstr "პირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებრგáƒáƒ”გზáƒáƒ•áƒœáƒ %s–ს." + +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 +msgid "Ajax Error" +msgstr "Ajax შეცდáƒáƒ›áƒ" + +#: actions/newnotice.php:69 +msgid "New notice" +msgstr "áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ" + +#: actions/newnotice.php:227 +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 "" +"მáƒáƒ«áƒ”ბნეთ შეტყáƒáƒ‘ინებები %%site.name%%-ზე მáƒáƒ—ი შიგთáƒáƒ•áƒ¡áƒ˜áƒ¡ მიხედვით. გáƒáƒ›áƒáƒ§áƒáƒ•áƒ˜áƒ— " +"ფრáƒáƒ–ები სივრცით; სáƒáƒ«áƒ˜áƒ”ბრფრáƒáƒ–რ3 სიმბáƒáƒšáƒáƒ–ე მეტი უნდრიყáƒáƒ¡." + +#: actions/noticesearch.php:78 +msgid "Text search" +msgstr "ტექსტური ძიებáƒ" + +#: actions/noticesearch.php:91 +#, php-format +msgid "Search results for \"%1$s\" on %2$s" +msgstr "\"%1$s\"–ს ძიების შედეგები %2$s–ზე" + +#: actions/noticesearch.php:121 +#, php-format +msgid "" +"Be the first to [post on this topic](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" +msgstr "" +"პირველმრ[დáƒáƒžáƒáƒ¡áƒ¢áƒ” áƒáƒ› თემáƒáƒ–ე](%%%%action.newnotice%%%%?status_textarea=%s)!" + +#: actions/noticesearch.php:124 +#, php-format +msgid "" +"Why not [register an account](%%%%action.register%%%%) and be the first to " +"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" +msgstr "" +"[დáƒáƒ áƒ”გისტრირდი](%%%%action.register%%%%) დრიყáƒáƒ•áƒ˜ პირველი ვინც áƒáƒ› თემáƒáƒ–ე " +"[დáƒáƒžáƒáƒ¡áƒ¢áƒáƒ•áƒ¡](%%%%action.newnotice%%%%?status_textarea=%s)!" + +#: actions/noticesearchrss.php:96 +#, php-format +msgid "Updates with \"%s\"" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბები \"%s\"–თ" + +#: actions/noticesearchrss.php:98 +#, php-format +msgid "Updates matching search term \"%1$s\" on %2$s!" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბები, რáƒáƒ›áƒšáƒ”ბიც შეიცáƒáƒ•áƒ”ნ სáƒáƒ«áƒ˜áƒ”ბრსიტყვáƒáƒ¡ \"%1$s\" %2$s–ზე!" + +#: actions/nudge.php:85 +msgid "" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." +msgstr "" + +#: actions/oauthappssettings.php:59 +msgid "You must be logged in to list your applications." +msgstr "თქვენი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბის სიის სáƒáƒœáƒáƒ®áƒáƒ•áƒáƒ“ სáƒáƒ­áƒ˜áƒ áƒáƒ áƒáƒ•áƒ áƒáƒ¢áƒ˜áƒ–áƒáƒªáƒ˜áƒ." + +#: actions/oauthappssettings.php:74 +msgid "OAuth applications" +msgstr "OAuth áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: actions/oauthappssettings.php:85 +msgid "Applications you have registered" +msgstr "თქვენს მიერ დáƒáƒ áƒ”გისტრირებული áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: actions/oauthappssettings.php:135 +#, php-format +msgid "You have not registered any applications yet." +msgstr "თქვენ ჯერჯერáƒáƒ‘ით áƒáƒ áƒªáƒ”რთი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ áƒáƒ  დáƒáƒ’ირეგისტრირებიáƒáƒ—." + +#: actions/oauthconnectionssettings.php:72 +msgid "Connected applications" +msgstr "მიერთებული áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: actions/oauthconnectionssettings.php:83 +msgid "You have allowed the following applications to access you account." +msgstr "თქვენ შემდეგ áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბს მიეცით თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ–ე წვდáƒáƒ›áƒ˜áƒ¡ უფლებáƒ." + +#: actions/oauthconnectionssettings.php:175 +msgid "You are not a user of that application." +msgstr "თქვენ áƒáƒ  ხáƒáƒ áƒ— áƒáƒ› áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი." + +#: actions/oauthconnectionssettings.php:186 +#, php-format +msgid "Unable to revoke access for app: %s." +msgstr "%s áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ მიერ ზვდáƒáƒ›áƒ˜áƒ¡ გáƒáƒ£áƒ¥áƒ›áƒ”ბრვერ ხერხდებáƒ." + +#: 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 "%1$s–ის სტáƒáƒ¢áƒ£áƒ¡áƒ˜ %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 "შიგთáƒáƒ•áƒ¡áƒ˜áƒ¡ ტიპი %s áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი." + +#. 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 "გთხáƒáƒ•áƒ— გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— მხáƒáƒšáƒáƒ“ %s URL–ები წმინდრHTTP მეთáƒáƒ“ით." + +#. TRANS: Client error on an API request with an unsupported data format. +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 +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 "შეáƒáƒ›áƒáƒ™áƒšáƒ” URL–ები შემდეგით" + +#: 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 "URL–ს შემáƒáƒ™áƒšáƒ”ბის სერვისი ძáƒáƒšáƒ˜áƒáƒœ გრძელირ(მáƒáƒ¥áƒ¡. 50 სიმბáƒáƒšáƒ)." + +#: actions/otp.php:69 +msgid "No user ID specified." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ID მითითებული áƒáƒ  áƒáƒ áƒ˜áƒ¡." + +#: actions/otp.php:90 +msgid "No login token requested." +msgstr "" + +#: actions/outbox.php:58 +#, php-format +msgid "Outbox for %1$s - page %2$d" +msgstr "%1$s-ის გáƒáƒ›áƒáƒ•áƒáƒšáƒ˜ ფáƒáƒ¡áƒ¢áƒ - გვერდი %2$d" + +#: actions/outbox.php:61 +#, php-format +msgid "Outbox for %s" +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" +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 "6 áƒáƒœ მეტი სიმბáƒáƒšáƒ" + +#: 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 "პáƒáƒ áƒáƒšáƒ˜ უნდრშედგებáƒáƒ“ეს 6 áƒáƒœ მეტი სიმბáƒáƒšáƒáƒ¡áƒ’áƒáƒœ." + +#: 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 "იერსáƒáƒ®áƒ˜áƒ¡ დირექტáƒáƒ áƒ˜áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡ წáƒáƒ™áƒ˜áƒ—ხვáƒáƒ“ი: %s." + +#: actions/pathsadminpanel.php:163 +#, php-format +msgid "Avatar directory not writable: %s." +msgstr "áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜áƒ¡ დირექტáƒáƒ áƒ˜áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¬áƒ”რáƒáƒ“ი: %s." + +#: actions/pathsadminpanel.php:169 +#, php-format +msgid "Background directory not writable: %s." +msgstr "ფáƒáƒœáƒ˜áƒ¡ დირექტáƒáƒ áƒ˜áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡ ჩáƒáƒ¬áƒ”რáƒáƒ“ი: %s." + +#: actions/pathsadminpanel.php:183 +msgid "Invalid SSL server. The maximum length is 255 characters." +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ SSL სერვერი. მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ სიგრძე áƒáƒ áƒ˜áƒ¡ 255 სიმბáƒáƒšáƒ." + +#: 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 "ლáƒáƒ›áƒáƒ–ი URL–ები" + +#: actions/pathsadminpanel.php:252 +msgid "Use fancy (more readable and memorable) URLs?" +msgstr "გáƒáƒ›áƒáƒ•áƒ˜áƒ§áƒ”ნრლáƒáƒ›áƒáƒ–ი (მეტáƒáƒ“ კითხვáƒáƒ“ი დრდáƒáƒ¡áƒáƒ›áƒáƒ®áƒ¡áƒáƒ•áƒ áƒ”ბელი) URL–ები?" + +#: actions/pathsadminpanel.php:259 +msgid "Theme" +msgstr "იერსáƒáƒ®áƒ”" + +#: actions/pathsadminpanel.php: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 "SSL" + +#: 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 "გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე SSL" + +#: actions/pathsadminpanel.php:330 +msgid "When to use SSL" +msgstr "რáƒáƒ“ის გáƒáƒ›áƒáƒ•áƒ˜áƒ§áƒ”ნრSSL" + +#: actions/pathsadminpanel.php:335 +msgid "SSL server" +msgstr "SSL სერვერი" + +#: actions/pathsadminpanel.php:336 +msgid "Server to direct SSL requests to" +msgstr "სერვერი რáƒáƒ›áƒ”ლზეც მიემáƒáƒ áƒ—áƒáƒ¡ SSL მáƒáƒ—ხáƒáƒ•áƒœáƒ”ბი" + +#: 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 "" +"მáƒáƒ«áƒ”ბნეთ áƒáƒ“áƒáƒ›áƒ˜áƒáƒœáƒ”ბი %%site.name%%-ზე მáƒáƒ—ი სáƒáƒ®áƒ”ლის, áƒáƒ“გილის, áƒáƒœ áƒáƒ¦áƒ¬áƒ”რის " +"მიხედვით. გáƒáƒ›áƒáƒ§áƒáƒ•áƒ˜áƒ— ფრáƒáƒ–ები სივრცით; სáƒáƒ«áƒ˜áƒ”ბრფრáƒáƒ–რ3 სიმბáƒáƒšáƒáƒ–ე მეტი უნდრ" +"იყáƒáƒ¡." + +#: actions/peoplesearch.php:58 +msgid "People search" +msgstr "პირáƒáƒ•áƒœáƒ”ბების ძიებáƒ" + +#: actions/peopletag.php:68 +#, php-format +msgid "Not a valid people tag: %s." +msgstr "პირáƒáƒ•áƒœáƒ”ბების áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ სáƒáƒœáƒ˜áƒ¨áƒœáƒ”: %s." + +#: actions/peopletag.php:142 +#, php-format +msgid "Users self-tagged with %1$s - page %2$d" +msgstr "" +"მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები რáƒáƒ›áƒšáƒ”ბმáƒáƒª სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•áƒ˜ მáƒáƒœáƒ˜áƒ¨áƒœáƒ”ს რáƒáƒ’áƒáƒ áƒª %1$s – გვერდი %2$d" + +#: 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 "შეტყáƒáƒ‘ინების ლიცენზირ‘%1$s’ შეუთáƒáƒ•áƒ¡áƒ”ბელირსáƒáƒ˜áƒ¢áƒ˜áƒ¡ ლიცენზიáƒáƒ¡áƒ—áƒáƒœ ‘%2$s’." + +#: 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 "1–64 პáƒáƒ¢áƒáƒ áƒ áƒáƒ¡áƒáƒ”ბი áƒáƒœ ციფრები. პუნქტუáƒáƒªáƒ˜áƒ”ბი áƒáƒœ სივრცეები დáƒáƒ£áƒ¨áƒ•áƒ”ბელიáƒ" + +#: 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 "თქვენი ვებ. გვერდის URL, ბლáƒáƒ’ი, áƒáƒœ პრáƒáƒ¤áƒ˜áƒšáƒ˜ სხვრსáƒáƒ˜áƒ¢áƒ–ე" + +#: 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: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 "ბიáƒáƒ’რáƒáƒ¤áƒ˜áƒ ძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს %d სიმბáƒáƒšáƒ)." + +#: 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 "ენრძáƒáƒšáƒ˜áƒáƒœ გრძელირ(áƒáƒ áƒáƒ£áƒ›áƒ”ტეს 50 სიმბáƒáƒšáƒ)." + +#: actions/profilesettings.php:253 actions/tagother.php:178 +#, php-format +msgid "Invalid tag: \"%s\"" +msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ სáƒáƒœáƒ˜áƒ¨áƒœáƒ”: \"%s\"" + +#: 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 "გვერსიდ სáƒáƒ–ღვრის მიღმრ(%s)." + +#: actions/public.php:92 +msgid "Could not retrieve public stream." +msgstr "სáƒáƒ¯áƒáƒ áƒ ნáƒáƒ™áƒáƒ“ის გáƒáƒ›áƒáƒ—ხáƒáƒ•áƒœáƒ ვერ ხერხდებáƒ." + +#: actions/public.php:130 +#, php-format +msgid "Public timeline, page %d" +msgstr "სáƒáƒ¯áƒáƒ áƒ გáƒáƒœáƒáƒ®áƒšáƒ”ბების ნáƒáƒ™áƒáƒ“ი, გვერდი %d" + +#: 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 "[დáƒáƒ áƒ”გისტრირდი](%%action.register%%) დრდáƒáƒžáƒáƒ¡áƒ¢áƒ” პირველმáƒ!" + +#: 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 "" +"ეს áƒáƒ áƒ˜áƒ¡ %%site.name%%, [მიკრáƒâ€“ბლáƒáƒ’ინგის](http://en.wikipedia.org/wiki/Micro-" +"blogging) სერვისი, დáƒáƒ¤áƒ£áƒ«áƒœáƒ”ბული უფáƒáƒ¡áƒ [StatusNet](http://status.net/) კáƒáƒ“ზე. " +"[შემáƒáƒ’ვიერთდი áƒáƒ®áƒšáƒáƒ•áƒ”](%%action.register%%) დრგáƒáƒ£áƒ–იáƒáƒ áƒ” შეტყáƒáƒ‘ინებები " +"მეგáƒáƒ‘რებს, áƒáƒ¯áƒáƒ®áƒ˜áƒ¡ წევრებს დრკáƒáƒšáƒ”გებს! ([გáƒáƒ˜áƒ’ე მეტი](%%doc.help%%))" + +#: 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 "" +"რს áƒáƒ áƒ˜áƒ¡ %%site.name%%, [მიკრáƒâ€“ბლáƒáƒ’ინგის](http://en.wikipedia.org/wiki/Micro-" +"blogging) სერვისი, დáƒáƒ¤áƒ£áƒ«áƒœáƒ”ბული უფáƒáƒ¡áƒ [StatusNet](http://status.net/) კáƒáƒ“ზე." + +#: 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 "ეს áƒáƒ áƒ˜áƒ¡ ყველáƒáƒ–ე პáƒáƒžáƒ£áƒšáƒáƒ áƒ£áƒšáƒ˜ სáƒáƒœáƒ˜áƒ¨áƒœáƒ”ები %s–ზე " + +#: actions/publictagcloud.php:69 +#, php-format +msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet." +msgstr "ჯერჯერáƒáƒ‘ით áƒáƒ áƒáƒ•áƒ˜áƒ¡ დáƒáƒ£áƒžáƒáƒ¡áƒ¢áƒáƒ•áƒ¡ შეტყáƒáƒ‘ინებრ[hashtag](%%doc.tags%%)–ით." + +#: 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 "[დáƒáƒ áƒ”გისტრირდი](%%action.register%%) დრდáƒáƒžáƒáƒ¡áƒ¢áƒ” პირველმáƒ!" + +#: 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 "6 áƒáƒœ მეტი სიმბáƒáƒšáƒ, დრáƒáƒ  დáƒáƒ’áƒáƒ•áƒ˜áƒ¬áƒ§áƒ“ეთ!" + +#: 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 "პáƒáƒ áƒáƒšáƒ˜ უნდრშედგებáƒáƒ“ეს 6 áƒáƒœ მეტი სიმბáƒáƒšáƒáƒ¡áƒ’áƒáƒœ." + +#: 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 "" +"1–64 პáƒáƒ¢áƒáƒ áƒ áƒáƒ¡áƒáƒ”ბი áƒáƒœ ციფრები. პუნქტუáƒáƒªáƒ˜áƒ”ბი áƒáƒœ სივრცეები დáƒáƒ£áƒ¨áƒ•áƒ”ბელიáƒ. " +"სáƒáƒ•áƒáƒšáƒ“ებულáƒ." + +#: actions/register.php:437 +msgid "6 or more characters. Required." +msgstr "6 áƒáƒœ მეტი სიმბáƒáƒšáƒ. სáƒáƒ•áƒáƒšáƒ“ებულáƒ." + +#: 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 "" +"მე ვáƒáƒªáƒœáƒáƒ‘იერებ, რáƒáƒ› %1$s–ის შიგთáƒáƒ•áƒ¡áƒ˜ დრმáƒáƒœáƒáƒªáƒ”მები áƒáƒ áƒ˜áƒ¡ პირáƒáƒ“ული დრ" +"კáƒáƒœáƒªáƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒ˜." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "ჩემი ტექსტის დრფáƒáƒ˜áƒšáƒ”ბის სáƒáƒáƒ•áƒ¢áƒáƒ áƒ უფლებრეკუტვნის %1$s–ს." + +#. 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 "" +"ჩემი ტექსტი დრფáƒáƒ˜áƒšáƒ”ბი ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ %s–ით, გáƒáƒ áƒ“რáƒáƒ› პირáƒáƒ“ი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ: " +"პáƒáƒ áƒáƒšáƒ˜, ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი, IM მისáƒáƒ›áƒáƒ áƒ—ი დრტელეფáƒáƒœáƒ˜áƒ¡ ნáƒáƒ›áƒ”რი." + +#: 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 "" +"გილáƒáƒªáƒáƒ•áƒ— %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: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 "" +"გáƒáƒ›áƒáƒ¡áƒáƒ¬áƒ”რáƒáƒ“, თქვენ შეგიძლიáƒáƒ— [შეხვიდეთ](%%action.login%%), áƒáƒœ " +"[დáƒáƒáƒ áƒ”გისტრირáƒáƒ—](%%action.register%%) áƒáƒ®áƒáƒšáƒ˜ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜. თუ თქვენ უკვე გáƒáƒ¥áƒ•áƒ— " +"áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜ [თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“ მიკრáƒáƒ‘ლáƒáƒ’ინგის სáƒáƒ˜áƒ¢áƒ–ე](%%doc.openmublog%%), მáƒáƒ¨áƒ˜áƒœ " +"შეიყვáƒáƒœáƒ”თ თქვენი პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ URL ქვევით." + +#: 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 "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ URL" + +#: actions/remotesubscribe.php:134 +msgid "URL of your profile on another compatible microblogging service" +msgstr "თქვენი პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ URL სხვრთáƒáƒ•áƒ¡áƒ”ბáƒáƒ“ მიკრáƒáƒ‘ლáƒáƒ’ინგის სერვისზე" + +#: 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 "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ URL (ცუდი ფáƒáƒ áƒ›áƒáƒ¢áƒ˜)" + +#: actions/remotesubscribe.php:168 +msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." +msgstr "" +"ეს áƒáƒ  áƒáƒ áƒ˜áƒ¡ პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ სწáƒáƒ áƒ˜ URL (YADIS დáƒáƒ™áƒ£áƒ›áƒ”ნტი áƒáƒ  áƒáƒ áƒ˜áƒ¡, áƒáƒœ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ XRDS–რ" +"გáƒáƒœáƒ¡áƒáƒ–ღვრული)." + +#: 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:676 +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 "პáƒáƒ¡áƒ£áƒ®áƒ”ბი %s–ს" + +#: actions/replies.php:128 +#, php-format +msgid "Replies to %1$s, page %2$d" +msgstr "პáƒáƒ¡áƒ£áƒ®áƒ”ბი %1$s–ს, გვერდი %2$d" + +#: 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 them yet." +msgstr "" +"ეს áƒáƒ áƒ˜áƒ¡ პáƒáƒ¡áƒ£áƒ®áƒ”ბის ნáƒáƒ™áƒáƒ“ი %1$s–სთვის, მáƒáƒ’რáƒáƒ› %2$s–ს ჯერ áƒáƒ  მიუღირშეტყáƒáƒ‘ინებრ" +"მáƒáƒ— შესáƒáƒ®áƒ”ბ." + +#: 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 "" +"თქვენ შეგიძლიáƒáƒ— ჩáƒáƒ”რთáƒáƒ— სáƒáƒ£áƒ‘áƒáƒ áƒ¨áƒ˜ სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებთáƒáƒœ ერთáƒáƒ“, გáƒáƒ›áƒáƒ˜áƒ¬áƒ”რáƒáƒ— მეტი " +"პირáƒáƒ•áƒœáƒ”ბების გáƒáƒœáƒáƒ®áƒšáƒ”ბები, áƒáƒœ [გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ“ეთ ჯგუფში](%%action.groups%%)." + +#: actions/repliesrss.php:72 +#, php-format +msgid "Replies to %1$s on %2$s!" +msgstr "პáƒáƒ¡áƒ£áƒ®áƒ”ბი %1$s–ს %2$s–ზე!" + +#: 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 "StatusNet" + +#: actions/sandbox.php:65 actions/unsandbox.php:65 +msgid "You cannot sandbox users on this site." +msgstr "თქვენ ვერ შეძლებთ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების იზáƒáƒšáƒ˜áƒ áƒ”ბáƒáƒ¡ áƒáƒ› სáƒáƒ˜áƒ¢áƒ–ე." + +#: actions/sandbox.php:72 +msgid "User is already sandboxed." +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი უკვე იზáƒáƒšáƒ˜áƒ áƒ”ბულიáƒ." + +#. 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 "სესიების შეცდáƒáƒ›áƒ”ბის გáƒáƒ›áƒáƒ¡áƒ¬áƒáƒ áƒ”ბრ(debugging)" + +#: 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 "URL-ის áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ" + +#: actions/showapplication.php:288 +msgid "" +"Note: We support HMAC-SHA1 signatures. We do not support the plaintext " +"signature method." +msgstr "" +"შენიშვნáƒ: ჩვენ მხáƒáƒ áƒ¡ ვუჭერთ HMAC-SHA1 ხელმáƒáƒ¬áƒ”რებს. ჩვენ áƒáƒ  ვუჭერთ მხáƒáƒ áƒ¡ " +"მხáƒáƒšáƒáƒ“ ტექსტური ხელმáƒáƒ¬áƒ”რის მეთáƒáƒ“ს." + +#: actions/showapplication.php:309 +msgid "Are you sure you want to reset your consumer key and secret?" +msgstr "" +"დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ”ბული ხáƒáƒ áƒ— რáƒáƒ› გნებáƒáƒ•áƒ— თქვენი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის გáƒáƒ¡áƒáƒ¦áƒ”ბის დრსáƒáƒ˜áƒ“უმლáƒáƒ¡ " +"გáƒáƒ“áƒáƒ§áƒ”ნებáƒ?" + +#: actions/showfavorites.php:79 +#, php-format +msgid "%1$s's favorite notices, page %2$d" +msgstr "%1$s-ის რჩეული შეტყáƒáƒ‘ინებები, გვერდი %2$d" + +#: actions/showfavorites.php:132 +msgid "Could not retrieve favorite notices." +msgstr "რჩეული შეტყáƒáƒ‘ინებების გáƒáƒ›áƒáƒ—ხáƒáƒ•áƒœáƒ ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: 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:243 +msgid "This is a way to share what you like." +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: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:439 +msgid "Created" +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/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 "უცნáƒáƒ‘ი ენრ\"%s\"." + +#: actions/siteadminpanel.php:165 +msgid "Minimum text limit is 0 (unlimited)." +msgstr "ტექსტის მინიმáƒáƒšáƒ£áƒ áƒ˜ ზღვáƒáƒ áƒ˜áƒ 0 (ულიმიტáƒ)." + +#: 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:230 +msgid "Text used for credits link in footer of each page" +msgstr "ტექსტი გáƒáƒ›áƒáƒ§áƒ”ნებული თითáƒáƒ”ული გვერდის ბáƒáƒšáƒáƒ¡ კრედიტებისთვის" + +#: actions/siteadminpanel.php:234 +msgid "Brought by URL" +msgstr "მáƒáƒ›áƒ¬áƒáƒ“ებლის URL" + +#: actions/siteadminpanel.php:235 +msgid "URL used for credits link in footer of each page" +msgstr "URL გáƒáƒ›áƒáƒ§áƒ”ნებული კრედიტებისáƒáƒ—ვის თითáƒáƒ”ული გვერდი ბáƒáƒšáƒáƒ¡" + +#: 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 "პირვáƒáƒœáƒ“ელი დრáƒáƒ˜áƒ¡ სáƒáƒ áƒ¢áƒ§áƒ”ლი áƒáƒ› სáƒáƒ˜áƒ¢áƒ˜áƒ¡áƒ—ვის; ძირითáƒáƒ“áƒáƒ“ UTC." + +#: 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 "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 "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ მáƒáƒ›áƒªáƒ•áƒ”ლი შეტყáƒáƒ‘ინების მáƒáƒ¥áƒ¡. ზáƒáƒ›áƒáƒ 255 სიმბáƒáƒšáƒ." + +#: actions/sitenoticeadminpanel.php:176 +msgid "Site notice text" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ შეტყáƒáƒ‘ინების ტექსტი" + +#: actions/sitenoticeadminpanel.php:178 +msgid "Site-wide notice text (255 chars max; HTML okay)" +msgstr "სáƒáƒ”რთრსáƒáƒ¡áƒáƒ˜áƒ¢áƒ შეტყáƒáƒ‘ინების ტექსტი (მáƒáƒ¥áƒ¡. 255 სიმბáƒáƒšáƒ; HTML შეიძლებáƒ)" + +#: actions/sitenoticeadminpanel.php:198 +msgid "Save site notice" +msgstr "შეინáƒáƒ®áƒ” სáƒáƒ”რთáƒáƒ¡áƒáƒ¡áƒáƒ˜áƒ¢áƒ შეტყáƒáƒ‘ინებáƒ" + +#. TRANS: Title for SMS settings. +#: actions/smssettings.php:59 +msgid "SMS settings" +msgstr "SMS პáƒáƒ áƒáƒ›áƒ”ტრები" + +#. 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 "" +"თქვენ შეგიძლიáƒáƒ— მიიღáƒáƒ— SMS შეტყáƒáƒ‘ინებები %%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 "SMS áƒáƒ  áƒáƒ áƒ˜áƒ¡ ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜." + +#. TRANS: Form legend for SMS settings form. +#: actions/smssettings.php:111 +msgid "SMS address" +msgstr "SMS მისáƒáƒ›áƒáƒ áƒ—ი" + +#. TRANS: Form guide in SMS settings form. +#: actions/smssettings.php:120 +msgid "Current confirmed SMS-enabled phone number." +msgstr "მიმდინáƒáƒ áƒ” დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბული SMS გáƒáƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ”ბული ტელ. ნáƒáƒ›áƒ”რი." + +#. 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 "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 "ტელ. ნáƒáƒ›áƒ”რი, პუნქტუáƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒœ სივრცეების გáƒáƒ áƒ”შე, ქვეყნის კáƒáƒ“ით." + +#. TRANS: Form legend for SMS preferences form. +#: actions/smssettings.php:195 +msgid "SMS preferences" +msgstr "SMS კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ" + +#. 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 "" +"გáƒáƒ›áƒáƒ›áƒ˜áƒ’ზáƒáƒ•áƒœáƒ” ცნáƒáƒ‘ები SMS-ით; ვáƒáƒªáƒœáƒáƒ‘იერებ, რáƒáƒ› შესáƒáƒ«áƒšáƒ”ბელირჩემმრáƒáƒžáƒ”რáƒáƒ¢áƒáƒ áƒ›áƒ " +"სáƒáƒ’რძნáƒáƒ‘ი გáƒáƒ“áƒáƒ¡áƒáƒ®áƒáƒ“ები დáƒáƒ›áƒáƒ™áƒ˜áƒ¡áƒ áƒáƒ¡." + +#. TRANS: Confirmation message for successful SMS preferences save. +#: actions/smssettings.php:315 +msgid "SMS preferences saved." +msgstr "SMS კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ შენáƒáƒ®áƒ£áƒšáƒ˜áƒ." + +#. 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 "SMS დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბრგáƒáƒ£áƒ¥áƒ›áƒ”ბულიáƒ." + +#. 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 "SMS ტელეფáƒáƒœáƒ˜áƒ¡ ნáƒáƒ›áƒ”რი წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜áƒ." + +#. 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 "" +"თქვენი ტელეფáƒáƒœáƒ˜áƒ¡ მáƒáƒ‘ილური áƒáƒžáƒ”რáƒáƒ¢áƒáƒ áƒ˜. თუ იცით áƒáƒžáƒ”რáƒáƒ¢áƒáƒ áƒ˜, რáƒáƒ›áƒ”ლსáƒáƒª შეუძლირ" +"მიიღáƒáƒ¡ SMS ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ გáƒáƒ•áƒšáƒ˜áƒ—, მáƒáƒ’რáƒáƒ› áƒáƒ› სიáƒáƒ¨áƒ˜ ვერ áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ, მáƒáƒ¨áƒ˜áƒœ " +"გáƒáƒ’ვáƒáƒ’ებინეთ áƒáƒ›áƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ, მáƒáƒ’ვწერეთ მისáƒáƒ›áƒáƒ áƒ—ზე - %s." + +#. 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:200 +msgid "Randomly during web hit" +msgstr "" + +#: actions/snapshotadminpanel.php:201 +msgid "In a scheduled job" +msgstr "" + +#: actions/snapshotadminpanel.php:208 +msgid "When to send statistical data to status.net servers" +msgstr "რáƒáƒ“ის გáƒáƒ”გზáƒáƒ•áƒœáƒáƒ¡ სტáƒáƒ¢áƒ˜áƒ¡áƒ¢áƒ˜áƒ™áƒ£áƒ áƒ˜ მáƒáƒœáƒáƒªáƒ”მები status.net სერვერს" + +#: actions/snapshotadminpanel.php:217 +msgid "Frequency" +msgstr "სიხშირე" + +#: actions/snapshotadminpanel.php:227 +msgid "Snapshots will be sent to this URL" +msgstr "მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘რგáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ”ბრáƒáƒ› URL-ზე" + +#: 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 "ეს მáƒáƒ¥áƒ›áƒ”დებრმხáƒáƒšáƒáƒ“ POST მáƒáƒ—ხáƒáƒ•áƒœáƒ”ბს იღებს." + +#: 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 "" +"თქვენ áƒáƒ  შეგიძლიáƒáƒ— გáƒáƒ›áƒáƒ˜áƒ¬áƒ”რáƒáƒ— 0მბ-იáƒáƒœáƒ˜ 0.1 დáƒáƒ¨áƒáƒ áƒ”ბული პრáƒáƒ¤áƒ˜áƒšáƒ˜ áƒáƒ› მáƒáƒ¥áƒ›áƒ”დებით." + +#: actions/subscribe.php:145 +msgid "Subscribed" +msgstr "გáƒáƒ›áƒáƒ¬áƒ”რილიáƒ" + +#: actions/subscribers.php:50 +#, php-format +msgid "%s subscribers" +msgstr "%s გáƒáƒ›áƒáƒ›áƒ¬áƒ”რი" + +#: actions/subscribers.php:52 +#, php-format +msgid "%1$s subscribers, page %2$d" +msgstr "%1$s გáƒáƒ›áƒáƒ›áƒ¬áƒ”რი, გვერდი %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 "áƒáƒ áƒ˜áƒ¡ ხáƒáƒšáƒ®áƒ˜, ვინც %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 "%s áƒáƒ  ჰყáƒáƒ•áƒ¡ გáƒáƒ›áƒáƒ›áƒ¬áƒ”რები. გინდრგáƒáƒ®áƒ“ე პირველი?" + +#: actions/subscribers.php:114 +#, php-format +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 "%s გáƒáƒ›áƒáƒ¬áƒ”რები" + +#: actions/subscriptions.php:54 +#, php-format +msgid "%1$s subscriptions, page %2$d" +msgstr "%1$s გáƒáƒ›áƒáƒ¬áƒ”რები, გვერდი %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 "ეს áƒáƒ áƒ˜áƒ¡ ხáƒáƒšáƒ®áƒ˜ ვის შეტყáƒáƒ‘ინებებსáƒáƒª ყურს უგდებს %s." + +#: 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 "" +"თუ ჯერ áƒáƒ  უსმენთ áƒáƒ áƒáƒ•áƒ˜áƒ¡ შეტყáƒáƒ‘იენბებს, სცáƒáƒ“ეთ გáƒáƒ›áƒáƒ˜áƒ¬áƒ”რáƒáƒ— თქვენთვის " +"სáƒáƒ˜áƒœáƒ¢áƒ”რესრáƒáƒ“áƒáƒ›áƒ˜áƒáƒœáƒ”ბი. სცáƒáƒ“ეთ [ხáƒáƒšáƒ®áƒ˜áƒ¡ ძიებáƒ](%%action.peoplesearch%%), " +"გáƒáƒ“áƒáƒ®áƒ”დეთ სáƒáƒ˜áƒœáƒ¢áƒ”რესრჯგუფების წევრებს დრჩვენს მიერ [შემáƒáƒ—áƒáƒ•áƒáƒ–ებულ " +"მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებს](%%action.featured%%). თუ ხáƒáƒ áƒ— [Twitter-ის მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი](%%" +"action.twittersettings%%), შეგიძლიáƒáƒ— áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ გáƒáƒ›áƒáƒ˜áƒ¬áƒ”რáƒáƒ— ხáƒáƒšáƒ®áƒ˜, რáƒáƒ›áƒšáƒ”ბსáƒáƒª " +"იქ მიჰყვებით." + +#: actions/subscriptions.php:128 actions/subscriptions.php:132 +#, php-format +msgid "%s is not listening to anyone." +msgstr "%s áƒáƒ áƒáƒ•áƒ˜áƒ¡ უსმენს." + +#: actions/subscriptions.php:208 +msgid "Jabber" +msgstr "Jabber" + +#: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 +msgid "SMS" +msgstr "SMS" + +#: actions/tag.php:69 +#, php-format +msgid "Notices tagged with %1$s, page %2$d" +msgstr "შეტყáƒáƒ‘ინებები მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ %1$s-ით, გვერდი %2$d" + +#: actions/tag.php:87 +#, php-format +msgid "Notice feed for tag %s (RSS 1.0)" +msgstr "შეტყáƒáƒ‘ინებების RSS მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ %s-თ (RSS 1.0)" + +#: actions/tag.php:93 +#, php-format +msgid "Notice feed for tag %s (RSS 2.0)" +msgstr "შეტყáƒáƒ‘ინებების RSS მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ %s-თ (RSS 2.0)" + +#: actions/tag.php:99 +#, php-format +msgid "Notice feed for tag %s (Atom)" +msgstr "შეტყáƒáƒ‘ინებების RSS მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ %s-თ (Atom)" + +#: actions/tagother.php:65 +#, php-format +msgid "Tag %s" +msgstr "სáƒáƒœáƒ˜áƒ¨áƒœáƒ” %s" + +#: 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:193 +msgid "" +"You can only tag people you are subscribed to or who are subscribed to you." +msgstr "" + +#. TRANS: User admin panel title +#: actions/useradminpanel.php:59 +msgctxt "TITLE" +msgid "User" +msgstr "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი" + +#: actions/useradminpanel.php:149 +msgid "Invalid bio limit. Must be numeric." +msgstr "" + +#: actions/useradminpanel.php:165 +#, php-format +msgid "Invalid default subscripton: '%1$s' is not user." +msgstr "" + +#: actions/useradminpanel.php:223 +msgid "Maximum length of a profile bio in characters." +msgstr "" + +#: actions/useradminpanel.php:235 +msgid "New user welcome" +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:232 +msgid "No authorization request!" +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: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: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:282 +msgid "Enjoy your hotdog!" +msgstr "" + +#: actions/usergroups.php:164 +#, php-format +msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." +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: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:805 +msgid "Version" +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: 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 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 "თქვენ áƒáƒ’ეკრძáƒáƒšáƒáƒ— პირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებების გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ უფლებáƒ." + +#. 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 "შეტყáƒáƒ‘ინების áƒáƒ®áƒáƒšáƒ˜ 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:193 +#, php-format +msgid "Database error inserting hashtag: %s" +msgstr "ბáƒáƒ–ის შეცდáƒáƒ›áƒ hashtag-ის ჩáƒáƒ¡áƒ›áƒ˜áƒ¡áƒáƒ¡: %s" + +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 +msgid "Problem saving notice. Too long." +msgstr "პრáƒáƒ‘ლემრშეტყáƒáƒ‘ინების შენáƒáƒ®áƒ•áƒ˜áƒ¡áƒáƒ¡. ძáƒáƒšáƒ˜áƒáƒœ გრძელიáƒ." + +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 +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:276 +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:283 +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:291 +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:358 classes/Notice.php:385 +msgid "Problem saving notice." +msgstr "პრáƒáƒ‘ლემრშეტყáƒáƒ‘ინების შენáƒáƒ®áƒ•áƒ˜áƒ¡áƒáƒ¡." + +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 +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:1759 +#, 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 "" +"ვერ ხერხდებრრáƒáƒšáƒ˜áƒ¡ \"%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:339 +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 "გáƒáƒ›áƒáƒ¬áƒ”რის წáƒáƒ¨áƒšáƒ ვერ მáƒáƒ®áƒ”რხდáƒ. 0მბ-იáƒáƒœáƒ˜ ტáƒáƒ™áƒ”ნი" + +#. 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 "გáƒáƒ›áƒáƒ áƒ¯áƒáƒ‘რ@%2$s, კეთილი იყáƒáƒ¡ თქვენი მáƒáƒ‘რძáƒáƒœáƒ”ბრ%1$s-ზე!" + +#. 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 "ჯგუფის URI-ს მინიჭებრვერ მáƒáƒ®áƒ”რხდáƒ." + +#. 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:148 +#, 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:164 +msgid "Untitled page" +msgstr "უსáƒáƒ—áƒáƒ£áƒ áƒ გვერდი" + +#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. +#: lib/action.php:449 +msgid "Primary site navigation" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ ძირითáƒáƒ“ი ნáƒáƒ•áƒ˜áƒ’áƒáƒªáƒ˜áƒ" + +#. TRANS: Tooltip for main menu option "Personal" +#: lib/action.php:455 +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:458 +msgctxt "MENU" +msgid "Personal" +msgstr "პირáƒáƒ“ი" + +#. TRANS: Tooltip for main menu option "Account" +#: lib/action.php:460 +msgctxt "TOOLTIP" +msgid "Change your email, avatar, password, profile" +msgstr "შეცვáƒáƒšáƒ” ელ. ფáƒáƒ¡áƒ¢áƒ, áƒáƒ•áƒáƒ¢áƒáƒ áƒ˜, პáƒáƒ áƒáƒšáƒ˜, პრáƒáƒ¤áƒ˜áƒšáƒ˜" + +#. TRANS: Tooltip for main menu option "Services" +#: lib/action.php:465 +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:468 +msgid "Connect" +msgstr "კáƒáƒ•áƒ¨áƒ˜áƒ áƒ˜" + +#. TRANS: Tooltip for menu option "Admin" +#: lib/action.php:471 +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:474 +msgctxt "MENU" +msgid "Admin" +msgstr "áƒáƒ“მინი" + +#. TRANS: Tooltip for main menu option "Invite" +#: lib/action.php:478 +#, 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:481 +msgctxt "MENU" +msgid "Invite" +msgstr "მáƒáƒ¬áƒ•áƒ”ვáƒ" + +#. TRANS: Tooltip for main menu option "Logout" +#: lib/action.php:487 +msgctxt "TOOLTIP" +msgid "Logout from the site" +msgstr "გáƒáƒ¡áƒ•áƒšáƒ სáƒáƒ˜áƒ¢áƒ˜áƒ“áƒáƒœ" + +#. TRANS: Main menu option when logged in to log out the current user +#: lib/action.php:490 +msgctxt "MENU" +msgid "Logout" +msgstr "გáƒáƒ¡áƒ•áƒšáƒ" + +#. TRANS: Tooltip for main menu option "Register" +#: lib/action.php:495 +msgctxt "TOOLTIP" +msgid "Create an account" +msgstr "გáƒáƒ®áƒ¡áƒ”ნი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜" + +#. TRANS: Main menu option when not logged in to register a new account +#: lib/action.php:498 +msgctxt "MENU" +msgid "Register" +msgstr "რეგისტრáƒáƒªáƒ˜áƒ" + +#. TRANS: Tooltip for main menu option "Login" +#: lib/action.php:501 +msgctxt "TOOLTIP" +msgid "Login to the site" +msgstr "სáƒáƒ˜áƒ¢áƒ–ე შესვლáƒ" + +#: lib/action.php:504 +msgctxt "MENU" +msgid "Login" +msgstr "შესვლáƒ" + +#. TRANS: Tooltip for main menu option "Help" +#: lib/action.php:507 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "დáƒáƒ›áƒ”ხმáƒáƒ áƒ”თ!" + +#: lib/action.php:510 +msgctxt "MENU" +msgid "Help" +msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" + +#. TRANS: Tooltip for main menu option "Search" +#: lib/action.php:513 +msgctxt "TOOLTIP" +msgid "Search for people or text" +msgstr "მáƒáƒ«áƒ”ბნე ხáƒáƒšáƒ®áƒ˜ áƒáƒœ ტექსტი" + +#: lib/action.php:516 +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:538 lib/adminpanelaction.php:400 +msgid "Site notice" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ შეტყáƒáƒ‘ინებáƒ" + +#. TRANS: DT element for local views block. String is hidden in default CSS. +#: lib/action.php:605 +msgid "Local views" +msgstr "ლáƒáƒ™áƒáƒšáƒ£áƒ áƒ˜ ხედები" + +#. TRANS: DT element for page notice. String is hidden in default CSS. +#: lib/action.php:675 +msgid "Page notice" +msgstr "გვერდის შეტყáƒáƒ‘ინებáƒ" + +#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. +#: lib/action.php:778 +msgid "Secondary site navigation" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ მეáƒáƒ áƒáƒ“ი ნáƒáƒ•áƒ˜áƒ’áƒáƒªáƒ˜áƒ" + +#. TRANS: Secondary navigation menu option leading to help on StatusNet. +#: lib/action.php:784 +msgid "Help" +msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ" + +#. TRANS: Secondary navigation menu option leading to text about StatusNet site. +#: lib/action.php:787 +msgid "About" +msgstr "სáƒáƒ˜áƒ¢áƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ" + +#. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. +#: lib/action.php:790 +msgid "FAQ" +msgstr "ხდკ" + +#. TRANS: Secondary navigation menu option leading to Terms of Service. +#: lib/action.php:795 +msgid "TOS" +msgstr "მპ" + +#. TRANS: Secondary navigation menu option leading to privacy policy. +#: lib/action.php:799 +msgid "Privacy" +msgstr "პირáƒáƒ“ი" + +#. TRANS: Secondary navigation menu option. +#: lib/action.php:802 +msgid "Source" +msgstr "წყáƒáƒ áƒ" + +#. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. +#: lib/action.php:808 +msgid "Contact" +msgstr "კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜" + +#: lib/action.php:810 +msgid "Badge" +msgstr "იáƒáƒ áƒšáƒ˜áƒ§áƒ˜" + +#. TRANS: DT element for StatusNet software license. +#: lib/action.php:839 +msgid "StatusNet software license" +msgstr "StatusNet კáƒáƒ“ის ლიცენზიáƒ" + +#. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. +#: lib/action.php:843 +#, 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:846 +#, 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:850 +#, 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 ძირითáƒáƒ“ი სáƒáƒ¯áƒáƒ áƒ ლიცენზიით](http://www.fsf." +"org/licensing/licenses/agpl-3.0.html)." + +#. TRANS: DT element for StatusNet site content license. +#: lib/action.php:866 +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:873 +#, 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:880 +#, 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:884 +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:897 +#, 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:1236 +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:1247 +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:1257 +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 "ჯერჯერáƒáƒ‘ით ვერ ვáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბ დáƒáƒ¨áƒáƒ áƒ”ბულ შიგთáƒáƒ•áƒ¡áƒ¡." + +#. 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 "showForm() áƒáƒ  áƒáƒ áƒ˜áƒ¡ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული." + +#. TRANS: Client error message +#: lib/adminpanelaction.php:259 +msgid "saveSettings() not implemented." +msgstr "saveSettings() áƒáƒ  áƒáƒ áƒ˜áƒ¡ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული." + +#. 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 "" +"API რესურსი მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ ჩáƒáƒ¬áƒ”რáƒ-წáƒáƒ™áƒ˜áƒ—ხვის წვდáƒáƒ›áƒáƒ¡, მáƒáƒ’რáƒáƒ› თვენ მხáƒáƒšáƒáƒ“ წáƒáƒ™áƒ˜áƒ—ხვის " +"უფლებრგáƒáƒ¥áƒ•áƒ—." + +#. 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 "áƒáƒ¦áƒ¬áƒ”რეთ თქვენი áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ %d სიმბáƒáƒšáƒáƒ—ი" + +#. 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 "áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ˜áƒ¡ სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ გვერდის URL" + +#. TRANS: Form input field label. +#: lib/applicationeditform.php:226 +msgid "Source URL" +msgstr "წყáƒáƒ áƒáƒ¡ URL" + +#. 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 "áƒáƒ áƒ’áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ გვერდის URL" + +#. TRANS: Form input field instructions. +#: lib/applicationeditform.php:251 +msgid "URL to redirect to after authentication" +msgstr "áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ შემდეგ გáƒáƒ“áƒáƒ¡áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებელი URL" + +#. 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 "დáƒáƒ›áƒ¢áƒ™áƒ˜áƒªáƒ”ბულირ%1$s - \"%2$s\" შესვლáƒ" + +#. 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 "ბრძáƒáƒœáƒ”ბრჩáƒáƒ˜áƒ¨áƒáƒšáƒ" + +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "შეტყáƒáƒ‘ინებები áƒáƒ› ID-თ áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს." + +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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:130 +#, php-format +msgid "Could not find a user with nickname %s." +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:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "ლáƒáƒ™áƒáƒšáƒ£áƒ áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი მეტსáƒáƒ®áƒ”ლით %s ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ." + +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 +msgid "Sorry, this command is not yet implemented." +msgstr "ბáƒáƒ“იში, ეს ბრძáƒáƒœáƒ”ბრჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული." + +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 +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:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "" + +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 +#, php-format +msgid "" +"Subscriptions: %1$s\n" +"Subscribers: %2$s\n" +"Notices: %3$s" +msgstr "" +"გáƒáƒ›áƒáƒ¬áƒ”რები: %1$s\n" +"გáƒáƒ›áƒáƒ›áƒ¬áƒ”რები: %2$s\n" +"შეტყáƒáƒ‘ინებები: %3$s" + +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 +msgid "Notice marked as fave." +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. +#: lib/command.php:360 +#, php-format +msgid "%1$s joined group %2$s." +msgstr "%1$s გáƒáƒ¬áƒ”ვრიáƒáƒœáƒ“რჯგუფში %2$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. +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s-მრდáƒáƒ¢áƒáƒ•áƒ ჯგუფი %2$s." + +#. TRANS: Whois output. %s is the full name of the queried user. +#: lib/command.php:434 +#, php-format +msgid "Fullname: %s" +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:438 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:442 lib/mail.php:271 +#, php-format +msgid "Homepage: %s" +msgstr "გვერდი: %s" + +#. TRANS: Whois output. %s is the bio information of the queried user. +#: lib/command.php:446 +#, php-format +msgid "About: %s" +msgstr "%s-ის შესáƒáƒ®áƒ”ბ" + +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 +#, php-format +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:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" +"შეტყáƒáƒ‘ინებრძáƒáƒšáƒ˜áƒáƒœ გრძელირ- დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი რáƒáƒáƒ“ენáƒáƒ‘áƒáƒ %1$d სიმბáƒáƒšáƒáƒ›áƒ“ე, თქვენ " +"გáƒáƒáƒ’ზáƒáƒ•áƒœáƒ”თ %2$d." + +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 +msgid "Error sending direct message." +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:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "შეტყáƒáƒ‘ინებრ%s-გáƒáƒœ გáƒáƒ›áƒ”áƒáƒ áƒ“áƒ." + +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 +msgid "Error repeating notice." +msgstr "შეცდáƒáƒ›áƒ შეტყáƒáƒ‘ინების გáƒáƒ›áƒ”áƒáƒ áƒ”ბისáƒáƒ¡." + +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" +"შეტყáƒáƒ‘ინებრძáƒáƒšáƒ˜áƒáƒœ გრძელირ- დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი რáƒáƒáƒ“ენáƒáƒ‘áƒáƒ %1$d სიმბáƒáƒšáƒáƒ›áƒ“ე, თქვენ " +"გáƒáƒáƒ’ზáƒáƒ•áƒœáƒ”თ %2$d." + +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 +#, php-format +msgid "Reply to %s sent." +msgstr "პáƒáƒ¡áƒ£áƒ®áƒ˜ %s-ს გáƒáƒ”გზáƒáƒ•áƒœáƒ." + +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 +msgid "Error saving notice." +msgstr "შეცდáƒáƒ›áƒ შეტყáƒáƒ‘ინების შენáƒáƒ®áƒ•áƒ˜áƒ¡áƒáƒ¡." + +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "მიუთითეთ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი, რáƒáƒ›áƒ”ლსáƒáƒª გინდáƒáƒ— ყური დáƒáƒ£áƒ’დáƒáƒ—." + +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "%s-ს გáƒáƒ›áƒáƒ¬áƒ”რრდáƒáƒ¡áƒ áƒ£áƒšáƒ“რწáƒáƒ áƒ›áƒáƒ¢áƒ”ბით." + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "მიუთითეთ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი, რáƒáƒ› გáƒáƒ›áƒáƒ¬áƒ”რრგáƒáƒáƒ£áƒ¥áƒ›áƒáƒ—." + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 +#, php-format +msgid "Unsubscribed from %s." +msgstr "%s-ს გáƒáƒ›áƒáƒ¬áƒ”რრგáƒáƒ£áƒ¥áƒ›áƒ“áƒ." + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 +msgid "Command not yet implemented." +msgstr "ბრძáƒáƒœáƒ”ბრჯერ áƒáƒ  áƒáƒ áƒ˜áƒ¡ შემუშáƒáƒ•áƒ”ბული." + +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 +msgid "Can't turn off notification." +msgstr "" + +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "" + +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 +#, php-format +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" + +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 +msgid "This person is subscribed to you:" +msgid_plural "These people are subscribed to you:" +msgstr[0] "" + +#: lib/command.php:905 +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 "IM" + +#: lib/connectsettingsaction.php:111 +msgid "Updates by instant messenger (IM)" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბები ჩáƒáƒ— კლიენტისგáƒáƒœ (IM)" + +#: lib/connectsettingsaction.php:116 +msgid "Updates by SMS" +msgstr "გáƒáƒœáƒáƒ®áƒšáƒ”ბები SMS-თ" + +#: lib/connectsettingsaction.php:120 +msgid "Connections" +msgstr "შეერთებები" + +#: lib/connectsettingsaction.php:121 +msgid "Authorized connected applications" +msgstr "áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–ირებული შეერთებული áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ”ბი" + +#: lib/dberroraction.php:60 +msgid "Database error" +msgstr "მáƒáƒœáƒáƒªáƒ”მთრბáƒáƒ–ის შეცდáƒáƒ›áƒ" + +#: 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 "" +"თქვენ შეგიძლიáƒáƒ— áƒáƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ— პერსáƒáƒœáƒáƒšáƒ£áƒ áƒ˜ ფáƒáƒœáƒ£áƒ áƒ˜ სურáƒáƒ—ი. ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი ზáƒáƒ›áƒáƒ " +"2მბ." + +#: 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 "RSS 1.0" + +#: lib/feed.php:87 +msgid "RSS 2.0" +msgstr "RSS 2.0" + +#: lib/feed.php:89 +msgid "Atom" +msgstr "Atom" + +#: lib/feed.php:91 +msgid "FOAF" +msgstr "FOAF" + +#: 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 "მიáƒáƒœáƒ˜áƒ­áƒ” áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს \"%s\" რáƒáƒšáƒ˜" + +#: lib/groupeditform.php:163 +msgid "URL of the homepage or blog of the group or topic" +msgstr "სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ გვერდის URL, áƒáƒœ ჯგუფის/თემის ბლáƒáƒ’ი" + +#: 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 "áƒáƒ áƒ¬áƒ”რე ჯგუფი áƒáƒœ თემრ%d სიმბáƒáƒšáƒáƒ—ი" + +#: 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 "" +"ჯგუფის დáƒáƒ›áƒáƒ¢áƒ”ბითი მეტსáƒáƒ®áƒ”ლები. გáƒáƒ›áƒáƒ§áƒáƒ•áƒ˜áƒ— მძიმით áƒáƒœ სივრცით. მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ› %d " +"სიმბáƒáƒšáƒ" + +#: 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 "%s დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი" + +#: lib/groupnav.php:108 +#, php-format +msgid "Edit %s group properties" +msgstr "%s ჯგუფის პáƒáƒ áƒáƒ›áƒ”ტრების რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ" + +#: lib/groupnav.php:113 +msgid "Logo" +msgstr "ლáƒáƒ’áƒ" + +#: lib/groupnav.php:114 +#, php-format +msgid "Add or edit %s logo" +msgstr "%s-ს ლáƒáƒ’áƒáƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბრáƒáƒœ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" + +#: lib/groupnav.php:120 +#, php-format +msgid "Add or edit %s design" +msgstr "%s-ს დიზáƒáƒ˜áƒœáƒ˜áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბრáƒáƒœ ჩáƒáƒ¡áƒ¬áƒáƒ áƒ”ბáƒ" + +#: 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 "%s ჯგუფის შეტყáƒáƒ‘ინებებში გáƒáƒ›áƒáƒ§áƒ”ნებული სáƒáƒœáƒ˜áƒ¨áƒœáƒ”ები" + +#. 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 "ეს ფáƒáƒ˜áƒšáƒ˜ ძáƒáƒšáƒ˜áƒáƒœ დიდიáƒ. ფáƒáƒ˜áƒšáƒ˜áƒ¡ მáƒáƒ¥áƒ¡. ზáƒáƒ›áƒáƒ %s." + +#: 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 "[%s]" + +#: 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 "" +"გáƒáƒ›áƒáƒ áƒ¯áƒáƒ‘რ%s.\n" +"\n" +"ვიღáƒáƒªáƒáƒ› ეხლáƒáƒ®áƒáƒœáƒ¡ ეს ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი %s-ზე შეიყვáƒáƒœáƒ.\n" +"\n" +"თუ ეს თქვენ იყáƒáƒ•áƒ˜áƒ—, მáƒáƒ¨áƒ˜áƒœ დáƒáƒ¡áƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბლáƒáƒ“ მიფყევით áƒáƒ› ბმულს:\n" +"\n" +"%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 "%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: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 "" +"%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:274 +#, php-format +msgid "Bio: %s" +msgstr "ბიáƒáƒ’რáƒáƒ¤áƒ˜áƒ: %s" + +#. 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 "%s-ზე დáƒáƒ¡áƒáƒžáƒáƒ¡áƒ¢áƒ˜ áƒáƒ®áƒáƒšáƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი" + +#. 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 "" +"თქვენ áƒáƒ®áƒáƒšáƒ˜ დáƒáƒ¡áƒáƒžáƒáƒ¡áƒ¢áƒ˜ ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი გáƒáƒ¥áƒ•áƒ— %1$s-ზე.\n" +"\n" +"გáƒáƒáƒ’ზáƒáƒ•áƒœáƒ”თ ელ. წერილი %2$s-ზე, რáƒáƒ› დáƒáƒžáƒáƒ¡áƒ¢áƒáƒ— áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებები.\n" +"\n" +"მეტი ინსტრუქციები ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ áƒáƒ¥ %3$s.\n" +"\n" +"პáƒáƒ¢áƒ˜áƒ•áƒ˜áƒ¡áƒªáƒ”მით,\n" +"%4$s" + +#. TRANS: Subject line for SMS-by-email notification messages +#: lib/mail.php:433 +#, php-format +msgid "%s status" +msgstr "%s სტáƒáƒ¢áƒ£áƒ¡áƒ˜" + +#. TRANS: Subject line for SMS-by-email address confirmation message +#: lib/mail.php:460 +msgid "SMS confirmation" +msgstr "SMS დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ" + +#. 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 "" +"%s: დáƒáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”თ, რáƒáƒ› ეს მáƒáƒ‘ილურის ნáƒáƒ›áƒ”რი მáƒáƒ áƒ—ლáƒáƒª თქვენირáƒáƒ› კáƒáƒ“ის მეშვეáƒáƒ‘ით:" + +#. 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 "" +"%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:536 +#, php-format +msgid "New private message from %s" +msgstr "áƒáƒ®áƒáƒšáƒ˜ პირáƒáƒ“ი შეტყáƒáƒ‘ინებრ%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 "" +"%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:589 +#, php-format +msgid "%s (@%s) added your notice as a favorite" +msgstr "%s-მრ(@%s) დáƒáƒáƒ›áƒáƒ¢áƒ თქვენი შეტყáƒáƒ‘ინებრთáƒáƒ•áƒ˜áƒ¡ რჩეულებში" + +#. 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 "" +"%1$s-მრ(@%7$s) ეხლáƒáƒ®áƒáƒœáƒ¡ დáƒáƒáƒ›áƒáƒ¢áƒ თქვენი შეტყáƒáƒ‘ინებრთáƒáƒ•áƒ˜áƒ¡ რჩეულებში %2$s-" +"ზე.\n" +"\n" +"შეტყáƒáƒ‘ინების URL-იáƒ:\n" +"\n" +"%3$s\n" +"\n" +"თქვენი შეტყáƒáƒ‘ინების ტექსტიáƒ:\n" +"\n" +"%4$s\n" +"\n" +"თქვენ შეგიძლიáƒáƒ— ნáƒáƒ®áƒáƒ— %1$s-ის რჩეული შეტყáƒáƒ‘ინებების სირáƒáƒ¥:\n" +"\n" +"%5$s\n" +"\n" +"პáƒáƒ¢áƒ˜áƒ•áƒ˜áƒ¡áƒªáƒ”მით,\n" +"%6$s\n" + +#. 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 "" +"მთლიáƒáƒœáƒ˜ სáƒáƒ£áƒ‘რის წáƒáƒ™áƒ˜áƒ—ხვრშესáƒáƒ«áƒšáƒ”ბელირáƒáƒ¥:\n" +"\n" +"%s" + +#: 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: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 +msgid "Could not parse message." +msgstr "შეტყáƒáƒ‘ინების გáƒáƒªáƒ áƒ (გáƒ-parse-ვáƒ) ვერ მáƒáƒ®áƒ”რხდáƒ." + +#: 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 "შეტყáƒáƒ‘ინების ტიპი áƒáƒ  áƒáƒ áƒ˜áƒ¡ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი: %s" + +#: 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 "" +"áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ი ფáƒáƒ˜áƒšáƒ˜ სცდებრფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ¨áƒ•áƒ”ბულ ზáƒáƒ›áƒáƒ¡. upload_max_filesize დირექტივრ" +"php.ini-ში." + +#: lib/mediafile.php:147 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form." +msgstr "" +"áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ი ფáƒáƒ˜áƒšáƒ˜ სცდებრMAX_FILE_SIZE დირექტივáƒáƒ¡, რáƒáƒ›áƒ”ლიც მითითებული იყრHTML " +"ფáƒáƒ áƒ›áƒáƒ¨áƒ˜." + +#: 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 "ფáƒáƒ˜áƒšáƒ˜áƒ¡ MIME ტიპი ვერ დáƒáƒ“გინდáƒ." + +#: lib/mediafile.php:318 +#, php-format +msgid " Try using another %s format." +msgstr "სხვრ%s ფáƒáƒ áƒ›áƒáƒ¢áƒ˜ სცáƒáƒ“ეთ." + +#: lib/mediafile.php:323 +#, php-format +msgid "%s is not a supported file type on this server." +msgstr "%s áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ› სერვერზე მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი ფáƒáƒ˜áƒšáƒ˜áƒ¡ ტიპი." + +#: lib/messageform.php:120 +msgid "Send a direct notice" +msgstr "გáƒáƒáƒ’ზáƒáƒ•áƒœáƒ” პირდáƒáƒžáƒ˜áƒ áƒ˜ შეტყáƒáƒ‘ინებáƒ" + +#: lib/messageform.php:146 +msgid "To" +msgstr "ვის" + +#: lib/messageform.php:159 lib/noticeform.php:186 +msgid "Available characters" +msgstr "ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სიმბáƒáƒšáƒáƒ”ბი" + +#: lib/messageform.php:178 lib/noticeform.php:237 +msgctxt "Send button for sending notice" +msgid "Send" +msgstr "გáƒáƒ’ზáƒáƒ•áƒœáƒ" + +#: lib/noticeform.php:160 +msgid "Send a notice" +msgstr "შეტყáƒáƒ‘ინების გáƒáƒ’ზáƒáƒ•áƒœáƒ" + +#: lib/noticeform.php:174 +#, php-format +msgid "What's up, %s?" +msgstr "რრáƒáƒ áƒ˜áƒ¡ áƒáƒ®áƒáƒšáƒ˜ %s?" + +#: lib/noticeform.php:193 +msgid "Attach" +msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ მიმáƒáƒ’რებáƒ" + +#: lib/noticeform.php:197 +msgid "Attach a file" +msgstr "მიáƒáƒ›áƒáƒ’რე ფáƒáƒ˜áƒšáƒ˜" + +#: lib/noticeform.php:213 +msgid "Share my location" +msgstr "გáƒáƒáƒ–იáƒáƒ áƒ” ჩემი მდებáƒáƒ áƒ”áƒáƒ‘áƒ" + +#: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "áƒáƒ  გáƒáƒáƒ–იáƒáƒ áƒ ჩემი მდებáƒáƒ áƒ”áƒáƒ‘áƒ" + +#: lib/noticeform.php:217 +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 "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s" + +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:630 +msgid "Reply to this notice" +msgstr "უპáƒáƒ¡áƒ£áƒ®áƒ” áƒáƒ› შეტყáƒáƒ‘ინებáƒáƒ¡" + +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "პáƒáƒ¡áƒ£áƒ®áƒ˜" + +#: lib/noticelist.php:675 +msgid "Notice repeated" +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: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 "%s-ს შეტყáƒáƒ‘ინებებში გáƒáƒ›áƒáƒ§áƒ”ნებული სáƒáƒœáƒ˜áƒ¨áƒœáƒ”ები" + +#: 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 "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის იდ" + +#. 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:84 lib/publicgroupnav.php:85 +msgid "Recent tags" +msgstr "ბáƒáƒšáƒ სáƒáƒœáƒ˜áƒ¨áƒœáƒ”ები" + +#: lib/publicgroupnav.php:92 +msgid "Popular" +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 "ჩáƒáƒ›áƒáƒáƒ áƒ—ვი \"%s\" რáƒáƒšáƒ˜ áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს" + +#: lib/router.php:709 +msgid "No single user defined for single-user mode." +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:105 +msgid "Invite" +msgstr "მáƒáƒ¬áƒ•áƒ”ვáƒ" + +#: lib/subgroupnav.php:106 +#, php-format +msgid "Invite friends and colleagues to join you on %s" +msgstr "მáƒáƒ˜áƒ¬áƒ•áƒ˜áƒ” მეგáƒáƒ‘რები დრკáƒáƒšáƒ”გები %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 +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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "თემის შენáƒáƒ®áƒ•áƒ ჩáƒáƒ˜áƒ¨áƒáƒšáƒ." + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"თემრშეიცáƒáƒ•áƒ¡ ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒœ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის áƒáƒ áƒáƒ¡áƒ¬áƒáƒ  სáƒáƒ®áƒ”ლს. გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ASCII áƒáƒ¡áƒáƒ”ბი, " +"ციფრები, ქვედრტირე, დრმინუსის ნიშáƒáƒœáƒ˜." + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" +"თემრფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბების სáƒáƒ¨áƒ˜áƒ¨ სáƒáƒ®áƒ”ლებს შეიცáƒáƒ•áƒ¡; შეიძლებრáƒáƒ  იყáƒáƒ¡ უსáƒáƒ¤áƒ áƒ—ხáƒ." + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "თემრშეიცáƒáƒ•áƒ¡ ფáƒáƒ˜áƒšáƒ˜áƒ¡ ტიპს '.%s', რáƒáƒ›áƒ”ლიც áƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ." + +#: lib/themeuploader.php:259 +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/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:1102 +msgid "a few seconds ago" +msgstr "რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜áƒ¡ წინ" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1105 +msgid "about a minute ago" +msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბით 1 წუთის წინ" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1109 +#, 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:1112 +msgid "about an hour ago" +msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბით 1 სáƒáƒáƒ—ის წინ" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1116 +#, 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:1119 +msgid "about a day ago" +msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბით 1 დღის წინ" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1123 +#, 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:1126 +msgid "about a month ago" +msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბით 1 თვის წინ" + +#. TRANS: Used in notices to indicate when the notice was made compared to now. +#: lib/util.php:1130 +#, 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:1133 +msgid "about a year ago" +msgstr "დáƒáƒáƒ®áƒšáƒáƒ”ბით 1 წლის წინ" + +#: lib/webcolor.php:82 +#, php-format +msgid "%s is not a valid color!" +msgstr "%s áƒáƒ  áƒáƒ áƒ˜áƒ¡ სწáƒáƒ áƒ˜ ფერი!" + +#: lib/webcolor.php:123 +#, php-format +msgid "%s is not a valid color! Use 3 or 6 hex chars." +msgstr "" +"%s áƒáƒ  áƒáƒ áƒ˜áƒ¡ სწáƒáƒ áƒ˜ ფერი! გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ 3 áƒáƒœ 6 სიმბáƒáƒšáƒáƒ˜áƒáƒœáƒ˜ თექვსმეტáƒáƒ‘ითი ციფრი." diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po index cdd7d77a57..a82559718a 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:16+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:52+0000\n" "Language-Team: Korean\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,38 +85,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 페ì´ì§€" @@ -122,39 +124,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:114 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 " @@ -164,79 +166,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +258,7 @@ msgstr "í”„ë¡œí•„ì„ ì €ìž¥ í•  수 없습니다." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -315,47 +317,48 @@ msgstr "%sì—게 ì§ì ‘ 메시지" msgid "All the direct messages sent to %s" msgstr "%sì—게 모든 ì§ì ‘ 메시지" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "메시지 ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: 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:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "받는 사용ìžê°€ 없습니다." -#: actions/apidirectmessagenew.php:150 +#: 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 "ê·¸ 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -370,9 +373,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." @@ -382,157 +385,152 @@ 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 "" +msgstr "ë³„ëª…ì´ ë„ˆë¬´ 많습니다! 최대 %dê°œ." -#: actions/apigroupcreate.php:266 -#, 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "ë‹¹ì‹ ì€ ì´ë¯¸ ì´ ê·¸ë£¹ì˜ ë©¤ë²„ìž…ë‹ˆë‹¤." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." -msgstr "" +msgstr "ì´ë¯¸ ì°¨ë‹¨ëœ ì´ìš©ìžìž…니다." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 +msgid "Upload failed." +msgstr "실행 실패" #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "옳지 ì•Šì€ í¬ê¸°" - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 "세션토í°ì— 문제가 있습니다. 다시 ì‹œë„해주세요." - -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "ì‚¬ìš©ìž ì´ë¦„ì´ë‚˜ 비밀 번호가 틀렸습니다." +msgstr "세션토í°ì— 문제가 있습니다. 다시 ì‹œë„해주십시오." #: actions/apioauthauthorize.php:159 msgid "Database error deleting OAuth application user." @@ -586,12 +584,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:463 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 +597,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 +614,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 "ë‹¹ì‹ ì€ ë‹¤ë¥¸ 사용ìžì˜ ìƒíƒœë¥¼ 삭제하지 ì•Šì•„ë„ ëœë‹¤." @@ -629,90 +627,80 @@ msgstr "ë‹¹ì‹ ì€ ë‹¤ë¥¸ 사용ìžì˜ ìƒíƒœë¥¼ 삭제하지 ì•Šì•„ë„ ëœë‹¤." msgid "No such notice." msgstr "그러한 통지는 없습니다." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "ìžê¸° ìžì‹ ì˜ 소ì‹ì€ 재전송할 수 없습니다." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "너무 ê¹ë‹ˆë‹¤. í†µì§€ì˜ ìµœëŒ€ 길ì´ëŠ” %d ê¸€ìž ìž…ë‹ˆë‹¤." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "ì°¾ì„ ìˆ˜ê°€ 없습니다." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, fuzzy, php-format -msgid "%1$s / Favorites from %2$s" -msgstr "%s / %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/%3$sì˜ ì—…ë°ì´íŠ¸ì— 답변했습니다." -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s 공개 타임ë¼ì¸" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "모ë‘ë¡œë¶€í„°ì˜ ì—…ë°ì´íŠ¸ %sê°œ!" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "%sì— ë‹µì‹ " - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, 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 -#, 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." @@ -747,9 +735,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 @@ -767,7 +754,7 @@ msgid "Preview" msgstr "미리보기" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "ì‚­ì œ" @@ -779,14 +766,9 @@ msgstr "올리기" msgid "Crop" msgstr "ìžë¥´ê¸°" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -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." @@ -808,11 +790,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,17 +808,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 "ì´ìš©ìžë¥¼ 차단하지 않는다." @@ -845,23 +826,24 @@ 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 "ì •ë³´ì°¨ë‹¨ì„ ì €ìž¥í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -871,25 +853,20 @@ msgstr "ì •ë³´ì°¨ë‹¨ì„ ì €ìž¥í•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "그러한 ê·¸ë£¹ì´ ì—†ìŠµë‹ˆë‹¤." #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "ì´ìš©ìž 프로필" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s 와 친구들, %d 페ì´ì§€" - -#: actions/blockedfromgroup.php:115 -#, fuzzy -msgid "A list of the users blocked from joining this group." -msgstr "ì´ ê·¸ë£¹ì˜ íšŒì›ë¦¬ìŠ¤íŠ¸" +msgstr "%1$s ë° ì¹œêµ¬ë“¤, %2$d 페ì´ì§€" #: actions/blockedfromgroup.php:288 msgid "Unblock user from group" @@ -905,9 +882,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." @@ -923,9 +900,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 @@ -951,7 +928,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" @@ -963,9 +940,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 @@ -973,31 +949,27 @@ 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:1307 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 "" @@ -1008,15 +980,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 "ì´ ê²Œì‹œê¸€ 삭제하기" +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 @@ -1024,7 +994,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 "로그ì¸í•˜ê³  있지 않습니다." @@ -1034,12 +1004,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" @@ -1049,26 +1017,18 @@ msgstr "통지 ì‚­ì œ" msgid "Are you sure you want to delete this notice?" msgstr "ì •ë§ë¡œ 통지를 삭제하시겠습니까?" -#. TRANS: Submit button title for 'No' when deleting a notice. -#: actions/deletenotice.php:151 -#, fuzzy -msgid "Do not delete this notice" -msgstr "ì´ í†µì§€ë¥¼ 지울 수 없습니다." - #. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 +#: 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 msgid "You can only delete local users." -msgstr "ë‹¹ì‹ ì€ ë‹¤ë¥¸ 사용ìžì˜ ìƒíƒœë¥¼ 삭제하지 ì•Šì•„ë„ ëœë‹¤." +msgstr "ì´ìš©ìžë¥¼ ì—…ë°ì´íŠ¸ í•  수 없습니다." #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" @@ -1082,60 +1042,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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, 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" @@ -1144,60 +1111,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 -#, fuzzy +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" -msgstr "ì—°ê²°" +msgstr "만족하는" -#: actions/designadminpanel.php:526 lib/designsettings.php:204 -#, fuzzy +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" -msgstr "검색" +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: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,10 +1179,6 @@ msgstr "" msgid "Save" msgstr "저장" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "ì´ ë©”ì‹œì§€ëŠ” favoriteì´ ì•„ë‹™ë‹ˆë‹¤." @@ -1220,9 +1188,9 @@ msgid "Add to favorites" msgstr "좋아하는 게시글로 추가하기" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "그러한 문서는 없습니다." +msgstr "해당하는 첨부파ì¼ì´ 없습니다." #: actions/editapplication.php:54 msgid "Edit Application" @@ -1234,68 +1202,40 @@ msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 #: actions/showapplication.php:87 -#, fuzzy msgid "No such application." -msgstr "그러한 통지는 없습니다." - -#: actions/editapplication.php:161 -#, fuzzy -msgid "Use this form to edit your application." -msgstr "ë‹¤ìŒ ì–‘ì‹ì„ ì´ìš©í•´ ê·¸ë£¹ì„ íŽ¸ì§‘í•˜ì‹­ì‹œì˜¤." +msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy msgid "Name is required." -msgstr "위와 ê°™ì€ ë¹„ë°€ 번호. 필수 사항." - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "ì‹¤ëª…ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대 255글ìž)" - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "ë³„ëª…ì´ ì´ë¯¸ 사용중 입니다. 다른 ë³„ëª…ì„ ì‹œë„í•´ 보십시오." +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." -msgstr "" +msgstr "소스 URLì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤." #: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy msgid "Source URL is not valid." -msgstr "홈페ì´ì§€ 주소형ì‹ì´ 올바르지 않습니다." +msgstr "소스 URLì´ ì˜¬ë°”ë¥´ì§€ 않습니다." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "기관 ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤." #: actions/editapplication.php:206 actions/newapplication.php:191 msgid "Organization is too long (max 255 chars)." -msgstr "ê¸°ê´€ëª…ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대 255글ìž)" +msgstr "기관 ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤. (최대 255글ìž)" #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" - -#: actions/editapplication.php:218 actions/newapplication.php:206 -msgid "Callback is too long." -msgstr "" - -#: actions/editapplication.php:225 actions/newapplication.php:215 -msgid "Callback URL is not valid." -msgstr "" +msgstr "기관 홈페ì´ì§€ê°€ 필요합니다." #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í•  수 없습니다." +msgstr "관심소ì‹ì„ ìƒì„±í•  수 없습니다." #: actions/editgroup.php:56 #, php-format @@ -1329,37 +1269,37 @@ msgstr "사용할 수 없는 별명 : \"%s\"" msgid "Could not update group." msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í•  수 없습니다." -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 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. @@ -1369,10 +1309,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 "" @@ -1388,7 +1327,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 "취소" @@ -1396,14 +1334,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 "추가" @@ -1412,101 +1349,97 @@ 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. #: 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 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. @@ -1522,7 +1455,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. @@ -1533,33 +1466,25 @@ msgstr "" msgid "No pending confirmation to cancel." 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 "옳지 ì•Šì€ ë©”ì‹ ì € 계정 입니다." - #. 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. #: 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. @@ -1571,12 +1496,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!" @@ -1621,12 +1546,7 @@ msgstr "" #: lib/personalgroupnav.php:115 #, php-format msgid "%s's favorite notices" -msgstr "%s ë‹˜ì˜ ì¢‹ì•„í•˜ëŠ” 글들" - -#: actions/favoritesrss.php:115 -#, fuzzy, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "%2$sì— ìžˆëŠ” %1$sì˜ ì—…ë°ì´íŠ¸!" +msgstr "%s ë‹˜ì˜ ì¢‹ì•„í•˜ëŠ” 글" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1639,38 +1559,33 @@ 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!" @@ -1678,27 +1593,19 @@ 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 í”„ë¡œí† ì½œì˜ ì•Œë ¤ì§€ì§€ ì•Šì€ ë²„ì „" - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "리모트 프로필 ì—…ë°ì´íŠ¸ 오류" +msgstr "" #: actions/getfile.php:79 msgid "No such file." @@ -1708,100 +1615,63 @@ msgstr "해당하는 파ì¼ì´ 없습니다." msgid "Cannot read file." msgstr "파ì¼ì„ ì½ì„ 수 없습니다." -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "옳지 ì•Šì€ í¬ê¸°" - #: actions/grantrole.php:66 actions/revokerole.php:66 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 "ì´ ì‚¬ì´íŠ¸ì˜ ì´ìš©ìžì— 대해 권한정지 í•  수 없습니다." #: 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ì˜ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." -#: actions/groupblock.php:81 actions/groupunblock.php:81 -#: actions/makeadmin.php:81 -#, fuzzy -msgid "No group specified." -msgstr "í”„ë¡œí•„ì„ ì§€ì •í•˜ì§€ 않았습니다." - #: actions/groupblock.php:91 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 msgid "User is not a member of group." -msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." +msgstr "그룹 ì´ìš©ìžëŠ” 차단해제" #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "사용ìžë¥¼ 차단합니다." - -#: 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 "" +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 "ì´ ê·¸ë£¹ì˜ íšŒì›ë¦¬ìŠ¤íŠ¸" - -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" +msgstr "그룹 ì´ìš©ìžëŠ” 차단해제" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." msgstr "IDê°€ 없습니다." -#: actions/groupdesignsettings.php:68 -#, fuzzy -msgid "You must be logged in to edit a group." -msgstr "ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." - #: actions/groupdesignsettings.php:144 -#, fuzzy msgid "Group design" -msgstr "그룹" +msgstr "프로필 ë””ìžì¸" #: actions/groupdesignsettings.php:155 msgid "" @@ -1815,19 +1685,19 @@ msgid "Couldn't update your design." 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" msgstr "그룹 로고" #: actions/grouplogo.php:153 -#, fuzzy, php-format +#, 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." @@ -1847,9 +1717,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 "%s 그룹 회ì›" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1863,16 +1733,6 @@ msgstr "관리ìž" msgid "Block" msgstr "차단하기" -#: actions/groupmembers.php:487 -#, fuzzy -msgid "Make user an admin of the group" -msgstr "관리ìžë§Œ ê·¸ë£¹ì„ íŽ¸ì§‘í•  수 있습니다." - -#: actions/groupmembers.php:519 -#, fuzzy -msgid "Make Admin" -msgstr "관리ìž" - #: actions/groupmembers.php:519 msgid "Make this user an admin" msgstr "ì´ ì´ìš©ìžë¥¼ 관리ìžë¡œ 만듦" @@ -1881,17 +1741,11 @@ 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 타임ë¼ì¸" -#. 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 -msgid "Updates from members of %1$s on %2$s!" -msgstr "%2$sì— ìžˆëŠ” %1$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" @@ -1917,13 +1771,13 @@ msgid "Create a new group" msgstr "새 ê·¸ë£¹ì„ ë§Œë“­ë‹ˆë‹¤." #: actions/groupsearch.php:52 -#, fuzzy, php-format +#, php-format msgid "" "Search for groups on %%site.name%% by their name, location, or description. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"%%site.name%% ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, í¥ë¯¸ë¡œ 검색. 검색어는 스페ì´ìŠ¤ 구분한다; " -"ì ì–´ë„ 3ê¸€ìž ì´ìƒ í•„ìš”." +"%%site.name%%ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, 관심 거리로 검색합니다. 검색어는 공백으로 " +"구분하고, ì ì–´ë„ 3ê¸€ìž ì´ìƒ 필요합니다." #: actions/groupsearch.php:58 msgid "Group search" @@ -1931,7 +1785,6 @@ msgstr "그룹 찾기" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." msgstr "ê²°ê³¼ ì—†ìŒ" @@ -1954,9 +1807,8 @@ msgid "Only an admin can unblock group members." 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." @@ -1964,9 +1816,8 @@ msgstr "차단 제거 ì—러!" #. TRANS: Title for instance messaging settings. #: 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. @@ -1988,9 +1839,8 @@ 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 "SMS 주소" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2020,9 +1870,8 @@ 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 @@ -2093,15 +1942,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. @@ -2111,14 +1958,13 @@ msgstr "ê·¸ Jabber ID는 ê·€í•˜ì˜ ê²ƒì´ ì•„ë‹™ë‹ˆë‹¤." #. 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 @@ -2134,14 +1980,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 "로그ì¸ì„ 해야 다른 사용ìžë¥¼ %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" @@ -2157,7 +2003,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2186,15 +2032,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." @@ -2202,7 +2048,6 @@ msgstr "ì´ˆëŒ€ìž¥ì— ë©”ì‹œì§€ 첨부하기." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" msgstr "보내기" @@ -2270,129 +2115,108 @@ msgstr "" 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 "ë³„ëª…ì´ ì—†ìŠµë‹ˆë‹¤." - -#. 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 +#: actions/joingroup.php:141 +#, php-format msgid "%1$s joined group %2$s" -msgstr "%s 는 그룹 %sì— ê°€ìž…í–ˆìŠµë‹ˆë‹¤." +msgstr "%1$sì˜ ìƒíƒœ (%2$sì—ì„œ)" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "ê·¸ë£¹ì„ ë– ë‚˜ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 -#, fuzzy, php-format +#: actions/leavegroup.php:137 +#, 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 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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 "ì´ìš©ìž %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 "관리ìžë§Œ ê·¸ë£¹ì„ íŽ¸ì§‘í•  수 있습니다." +msgstr "ì´ìš©ìž %1$s ì˜ ê·¸ë£¹ %2$s ê°€ìž…ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "현재 ìƒíƒœê°€ 없습니다." +msgstr "ê²°ê³¼ ì—†ìŒ" #: actions/newapplication.php:52 msgid "New Application" msgstr "ì‹ ê·œ ì‘ìš© 프로그램" #: actions/newapplication.php:64 -#, fuzzy msgid "You must be logged in to register an application." -msgstr "ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해서는 로그ì¸í•´ì•¼ 합니다." - -#: actions/newapplication.php:143 -#, fuzzy -msgid "Use this form to register a new application." -msgstr "새 ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해 ì´ ì–‘ì‹ì„ 사용하세요." +msgstr "ì‘ìš© 프로그램 ìˆ˜ì •ì„ ìœ„í•´ì„œëŠ” 로그ì¸í•´ì•¼ 합니다." #: actions/newapplication.php:176 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" @@ -2406,12 +2230,15 @@ msgstr "새 ê·¸ë£¹ì„ ë§Œë“¤ê¸° 위해 ì´ ì–‘ì‹ì„ 사용하세요." msgid "New message" msgstr "새로운 메시지입니다." -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" @@ -2419,23 +2246,18 @@ msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" msgid "No recipient specified." msgstr "수신ìžë¥¼ 지정하지 않았습니다." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" "ìžì‹ ì—게 메시지를 보내지 마세요. 대신 조용하게 스스로ì—게 ê·¸ê²ƒì„ ë§í•˜ì„¸ìš”;;" #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "메시지" +msgstr "쪽지가 전송ë˜ì—ˆìŠµë‹ˆë‹¤." -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "%sì—게 보낸 ì§ì ‘ 메시지" - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax ì—러입니다." @@ -2443,7 +2265,7 @@ msgstr "Ajax ì—러입니다." msgid "New notice" msgstr "새로운 통지" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." @@ -2453,17 +2275,17 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"%%site.name%% ì˜ í†µì§€ë¥¼ 내용으로부터 검색. 검색어는 스페ì´ìŠ¤ë¡œ 구분한다; ì ì–´" -"ë„ 3ê¸€ìž ì´ìƒ í•„ìš”." +"%%site.name%%ì˜ ê¸€ ë‚´ìš©ì„ ê²€ìƒ‰í•©ë‹ˆë‹¤. 검색어는 공백으로 구분하고, ì ì–´ë„ 3글" +"ìž ì´ìƒ 필요합니다." #: actions/noticesearch.php:78 msgid "Text search" msgstr "ë¬¸ìž ê²€ìƒ‰" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "스트림ì—ì„œ \"%s\" 검색" +msgstr "%1$sì—ì„œ %2$s까지 메시지" #: actions/noticesearch.php:121 #, php-format @@ -2480,20 +2302,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 +#, 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" @@ -2504,75 +2325,58 @@ msgid "Nudge sent!" 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 -msgid "You have not registered any applications yet." -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 "ë‹¤ìŒ ì‘ìš© í”„ë¡œê·¸ëž¨ì´ ê³„ì •ì— ì ‘ê·¼í•˜ë„ë¡ í—ˆìš©ë˜ì–´ 있습니다." -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -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: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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "지ì›í•˜ëŠ” 형ì‹ì˜ ë°ì´í„°ê°€ 아닙니다." @@ -2585,68 +2389,49 @@ msgid "Notice Search" msgstr "통지 검색" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "기타 설정" +msgstr "아바타 설정" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "다양한 다른 옵션관리" +msgstr "여러가지 기타 ì˜µì…˜ì„ ê´€ë¦¬í•©ë‹ˆë‹¤." #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr " (무료 서비스)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "URL 줄ì´ê¸° 기능" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "사용할 URL ìžë™ 줄ì´ê¸° 서비스" +msgstr "사용할 URL ìžë™ 줄ì´ê¸° 서비스." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -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 "URL 줄ì´ê¸° 서비스 너무 ê¹ë‹ˆë‹¤. (최대 50글ìž)" -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "í”„ë¡œí•„ì„ ì§€ì •í•˜ì§€ 않았습니다." - #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "í”„ë¡œí•„ì„ ì§€ì •í•˜ì§€ 않았습니다." +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 "옳지 ì•Šì€ í†µì§€ ë‚´ìš©" - -#: 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 "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/outbox.php:61 #, php-format @@ -2682,7 +2467,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 "ì¸ì¦" @@ -2692,13 +2477,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 "비밀 번호가 ì¼ì¹˜í•˜ì§€ 않습니다." @@ -2719,47 +2504,31 @@ 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 "경로" #: 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" - -#: actions/pathsadminpanel.php:169 -#, fuzzy, php-format -msgid "Background directory not writable: %s." -msgstr "아바타 ë””ë ‰í† ë¦¬ì— ì“¸ 수 없습니다 : %s" - -#: actions/pathsadminpanel.php:177 -#, fuzzy, php-format -msgid "Locales directory not readable: %s." -msgstr "ì´ íŽ˜ì´ì§€ëŠ” 귀하가 승ì¸í•œ 미디어 타입ì—서는 ì´ìš©í•  수 없습니다." +msgstr "아바타가 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." 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." @@ -2767,12 +2536,11 @@ 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,66 +2564,35 @@ msgstr "테마" #: actions/pathsadminpanel.php:264 msgid "Theme server" -msgstr "" +msgstr "테마 서버" #: actions/pathsadminpanel.php:268 msgid "Theme path" -msgstr "" +msgstr "테마 경로" #: actions/pathsadminpanel.php:272 msgid "Theme directory" -msgstr "" +msgstr "테마 디렉터리" #: actions/pathsadminpanel.php:279 -#, fuzzy msgid "Avatars" msgstr "아바타" #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "아바타 설정" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "아바타가 ì—…ë°ì´íŠ¸ ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "아바타가 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/pathsadminpanel.php:292 -#, fuzzy 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 "" +msgstr "아바타가 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤." #: actions/pathsadminpanel.php:320 -#, fuzzy msgid "SSL" -msgstr "SMS" +msgstr "SSL" #: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy msgid "Never" -msgstr "복구" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "통지" +msgstr "SSL 서버" #: actions/pathsadminpanel.php:325 msgid "Always" @@ -2870,18 +2607,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 @@ -2889,27 +2624,26 @@ msgid "" "Search for people on %%site.name%% by their name, location, or interests. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"%%site.name%% ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, í¥ë¯¸ë¡œ 검색. 검색어는 스페ì´ìŠ¤ 구분한다; " -"ì ì–´ë„ 3ê¸€ìž ì´ìƒ í•„ìš”." +"%%site.name%%ì˜ ì‚¬ëžŒì„ ì´ë¦„, 장소, 관심 거리로 검색합니다. 검색어는 공백으로 " +"구분하고, ì ì–´ë„ 3ê¸€ìž ì´ìƒ 필요합니다." #: actions/peoplesearch.php:58 msgid "People search" msgstr "사람 찾기" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, 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 "%s íƒœê·¸ëœ í†µì§€" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "옳지 ì•Šì€ í†µì§€ ë‚´ìš©" +msgstr "옳지 ì•Šì€ í¬ê¸°" #: actions/postnotice.php:101 #, php-format @@ -2918,7 +2652,7 @@ msgstr "" #: actions/profilesettings.php:60 msgid "Profile settings" -msgstr "프로필 세팅" +msgstr "프로필 설정" #: actions/profilesettings.php:71 msgid "" @@ -2935,46 +2669,40 @@ 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 -msgid "Describe yourself and your interests in %d chars" -msgstr "140ìž ì´ë‚´ì—ì„œ ìžê¸° 소개" - -#: 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" @@ -3001,21 +2729,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 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, 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." @@ -3028,17 +2756,12 @@ 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." msgstr "ìžë™êµ¬ë…ì— ì‚¬ìš©ìžë¥¼ ì—…ë°ì´íŠ¸ í•  수 없습니다." -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "태그를 저장할 수 없습니다." - #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "í”„ë¡œí•„ì„ ì €ìž¥ í•  수 없습니다." @@ -3071,19 +2794,12 @@ msgid "Public timeline" msgstr "í¼ë¸”릭 타임ë¼ì¸" #: actions/public.php:160 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "í¼ë¸”릭 스트림 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 1.0)" #: actions/public.php:164 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "í¼ë¸”릭 스트림 피드" - -#: actions/public.php:168 -#, fuzzy -msgid "Public Stream Feed (Atom)" -msgstr "í¼ë¸”릭 스트림 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 2.0)" #: actions/public.php:188 #, php-format @@ -3093,10 +2809,6 @@ msgid "" msgstr "" "%%site.name%% ì˜ ê³µê°œ 타임ë¼ì¸ì´ì§€ë§Œ, ì•„ì§ ì•„ë¬´ë„ ê¸€ì„ ì“°ì§€ 않았습니다." -#: actions/public.php:191 -msgid "Be the first to post!" -msgstr "" - #: actions/public.php:195 #, php-format msgid "" @@ -3113,14 +2825,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" @@ -3179,24 +2889,10 @@ msgstr "ì´ ì¸ì¦ 코드는 오래ë습니다. 다시 발급 받아 주십시 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 "ì´ ì„œë²„ì—ì„œ ë‹¹ì‹ ì˜ ë‹‰ë„¤ìž„ í˜¹ì€ ë‹¹ì‹ ì˜ ë“±ë¡ëœ ì´ë©”ì¼ì£¼ì†Œ" @@ -3263,7 +2959,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 "ì‚¬ìš©ìž ì„¸íŒ… 오류" @@ -3272,82 +2968,93 @@ 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 -#, 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:507 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 "ì´ë©”ì¼" +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:494 -#, fuzzy, php-format +#: 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 "ë‹¤ìŒ ê°œì¸ì •ë³´ 제외: 비밀 번호, ë©”ì¼ ì£¼ì†Œ, 메신저 주소, ì „í™” 번호" +msgstr "" -#: actions/register.php:542 -#, 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" @@ -3364,22 +3071,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:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3402,11 +3095,6 @@ msgstr "" msgid "Remote subscribe" msgstr "리모트 êµ¬ë… ì˜ˆì•½" -#: actions/remotesubscribe.php:124 -#, fuzzy -msgid "Subscribe to a remote user" -msgstr "ì´ íšŒì›ì„ 구ë…합니다." - #: actions/remotesubscribe.php:129 msgid "User nickname" msgstr "ì´ìš©ìž 닉네임" @@ -3433,40 +3121,26 @@ 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 "리퀘스트 토í°ì„ ì·¨ë“ í•  수 없습니다." - -#: actions/repeat.php:57 -#, fuzzy -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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "재전송ë¨" @@ -3481,32 +3155,25 @@ msgid "Replies to %s" msgstr "%sì— ë‹µì‹ " #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "%2$sì—ì„œ %1$s까지 메시지" +msgstr "%sì— ë‹µì‹ " #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 1.0)" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 2.0)" #: actions/replies.php:159 #, php-format msgid "Replies feed for %s (Atom)" msgstr "%sì˜ í†µì§€ 피드" -#: 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." -msgstr "" - #: actions/replies.php:204 #, php-format msgid "" @@ -3517,48 +3184,34 @@ 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 "%2$sì—ì„œ %1$s까지 메시지" +msgstr "%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 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 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 "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." - -#. TRANS: Menu item for site administration -#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 -msgid "Sessions" -msgstr "" - -#: actions/sessionsadminpanel.php:65 -msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "ì´ìš©ìžì˜ 지ì†ì ì¸ ê²Œì‹œê¸€ì´ ì—†ìŠµë‹ˆë‹¤." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" @@ -3578,19 +3231,16 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: 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 @@ -3598,25 +3248,23 @@ 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 -#, 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 "설명" -#: actions/showapplication.php:192 actions/showgroup.php:444 +#: actions/showapplication.php:192 actions/showgroup.php:436 #: lib/profileaction.php:187 msgid "Statistics" msgstr "통계" @@ -3628,7 +3276,7 @@ msgstr "" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "ì¸ì¦ 코드가 없습니다." #: actions/showapplication.php:236 msgid "Reset key & secret" @@ -3636,7 +3284,7 @@ msgstr "" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "ì¸ì¦ 코드가 없습니다." #: actions/showapplication.php:263 msgid "Consumer key" @@ -3654,25 +3302,16 @@ msgstr "" msgid "Access token URL" msgstr "" -#: actions/showapplication.php:283 -msgid "Authorize URL" -msgstr "" - #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "ì •ë§ë¡œ 통지를 삭제하시겠습니까?" - #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, 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." @@ -3681,17 +3320,17 @@ msgstr "좋아하는 ê²Œì‹œê¸€ì„ ë³µêµ¬í•  수 없습니다." #: actions/showfavorites.php:171 #, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "%sì˜ ì¹œêµ¬ë“¤ì„ ìœ„í•œ 피드" +msgstr "%sì˜ ì¢‹ì•„í•˜ëŠ” 글 피드 (RSS 1.0)" #: actions/showfavorites.php:178 #, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "%sì˜ ì¹œêµ¬ë“¤ì„ ìœ„í•œ 피드" +msgstr "%sì˜ ì¢‹ì•„í•˜ëŠ” 글 피드 (RSS 2.0)" #: actions/showfavorites.php:185 #, php-format msgid "Feed for favorites of %s (Atom)" -msgstr "%sì˜ ì¹œêµ¬ë“¤ì„ ìœ„í•œ 피드" +msgstr "%sì˜ ì¢‹ì•„í•˜ëŠ” 글 피드 (Atom)" #: actions/showfavorites.php:206 msgid "" @@ -3702,21 +3341,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 @@ -3724,9 +3363,9 @@ msgid "%s group" msgstr "%s 그룹" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "%s 그룹 회ì›, %d페ì´ì§€" +msgstr "그룹, %d페ì´ì§€" #: actions/showgroup.php:227 msgid "Group profile" @@ -3770,7 +3409,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 "회ì›" @@ -3778,18 +3417,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." @@ -3799,21 +3437,14 @@ 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 -#, fuzzy -msgid "Admins" -msgstr "관리ìž" #: actions/showmessage.php:81 msgid "No such message." @@ -3833,50 +3464,30 @@ msgstr "%2$sì—ì„œ %1$s까지 메시지" msgid "Message from %1$s on %2$s" msgstr "%1$sì—ì„œ %2$s까지 메시지" -#: actions/shownotice.php:90 -#, fuzzy -msgid "Notice deleted." -msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." - -#: actions/showstream.php:73 -#, fuzzy, php-format -msgid " tagged %s" -msgstr "%s íƒœê·¸ëœ í†µì§€" - #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s 와 친구들, %d 페ì´ì§€" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/showstream.php:122 -#, fuzzy, php-format +#, 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 +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "%sì˜ í†µì§€ 피드" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, 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ì˜ í†µì§€ 피드" - -#: actions/showstream.php:148 -#, fuzzy, php-format -msgid "FOAF for %s" -msgstr "%sì˜ ë³´ë‚¸ìª½ì§€í•¨" - -#: actions/showstream.php:200 #, php-format -msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet." -msgstr "" +msgid "Notice feed for %s (Atom)" +msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (Atom)" #: actions/showstream.php:205 msgid "" @@ -3889,8 +3500,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 @@ -3903,42 +3514,28 @@ 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 -msgid "Repeat of %s" -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 "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." - -#: actions/siteadminpanel.php:69 -msgid "Basic settings for this StatusNet site" -msgstr "" +msgstr "사용ìžê°€ 귀하를 차단했습니다." #: 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 "유효한 ì´ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." +msgstr "올바른 ë©”ì¼ ì£¼ì†Œê°€ 아닙니다." #: actions/siteadminpanel.php:159 #, php-format @@ -3955,12 +3552,11 @@ msgstr "" #: actions/siteadminpanel.php:221 msgid "General" -msgstr "" +msgstr "ì¼ë°˜" #: actions/siteadminpanel.php:224 -#, fuzzy msgid "Site name" -msgstr "사ì´íŠ¸ 공지" +msgstr "사ì´íŠ¸ 테마" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" @@ -3983,27 +3579,16 @@ 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 "%sì— í¬ìŠ¤íŒ… í•  새로운 ì´ë©”ì¼ ì£¼ì†Œ" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "로컬 ë·°" - -#: actions/siteadminpanel.php:256 -msgid "Default timezone" -msgstr "" +msgstr "%sì— í¬ìŠ¤íŒ… í•  새로운 ë©”ì¼ ì£¼ì†Œ" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." msgstr "" #: 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" @@ -4029,44 +3614,22 @@ msgstr "" msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -msgid "Site Notice" -msgstr "사ì´íŠ¸ 공지" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -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." msgstr "" -#: actions/sitenoticeadminpanel.php:176 -#, fuzzy -msgid "Site notice text" -msgstr "사ì´íŠ¸ 공지" - #: 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 "사ì´íŠ¸ 공지" - #. 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. @@ -4078,15 +3641,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 "SMS 주소" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4110,16 +3671,14 @@ 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 @@ -4128,9 +3687,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 @@ -4143,9 +3701,8 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "ì„¤ì •ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "SMS ì„¤ì •ì„ ì €ìž¥í–ˆìŠµë‹ˆë‹¤." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4169,13 +3726,12 @@ msgstr "ê·¸ íœ´ëŒ€í° ë²ˆí˜¸ëŠ” ì´ë¯¸ 다른 사용ìžì˜ 것입니다." #. 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 "" -"추가한 휴대í°ìœ¼ë¡œ ì¸ì¦ 코드를 보냈습니다. 수신함(ë˜ëŠ” 스팸함)ì„ í™•ì¸í•˜ì…”ì„œ ì½”" -"드와 ì‚¬ìš©ë²•ì„ í™•ì¸í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤." +"추가한 ë©”ì¼ë¡œ ì¸ì¦ 코드를 보냈습니다. 수신함(ë˜ëŠ” 스팸함)ì„ í™•ì¸í•˜ì…”ì„œ 코드" +"와 ì‚¬ìš©ë²•ì„ í™•ì¸í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤." #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4184,9 +3740,8 @@ msgstr "옳지 ì•Šì€ ì¸ì¦ 번호 입니다." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: 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. @@ -4196,9 +3751,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 @@ -4226,27 +3780,18 @@ 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 "주 사ì´íŠ¸ 네비게ì´ì…˜" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +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 "" @@ -4255,10 +3800,6 @@ msgstr "" 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 "" @@ -4271,24 +3812,20 @@ msgstr "" 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 "아바타 설정" +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 "구ë…ì„ ì €ìž¥í•  수 없습니다." @@ -4297,14 +3834,8 @@ msgid "This action only accepts POST requests." msgstr "" #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "그러한 통지는 없습니다." - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "ë‹¹ì‹ ì€ ì´ í”„ë¡œí•„ì— êµ¬ë…ë˜ì§€ 않고있습니다." +msgstr "해당하는 파ì¼ì´ 없습니다." #: actions/subscribe.php:145 msgid "Subscribed" @@ -4316,9 +3847,9 @@ msgid "%s subscribers" msgstr "%s 구ë…ìž" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s 구ë…ìž, %d 페ì´ì§€" +msgstr "%s ë° ì¹œêµ¬ë“¤, %d 페ì´ì§€" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4353,9 +3884,9 @@ msgid "%s subscriptions" msgstr "%s 구ë…" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, 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." @@ -4377,9 +3908,9 @@ msgid "" msgstr "" #: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format +#, php-format msgid "%s is not listening to anyone." -msgstr "%1$s 는 지금 듣고 있습니다." +msgstr "%1$së‹˜ì´ ê·€í•˜ì˜ ì•Œë¦¼ 메시지를 %2$sì—ì„œ 듣고 있습니다." #: actions/subscriptions.php:208 msgid "Jabber" @@ -4390,29 +3921,28 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "ì´ìš©ìž 셀프 í…Œí¬ %s - %d 페ì´ì§€" +msgstr "%s íƒœê·¸ëœ í†µì§€" #: actions/tag.php:87 -#, fuzzy, php-format +#, 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 +#, 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 +#, 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 @@ -4458,29 +3988,21 @@ 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 msgid "User is not silenced." -msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³  있지 않습니다." +msgstr "ì´ìš©ìžì˜ 지ì†ì ì¸ ê²Œì‹œê¸€ì´ ì—†ìŠµë‹ˆë‹¤." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "요청한 프로필idê°€ 없습니다." +msgstr "해당 IDì˜ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4494,14 +4016,9 @@ 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 "사용ìž" #: actions/useradminpanel.php:149 msgid "Invalid bio limit. Must be numeric." @@ -4530,11 +4047,6 @@ msgstr "" msgid "Maximum length of a profile bio in characters." msgstr "" -#: actions/useradminpanel.php:231 -#, fuzzy -msgid "New users" -msgstr "새 사용ìžë¥¼ 초대" - #: actions/useradminpanel.php:235 msgid "New user welcome" msgstr "" @@ -4543,26 +4055,6 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "모든 예약 구ë…" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "나ì—게 구ë…하는 사람ì—게 ìžë™ êµ¬ë… ì‹ ì²­" - -#: actions/useradminpanel.php:251 -#, fuzzy -msgid "Invitations" -msgstr "ì´ˆëŒ€ê¶Œì„ ë³´ëƒˆìŠµë‹ˆë‹¤" - -#: actions/useradminpanel.php:256 -#, fuzzy -msgid "Invitations enabled" -msgstr "ì´ˆëŒ€ê¶Œì„ ë³´ëƒˆìŠµë‹ˆë‹¤" - #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" @@ -4572,19 +4064,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" @@ -4599,11 +4087,6 @@ msgstr "ì´ íšŒì›ì„ 구ë…합니다." msgid "Reject" msgstr "거부" -#: actions/userauthorization.php:220 -#, fuzzy -msgid "Reject this subscription" -msgstr "%s 구ë…" - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "허용ë˜ì§€ 않는 요청입니다." @@ -4613,28 +4096,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 @@ -4656,25 +4133,19 @@ msgstr "" msgid "Profile URL ‘%s’ is for a local user." msgstr "" -#: actions/userauthorization.php:345 +#: actions/userauthorization.php:350 #, php-format -msgid "Avatar URL ‘%s’ is not valid." +msgid "Can’t read avatar URL ‘%s’." msgstr "" -#: actions/userauthorization.php:350 -#, fuzzy, php-format -msgid "Can’t read avatar URL ‘%s’." -msgstr "아바타 URL '%s'ì„(를) ì½ì–´ë‚¼ 수 없습니다." - #: 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 "" @@ -4688,19 +4159,13 @@ 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 "그룹, %d 페ì´ì§€" #: actions/usergroups.php:132 -#, fuzzy msgid "Search for more groups" -msgstr "프로필ì´ë‚˜ í…스트 검색" - -#: actions/usergroups.php:159 -#, fuzzy, php-format -msgid "%s is not a member of any group." -msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." +msgstr "" #: actions/usergroups.php:164 #, php-format @@ -4712,29 +4177,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 " @@ -4742,7 +4207,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 " @@ -4750,185 +4215,207 @@ 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:805 msgid "Version" -msgstr "버젼" +msgstr "버전" -#: actions/version.php:197 -msgid "Author(s)" +#. 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: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." msgstr "ê·¸ë£¹ì— ê°€ìž…í•˜ì§€ 못했습니다." -#: classes/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -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 -#, 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 -#, fuzzy -msgid "You are banned from sending direct messages." -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 "" -#: 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "해쉬테그를 추가 í•  ë•Œì— ë°ì´íƒ€ë² ì´ìŠ¤ ì—러 : %s" +msgstr "OAuth ì‘ìš© 프로그램 ì‚¬ìš©ìž ì¶”ê°€ 중 ë°ì´í„°ë² ì´ìŠ¤ 오류" -#: classes/Notice.php:245 -#, 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:270 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:276 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "" "너무 ë§Žì€ ê²Œì‹œê¸€ì´ ë„ˆë¬´ 빠르게 올ë¼ì˜µë‹ˆë‹¤. 한숨고르고 ëª‡ë¶„í›„ì— ë‹¤ì‹œ í¬ìŠ¤íŠ¸ë¥¼ " "해보세요." -#: classes/Notice.php:260 -#, 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%1$s (%2$s)" +msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -#, fuzzy -msgid "You have been banned from subscribing." -msgstr "ì´ íšŒì›ì€ 구ë…으로부터 ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ë‹¤." - -#: classes/Subscription.php:78 -msgid "Already subscribed!" +#. 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:82 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +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 to a user who has blocked the subscribing user. +#: classes/Subscription.php:85 msgid "User has blocked you." -msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤." +msgstr "사용ìžê°€ 귀하를 차단했습니다." -#: classes/Subscription.php:167 -#, fuzzy -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 "구ë…ì„ ì €ìž¥í•  수 없습니다." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't 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 "구ë…ì„ ì €ìž¥í•  수 없습니다." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't 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 "구ë…ì„ ì €ìž¥í•  수 없습니다." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "예약 구ë…ì„ ì‚­ì œ í•  수 없습니다." - -#: classes/User.php:363 -#, fuzzy, php-format +#. 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까지 메시지" +msgstr "%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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 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 -#, 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 @@ -4948,13 +4435,7 @@ 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 -#, fuzzy -msgid "Design your profile" -msgstr "ì´ìš©ìž 프로필" +msgstr "ë©”ì¼ ì²˜ë¦¬ 변경" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 @@ -4967,231 +4448,206 @@ msgid "Other" msgstr "기타" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%1$s (%2$s)" +msgstr "%1$s - %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" msgstr "제목없는 페ì´ì§€" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "주 사ì´íŠ¸ 네비게ì´ì…˜" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" -msgstr "ê°œì¸ì ì¸" +msgstr "ê°œì¸" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "ì—°ê²°" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" -msgstr "관리ìž" - -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format -msgctxt "TOOLTIP" -msgid "Invite friends and colleagues to join you on %s" -msgstr "%sì— ì¹œêµ¬ë¥¼ 가입시키기 위해 친구와 ë™ë£Œë¥¼ 초대합니다." +msgstr "관리" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:481 msgctxt "MENU" msgid "Invite" msgstr "초대" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "로그아웃" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" -msgstr "회ì›ê°€ìž…" +msgstr "등ë¡" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "ì´ ì‚¬ì´íŠ¸ 로그ì¸" +msgstr "ì´ ì‚¬ì´íŠ¸ì— 로그ì¸" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "로그ì¸" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "ë„ì›€ì´ í•„ìš”í•´!" +msgstr "ë„움ë§" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "ë„움ë§" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "프로필ì´ë‚˜ í…스트 검색" +msgstr "" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "로컬 ë·°" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "페ì´ì§€ 공지" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "ë³´ì¡° 사ì´íŠ¸ 네비게ì´ì…˜" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "ë„움ë§" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "ì •ë³´" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "ìžì£¼ 묻는 질문" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" -msgstr "" +msgstr "서비스 약관" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "ê°œì¸ì •ë³´ 취급방침" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "소스 코드" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "ì—°ë½í•˜ê¸°" -#: lib/action.php:784 -#, fuzzy +#: lib/action.php:810 msgid "Badge" -msgstr "찔러 보기" +msgstr "배지" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5203,55 +4659,55 @@ 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:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "ì•ž 페ì´ì§€" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5259,161 +4715,102 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "ë‹¹ì‹ ì€ ì´ ì‚¬ìš©ìžì—게 메시지를 보낼 수 없습니다." - -#. 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 "ê°€ìž…ì´ í—ˆìš©ë˜ì§€ 않습니다." - -#. TRANS: Client error message. -#: lib/adminpanelaction.php:229 -#, fuzzy -msgid "showForm() not implemented." -msgstr "ëª…ë ¹ì´ ì•„ì§ ì‹¤í–‰ë˜ì§€ 않았습니다." - -#. TRANS: Client error message -#: lib/adminpanelaction.php:259 -#, fuzzy -msgid "saveSettings() not implemented." -msgstr "ëª…ë ¹ì´ ì•„ì§ ì‹¤í–‰ë˜ì§€ 않았습니다." +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 "ë””ìžì¸ ì„¤ì •ì„ ì €ìž¥í•  수 없습니다." #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy +#: 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 -#, fuzzy +#: lib/adminpanelaction.php:358 msgid "Design configuration" -msgstr "SMS ì¸ì¦" +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 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "SMS ì¸ì¦" +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 "ì´ìš©ìž" +msgstr "사용ìž" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "SMS ì¸ì¦" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy +#: lib/adminpanelaction.php:382 msgid "Paths configuration" -msgstr "SMS ì¸ì¦" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "SMS ì¸ì¦" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "사ì´íŠ¸ 공지" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "SMS ì¸ì¦" +msgstr "ë©”ì¼ ì£¼ì†Œ 확ì¸" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 "" +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글ìžë¡œ 그룹ì´ë‚˜ 토픽 설명하기" - -#. 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 -#, fuzzy 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 -#, fuzzy -msgid "URL for the homepage of the organization" -msgstr "그룹 í˜¹ì€ í† í”½ì˜ í™ˆíŽ˜ì´ì§€ë‚˜ 블로그 URL" +msgstr "소스 코드 URL" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5423,12 +4820,12 @@ 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 @@ -5438,12 +4835,12 @@ 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 @@ -5458,12 +4855,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 @@ -5473,45 +4870,29 @@ 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 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 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "비밀번호 변경" - -#: lib/authenticationplugin.php:235 -#, fuzzy -msgid "Password changing is not allowed" -msgstr "비밀번호 변경" - #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" msgstr "실행결과" @@ -5524,45 +4905,21 @@ msgstr "실행 완료" msgid "Command failed" msgstr "실행 실패" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "해당 idì˜ í”„ë¡œí•„ì´ ì—†ìŠµë‹ˆë‹¤." - -#: 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 -#, fuzzy, 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 -#, fuzzy, php-format -msgid "Could not find a local user with nickname %s" -msgstr "ì´ ì´ë©”ì¼ ì£¼ì†Œë¡œ 사용ìžë¥¼ ì—…ë°ì´íŠ¸ í•  수 없습니다." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "죄송합니다. ì´ ëª…ë ¹ì€ ì•„ì§ ì‹¤í–‰ë˜ì§€ 않았습니다." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "찔러 보기를 보냈습니다." - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5570,55 +4927,39 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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 "ì´ìš©ìž %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 -msgid "Could not remove user %1$s from group %2$s" -msgstr "그룹 %sì—ì„œ %s 사용ìžë¥¼ 제거할 수 없습니다." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "홈페ì´ì§€: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "ìžê¸°ì†Œê°œ: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5627,147 +4968,107 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "ë‹¹ì‹ ì´ ë³´ë‚¸ 메시지가 너무 길어요. 최대 140글ìžê¹Œì§€ìž…니다." - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "%sì—게 보낸 ì§ì ‘ 메시지" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "ì§ì ‘ 메시지 보내기 오류." -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "ì•Œë¦¼ì„ ì¼¤ 수 없습니다." - -#: lib/command.php:519 -#, fuzzy -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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." - -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." +msgstr "ì‚¬ìš©ìž ì„¸íŒ… 오류" -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "ë‹¹ì‹ ì´ ë³´ë‚¸ 메시지가 너무 길어요. 최대 140글ìžê¹Œì§€ìž…니다." +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기" - -#: lib/command.php:573 -#, fuzzy +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." -msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤." +msgstr "ì‚¬ìš©ìž ì„¸íŒ… 오류" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "구ë…하려는 사용ìžì˜ ì´ë¦„ì„ ì§€ì •í•˜ì‹­ì‹œì˜¤." +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +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 "ë‹¹ì‹ ì€ ì´ í”„ë¡œí•„ì— êµ¬ë…ë˜ì§€ 않고있습니다." +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "%sì—게 구ë…ë˜ì—ˆìŠµë‹ˆë‹¤." - -#: 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 "%sì—ì„œ 구ë…ì„ í•´ì œí–ˆìŠµë‹ˆë‹¤." - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "ëª…ë ¹ì´ ì•„ì§ ì‹¤í–‰ë˜ì§€ 않았습니다." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "알림ë„기." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "ì•Œë¦¼ì„ ëŒ ìˆ˜ 없습니다." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "ì•Œë¦¼ì´ ì¼œì¡ŒìŠµë‹ˆë‹¤." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "ì•Œë¦¼ì„ ì¼¤ 수 없습니다." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "%sì—ì„œ 구ë…ì„ í•´ì œí–ˆìŠµë‹ˆë‹¤." - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "ë‹¹ì‹ ì€ ì´ í”„ë¡œí•„ì— êµ¬ë…ë˜ì§€ 않고있습니다." - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "ë‹¹ì‹ ì€ ë‹¤ìŒ ì‚¬ìš©ìžë¥¼ ì´ë¯¸ 구ë…하고 있습니다." -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "다른 ì‚¬ëžŒì„ êµ¬ë… í•˜ì‹¤ 수 없습니다." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "다른 ì‚¬ëžŒì„ êµ¬ë… í•˜ì‹¤ 수 없습니다." -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "ë‹¹ì‹ ì€ í•´ë‹¹ ê·¸ë£¹ì˜ ë©¤ë²„ê°€ 아닙니다." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5809,11 +5110,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "í™•ì¸ ì½”ë“œê°€ 없습니다." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5823,9 +5119,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" @@ -5840,32 +5135,21 @@ msgid "Updates by SMS" msgstr "SMSì— ì˜í•œ ì—…ë°ì´íŠ¸" #: lib/connectsettingsaction.php:120 -#, fuzzy msgid "Connections" msgstr "ì—°ê²°" -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" -msgstr "" +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 "ë‹¹ì‹ ì˜ ê°œì¸ì ì¸ 아바타를 업로드할 수 있습니다." - -#: lib/designsettings.php:418 -msgid "Design defaults restored." -msgstr "" +msgstr "ê°œì¸ ì•„ë°”íƒ€ë¥¼ 올릴 수 있습니다. 최대 íŒŒì¼ í¬ê¸°ëŠ” 2MB입니다." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" @@ -5881,19 +5165,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" @@ -5907,11 +5191,6 @@ msgstr "태그 í•„í„°ë§í•˜ê¸°" msgid "All" msgstr "모든 것" -#: lib/galleryaction.php:139 -#, fuzzy -msgid "Select tag to filter" -msgstr "통신 회사를 ì„ íƒ í•˜ì„¸ìš”." - #: lib/galleryaction.php:140 msgid "Tag" msgstr "태그" @@ -5922,7 +5201,7 @@ msgstr "ì¢ì€ 리스트ì—ì„œ 태그 ì„ íƒí•˜ê¸°" #: lib/galleryaction.php:143 msgid "Go" -msgstr "Go " +msgstr "ì´ë™" #: lib/grantroleform.php:91 #, php-format @@ -5934,19 +5213,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글ìžë¡œ 그룹ì´ë‚˜ 토픽 설명하기" - -#: lib/groupeditform.php:170 -#, fuzzy, 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 @@ -5958,14 +5231,8 @@ msgid "Group" msgstr "그룹" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "차단하기" - -#: lib/groupnav.php:102 -#, fuzzy, php-format -msgid "%s blocked users" -msgstr "사용ìžë¥¼ 차단합니다." +msgstr "차단" #: lib/groupnav.php:108 #, php-format @@ -5979,12 +5246,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 +#, php-format msgid "Add or edit %s design" -msgstr "%s logo 추가 í˜¹ì€ ìˆ˜ì •" +msgstr "%s 로고 추가 í˜¹ì€ íŽ¸ì§‘" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" @@ -6008,11 +5275,6 @@ msgstr "ì´ íŽ˜ì´ì§€ëŠ” 귀하가 승ì¸í•œ 미디어 타입ì—서는 ì´ìš©í•  msgid "Unsupported image file format." msgstr "지ì›í•˜ì§€ 않는 그림 íŒŒì¼ í˜•ì‹ìž…니다." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "ë‹¹ì‹ ê·¸ë£¹ì˜ ë¡œê³  ì´ë¯¸ì§€ë¥¼ 업로드할 수 있습니다." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "불완전한 업로드." @@ -6035,16 +5297,16 @@ msgstr "ì•Œ 수 없는 ì¢…ë¥˜ì˜ íŒŒì¼ìž…니다" #: lib/imagefile.php:244 msgid "MB" -msgstr "" +msgstr "MB" #: lib/imagefile.php:246 msgid "kB" -msgstr "" +msgstr "kB" #: lib/jabber.php:387 #, php-format msgid "[%s]" -msgstr "" +msgstr "[%s]" #: lib/jabber.php:567 #, php-format @@ -6070,7 +5332,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 @@ -6096,9 +5358,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" @@ -6111,27 +5380,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 -#, fuzzy, php-format +#: lib/mail.php:274 +#, 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" @@ -6143,34 +5406,28 @@ 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 -#, 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 " @@ -6187,13 +5444,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" @@ -6213,13 +5470,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 "%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" @@ -6241,7 +5498,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" @@ -6249,13 +5506,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6292,10 +5544,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "다ìŒì—ì„œ:" +msgstr "방법" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6313,11 +5564,6 @@ msgstr "죄송합니다. ê·€í•˜ì˜ ì´ë©”ì¼ì´ 아닙니다." msgid "Sorry, no incoming email allowed." msgstr "죄송합니다. ì´ë©”ì¼ì´ 허용ë˜ì§€ 않습니다." -#: lib/mailhandler.php:228 -#, fuzzy, 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 "" @@ -6348,25 +5594,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 "공개 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 "" @@ -6377,14 +5622,13 @@ msgstr "ì§ì ‘ 메시지 보내기" #: lib/messageform.php:146 msgid "To" -msgstr "ì—게" +msgstr "받는 ì´" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "사용 가능한 글ìž" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "보내기" @@ -6393,88 +5637,78 @@ msgstr "보내기" msgid "Send a notice" msgstr "게시글 보내기" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" -msgstr "ë­í•˜ì„¸ìš”? %?" +msgstr "ë­í•˜ì„¸ìš” %s님?" -#: lib/noticeform.php:192 -msgid "Attach" -msgstr "" - -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "태그를 저장할 수 없습니다." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "태그를 저장할 수 없습니다." +msgstr "ë‚´ 위치 공유" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "ë‚´ 위치 공유하지 않기" + +#: lib/noticeform.php:217 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 -#, 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 msgid "at" +msgstr "위치" + +#: lib/noticelist.php:502 +msgid "web" msgstr "" -#: lib/noticelist.php:567 -#, fuzzy +#: lib/noticelist.php:568 msgid "in context" -msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!" +msgstr "문맥" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "ìƒì„±" +msgstr "재전송ë¨" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "답장하기" -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤." - #: lib/nudgeform.php:116 msgid "Nudge this user" msgstr "ì´ ì‚¬ìš©ìž ì°”ëŸ¬ 보기" @@ -6503,18 +5737,13 @@ msgstr "리모트 프로필 ì—…ë°ì´íŠ¸ 오류" msgid "Error inserting remote profile" msgstr "리모트 프로필 추가 오류" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "통지 ì‚­ì œ" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "예약 구ë…ì„ ì¶”ê°€ í•  수 없습니다." #: lib/personalgroupnav.php:99 msgid "Personal" -msgstr "ê°œì¸ì ì¸" +msgstr "ê°œì¸" #: lib/personalgroupnav.php:104 msgid "Replies" @@ -6530,7 +5759,7 @@ msgstr "ë°›ì€ ìª½ì§€í•¨" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" -msgstr "ë‹¹ì‹ ì˜ ë°›ì€ ë©”ì‹œì§€ë“¤" +msgstr "ë°›ì€ ë©”ì‹œì§€" #: lib/personalgroupnav.php:130 msgid "Outbox" @@ -6538,18 +5767,13 @@ msgstr "보낸 쪽지함" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "ë‹¹ì‹ ì˜ ë³´ë‚¸ 메시지들" +msgstr "보낸 메시지" #: lib/personaltagcloudsection.php:56 #, php-format msgid "Tags in %s's notices" msgstr "%sì˜ ê²Œì‹œê¸€ì˜ íƒœê·¸" -#: lib/plugin.php:114 -#, fuzzy -msgid "Unknown" -msgstr "알려지지 ì•Šì€ í–‰ë™" - #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" msgstr "구ë…" @@ -6567,9 +5791,8 @@ msgid "All subscribers" msgstr "모든 구ë…ìž" #: lib/profileaction.php:191 -#, fuzzy msgid "User ID" -msgstr "ì´ìš©ìž" +msgstr "ì´ìš©ìž ID" #: lib/profileaction.php:196 msgid "Member since" @@ -6578,13 +5801,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 "" @@ -6608,48 +5831,26 @@ msgstr "피ì³ë§ë¨" msgid "Popular" msgstr "ì¸ê¸°ìžˆëŠ”" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "id ì¸ìžê°€ 없습니다." - -#: 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 "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "ë°›ì€ ìª½ì§€í•¨" - -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "ì´ ì‚¬ìš©ìžë¥¼ 차단해제합니다." - #: lib/searchaction.php:120 -#, fuzzy msgid "Search site" -msgstr "검색" +msgstr "검색 ë„움ë§" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6660,9 +5861,8 @@ msgid "Search" msgstr "검색" #: lib/searchaction.php:162 -#, fuzzy msgid "Search help" -msgstr "검색" +msgstr "검색 ë„움ë§" #: lib/searchgroupnav.php:80 msgid "People" @@ -6686,17 +5886,11 @@ msgstr "제목없는 섹션" #: lib/section.php:106 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 #, php-format @@ -6711,7 +5905,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" @@ -6736,6 +5930,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "차단 제거 ì—러!" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "ìƒìœ„ 게시글 등ë¡ìž" @@ -6744,19 +5978,9 @@ msgstr "ìƒìœ„ 게시글 등ë¡ìž" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -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 msgid "Unsubscribe from this user" @@ -6766,15 +5990,9 @@ msgstr "ì´ ì‚¬ìš©ìžë¡œë¶€í„° 구ë…취소합니다." msgid "Unsubscribe" msgstr "êµ¬ë… í•´ì œ" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³  있지 않습니다." - #: lib/userprofile.php:117 -#, fuzzy msgid "Edit Avatar" -msgstr "아바타" +msgstr "아바타 편집" #: lib/userprofile.php:234 lib/userprofile.php:248 msgid "User actions" @@ -6785,13 +6003,12 @@ msgid "User deletion in progress..." 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" @@ -6805,13 +6022,7 @@ msgstr "메시지" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "ì´ìš©ìž 프로필" - #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" msgstr "관리ìž" @@ -6822,70 +6033,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "몇 ì´ˆ ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "1분 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "1시간 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "하루 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "1달 ì „" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "1ë…„ ì „" -#: lib/webcolor.php:82 -#, fuzzy, 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 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "ë‹¹ì‹ ì´ ë³´ë‚¸ 메시지가 너무 길어요. 최대 140글ìžê¹Œì§€ìž…니다." diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po index 0d377eefaa..cdabe37a3c 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:19+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:34:59+0000\n" "Language-Team: Macedonian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +86,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +125,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:114 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 +168,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +246,7 @@ msgstr "" "Мора да назначите параметар Ñо име 'device' Ñо една од Ñледниве вредноÑти: " "sms, im, none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Ðе можев да го подновам кориÑникот." @@ -267,7 +266,7 @@ msgstr "Ðе може да Ñе зачува профил." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 +275,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 @@ -326,53 +325,54 @@ msgstr "Директни пораки до %s" msgid "All the direct messages sent to %s" msgstr "Сите директни пораки иÑпратени до %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Ðема текÑÑ‚ за пораката!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Ова е предолго. МакÑималната должина изнеÑува %d знаци." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Примачот не е пронајден." -#: actions/apidirectmessagenew.php:150 +#: 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 "Ðема пронајдено ÑÑ‚Ð°Ñ‚ÑƒÑ Ñо таков 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +383,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 +397,134 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "Веќе членувате во таа група." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "Блокирани Ñте од таа група од админиÑтраторот." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +535,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 +609,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:463 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 +622,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 +639,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 "Ðе можете да избришете ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° друг кориÑник." @@ -640,69 +652,75 @@ msgstr "Ðе можете да избришете ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° друг к msgid "No such notice." msgstr "Ðема таква забелешка." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Ðе можете да ја повторувате ÑопÑтвената забелешка." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Ова е предолго. МакÑималната дозволена должина изнеÑува %d знаци." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе е пронајдено." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "Јавна иÑторија на %s" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s подновуввања од Ñите!" @@ -717,16 +735,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 +803,7 @@ msgid "Preview" msgstr "Преглед" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Бриши" @@ -821,11 +843,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 +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" @@ -850,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 msgid "Do not block this user" msgstr "Ðе го блокирај кориÑников" @@ -859,7 +881,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,14 +889,16 @@ 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 "Ðе можев да ги Ñнимам инофрмациите за блокот." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -884,8 +908,8 @@ msgstr "Ðе можев да ги Ñнимам инофрмациите за б #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Ðема таква група." @@ -923,15 +947,15 @@ msgstr "Објави во %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." -msgstr "Ðема код за потврда." +msgstr "Ðема потврден код." #: actions/confirmaddress.php:80 msgid "Confirmation code not found." -msgstr "Кодот за потврда не е пронајден." +msgstr "Потврдниот код не е пронајден." #: actions/confirmaddress.php:85 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 @@ -998,7 +1022,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:1307 msgid "There was a problem with your session token." msgstr "Се појави проблем Ñо Вашиот ÑеÑиÑки жетон." @@ -1032,7 +1056,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 +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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Бриши ја оваа забелешка" @@ -1101,107 +1125,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: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" "$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 +1251,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 +1291,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 +1354,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 +1365,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 +1525,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 "Ðеправилна адреÑа за е-пошта." @@ -1505,7 +1546,7 @@ msgstr "Таа е-поштенÑка адреÑа е веќе зафатена #: actions/emailsettings.php:391 actions/imsettings.php:348 #: actions/smssettings.php:373 msgid "Couldn't insert confirmation code." -msgstr "Кодот за потврда не може да Ñе внеÑе." +msgstr "Потврдниот код не може да Ñе внеÑе." #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1587,7 +1628,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 +1745,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 +1753,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 +1876,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 +1902,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" @@ -1908,7 +1949,7 @@ 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%% по име, локација или опиÑ. Одделете ги " +"Пребарајте групи на %%site.name%% по име, меÑтоположба или опиÑ. Одделете ги " "поимите Ñо празни меÑта; зборовите мора да имаат барем по 3 букви." #: actions/groupsearch.php:58 @@ -1991,7 +2032,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 +2043,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 @@ -2069,8 +2110,8 @@ msgid "" "A confirmation code was sent to the IM address you added. You must approve %" "s for sending messages to you." msgstr "" -"ИÑпративме код за потврда на IM адреÑата што ја додадовте. Мора да го " -"одобрите %S за да ви иÑпраќа пораки." +"ИÑпративме потврден код на IM-адреÑата што ја додадовте. Ќе мора да му " +"одобрите на %S да ви иÑпраќа пораки." #. TRANS: Message given canceling IM address confirmation for the wrong IM address. #: actions/imsettings.php:388 @@ -2143,7 +2184,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2163,15 +2204,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" @@ -2193,7 +2234,7 @@ msgstr "Можете да додадете и лична порака во по #: actions/invite.php:198 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 @@ -2234,7 +2275,7 @@ msgid "" msgstr "" "%1$s Ве кани да Ñе придружите на %2$s (%3$s).\n" "\n" -"%2$s е веб-Ñтраница за микроблогирање што ви овозможува да бидете во тек " +"%2$s е мрежно меÑто за микроблогирање што ви овозможува да бидете во тек " "луѓето што ги познавате и луѓето кои ве интереÑираат.\n" "\n" "Можете да објавувате и новоÑти за ВаÑ, Ваши размиÑли, и наÑтани од Вашиот " @@ -2249,7 +2290,7 @@ msgstr "" "\n" "%5$s\n" "\n" -"Ðко Ñакате да ја иÑпробате оваа друштвена веб-Ñтраница, кликнете на врÑката " +"Ðко Ñакате да ја иÑпробате оваа друштвено мрежно меÑто, кликнете на врÑката " "подолу за да ја прифатите поканата.\n" "\n" "%6$s\n" @@ -2267,9 +2308,7 @@ msgstr "Мора да Ñте најавени за да можете да Ñе msgid "No nickname or ID." msgstr "Ðема прекар или 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s Ñе зачлени во групата %2$s" @@ -2278,52 +2317,50 @@ msgstr "%1$s Ñе зачлени во групата %2$s" msgid "You must be logged in to leave a group." msgstr "Мора да Ñте најавени за да можете да ја напуштите групата." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2368,16 @@ msgstr "" "Поради безбедноÑни причини треба повторно да го внеÑете Вашето кориÑничко " "име и лозинка пред да ги Ñмените Вашите нагодувања." -#: actions/login.php:270 +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Ðајавете Ñе Ñо кориÑничко име и лозинка." + +#: actions/login.php:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2395,12 +2434,15 @@ msgstr "Овој образец Ñлужи за Ñоздавање нова гр msgid "New message" msgstr "Ðова порака" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Ðема Ñодржина!" @@ -2408,7 +2450,8 @@ msgstr "Ðема Ñодржина!" msgid "No recipient specified." msgstr "Ðема назначено примач." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2419,12 +2462,14 @@ msgstr "" msgid "Message sent" msgstr "Пораката е иÑпратена" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Директната порака до %s е иÑпратена." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax-грешка" @@ -2432,7 +2477,7 @@ msgstr "Ajax-грешка" msgid "New notice" msgstr "Ðово забелешка" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Забелешката е објавена" @@ -2470,8 +2515,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 @@ -2485,7 +2530,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 "" "Овој кориÑник не дозволува подбуцнувања или Ñè уште нема потврдено или " "поÑтавено Ñвоја е-пошта." @@ -2541,30 +2586,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Ова не е поддржан формат на податотека." @@ -2669,7 +2714,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 +2726,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,13 +2751,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 @@ -2736,11 +2781,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" @@ -2748,7 +2793,7 @@ msgstr "ОпÑлужувач" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "Име на домаќинот на Ñерверот на веб-Ñтраницата" +msgstr "Ðазив на домаќинот на опÑлужувачот на мрежното меÑто" #: actions/pathsadminpanel.php:242 msgid "Path" @@ -2756,7 +2801,7 @@ msgstr "Патека" #: actions/pathsadminpanel.php:242 msgid "Site path" -msgstr "Патека на веб-Ñтраницата" +msgstr "Патека на мрежното меÑто" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2776,11 +2821,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" @@ -2796,7 +2841,7 @@ msgstr "Ðватари" #: actions/pathsadminpanel.php:284 msgid "Avatar server" -msgstr "Сервер на аватарот" +msgstr "ОпÑлужувач на аватарот" #: actions/pathsadminpanel.php:288 msgid "Avatar path" @@ -2812,7 +2857,7 @@ msgstr "Позадини" #: actions/pathsadminpanel.php:305 msgid "Background server" -msgstr "Сервер на позаднината" +msgstr "OпÑлужувач на позаднината" #: actions/pathsadminpanel.php:309 msgid "Background path" @@ -2848,11 +2893,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" @@ -2864,7 +2909,7 @@ 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%% Ñпоред име, меÑтоположба или интереÑи. Поимите " "одделете ги Ñо празни меÑта. Минималната должина на зборовите изнеÑува 3 " "знаци." @@ -2890,8 +2935,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" @@ -2912,49 +2957,50 @@ 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 "Локација" +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 @@ -2992,7 +3038,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 знаци)." @@ -3016,7 +3062,7 @@ msgstr "Ðе можев да го подновам кориÑникот за а #: actions/profilesettings.php:363 msgid "Couldn't save location prefs." -msgstr "Ðе можев да ги зачувам нагодувањата за локација" +msgstr "Ðе можев да ги зачувам нагодувањата за меÑтоположба" #: actions/profilesettings.php:375 msgid "Couldn't save profile." @@ -3089,10 +3135,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 @@ -3102,9 +3148,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" @@ -3159,7 +3205,7 @@ msgstr "Грешка Ñо кодот за потврдување." #: actions/recoverpassword.php:97 msgid "This confirmation code is too old. Please start again." -msgstr "Овој код за потврда е премногу Ñтар. Почнете од почеток." +msgstr "Овој код потврден код е преÑтар. Почнете од почеток." #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." @@ -3188,7 +3234,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 @@ -3255,7 +3301,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 "Грешка во поÑтавувањето на кориÑникот." @@ -3263,39 +3309,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:507 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. " @@ -3303,35 +3349,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "Сфаќам дека Ñодржината и податоците на %1$s Ñе лични и доверливи." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "ÐвторÑкото правво на мојот текÑÑ‚ и податотеки го има %1$s." + +#. 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, " @@ -3340,7 +3410,7 @@ msgstr "" "Мојот текÑÑ‚ и податотеки Ñе доÑтапни под %s, оÑвен Ñледниве приватни " "податоци: лозинка, е-пошта, IM-адреÑа и телефонÑки број." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3374,7 +3444,7 @@ msgstr "" "Ви благодариме што Ñе зачленивте и Ви пожелуваме пријатни мигови Ñо оваа " "Ñлужба." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3389,10 +3459,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" @@ -3416,7 +3486,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 @@ -3457,7 +3527,7 @@ msgstr "Ðе можете да повторувате ÑопÑтвена заб msgid "You already repeated that notice." msgstr "Веќе ја имате повторено таа забелешка." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Повторено" @@ -3495,10 +3565,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 @@ -3512,11 +3582,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 @@ -3525,19 +3595,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." @@ -3545,13 +3615,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" @@ -3572,7 +3642,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." @@ -3588,7 +3658,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 "Име" @@ -3599,12 +3669,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 "СтатиÑтики" @@ -3696,21 +3766,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 @@ -3769,7 +3839,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 "Членови" @@ -3783,11 +3853,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." @@ -3796,14 +3866,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." @@ -3811,12 +3881,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 "ÐдминиÑтратори" @@ -3893,11 +3963,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 @@ -3907,8 +3977,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%%%%))" @@ -3920,8 +3990,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 @@ -3931,7 +4001,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." @@ -3939,11 +4009,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." @@ -3968,11 +4038,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" @@ -3996,7 +4066,7 @@ msgstr "" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "Контактна е-пошта за Вашата веб-Ñтраница" +msgstr "Контактна е-пошта за Вашето мрежното меÑто" #: actions/siteadminpanel.php:245 msgid "Local" @@ -4008,7 +4078,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" @@ -4016,7 +4086,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" @@ -4046,24 +4116,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 @@ -4226,7 +4296,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 "Снимки" @@ -4260,7 +4330,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" @@ -4286,7 +4357,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 "Ðе можев да ја зачувам претплатата." @@ -4464,10 +4536,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 "Го немате блокирано тој кориÑник." @@ -4493,8 +4561,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 @@ -4504,7 +4572,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." @@ -4579,7 +4647,7 @@ msgstr "" "за забелешките на овој кориÑник. Ðко не Ñакате да Ñе претплатите, едноÑтавно " "кликнете на „Одбиј“" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "Лиценца" @@ -4615,7 +4683,7 @@ msgid "" "subscription. Your subscription token is:" msgstr "" "Претплатата е одобрена, но не е зададена обратна URL-адреÑа. Проверете ги " -"инÑтрукциите на веб-Ñтраницата за да дознаете како Ñе одобрува претплата. " +"инÑтрукциите на мрежното меÑто за да дознаете како Ñе одобрува претплата. " "Жетонот на Вашата претплата е:" #: actions/userauthorization.php:266 @@ -4629,7 +4697,7 @@ msgid "" "subscription." msgstr "" "Претплатата е одбиена, но не е зададена обратна URL-адреÑа. Проверете ги " -"инÑтрукциите на веб-Ñтраницата за да дознаете како Ñе одбива претплата во " +"инÑтрукциите на мрежното меÑто за да дознаете како Ñе одбива претплата во " "потполноÑÑ‚." #: actions/userauthorization.php:303 @@ -4710,43 +4778,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 " @@ -4758,7 +4826,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 " @@ -4767,94 +4835,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4862,72 +4977,116 @@ msgstr "" "Премногу дуплирани пораки во прекратко време; здивнете малку и продолжете за " "неколку минути." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Проблем во зачувувањето на белешката." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "Ðа saveKnownGroups му е уакажан грешен тип" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 -#, 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 "Ðе можев да ги зачувам информациите за локалните групи." @@ -4967,199 +5126,199 @@ msgid "Other" msgstr "Друго" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Страница без наÑлов" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "Главна навигација" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Лично" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Промена на е-пошта, аватар, лозинка, профил" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:465 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:468 msgid "Connect" msgstr "Поврзи Ñе" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Ðдмин" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Покани" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Одјава" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "РегиÑтрација" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Ðајава" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Ðајава" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ðапомош!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Помош" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Пребарајте луѓе или текÑÑ‚" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "Локални прегледи" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "Ðапомена за Ñтраницата" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "Споредна навигација" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Помош" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "За" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "ЧПП" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "УÑлови" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "ПриватноÑÑ‚" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Изворен код" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Контакт" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Значка" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5169,38 +5328,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:846 #, 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:850 #, 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:866 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:873 #, 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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5208,37 +5367,37 @@ msgstr "" "права задржани." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" -msgstr "Пред" +msgstr "Претходно" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "Се очекува коренÑки каналÑки елемент, но добив цел XML документ." @@ -5246,18 +5405,18 @@ msgstr "Се очекува коренÑки каналÑки елемент, н msgid "Can't handle remote content yet." msgstr "Сè уште не е поддржана обработката на далечинÑка Ñодржина." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Сè уште не е поддржана обработката на XML Ñодржина." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." 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 @@ -5281,64 +5440,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:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API-реÑурÑот бара да може и да чита и да запишува, а вие можете Ñамо да " @@ -5471,11 +5630,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 "Менувањето на лозинка не е дозволено" @@ -5491,44 +5650,53 @@ msgstr "Ðаредбата е завршена" msgid "Command failed" msgstr "Ðаредбата не уÑпеа" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Ðе поÑтои забелешка Ñо таков id" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Ðе поÑтои забелешка Ñо таков id." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Ðе можев да пронајдам кориÑник Ñо прекар %s" +msgid "Could not find a user with nickname %s." +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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Ðе можев да пронајдам локален кориÑник Ñо прекар %s" +msgid "Could not find a local user with nickname %s." +msgstr "Ðе можев да најдам локален кориÑник Ñо прекар %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Жалиме, оваа наредба Ñè уште не е имплементирана." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "ИÑпратено подбуцнување на %s" +msgid "Nudge sent to %s." +msgstr "ИÑпратено подбуцнување на %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5539,204 +5707,227 @@ msgstr "" "Претплатници: %2$s\n" "Забелешки: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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: 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Ðе можев да го зачленам кориÑникот %1$s во групата %2$s" +msgid "%1$s joined group %2$s." +msgstr "%1$s Ñе зачлени во групата %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "Ðе можев да го отÑтранам кориÑникот %1$s од групата %2$s." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s ја напушти групата %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 lib/mail.php:268 #, php-format msgid "Location: %s" -msgstr "Локација: %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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Домашна Ñтраница: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "За: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"Пораката е предолга - дозволени Ñе највеќе %1$d знаци, а вие иÑпративте %2$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. -#: lib/command.php:492 -#, php-format -msgid "Direct message to %s sent" -msgstr "Директната порака до %s е иÑпратена" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Забелешката од %s е повторена" +msgid "Notice from %s repeated." +msgstr "Забелешката од %s е повторена." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Грешка при повторувањето на белешката." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"Забелешката е предолга - треба да нема повеќе од %d знаци, а Вие иÑпративте %" -"d" +"Забелешката е предолга - треба да нема повеќе од %1$d знаци, а Вие " +"иÑпративте %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Одговорот на %s е иÑпратен" +msgid "Reply to %s sent." +msgstr "Одговорот на %s е иÑпратен." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Грешка при зачувувањето на белешката." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Ðазначете го името на кориÑникот на којшто Ñакате да Ñе претплатите" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Ðазначете го името на кориÑникот на којшто Ñакате да Ñе претплатите." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Ðе можете да Ñе претплаќате на OMB профили по наредба." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Претплатено на %s" +msgid "Subscribed to %s." +msgstr "Претплатено на %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "Ðазначете го името на кориÑникот од кого откажувате претплата." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "Претплатата на %s е откажана" +msgid "Unsubscribed from %s." +msgstr "Откажана претплата на %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Ðаредбата Ñè уште не е имплементирана." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "ИзвеÑтувањето е иÑклучено." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Ðе можам да иÑклучам извеÑтување." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "ИзвеÑтувањето е вклучено." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Ðе можам да вклучам извеÑтување." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Ðаредбата за најава е оневозможена" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Ðаредбата за најава е оневозможена." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "Оваа врÑка може да Ñе употреби Ñамо еднаш, и трае Ñамо 2 минути: %s" -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "Откажана претплата на %s" +msgid "Unsubscribed %s." +msgstr "Откажана претплата на %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Ðе Ñте претплатени никому." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ðе ни го иÑпративте тој профил." msgstr[1] "Ðе ни го иÑпративте тој профил." -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Ðикој не е претплатен на ВаÑ." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Оддалечена претплата" msgstr[1] "Оддалечена претплата" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Ðе членувате во ниедна група." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Ðе ни го иÑпративте тој профил." msgstr[1] "Ðе ни го иÑпративте тој профил." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5782,9 +5973,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" @@ -5796,7 +5987,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" @@ -5920,7 +6111,7 @@ msgstr "Ознака" #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" -msgstr "Одберете ознака за да ја уточните лиÑтата" +msgstr "Одберете ознака за да го ограничите ÑпиÑокот" #: lib/galleryaction.php:143 msgid "Go" @@ -5947,7 +6138,7 @@ 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 @@ -6010,11 +6201,6 @@ msgstr "Оваа Ñтраница не е доÑтапна во форматот msgid "Unsupported image file format." msgstr "Ðеподдржан фомрат на Ñлики." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "Ова е предолго. МакÑималната должина е 140 знаци." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Делумно подигање." @@ -6111,8 +6297,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" @@ -6139,19 +6335,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" @@ -6173,30 +6369,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 " @@ -6224,13 +6420,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" @@ -6264,13 +6460,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" @@ -6301,7 +6497,7 @@ msgstr "" "\n" "%4$s\n" "\n" -"Погледнете лиÑта на омилените забелешки на %1$s тука:\n" +"Погледнете ÑпиÑок на омилените забелешки на %1$s тука:\n" "\n" "%5$s\n" "\n" @@ -6309,7 +6505,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 +6516,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" @@ -6367,7 +6563,7 @@ msgstr "" "\n" "%6$s\n" "\n" -"Еве лиÑта за Ñите @-одговори за ваÑ:\n" +"Еве ÑпиÑок на Ñите @-одговори за ваÑ:\n" "\n" "%7$s\n" "\n" @@ -6389,7 +6585,7 @@ msgstr "" "впуштите во разговор Ñо други кориÑници. Луѓето можат да ви иÑпраќаат пораки " "што ќе можете да ги видите Ñамо Вие." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "од" @@ -6450,27 +6646,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" @@ -6480,41 +6676,41 @@ msgstr "ИÑпрати директна забелешка" msgid "To" msgstr "За" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "РаÑположиви знаци" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "ИÑпрати" +msgstr "Прати" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "ИÑпрати забелешка" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Што има ново, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Приложи" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Приложи податотека" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Споделете ја мојата локација." - -#: lib/noticeform.php:215 -msgid "Do not share my location" -msgstr "Ðе ја прикажувај мојата локација" +msgstr "Прикажи ја мојата меÑтоположба." #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "Ðе ја прикажувај мојата меÑтоположба" + +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6523,51 +6719,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "интернет" + +#: lib/noticelist.php:568 msgid "in context" msgstr "во контекÑÑ‚" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Повторено од" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Одговори на забелешкава" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Одговор" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Забелешката е повторена" @@ -6640,7 +6840,7 @@ msgstr "Ваши иÑпратени пораки" msgid "Tags in %s's notices" msgstr "Ознаки во забелешките на %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Ðепознато" @@ -6677,7 +6877,7 @@ msgstr "Дневен проÑек" msgid "All groups" msgstr "Сите групи" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Ðеимплементиран метод." @@ -6701,7 +6901,7 @@ msgstr "Избрани" msgid "Popular" msgstr "Популарно" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Ðема return-to аргументи." @@ -6722,7 +6922,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 "Ðе е зададен кориÑник за еднокориÑничкиот режим." @@ -6736,7 +6936,7 @@ msgstr "Стави го кориÑников во пеÑочен режим" #: lib/searchaction.php:120 msgid "Search site" -msgstr "Пребарај по веб-Ñтраницата" +msgstr "Пребарај по мрежното меÑто" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6756,7 +6956,7 @@ msgstr "Луѓе" #: lib/searchgroupnav.php:81 msgid "Find people on this site" -msgstr "Пронајдете луѓе на оваа веб-Ñтраница" +msgstr "Пронајдете луѓе на ова мрежно меÑто" #: lib/searchgroupnav.php:83 msgid "Find content of notices" @@ -6764,7 +6964,7 @@ msgstr "Пронајдете Ñодржини на забелешките" #: lib/searchgroupnav.php:85 msgid "Find groups on this site" -msgstr "Пронајдете групи на оваа веб-Ñтраница" +msgstr "Пронајдете групи на ова мрежно меÑто" #: lib/section.php:89 msgid "Untitled section" @@ -6820,6 +7020,56 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Зачувувањето на мотивот не уÑпеа." + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"Изгледот Ñодржи неважечки назив на податотека или папка. Дозволени Ñе Ñамо " +"ASCII-букви, бројки, долна црта и знак за минуÑ." + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "Овој изглед Ñодржи небезбедни податотечни наÑтавки." + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Изгледот Ñодржи податотека од типот „.%s“, која не е дозволена." + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Грешка при отворањето на архивот за мотив." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Ðајактивни објавувачи" @@ -6848,11 +7098,6 @@ msgstr "Откажи претплата од овој корÑиник" msgid "Unsubscribe" msgstr "Откажи ја претплатата" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "КориÑникот %s (%d) нема профилен запиÑ." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Уреди аватар" @@ -6900,56 +7145,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "пред неколку Ñекунди" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "пред една минута" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "пред еден чаÑ" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "пред еден ден" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "пред еден меÑец" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "пред една година" @@ -6962,9 +7207,3 @@ msgstr "%s не е важечка боја!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s не е важечка боја! КориÑтете 3 или 6 шеÑнаеÑетни (hex) знаци." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Пораката е предолга - дозволени Ñе највеќе %1$d знаци, а вие иÑпративте %2$d." diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po index 178ed2de86..4b23489ada 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:23+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:01+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,38 +84,38 @@ 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 -#, fuzzy msgid "No such page." -msgstr "Ingen slik side" +msgstr "Ingen slik side." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -123,39 +123,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:114 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 " @@ -165,89 +165,56 @@ 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 +#: 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 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)." +"Vær den første til Ã¥ [poste om dette emnet](%%%%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 "" -"Hvorfor ikke [opprette en konto](%%%%action.register%%%%) og sÃ¥ knuff %s " -"eller post en notis for Ã¥ fÃ¥ hans eller hennes oppmerksomhet." +"Hvorfor ikke [registrere en konto](%%action.register%%) og vær den første " +"til Ã¥ poste en!" #. 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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Klarte ikke Ã¥ oppdatere bruker." +msgstr "Du mÃ¥ angi en verdi for parameteren 'device' med en av: sms, im, none." #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 @@ -259,14 +226,9 @@ msgstr "Klarte ikke Ã¥ oppdatere bruker." msgid "User has no profile." msgstr "Brukeren har ingen profil." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Klarte ikke Ã¥ lagre profil." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -288,12 +250,6 @@ msgstr "" msgid "Unable to save your design settings." msgstr "Kunne ikke lagre dine innstillinger for utseende." -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Klarte ikke Ã¥ oppdatere bruker." - #: actions/apiblockcreate.php:105 msgid "You cannot block yourself!" msgstr "Du kan ikke blokkere deg selv!" @@ -326,47 +282,48 @@ msgstr "Direktemeldinger til %s" msgid "All the direct messages sent to %s" msgstr "Alle direktemeldinger sendt til %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Ingen meldingstekst!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Dette er for langt. Meldingen kan bare være %d tegn lang." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Fant ikke mottakeren." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -381,9 +338,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." @@ -393,124 +350,134 @@ 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Ugyldig 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 -#, 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 "Gruppe ikke funnet!" +msgstr "Gruppe ikke funnet." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +msgid "Upload failed." +msgstr "Opplasting feilet." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Ingen verdi for oauth_token er oppgitt." @@ -521,15 +488,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 @@ -593,12 +560,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:463 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 @@ -606,8 +573,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" @@ -623,11 +590,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." @@ -636,67 +603,73 @@ msgstr "Du kan ikke slette statusen til en annen bruker." msgid "No such notice." msgstr "Ingen slik notis." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Kan ikke gjenta din egen notis." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ikke funnet." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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!" @@ -711,16 +684,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." @@ -765,7 +742,7 @@ msgstr "Avatarinnstillinger" #: actions/avatarsettings.php:127 actions/avatarsettings.php:205 #: actions/grouplogo.php:202 actions/grouplogo.php:262 msgid "Original" -msgstr "Original" +msgstr "Opprinnelig" #: actions/avatarsettings.php:142 actions/avatarsettings.php:217 #: actions/grouplogo.php:213 actions/grouplogo.php:274 @@ -773,7 +750,7 @@ msgid "Preview" msgstr "ForhÃ¥ndsvis" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Slett" @@ -813,11 +790,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 " @@ -832,17 +809,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 "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" @@ -851,23 +827,24 @@ 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 -#, 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 "Blokker denne brukeren" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "Kunne ikke lagre blokkeringsinformasjon." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -877,8 +854,8 @@ msgstr "Kunne ikke lagre blokkeringsinformasjon." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Ingen slik gruppe." @@ -910,9 +887,9 @@ msgstr "Opphev blokkering av denne brukeren" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Post til " +msgstr "Post til %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -928,9 +905,9 @@ msgstr "Den bekreftelseskoden er ikke til deg." #. 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 "Ukjent adressetype %s" +msgstr "Ukjent adressetype %s." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -989,12 +966,6 @@ msgstr "Program ikke funnet." msgid "You are not the owner of this application." msgstr "Du er ikke eieren av dette programmet." -#: actions/deleteapplication.php:102 actions/editapplication.php:127 -#: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 -msgid "There was a problem with your session token." -msgstr "" - #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 msgid "Delete application" msgstr "Slett program" @@ -1025,7 +996,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." @@ -1056,7 +1027,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Slett denne notisen" @@ -1090,51 +1061,59 @@ msgstr "Slett denne brukeren" #: actions/designadminpanel.php:63 lib/accountsettingsaction.php:139 #: lib/groupnav.php:119 msgid "Design" -msgstr "" +msgstr "Utseende" #: actions/designadminpanel.php:74 msgid "Design settings for this StatusNet site." -msgstr "" +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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Tema ikke tilgjengelig: %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" @@ -1143,57 +1122,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 "" +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 @@ -1203,9 +1190,9 @@ 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 "" +msgstr "Lagre utseende" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" @@ -1317,7 +1304,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." @@ -1356,7 +1344,6 @@ msgstr "NÃ¥værende bekreftede e-postadresse" #: 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 "Fjern" @@ -1375,7 +1362,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 "Avbryt" @@ -1390,7 +1376,6 @@ msgstr "E-postadresse («brukernavn@eksempel.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 "Legg til" @@ -1416,16 +1401,14 @@ msgstr "Angi en ny e-postadresse for Ã¥ poste til; fjerner 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 -#, fuzzy msgctxt "BUTTON" msgid "New" msgstr "Ny" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Innstillinger" +msgstr "E-postinnstillinger" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1464,9 +1447,8 @@ msgstr "Publiser en MicroID for min e-postadresse." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Innstillinger lagret." +msgstr "E-postinnstillinger lagret." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1479,7 +1461,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." @@ -1521,15 +1503,13 @@ msgstr "Ingen ventende bekreftelse Ã¥ avbryte." #. 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 "Det er feil IM-adresse." +msgstr "Dette er feil e-postadresse." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Bekreftelse avbrutt." +msgstr "E-postbekreftelse avbrutt." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1539,9 +1519,8 @@ msgstr "Det er ikke din e-postadresse." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Adressen ble fjernet." +msgstr "E-postadressen ble fjernet." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1552,7 +1531,7 @@ msgstr "Ingen innkommende e-postadresse." #: actions/emailsettings.php:504 actions/emailsettings.php:528 #: actions/smssettings.php:578 actions/smssettings.php:602 msgid "Couldn't update user record." -msgstr "" +msgstr "Kunne ikke oppdatere brukeroppføring." #. TRANS: Message given after successfully removing an incoming e-mail address. #: actions/emailsettings.php:508 actions/smssettings.php:581 @@ -1618,17 +1597,17 @@ msgstr "%s sine favorittnotiser" #: actions/favoritesrss.php:115 #, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "" +msgstr "Oppdateringer markert som favoritt av %1$s pÃ¥ %2$s!" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" -msgstr "" +msgstr "Profilerte brukere" #: actions/featured.php:71 #, php-format msgid "Featured users, page %d" -msgstr "" +msgstr "Profilerte brukere, side %d" #: actions/featured.php:99 #, php-format @@ -1653,19 +1632,19 @@ msgstr "Ingen opplastede vedlegg." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" -msgstr "" +msgstr "Forventet ikke denne responsen!" #: actions/finishremotesubscribe.php:80 msgid "User being listened to does not exist." -msgstr "" +msgstr "Brukeren som lyttes til finnes ikke." #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" -msgstr "" +msgstr "Du kan bruke det lokale abonnementet!" #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." -msgstr "" +msgstr "Brukeren har blokkert deg fra Ã¥ abonnere." #: actions/finishremotesubscribe.php:110 msgid "You are not authorized." @@ -1677,12 +1656,11 @@ msgstr "" #: actions/finishremotesubscribe.php:118 msgid "Remote service uses unknown version of OMB protocol." -msgstr "" +msgstr "Fjerntjeneste bruker ukjent versjon av OMB-protokollen." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Feil ved repetering av notis." +msgstr "Feil ved oppdatering av fjernprofil." #: actions/getfile.php:79 msgid "No such file." @@ -1710,13 +1688,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." @@ -1727,7 +1705,7 @@ msgstr "Ingen gruppe oppgitt." #: actions/groupblock.php:91 msgid "Only an admin can block group members." -msgstr "" +msgstr "Bare en admin kan blokkere gruppemedlemmer." #: actions/groupblock.php:95 msgid "User is already blocked from group." @@ -1748,6 +1726,9 @@ msgid "" "will be removed from the group, unable to post, and unable to subscribe to " "the group in the future." msgstr "" +"Er du sikker pÃ¥ at du vil blokkere brukeren «%1$s» fra gruppen «%2$s»? De vil " +"bli fjernet fra gruppen, kan ikke poste og kan ikke abonnere pÃ¥ gruppen i " +"fremtiden." #. TRANS: Submit button title for 'No' when blocking a user from a group. #: actions/groupblock.php:182 @@ -1761,7 +1742,7 @@ msgstr "Blokker denne brukeren fra denne gruppen" #: actions/groupblock.php:206 msgid "Database error blocking user from group." -msgstr "" +msgstr "Databasefeil ved blokkering av bruker fra gruppe." #: actions/groupbyid.php:74 actions/userbyid.php:70 msgid "No ID." @@ -1769,27 +1750,28 @@ msgstr "Ingen ID." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." -msgstr "" +msgstr "Du mÃ¥ være logget inn for Ã¥ redigere en gruppe." #: actions/groupdesignsettings.php:144 msgid "Group design" -msgstr "" +msgstr "Gruppeutseende" #: actions/groupdesignsettings.php:155 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." msgstr "" +"Tilpass hvordan gruppen din ser ut med et bakgrunnsbilde og en fargepalett " +"av ditt valg." #: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186 #: lib/designsettings.php:391 lib/designsettings.php:413 -#, fuzzy msgid "Couldn't update your design." -msgstr "Klarte ikke Ã¥ oppdatere bruker." +msgstr "Kunne ikke oppdatere utseende." #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 msgid "Design preferences saved." -msgstr "" +msgstr "Utseende lagret." #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" @@ -1803,7 +1785,7 @@ msgstr "Du kan laste opp en logo for gruppen din. Maks filstørrelse er %s." #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." -msgstr "" +msgstr "Velg et kvadratisk omrÃ¥de av bildet som skal bli logoen." #: actions/grouplogo.php:399 msgid "Logo updated." @@ -1851,7 +1833,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" @@ -1924,10 +1906,12 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"Hvorfor ikke [registrere en konto](%%action.register%%) og [opprette gruppen]" +"(%%action.newgroup%%) selv!" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "Bare en admin kan oppheve blokkering av gruppemedlemmer." #: actions/groupunblock.php:95 msgid "User is not blocked from group." @@ -1951,11 +1935,13 @@ msgid "" "You can send and receive notices through Jabber/GTalk [instant messages](%%" "doc.im%%). Configure your address and settings below." msgstr "" +"Du kan sende og motta notiser gjennom Jabber/GTalk [direktemeldinger](%%doc." +"im%%). Konfigurer adresse og innstillinger under." #. 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 "" +msgstr "Direktemeldinger ikke tilgjengelig." #. TRANS: Form legend for IM settings form. #. TRANS: Field label for IM address input in IM settings form. @@ -1986,27 +1972,28 @@ 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- og GTalk-adresse, som «brukernavn@example.org». Husk Ã¥ legge %s til " +"vennelisten din i direktemeldingsklienten din eller pÃ¥ GTalk." #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Innstillinger" +msgstr "Direktemeldingsinnstillinger" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 msgid "Send me notices through Jabber/GTalk." -msgstr "" +msgstr "Send meg notiser gjennom Jabber/GTalk." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:166 msgid "Post a notice when my Jabber/GTalk status changes." -msgstr "" +msgstr "Post en notis nÃ¥r min Jabber/Gtalk-status endres." #. 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 "" +msgstr "Send meg svar gjennom Jabber/GTalk fra personer jeg ikke abonnerer pÃ¥." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:179 @@ -2041,7 +2028,7 @@ msgstr "Det er allerede din 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 "" +msgstr "Jabber-ID tilhører allerede en annen bruker." #. TRANS: Message given saving valid IM address that is to be confirmed. #. TRANS: %s is the IM address set for the site. @@ -2061,15 +2048,13 @@ msgstr "Det er feil IM-adresse." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Kunne ikke slette e-postbekreftelse." +msgstr "Kunne ikke slette direktemeldingsbekreftelse." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Bekreftelse avbrutt." +msgstr "Direktemeldingsbekreftelse avbrutt." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2079,9 +2064,8 @@ msgstr "Det er ikke din Jabber ID." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Adressen ble fjernet." +msgstr "Direktemeldingsadressen ble fjernet." #: actions/inbox.php:59 #, php-format @@ -2103,9 +2087,9 @@ msgid "Invites have been disabled." msgstr "Invitasjoner har blitt deaktivert." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." -msgstr "Du mÃ¥ være innlogget for Ã¥ invitere andre brukere til Ã¥ bruke %s" +msgstr "Du mÃ¥ være innlogget for Ã¥ invitere andre brukere til Ã¥ bruke %s." #: actions/invite.php:72 #, php-format @@ -2122,11 +2106,11 @@ msgstr "Inviter nye brukere" #: actions/invite.php:128 msgid "You are already subscribed to these users:" -msgstr "" +msgstr "Du abonnerer allerede pÃ¥ disse brukerne:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2135,6 +2119,7 @@ msgstr "%1$s (%2$s)" msgid "" "These people are already users and you were automatically subscribed to them:" msgstr "" +"Disse personene er allerede brukere og du ble automatisk abonnent pÃ¥ dem:" #: actions/invite.php:144 msgid "Invitation(s) sent to the following people:" @@ -2145,11 +2130,15 @@ msgid "" "You will be notified when your invitees accept the invitation and register " "on the site. Thanks for growing the community!" msgstr "" +"Du vil bli varslet nÃ¥r dine inviterte aksepterer invitasjonen og registrerer " +"seg pÃ¥ nettstedet. Takk for at du hjelper oss Ã¥ vokse!" #: actions/invite.php:162 msgid "" "Use this form to invite your friends and colleagues to use this service." msgstr "" +"Bruk dette skjemaet for Ã¥ invitere dine venner og kollegaer til Ã¥ bruke " +"denne tjenesten." #: actions/invite.php:187 msgid "Email addresses" @@ -2165,7 +2154,7 @@ msgstr "Personlig melding" #: actions/invite.php:194 msgid "Optionally add a personal message to the invitation." -msgstr "" +msgstr "Om du vil kan du legge til en personlig melding i invitasjonen." #. TRANS: Send button for inviting friends #: actions/invite.php:198 @@ -2240,9 +2229,7 @@ msgstr "Du mÃ¥ være innlogget for Ã¥ bli med i en gruppe." msgid "No nickname or ID." msgstr "ngen kallenavn eller 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s ble med i gruppen %2$s" @@ -2251,65 +2238,67 @@ msgstr "%1$s ble med i gruppen %2$s" msgid "You must be logged in to leave a group." msgstr "Du mÃ¥ være innlogget for Ã¥ forlate en gruppe." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Du er ikke et medlem av den gruppen." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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 -#, fuzzy +#: actions/login.php:154 actions/otp.php:120 msgid "Error setting user. You are probably not authorized." -msgstr "Ikke autorisert." +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." 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Logg inn med ditt brukernavn og passord. Har du ikke et brukernavn ennÃ¥? " -"[Opprett](%%action.register%%) en ny konto." +"Har du ikke et brukernavn ennÃ¥? [Opprett](%%action.register%%) en ny konto." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2321,9 +2310,9 @@ msgid "%1$s is already an admin for group \"%2$s\"." msgstr "%1$s er allerede en administrator for gruppen «%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 "Klarte ikke Ã¥ oppdatere bruker." +msgstr "Kan ikke hente medlemsoppføring for %$1s i gruppen %2$s." #: actions/makeadmin.php:146 #, php-format @@ -2331,9 +2320,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "Kan ikke gjøre %1$s til administrator for gruppen %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Ingen nÃ¥værende status" +msgstr "Ingen nÃ¥værende status." #: actions/newapplication.php:52 msgid "New Application" @@ -2341,20 +2329,19 @@ msgstr "Nytt program" #: actions/newapplication.php:64 msgid "You must be logged in to register an application." -msgstr "" +msgstr "Du mÃ¥ være logget inn for Ã¥ registrere et program." #: actions/newapplication.php:143 msgid "Use this form to register a new application." -msgstr "" +msgstr "Bruk dette skjemaet for Ã¥ registrere et nytt program." #: actions/newapplication.php:176 msgid "Source URL is required." -msgstr "" +msgstr "Nettadresse til kilde kreves." #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" +msgstr "Kunne ikke opprette program." #: actions/newgroup.php:53 msgid "New group" @@ -2368,12 +2355,15 @@ msgstr "Bruk dette skjemaet for Ã¥ opprette en ny gruppe." msgid "New message" msgstr "Ny melding" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Du kan ikke sende en melding til denne brukeren." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Inget innhold." @@ -2381,21 +2371,25 @@ msgstr "Inget innhold." msgid "No recipient specified." msgstr "Ingen mottaker oppgitt." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" +"Ikke send en melding til degselv; bare hvisk det stille til degselv istedet." #: actions/newmessage.php:181 msgid "Message sent" msgstr "Melding sendt" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Direktemelding til %s sendt." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax-feil" @@ -2403,7 +2397,7 @@ msgstr "Ajax-feil" msgid "New notice" msgstr "Ny notis" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Notis postet" @@ -2413,6 +2407,8 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" +"Søk i notiser pÃ¥ %%site.name%% etter deres innhold. Separer nøkkelord med " +"mellomrom; de mÃ¥ være minst 3 tegn lange." #: actions/noticesearch.php:78 msgid "Text search" @@ -2429,6 +2425,8 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"Vær den første til Ã¥ [poste om dette emnet](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/noticesearch.php:124 #, php-format @@ -2436,6 +2434,9 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" +"Hvorfor ikke [registrere en konto](%%%%action.register%%%%) og vær den " +"første til Ã¥ [poste om dette emnet](%%%%action.newnotice%%%%?status_textarea=" +"%s)!" #: actions/noticesearchrss.php:96 #, php-format @@ -2449,7 +2450,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Ã¥." @@ -2464,7 +2465,7 @@ msgstr "Knuff sendt!" #: actions/oauthappssettings.php:59 msgid "You must be logged in to list your applications." -msgstr "" +msgstr "Du mÃ¥ være logget inn for Ã¥ liste opp programmene dine." #: actions/oauthappssettings.php:74 msgid "OAuth applications" @@ -2472,16 +2473,16 @@ msgstr "OAuth-program" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Program du har registrert" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "Du har ikke registrert noen program ennÃ¥." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" +msgstr "Tilkoblede program" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." @@ -2492,9 +2493,9 @@ msgid "You are not a user of that application." msgstr "Du er ikke bruker av dette programmet." #: actions/oauthconnectionssettings.php:186 -#, fuzzy, php-format +#, php-format msgid "Unable to revoke access for app: %s." -msgstr "Kunne ikke tilbakekalle tilgang for programmet: " +msgstr "Kunne ikke tilbakekalle tilgang for programmet: %s." #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." @@ -2502,33 +2503,32 @@ msgstr "Du har ikke tillatt noen programmer Ã¥ bruke din konto." #: actions/oauthconnectionssettings.php:211 msgid "Developers can edit the registration settings for their applications " -msgstr "" +msgstr "Utviklere kan redigere registreringsinnstillingene for sine program " -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "Brukeren har ingen profil." +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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "innholdstype " +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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Ikke et støttet dataformat." @@ -2546,7 +2546,7 @@ msgstr "Andre innstillinger" #: actions/othersettings.php:71 msgid "Manage various other options." -msgstr "" +msgstr "HÃ¥ndter diverse andre alternativ." #: actions/othersettings.php:108 msgid " (free service)" @@ -2554,46 +2554,35 @@ msgstr " (gratis tjeneste)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "Forkort nettadresser med" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "" +msgstr "Automatisk fortkortelsestjeneste Ã¥ bruke." #: actions/othersettings.php:122 msgid "View profile designs" -msgstr "" +msgstr "Vis profilutseender" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "" +msgstr "Vis eller skjul profilutseender." #: actions/othersettings.php:153 -#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "Bioen er for lang (max 140 tegn)" +msgstr "Navnet pÃ¥ nettadresseforkortelsestjenesten er for lang (maks 50 tegn)." #: actions/otp.php:69 msgid "No user ID specified." msgstr "Ingen bruker-ID spesifisert." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "Nytt nick" - -#: actions/otp.php:90 -msgid "No login token requested." -msgstr "" +msgstr "Ingen notis spesifisert." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "Nytt nick" - -#: actions/otp.php:104 -msgid "Login token expired." -msgstr "" +msgstr "Ugyldig symbol." #: actions/outbox.php:58 #, php-format @@ -2634,7 +2623,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" @@ -2646,11 +2635,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." @@ -2671,33 +2660,33 @@ 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 "" +msgstr "Stier" #: actions/pathsadminpanel.php:70 msgid "Path and server settings for this StatusNet site." -msgstr "" +msgstr "Sti- og tjenerinnstillinger for dette StatusNet-nettstedet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Tema ikke tilgjengelig: %s" +msgstr "Temamappe ikke lesbar: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Avatarmappe" +msgstr "Avatarmappe ikke skrivbar: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Bakgrunnsmappe" +msgstr "Bakgrunnsmappe ikke skrivbar: %s." #: actions/pathsadminpanel.php:177 #, php-format msgid "Locales directory not readable: %s." -msgstr "" +msgstr "Lokaliseringsmappe ikke lesbar: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2717,27 +2706,27 @@ msgstr "Vertsnavn for nettstedets tjener." #: actions/pathsadminpanel.php:242 msgid "Path" -msgstr "" +msgstr "Sti" #: actions/pathsadminpanel.php:242 msgid "Site path" -msgstr "" +msgstr "Nettstedssti" #: actions/pathsadminpanel.php:246 msgid "Path to locales" -msgstr "" +msgstr "Lokaliseringssti" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" -msgstr "" +msgstr "Lokaliseringsmappesti" #: actions/pathsadminpanel.php:250 msgid "Fancy URLs" -msgstr "" +msgstr "Pyntede nettadresser" #: actions/pathsadminpanel.php:252 msgid "Use fancy (more readable and memorable) URLs?" -msgstr "" +msgstr "Bruk pyntede (mer lesbare og lettere Ã¥ huske) nettadresser?" #: actions/pathsadminpanel.php:259 msgid "Theme" @@ -2821,7 +2810,7 @@ msgstr "Tjener SSL-forespørsler skal vises til" #: actions/pathsadminpanel.php:352 msgid "Save paths" -msgstr "" +msgstr "Lagre stier" #: actions/peoplesearch.php:52 #, php-format @@ -2837,24 +2826,23 @@ msgid "People search" msgstr "Personsøk" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Ugyldig e-postadresse" +msgstr "Ikke en gyldig personmerkelapp: %s." #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Mikroblogg av %s" +msgstr "Brukere som har merket seg selv med %1$s - side %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Ugyldig symbol." +msgstr "Ugyldig notisinnhold." #: actions/postnotice.php:101 #, php-format msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’." -msgstr "" +msgstr "Notislisensen ‘%1$s’ er ikke kompatibel med nettstedslisensen ‘%2$s’." #: actions/profilesettings.php:60 msgid "Profile settings" @@ -2875,49 +2863,49 @@ 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 "" +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 "" +msgstr "Hvor du er, for eksempel «By, fylke (eller region), land»" #: actions/profilesettings.php:138 msgid "Share my current location when posting notices" -msgstr "" +msgstr "Del min nÃ¥værende plassering nÃ¥r jeg poster notiser" #: actions/profilesettings.php:145 actions/tagother.php:149 #: actions/tagother.php:209 lib/subscriptionlist.php:106 @@ -2929,6 +2917,8 @@ msgstr "Tagger" msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" msgstr "" +"Merkelapper for degselv (bokstaver, nummer, -, ., og _), adskilt med komma " +"eller mellomrom" #: actions/profilesettings.php:151 msgid "Language" @@ -2952,7 +2942,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)." @@ -2966,27 +2956,25 @@ msgid "Language is too long (max 50 chars)." msgstr "SprÃ¥k er for langt (maks 50 tegn)." #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "Ugyldig hjemmeside '%s'" +msgstr "Ugyldig merkelapp: «%s»" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." -msgstr "" +msgstr "Kunne ikke oppdatere bruker for autoabonnering." #: actions/profilesettings.php:363 -#, fuzzy msgid "Couldn't save location prefs." -msgstr "Klarte ikke Ã¥ lagre profil." +msgstr "Kunne ikke lagre plasseringsinnstillinger." #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Klarte ikke Ã¥ lagre profil." #: actions/profilesettings.php:383 -#, fuzzy msgid "Couldn't save tags." -msgstr "Klarte ikke Ã¥ lagre profil." +msgstr "Kunne ikke lagre merkelapper." #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 @@ -2994,9 +2982,9 @@ msgid "Settings saved." msgstr "Innstillinger lagret." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "Over sidegrensen (%s)" +msgstr "Over sidegrensen (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3005,11 +2993,11 @@ msgstr "Kunne ikke hente offentlig strøm." #: actions/public.php:130 #, php-format msgid "Public timeline, page %d" -msgstr "" +msgstr "Offentlig tidslinje, side %d" #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" -msgstr "" +msgstr "Offentlig tidslinje" #: actions/public.php:160 msgid "Public Stream Feed (RSS 1.0)" @@ -3029,16 +3017,20 @@ msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." msgstr "" +"Dette er den offentlige tidslinjen for %%site.name%% men ingen har postet " +"noe ennÃ¥." #: actions/public.php:191 msgid "Be the first to post!" -msgstr "" +msgstr "Vær den første til Ã¥ poste!" #: actions/public.php:195 #, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to post!" msgstr "" +"Hvorfor ikke [registrere en konto](%%action.register%%) og vær den første " +"til Ã¥ poste!" #: actions/public.php:242 #, php-format @@ -3048,6 +3040,10 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" +"Dette er %%site.name%%, en [mikroblogg](http://no.wikipedia.org/wiki/" +"Mikroblogg)tjeneste basert pÃ¥ det frie programvareverktøyet [StatusNet]" +"(http://status.net). [Bli med nÃ¥](%%action.register%%) for Ã¥ dele notiser om " +"degselv med venner, familie og kollegaer! ([Les mer](%%doc.help%%))" #: actions/public.php:247 #, php-format @@ -3056,15 +3052,18 @@ msgid "" "blogging) service based on the Free Software [StatusNet](http://status.net/) " "tool." msgstr "" +"Dette er %%site.name%%, en [mikroblogg](http://no.wikipedia.org/wiki/" +"Mikroblogg)tjeneste basert pÃ¥ det frie programvareverktøyet [StatusNet]" +"(http://status.net)." #: actions/publictagcloud.php:57 msgid "Public tag cloud" -msgstr "" +msgstr "Offentlig merkelappsky" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "" +msgstr "Dette er de siste mest populære merkelappene pÃ¥ %s " #: actions/publictagcloud.php:69 #, php-format @@ -3073,7 +3072,7 @@ msgstr "" #: actions/publictagcloud.php:72 msgid "Be the first to post one!" -msgstr "" +msgstr "Vær den første til Ã¥ poste en!" #: actions/publictagcloud.php:75 #, php-format @@ -3081,10 +3080,12 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" msgstr "" +"Hvorfor ikke [registrere en konto](%%action.register%%) og vær den første " +"til Ã¥ poste en!" #: actions/publictagcloud.php:134 msgid "Tag cloud" -msgstr "" +msgstr "Merkelappsky" #: actions/recoverpassword.php:36 msgid "You are already logged in!" @@ -3092,15 +3093,15 @@ msgstr "Du er allerede logget inn!" #: actions/recoverpassword.php:62 msgid "No such recovery code." -msgstr "" +msgstr "Ingen slik gjenopprettingskode." #: actions/recoverpassword.php:66 msgid "Not a recovery code." -msgstr "" +msgstr "Ikke en gjenopprettingskode." #: actions/recoverpassword.php:73 msgid "Recovery code for unknown user." -msgstr "" +msgstr "Gjenopprettingskode for ukjent bruker." #: actions/recoverpassword.php:86 msgid "Error with confirmation code." @@ -3119,22 +3120,24 @@ msgid "" "If you have forgotten or lost your password, you can get a new one sent to " "the email address you have stored in your account." msgstr "" +"Om du har glemt eller mistet passordet ditt kan du fÃ¥ et nytt tilsendt pÃ¥ e-" +"postadressen du har lagret pÃ¥ kontoen din." #: actions/recoverpassword.php:158 msgid "You have been identified. Enter a new password below. " -msgstr "" +msgstr "Du har blitt identifisert. Skriv inn et nytt passord nedenfor. " #: actions/recoverpassword.php:188 msgid "Password recovery" -msgstr "" +msgstr "Passordgjenoppretting" #: actions/recoverpassword.php:191 msgid "Nickname or email address" -msgstr "" +msgstr "Kallenavn eller e-postadresse" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." -msgstr "" +msgstr "Ditt kallenavn pÃ¥ denne tjeneren eller din registrerte e-postadresse." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" @@ -3142,15 +3145,15 @@ msgstr "Gjenopprett" #: actions/recoverpassword.php:208 msgid "Reset password" -msgstr "" +msgstr "Tilbakestill passord" #: actions/recoverpassword.php:209 msgid "Recover password" -msgstr "" +msgstr "Gjenopprett passord" #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" -msgstr "" +msgstr "Passordgjenoppretting forespurt" #: actions/recoverpassword.php:213 msgid "Unknown action" @@ -3166,19 +3169,19 @@ msgstr "Nullstill" #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." -msgstr "" +msgstr "Skriv inn et kallenavn eller en e-postadresse." #: actions/recoverpassword.php:282 msgid "No user with that email address or username." -msgstr "" +msgstr "Ingen bruker med den e-postadressen eller det kallenavnet." #: actions/recoverpassword.php:299 msgid "No registered email address for that user." -msgstr "" +msgstr "Ingen registrert e-postadresse for den brukeren." #: actions/recoverpassword.php:313 msgid "Error saving address confirmation." -msgstr "" +msgstr "Feil ved lagring av adressebekreftelse." #: actions/recoverpassword.php:338 msgid "" @@ -3190,7 +3193,7 @@ msgstr "" #: actions/recoverpassword.php:357 msgid "Unexpected password reset." -msgstr "" +msgstr "Uventet tilbakestilling av passord." #: actions/recoverpassword.php:365 msgid "Password must be 6 chars or more." @@ -3198,91 +3201,115 @@ msgstr "Passordet mÃ¥ bestÃ¥ av 6 eller flere tegn." #: actions/recoverpassword.php:369 msgid "Password and confirmation do not match." -msgstr "" +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 "" +msgstr "Feil ved innstilling av bruker." #: actions/recoverpassword.php:395 msgid "New password successfully saved. You are now logged in." -msgstr "" +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 "" +msgstr "Beklager, kun inviterte personer kan registrere seg." -#: actions/register.php:92 +#: actions/register.php:99 msgid "Sorry, invalid invitation code." -msgstr "" +msgstr "Beklager, ugyldig invitasjonskode." -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" -msgstr "" +msgstr "Registrering vellykket" -#: actions/register.php:114 actions/register.php:507 lib/logingroupnav.php:85 +#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85 msgid "Register" -msgstr "" +msgstr "Registrer" -#: actions/register.php:135 +#: actions/register.php:142 msgid "Registration not allowed." -msgstr "" +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 "" +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. " 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 "" +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:494 -#, fuzzy, php-format +#: 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 "Alle rettigheter reservert." + +#. 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 "" -" utenom disse private dataene: passord, e-postadresse, lynmeldingsadresse " -"og telefonnummer." +"Mine tekster og filer er tilgjengelig under %s med unntak av disse private " +"dataene: passord, e-postadresse, direktemeldingsadresse og telefonnummer." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3315,7 +3342,7 @@ msgstr "" "\n" "Takk for at du registrerte deg og vi hÃ¥per du kommer til Ã¥ like tjenesten." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3330,47 +3357,54 @@ msgid "" "register%%) a new account. If you already have an account on a [compatible " "microblogging site](%%doc.openmublog%%), enter your profile URL below." msgstr "" +"For Ã¥ abonnere kan du [logge inn](%%action.login%%) eller [registrere](%%" +"action.register%%) en ny konto. Om du allerede har en konto pÃ¥ et " +"[kompatibelt mikrobloggingsnettsted](%%doc.openmublog%%), skriv inn " +"profilnettadressen din nedenfor." #: actions/remotesubscribe.php:112 msgid "Remote subscribe" -msgstr "" +msgstr "Fjernabonner" #: actions/remotesubscribe.php:124 msgid "Subscribe to a remote user" -msgstr "" +msgstr "Abonner pÃ¥ en fjernbruker" #: actions/remotesubscribe.php:129 msgid "User nickname" -msgstr "" +msgstr "Brukerens kallenavn" #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" -msgstr "" +msgstr "Kallenavn pÃ¥ brukeren du vil følge" #: actions/remotesubscribe.php:133 msgid "Profile URL" -msgstr "" +msgstr "Profilnettadresse" #: actions/remotesubscribe.php:134 msgid "URL of your profile on another compatible microblogging service" msgstr "" +"Nettadresse til profilen din pÃ¥ en annen kompatibel mikrobloggingstjeneste" #: actions/remotesubscribe.php:137 lib/subscribeform.php:139 #: lib/userprofile.php:406 msgid "Subscribe" -msgstr "" +msgstr "Abonner" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" -msgstr "" +msgstr "Ugyldig profilnettadresse (dÃ¥rlig format)" #: actions/remotesubscribe.php:168 msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." msgstr "" +"Ikke en gyldig profilnettadresse (inget YADIS-dokument eller ugyldig XRDS " +"definert)." #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." -msgstr "" +msgstr "Det er en lokal profil! Logg inn for Ã¥ abonnere." #: actions/remotesubscribe.php:183 msgid "Couldn’t get a request token." @@ -3378,23 +3412,21 @@ msgstr "" #: actions/repeat.php:57 msgid "Only logged-in users can repeat notices." -msgstr "" +msgstr "Bare innloggede brukere kan repetere notiser." #: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy msgid "No notice specified." -msgstr "Nytt nick" +msgstr "Ingen notis spesifisert." #: actions/repeat.php:76 msgid "You can't repeat your own notice." -msgstr "" +msgstr "Du kan ikke gjenta din egen notis." #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "Du er allerede logget inn!" +msgstr "Du har allerede gjentatt den notisen." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Gjentatt" @@ -3429,11 +3461,11 @@ msgid "Replies feed for %s (Atom)" msgstr "Svarstrøm for %s (Atom)" #: actions/replies.php:199 -#, fuzzy, php-format +#, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." -msgstr "Dette er tidslinjen for %s og venner, men ingen har postet noe enda." +"notice to them yet." +msgstr "Dette er tidslinjen for %1$s men %2$s har ikke postet noe ennÃ¥." #: actions/replies.php:204 #, php-format @@ -3441,16 +3473,17 @@ msgid "" "You can engage other users in a conversation, subscribe to more people or " "[join groups](%%action.groups%%)." msgstr "" +"Du kan engasjere andre brukere i en samtale, abonnere pÃ¥ flere personer " +"eller [bli med i grupper](%%action.groups%%)." #: actions/replies.php:206 -#, fuzzy, php-format +#, php-format msgid "" -"You can try to [nudge %1$s](../%2$s) or [post something to his or her " -"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." +"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 %s](../%s) fra dennes profil eller [post noe for Ã¥ fÃ¥ " -"hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%" -"s)." +"Vær den første til Ã¥ [poste om dette emnet](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/repliesrss.php:72 #, php-format @@ -3458,68 +3491,63 @@ msgid "Replies to %1$s on %2$s!" msgstr "Svar til %1$s pÃ¥ %2$s!" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Du er allerede logget inn!" +msgstr "Du kan ikke trekke tilbake brukerroller pÃ¥ dette nettstedet." #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "Brukeren har ingen profil." +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" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "Du er allerede logget inn!" +msgstr "Du kan ikke flytte brukere til sandkassen pÃ¥ dette nettstedet." #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "Du er allerede logget inn!" +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 "" +msgstr "Økter" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "Øktinnstillinger for dette StatusNet-nettstedet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" -msgstr "" +msgstr "HÃ¥ndter økter" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." -msgstr "" +msgstr "Hvorvidt økter skal hÃ¥ndteres av oss selv." #: actions/sessionsadminpanel.php:181 msgid "Session debugging" -msgstr "" +msgstr "Øktfeilsøking" #: actions/sessionsadminpanel.php:183 msgid "Turn on debugging output for sessions." -msgstr "" +msgstr "SlÃ¥ pÃ¥ feilsøkingsutdata for økter." #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "Innstillinger for IM" +msgstr "Lagre nettstedsinnstillinger" #: actions/showapplication.php:82 msgid "You must be logged in to view an application." -msgstr "" +msgstr "Du mÃ¥ være innlogget for Ã¥ se et program." #: actions/showapplication.php:157 msgid "Application profile" -msgstr "" +msgstr "Programprofil" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 @@ -3527,7 +3555,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" @@ -3538,12 +3566,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" @@ -3555,23 +3583,23 @@ msgstr "Opprettet av %1$s - %2$s standardtilgang - %3$d brukere" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Programhandlinger" #: actions/showapplication.php:236 msgid "Reset key & secret" -msgstr "" +msgstr "Tilbakestill nøkkel & hemmelighet" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Programinformasjon" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "Forbrukernøkkel" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "Forbrukerhemmelighet" #: actions/showapplication.php:273 msgid "Request token URL" @@ -3581,20 +3609,18 @@ msgstr "" 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 "" +"Merk: Vi støtter HMAC-SHA1-signaturer. Vi støtter ikke metoden for " +"klartekstsignatur." #: actions/showapplication.php:309 -#, fuzzy msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Er du sikker pÃ¥ at du vil slette denne notisen?" +msgstr "" +"Er du sikker pÃ¥ at du vil tilbakestille din forbrukernøkkel og -hemmelighet?" #: actions/showfavorites.php:79 #, php-format @@ -3625,25 +3651,32 @@ msgid "" "You haven't chosen any favorite notices yet. Click the fave button on " "notices you like to bookmark them for later or shed a spotlight on them." msgstr "" +"Du har ikke valgt en favorittnotis ennÃ¥. Klikk pÃ¥ favorittknappen pÃ¥ notiser " +"du liker for Ã¥ bokmerke dem for senere eller for Ã¥ kaste et søkelys pÃ¥ dem." #: 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 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 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." -msgstr "" +msgstr "Dette er en mÃ¥te Ã¥ dele det du liker." #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format @@ -3667,7 +3700,7 @@ msgstr "Nettadresse" #: actions/showgroup.php:283 actions/tagother.php:128 #: actions/userauthorization.php:187 lib/userprofile.php:195 msgid "Note" -msgstr "" +msgstr "Merk" #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" @@ -3693,11 +3726,11 @@ msgid "Notice feed for %s group (Atom)" msgstr "Notismating for %s gruppe (Atom)" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "Klarte ikke Ã¥ lagre profil." +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" @@ -3711,11 +3744,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." @@ -3731,7 +3764,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." @@ -3744,7 +3777,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" @@ -3754,7 +3787,7 @@ msgstr "Ingen slik melding." #: actions/showmessage.php:98 msgid "Only the sender and recipient may read this message." -msgstr "" +msgstr "Kun senderen og mottakeren kan lese denne meldingen." #: actions/showmessage.php:108 #, php-format @@ -3771,9 +3804,9 @@ msgid "Notice deleted." msgstr "Notis slettet." #: actions/showstream.php:73 -#, fuzzy, php-format +#, php-format msgid " tagged %s" -msgstr "Tagger" +msgstr " merket %s" #: actions/showstream.php:79 #, php-format @@ -3801,30 +3834,31 @@ msgid "Notice feed for %s (Atom)" msgstr "Notismating for %s (Atom)" #: actions/showstream.php:148 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s" -msgstr "Feed for taggen %s" +msgstr "FOAF for %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 "Dette er tidslinjen for %s og venner, men ingen har postet noe enda." +msgstr "Dette er tidslinjen for %1$s men %2$s har ikke postet noe ennÃ¥." #: 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 "" +"Sett noe interessant nylig? Du har ikke postet noen notiser ennÃ¥, sÃ¥ hvorfor " +"ikke begynne nÃ¥? :)" #: actions/showstream.php:207 -#, fuzzy, php-format +#, 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 %s](../%s) fra dennes profil eller [post noe for Ã¥ fÃ¥ " -"hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%" -"s)." +"Vær den første til Ã¥ [poste om dette emnet](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/showstream.php:243 #, php-format @@ -3858,20 +3892,19 @@ msgstr "Repetisjon av %s" #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." -msgstr "" +msgstr "Du kan ikke bringe brukere til taushet pÃ¥ dette nettstedet." #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "Du er allerede logget inn!" +msgstr "Bruker er allerede brakt til taushet." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" -msgstr "" +msgstr "Grunninnstillinger for dette StatusNet-nettstedet" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." -msgstr "" +msgstr "Nettstedsnavnet mÃ¥ være minst ett tegn langt." #: actions/siteadminpanel.php:141 msgid "You must have a valid contact email address." @@ -3884,7 +3917,7 @@ msgstr "Ukjent sprÃ¥k «%s»." #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "Minste tekstgrense er 0 (ubegrenset)." #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." @@ -3900,7 +3933,7 @@ msgstr "Nettstedsnavn" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "" +msgstr "Navnet pÃ¥ nettstedet ditt, for eksempel «Foretaksnavn mikroblogg»" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -3920,11 +3953,11 @@ msgstr "" #: actions/siteadminpanel.php:239 msgid "Contact email address for your site" -msgstr "" +msgstr "Kontakte-postadresse for nettstedet ditt" #: actions/siteadminpanel.php:245 msgid "Local" -msgstr "" +msgstr "Lokal" #: actions/siteadminpanel.php:256 msgid "Default timezone" @@ -3967,32 +4000,25 @@ msgstr "" msgid "Site Notice" msgstr "Nettstedsnotis" -#: actions/sitenoticeadminpanel.php:67 -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." msgstr "" #: actions/sitenoticeadminpanel.php:176 -#, fuzzy msgid "Site notice text" -msgstr "Slett notis" +msgstr "Tekst for nettstedsnotis" #: 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 "Innstillinger for IM" +msgstr "Lagre nettstedsnotis" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 @@ -4013,9 +4039,8 @@ msgstr "SMS er ikke tilgjengelig." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Direktemeldingsadresse" +msgstr "SMS-adresse" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4039,7 +4064,6 @@ msgstr "Skriv inn koden du mottok pÃ¥ telefonen din." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Bekreft" @@ -4052,13 +4076,12 @@ 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 -#, fuzzy msgid "SMS preferences" -msgstr "Innstillinger" +msgstr "SMS-innstillinger" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4066,12 +4089,13 @@ msgid "" "Send me notices through SMS; I understand I may incur exorbitant charges " "from my carrier." msgstr "" +"Send meg notiser via SMS; jeg forstÃ¥r at dette kan føre til kostnader fra " +"min teleoperatør." #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Innstillinger lagret." +msgstr "SMS-innstillinger lagret." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4091,28 +4115,26 @@ msgstr "Det er allerede din ditt telefonnummer." #. 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 "" +msgstr "Telefonnummeret tilhører allerede en annen bruker." #. 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 "" -"En bekreftelseskode ble sendt til telefonnummeret du la til. Sjekk innboksen " -"din for koden, og hvordan du skal bruke den." +"En bekreftelseskode ble sendt til telefonnummeret du la til. Sjekk telefonen " +"din for koden og hvordan du skal bruke den." #. 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 "Dette er feil bekreftelsesnummer." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Bekreftelse avbrutt." +msgstr "SMS-bekreftelse avbrutt." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4122,9 +4144,8 @@ msgstr "Det er ikke ditt telefonnummer." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Telefonnummer for SMS" +msgstr "Telefonnummeret for SMS ble fjernet." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4144,34 +4165,25 @@ msgid "" "Mobile carrier for your phone. If you know a carrier that accepts SMS over " "email but isn't listed here, send email to let us know at %s." msgstr "" +"Mobiloperatør for din telefon. Om du kjenner til en operatør som kan motta " +"SMS via e-post men som ikke er listet opp her, send en e-post til %s og " +"fortell oss." #. TRANS: Message given saving SMS phone number confirmation code without having provided one. #: actions/smssettings.php:548 msgid "No code entered" -msgstr "" +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 "" -#: 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 "" @@ -4180,10 +4192,6 @@ msgstr "" 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 "" @@ -4196,63 +4204,44 @@ msgstr "Frekvens" 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 "Innstillinger for IM" +msgstr "Lagre nettstedsinnstillinger" -#: actions/subedit.php:70 -msgid "You are not subscribed to that profile." -msgstr "" - -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "Klarte ikke Ã¥ lagre avatar-informasjonen" +msgstr "Kunne ikke lagre merkelapper." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." msgstr "" #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "Ingen slik fil." +msgstr "Ingen slik profil." #: 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 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "Alle abonnementer" +msgstr "%1$s gruppemedlemmer, side %2$d" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." -msgstr "" +msgstr "Dette er personene som lytter til dine notiser." #: actions/subscribers.php:67 #, php-format msgid "These are the people who listen to %s's notices." -msgstr "" +msgstr "Dette er personene som lytter til %ss notiser." #: actions/subscribers.php:108 msgid "" @@ -4265,31 +4254,19 @@ msgstr "" 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 -#, fuzzy, php-format -msgid "%s subscriptions" -msgstr "Alle abonnementer" - #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "Alle abonnementer" +msgstr "%1$s grupper, side %2$d" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." -msgstr "" +msgstr "Dette er personene hvis notiser du lytter til." #: actions/subscriptions.php:69 #, php-format msgid "These are the people whose notices %s listens to." -msgstr "" +msgstr "Dette er personene hvis notiser %s lytter til." #: actions/subscriptions.php:126 #, php-format @@ -4315,33 +4292,29 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Mikroblogg av %s" +msgstr "Brukere som har merket seg selv med %1$s - side %2$d" #: actions/tag.php:87 #, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "" +msgstr "Notismating for merkelapp %s (RSS 1.0)" #: actions/tag.php:93 #, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "" +msgstr "Notismating for merkelapp %s (RSS 2.0)" #: actions/tag.php:99 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Feed for taggen %s" - -#: actions/tagother.php:39 -msgid "No ID argument." -msgstr "" +msgstr "Notismating for merkelapp %s (Atom)" #: 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" @@ -4353,15 +4326,8 @@ msgid "Photo" msgstr "Foto" #: actions/tagother.php:141 -#, fuzzy msgid "Tag user" -msgstr "Tagger" - -#: actions/tagother.php:151 -msgid "" -"Tags for this user (letters, numbers, -, ., and _), comma- or space- " -"separated" -msgstr "" +msgstr "Merk bruker" #: actions/tagother.php:193 msgid "" @@ -4369,49 +4335,13 @@ msgid "" msgstr "" #: actions/tagother.php:200 -#, fuzzy msgid "Could not save tags." -msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" - -#: 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/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API-metode under utvikling." +msgstr "Kunne ikke lagre merkelapper." #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "Du har ikke blokkert den brukeren." -#: actions/unsandbox.php:72 -msgid "User is not sandboxed." -msgstr "" - -#: actions/unsilence.php:72 -msgid "User is not silenced." -msgstr "" - -#: actions/unsubscribe.php:77 -#, fuzzy -msgid "No profile ID in request." -msgstr "Ingen profil med den ID'en." - -#: 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" @@ -4492,7 +4422,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" @@ -4517,10 +4447,6 @@ msgstr "Avvis dette abonnementet" 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 " @@ -4528,10 +4454,6 @@ msgid "" "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 " @@ -4539,51 +4461,29 @@ msgid "" "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 "" +msgstr "Profil-URL ‘%s’ er for en lokal bruker." #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "Avatar-URL ‘%s’ er ikke gyldig." #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "Kan ikke lese brukerbilde-URL «%s»" +msgstr "Kan ikke lese avatar-URL ‘%s’" #: actions/userauthorization.php:355 #, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "" +msgstr "Feil bildetype for avatar-URL ‘%s’." #: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy msgid "Profile design" -msgstr "Profil" - -#: 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 "" +msgstr "Vis profilutseender" #: actions/userdesignsettings.php:282 msgid "Enjoy your hotdog!" @@ -4591,9 +4491,9 @@ msgstr "Bon appétit." #. 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 "Alle abonnementer" +msgstr "%1$s grupper, side %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" @@ -4614,18 +4514,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, " @@ -4634,11 +4534,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 " @@ -4646,7 +4546,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 " @@ -4654,173 +4554,223 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy +#. 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 msgid "Group join failed." -msgstr "Klarte ikke Ã¥ lagre profil." +msgstr "Gruppeprofil" -#: 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 "Klarte ikke Ã¥ oppdatere bruker." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Klarte ikke Ã¥ lagre profil." - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." msgstr "Kunne ikke oppdatere gruppe." -#: classes/Login_token.php:76 -#, fuzzy, php-format +#. TRANS: Exception thrown when trying to leave a group fails. +#: classes/Group_member.php:63 +msgid "Group leave failed." +msgstr "Gruppeprofil" + +#. TRANS: Server exception thrown when updating a local group fails. +#: classes/Local_group.php:42 +msgid "Could not update local group." +msgstr "Kunne ikke oppdatere lokal gruppe." + +#. 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 "Klarte ikke Ã¥ lagre avatar-informasjonen" +msgstr "Kunne ikke opprette alias." -#: classes/Message.php:45 -msgid "You are banned from sending direct messages." +#. 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: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 "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 -#, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problem ved lagring av notis." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, php-format msgid "RT @%1$s %2$s" msgstr "RT @%1$s %2$s" -#: 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 -msgid "Already subscribed!" +#. 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 "" -#: classes/Subscription.php:82 +#. TRANS: Exception thrown when a right for a non-existing user profile is checked. +#: classes/Remote_profile.php:54 +msgid "Missing profile." +msgstr "Manglende profil." + +#. 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 -#, fuzzy -msgid "Not subscribed!" -msgstr "Alle abonnementer" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Kunne ikke slette favoritt." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" +#. 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 "Kunne ikke slette favoritt." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Klarte ikke Ã¥ lagre avatar-informasjonen" +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Kunne ikke slette favoritt." -#: classes/Subscription.php:211 -msgid "Couldn't 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 "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." @@ -4846,9 +4796,8 @@ msgstr "Endre eposthÃ¥ndtering" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 -#, fuzzy msgid "Design your profile" -msgstr "Klarte ikke Ã¥ lagre profil." +msgstr "Brukerprofil" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 @@ -4861,216 +4810,201 @@ msgid "Other" msgstr "Andre" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Side uten tittel" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personlig" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "Endre passordet ditt" +msgstr "Endre e-posten, avateren, passordet og profilen din" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:465 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:468 msgid "Connect" msgstr "Koble til" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "" +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:481 msgctxt "MENU" msgid "Invite" msgstr "Inviter" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Logg ut" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrer" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Log inn pÃ¥ nettstedet" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Logg inn" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hjelp meg." -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Hjelp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Søk etter personer eller tekst" -#: lib/action.php:493 +#: lib/action.php:516 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:538 lib/adminpanelaction.php:400 msgid "Site notice" -msgstr "" +msgstr "Nettstedsnotis" #. TRANS: DT element for local views block. String is hidden in default CSS. -#: lib/action.php:582 +#: lib/action.php:605 msgid "Local views" -msgstr "" +msgstr "Lokale visninger" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" -msgstr "" +msgstr "Sidenotis" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Hjelp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Om" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "OSS/FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" -#. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 -msgid "Privacy" -msgstr "" - #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Kilde" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 -msgid "Badge" -msgstr "" - #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** er en mikrobloggingtjeneste av [%%site.broughtby%%](%%site." -"broughtbyurl%%). " +"**%%site.name%%** er en mikrobloggingtjeneste brakt til deg av [%%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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5078,55 +5012,45 @@ msgid "" "org/licensing/licenses/agpl-3.0.html)." msgstr "" -#. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -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:873 #, 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:880 #, 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:884 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:897 #, 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 -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:1247 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:1257 msgid "Before" msgstr "Før" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5134,11 +5058,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5147,11 +5071,6 @@ msgstr "" msgid "You cannot make changes to this site." msgstr "Du kan ikke gjøre endringer pÃ¥ dette nettstedet." -#. 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." @@ -5162,72 +5081,45 @@ msgstr "showForm() ikke implementert." msgid "saveSettings() not implemented." msgstr "saveSettings() ikke implementert." -#. 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:349 -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 -msgid "Design configuration" -msgstr "" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "Personlig" +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 -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 -msgid "Snapshots configuration" -msgstr "" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5262,11 +5154,6 @@ msgstr "Nettadresse til hjemmesiden for dette programmet" msgid "Source URL" msgstr "Nettadresse til kilde" -#. 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" @@ -5316,15 +5203,13 @@ msgstr "Avbryt" #. TRANS: Application access type #: lib/applicationlist.php:136 -#, fuzzy msgid "read-write" -msgstr "Les og skriv" +msgstr "les og skriv" #. TRANS: Application access type #: lib/applicationlist.php:138 -#, fuzzy msgid "read-only" -msgstr "Skrivebeskyttet" +msgstr "skrivebeskyttet" #. 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 @@ -5334,7 +5219,6 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" msgstr "Tilbakekall" @@ -5358,68 +5242,41 @@ msgstr "Leverandør" msgid "Notices where this attachment appears" msgstr "Notiser hvor dette vedlegget forekommer" -#: lib/attachmenttagcloudsection.php:48 -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" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" -msgstr "" +msgstr "Kommandoresultat" #: lib/channel.php:229 lib/mailhandler.php:142 msgid "Command complete" -msgstr "" +msgstr "Kommando fullført" #: lib/channel.php:240 msgid "Command failed" -msgstr "" +msgstr "Kommando feilet" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Notis med den id'en finnes ikke" - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Bruker har ingen siste notis" - -#. 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 "Fant ingen bruker med kallenavn %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 -msgid "Could not find a local user with nickname %s" -msgstr "Fant ingen bruker med kallenavn %s" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." -msgstr "" +msgstr "Beklager, denne kommandoen er ikke implementert ennÃ¥." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Det gir ikke sÃ¥ mye mening Ã¥ knuffe seg selv." -#. 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 "Knuff sendt til %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5430,55 +5287,39 @@ msgstr "" "Abonnenter: %2$s\n" "Notiser: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Notis markert som favoritt." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Du er allerede medlem av den gruppen." - -#. 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 "Kunne ikke legge bruker %1$s til gruppe %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 "Kunne ikke fjerne bruker %1$s fra gruppe %2$s." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Hjemmeside: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Om: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5487,145 +5328,93 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "Melding for lang - maks er %1$d tegn, du sendte %2$d." -#. 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 "Direktemelding til %s sendt" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Feil ved sending av direktemelding." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Kan ikke repetere din egen notis" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Allerede repetert den notisen" - -#. 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 "Notis fra %s repetert" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Feil ved repetering av notis." -#: lib/command.php:562 -#, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Notis for lang - maks er %d tegn, du sendte %d" - -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "Svar til %s sendt" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Feil ved lagring av notis." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." 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 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." 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 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Svar til %s" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Ikke autorisert." - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ikke autorisert." msgstr[1] "Ikke autorisert." -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Svar til %s" - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Svar til %s" msgstr[1] "Svar til %s" -#: lib/command.php:822 -#, fuzzy +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." -msgstr "Du er allerede logget inn!" +msgstr "Du er ikke et medlem av den gruppen." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Du er allerede logget inn!" msgstr[1] "Du er allerede logget inn!" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5679,10 +5468,6 @@ msgstr "Jeg sÃ¥ etter konfigurasjonfiler pÃ¥ følgende seter: " 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 "" @@ -5699,10 +5484,6 @@ msgstr "Oppdatert med SMS" msgid "Connections" msgstr "Tilkoblinger" -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "Databasefeil" @@ -5711,27 +5492,6 @@ msgstr "Databasefeil" msgid "Upload file" msgstr "Last opp fil" -#: 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 "RSS 1.0" @@ -5753,30 +5513,20 @@ msgid "Export data" msgstr "Eksporter data" #: lib/galleryaction.php:121 -#, fuzzy msgid "Filter tags" -msgstr "Feed for taggen %s" +msgstr "" #: lib/galleryaction.php:131 msgid "All" msgstr "Alle" -#: lib/galleryaction.php:139 -msgid "Select tag to filter" -msgstr "" - -#: lib/galleryaction.php:140 -#, fuzzy -msgid "Tag" -msgstr "Tagger" - #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" msgstr "" #: lib/galleryaction.php:143 msgid "Go" -msgstr "" +msgstr "GÃ¥" #: lib/grantroleform.php:91 #, php-format @@ -5784,24 +5534,17 @@ msgid "Grant this user the \"%s\" role" msgstr "Innvilg denne brukeren rollen «%s»" #: lib/groupeditform.php:163 -#, fuzzy msgid "URL of the homepage or blog of the group or topic" -msgstr "URL til din hjemmeside, blogg, eller profil pÃ¥ annen nettside." +msgstr "Nettadresse til hjemmesiden for dette programmet" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "Beskriv degselv og dine interesser med 140 tegn" +msgstr "Beskriv programmet ditt" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Beskriv degselv og dine interesser med 140 tegn" - -#: lib/groupeditform.php:179 -msgid "" -"Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "" +msgstr "Beskriv programmet ditt med %d tegn" #: lib/groupeditform.php:187 #, php-format @@ -5835,11 +5578,6 @@ msgstr "Logo" msgid "Add or edit %s logo" msgstr "Legg til eller rediger %s logo" -#: lib/groupnav.php:120 -#, php-format -msgid "Add or edit %s design" -msgstr "" - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Grupper med flest medlemmer" @@ -5848,11 +5586,6 @@ msgstr "Grupper med flest medlemmer" msgid "Groups with most posts" msgstr "Grupper med flest innlegg" -#: 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" @@ -5962,8 +5695,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" @@ -5989,19 +5729,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" @@ -6023,30 +5763,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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "Venter pÃ¥ bekreftelse for dette telefonnummeret." +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 " @@ -6074,13 +5814,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" @@ -6114,13 +5854,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" @@ -6158,21 +5898,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 "" +"Hele samtalen kan leses her:\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) 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" @@ -6198,6 +5941,29 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) sendte deg akkurat varsel for din oppmerksomhet (et '@-svar') " +"pÃ¥ %2$s.\n" +"\n" +"Notisen er her:\n" +"\n" +"%3$s\n" +"\n" +"Det lyder:\n" +"\n" +"%4$s\n" +"\n" +"%5$sDu kan svare her:\n" +"\n" +"%6$s\n" +"\n" +"Listen over alle @-svar til deg finner du her:\n" +"\n" +"%7$s\n" +"\n" +"Vennlig hilsen,\n" +"%2$s\n" +"\n" +"P.S. Du kan slÃ¥ av disse e-postvarslene her: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6212,7 +5978,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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "fra" @@ -6224,14 +5990,6 @@ msgstr "Kunne ikke tolke meldingen." msgid "Not a registered user." msgstr "Ikke en registrert bruker." -#: 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" @@ -6255,10 +6013,6 @@ msgstr "" 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 "" @@ -6267,24 +6021,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." @@ -6297,11 +6051,11 @@ msgstr "Send en direktenotis" msgid "To" msgstr "Til" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Tilgjengelige tegn" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Send" @@ -6310,28 +6064,28 @@ msgstr "Send" msgid "Send a notice" msgstr "Send en notis" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Hva skjer %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Legg ved" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Legg ved en fil" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Del min posisjon" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Ikke del min posisjon" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6340,51 +6094,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:502 +msgid "web" msgstr "" -#: lib/noticelist.php:567 -msgid "in context" -msgstr "" - -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetert av" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Svar pÃ¥ denne notisen" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Svar" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Notis repetert" @@ -6400,30 +6154,10 @@ msgstr "Knuff" msgid "Send a nudge to this user" msgstr "Send et knuff til denne brukeren" -#: 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 "Duplikatnotis" -#: lib/oauthstore.php:490 -msgid "Couldn't insert new subscription." -msgstr "" - #: lib/personalgroupnav.php:99 msgid "Personal" msgstr "Personlig" @@ -6457,7 +6191,7 @@ msgstr "Dine sendte meldinger" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Ukjent" @@ -6488,13 +6222,13 @@ msgstr "Medlem siden" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "" +msgstr "Daglig gjennomsnitt" #: lib/profileaction.php:264 msgid "All groups" msgstr "Alle grupper" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Ikke-implementert metode." @@ -6507,20 +6241,7 @@ msgid "User groups" msgstr "Brukergrupper" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 -#, fuzzy msgid "Recent tags" -msgstr "Nyeste Tagger" - -#: lib/publicgroupnav.php:88 -msgid "Featured" -msgstr "" - -#: lib/publicgroupnav.php:92 -msgid "Popular" -msgstr "" - -#: lib/redirectingaction.php:94 -msgid "No return-to arguments." msgstr "" #: lib/repeatform.php:107 @@ -6535,23 +6256,13 @@ msgstr "Ja" msgid "Repeat this notice" msgstr "Repeter denne notisen" -#: lib/revokeroleform.php:91 -#, 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 "" -#: lib/sandboxform.php:67 -msgid "Sandbox" -msgstr "" - #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "Kan ikke slette notisen." +msgstr "Opphev blokkering av denne brukeren" #: lib/searchaction.php:120 msgid "Search site" @@ -6585,47 +6296,23 @@ msgstr "Finn innhold i notiser" msgid "Find groups on this site" msgstr "Finn grupper pÃ¥ dette nettstedet" -#: lib/section.php:89 -msgid "Untitled section" -msgstr "" - #: lib/section.php:106 msgid "More..." msgstr "Mer..." -#: lib/silenceform.php:67 -msgid "Silence" -msgstr "" - #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "Kan ikke slette notisen." - -#: lib/subgroupnav.php:83 -#, php-format -msgid "People %s subscribes to" -msgstr "" +msgstr "Slett denne brukeren" #: lib/subgroupnav.php:91 -#, fuzzy, php-format -msgid "People subscribed to %s" -msgstr "Svar til %s" - -#: lib/subgroupnav.php:99 #, php-format -msgid "Groups %s is a member of" -msgstr "" +msgid "People subscribed to %s" +msgstr "Fjernabonner" #: lib/subgroupnav.php:105 msgid "Invite" msgstr "Inviter" -#: 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" @@ -6640,49 +6327,53 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + #: 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 "Kan ikke slette notisen." - -#: lib/unsilenceform.php:67 -msgid "Unsilence" -msgstr "" +msgstr "Opphev blokkering av denne brukeren" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "Kan ikke slette notisen." - -#: 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 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Brukeren har ingen profil." - -#: lib/userprofile.php:117 -#, fuzzy -msgid "Edit Avatar" -msgstr "Brukerbilde" - -#: lib/userprofile.php:234 lib/userprofile.php:248 -msgid "User actions" -msgstr "" +msgstr "Opphev blokkering av denne brukeren" #: lib/userprofile.php:237 msgid "User deletion in progress..." @@ -6723,56 +6414,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "omtrent ett Ã¥r siden" @@ -6785,8 +6476,3 @@ msgstr "%s er ikke en gyldig farge." #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s er ikke en gyldig farge. Bruk 3 eller 6 heksadesimale tegn." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Melding for lang - maks er %1$d tegn, du sendte %2$d." diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po index 41318c9852..9afcea4bfa 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:31+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:11+0000\n" "Language-Team: Dutch\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +86,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +125,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:114 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 +159,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 +169,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +248,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 +268,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:131 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,49 +327,50 @@ msgstr "Privéberichten aan %s" msgid "All the direct messages sent to %s" msgstr "Alle privéberichten aan %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Het bericht is leeg!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Dat is te lang. De maximale berichtlengte is %d tekens." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "De ontvanger is niet aangetroffen." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +388,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 +401,137 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +542,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 +622,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:463 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 +635,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 +652,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." @@ -650,69 +665,75 @@ msgstr "U kunt de status van een andere gebruiker niet verwijderen." msgid "No such notice." msgstr "De mededeling bestaat niet." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "U kunt uw eigen mededeling niet herhalen." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Niet aangetroffen." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 +748,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 +815,7 @@ msgid "Preview" msgstr "Voorvertoning" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Verwijderen" @@ -831,11 +856,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 +875,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 +884,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 +893,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,14 +901,16 @@ 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -893,8 +920,8 @@ msgstr "Het was niet mogelijk om de blokkadeinformatie op te slaan." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "De opgegeven groep bestaat niet." @@ -1007,7 +1034,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:1307 msgid "There was a problem with your session token." msgstr "Er is een probleem met uw sessietoken." @@ -1041,7 +1068,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 +1099,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Deze mededeling verwijderen" @@ -1113,45 +1140,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 +1196,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 +1264,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 +1378,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 +1537,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 +1770,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 +1919,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" @@ -2158,7 +2202,7 @@ msgstr "U bent als geabonneerd op deze gebruikers:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2284,9 +2328,7 @@ msgstr "U moet aangemeld zijn om lid te worden van een groep." msgid "No nickname or ID." msgstr "Geen gebruikersnaam of 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s is lid geworden van de groep %2$s" @@ -2295,52 +2337,51 @@ msgstr "%1$s is lid geworden van de groep %2$s" msgid "You must be logged in to leave a group." msgstr "U moet aangemeld zijn om een groep te kunnen verlaten." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "U bent geen lid van deze groep" -#. 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2389,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Meld u aan met uw gebruikersnaam en wachtwoord. Hebt u nog geen " -"gebruikersnaam? [Registreer een nieuwe gebruiker](%%action.register%%)." +"Hebt u nog geen gebruikersnaam? [Registreer een nieuwe gebruiker](%%action." +"register%%)." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2412,12 +2456,15 @@ msgstr "Gebruik dit formulier om een nieuwe groep aan te maken." msgid "New message" msgstr "Nieuw bericht" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "U kunt geen bericht naar deze gebruiker zenden." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Geen inhoud!" @@ -2425,7 +2472,8 @@ msgstr "Geen inhoud!" msgid "No recipient specified." msgstr "Er is geen ontvanger aangegeven." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Stuur geen berichten naar uzelf. Zeg het gewoon in uw hoofd." @@ -2434,12 +2482,14 @@ msgstr "Stuur geen berichten naar uzelf. Zeg het gewoon in uw hoofd." msgid "Message sent" msgstr "Bericht verzonden." -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Het directe bericht aan %s is verzonden." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Er is een Ajax-fout opgetreden" @@ -2447,7 +2497,7 @@ msgstr "Er is een Ajax-fout opgetreden" msgid "New notice" msgstr "Nieuw bericht" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "De mededeling is verzonden" @@ -2500,10 +2550,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" @@ -2562,30 +2611,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Geen ondersteund gegevensformaat." @@ -2688,7 +2737,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" @@ -2700,11 +2749,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." @@ -2725,7 +2774,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" @@ -2931,43 +2980,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\"" @@ -3011,7 +3060,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)." @@ -3280,7 +3329,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." @@ -3288,39 +3337,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:507 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. " @@ -3328,33 +3377,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Ik begrijp dat inhoud en gegevens van %1$s persoonlijk en vertrouwelijk zijn." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +msgstr "Ik ben de rechthebbende voor mijn teksten en bestanden." + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. +#: actions/register.php:535 +msgid "All rights reserved." +msgstr "Alle rechten voorbehouden." + +#. 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, " @@ -3364,7 +3436,7 @@ msgstr "" "behalve de volgende privégegevens: wachtwoord, e-mailadres, IM-adres, " "telefoonnummer." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3398,7 +3470,7 @@ msgstr "" "Dank u wel voor het registreren en we hopen dat deze dienst u biedt wat u " "ervan verwacht." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3481,7 +3553,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Herhaald" @@ -3519,9 +3591,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 @@ -3536,8 +3608,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)." @@ -3555,7 +3627,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" @@ -3569,7 +3641,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" @@ -3612,7 +3684,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" @@ -3623,12 +3695,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" @@ -3719,22 +3791,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 @@ -3793,7 +3865,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" @@ -3807,11 +3879,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." @@ -3827,7 +3899,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." @@ -3840,7 +3912,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" @@ -3918,11 +3990,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 @@ -4254,7 +4326,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" @@ -4315,7 +4387,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." @@ -4497,10 +4570,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." @@ -4613,7 +4682,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" @@ -4743,31 +4812,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 " @@ -4779,7 +4848,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 " @@ -4791,7 +4860,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 " @@ -4800,99 +4869,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4900,16 +5016,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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Er is een probleem opgetreden bij het opslaan van de mededeling." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 msgid "Problem saving group inbox." msgstr "" "Er is een probleem opgetreden bij het opslaan van het Postvak IN van de " @@ -4917,58 +5042,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:1513 +#: classes/Notice.php:1759 #, 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:339 +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." @@ -5008,199 +5174,199 @@ msgid "Other" msgstr "Overige" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Primaire sitenavigatie" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Persoonlijk" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Koppelen" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Beheer" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Uitnodigingen" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Afmelden" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registreren" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Gebruiker aanmelden" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Aanmelden" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Help me!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Help" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Naar gebruikers of tekst zoeken" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 msgid "Secondary site navigation" msgstr "Secundaire sitenavigatie" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Help" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Over" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "Veel gestelde vragen" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "Gebruiksvoorwaarden" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacy" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Broncode" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contact" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Widget" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5210,13 +5376,13 @@ msgstr "" "broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5228,20 +5394,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:866 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:873 #, 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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5249,38 +5415,38 @@ msgstr "" "voorbehouden." #. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set. -#: lib/action.php:858 +#: lib/action.php:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Eerder" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "Verwachtte een root-feed element maar kreeg een heel XML-document." @@ -5288,11 +5454,11 @@ msgstr "Verwachtte een root-feed element maar kreeg een heel XML-document." msgid "Can't handle remote content yet." msgstr "Het is nog niet mogelijk inhoud uit andere omgevingen te verwerken." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Het is nog niet mogelijk ingebedde XML-inhoud te verwerken" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Het is nog niet mogelijk ingebedde Base64-inhoud te verwerken" @@ -5323,64 +5489,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:95 +#: 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 " @@ -5513,11 +5679,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" @@ -5533,44 +5699,53 @@ msgstr "Het commando is uitgevoerd" msgid "Command failed" msgstr "Het uitvoeren van het commando is mislukt" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Er bestaat geen mededeling met dat ID" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Er bestaat geen mededeling met dat ID." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Deze gebruiker heeft geen laatste mededeling" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "Deze gebruiker heeft geen laatste mededeling." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "De gebruiker %s is niet aangetroffen" +msgid "Could not find a user with nickname %s." +msgstr "De gebruiker %s is niet aangetroffen." #. 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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "De lokale gebruiker %s is niet aangetroffen" +msgid "Could not find a local user with nickname %s." +msgstr "De lokale gebruiker %s is niet aangetroffen." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Dit commando is nog niet geïmplementeerd." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Het heeft niet zoveel zin om uzelf te porren..." #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "De por naar %s is verzonden" +msgid "Nudge sent to %s." +msgstr "De por naar %s is verzonden." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5581,56 +5756,53 @@ msgstr "" "Abonnees: %2$s\n" "Mededelingen: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "De mededeling is op de favorietenlijst geplaatst." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "U bent al lid van deze groep" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "" -"Het was niet mogelijk om de gebruiker %1$s toe te voegen aan de groep %2$s" +msgid "%1$s joined group %2$s." +msgstr "%1$s is lid geworden van de groep %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s heeft de groep %2$s verlaten." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Thuispagina: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Over: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5641,149 +5813,174 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" "Het bericht te is lang. De maximale lengte is %1$d tekens. De lengte van uw " "bericht was %2$d." -#. 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 "Het directe bericht aan %s is verzonden" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Er is een fout opgetreden bij het verzonden van het directe bericht." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "U kunt uw eigen mededelingen niet herhalen." - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "U hebt die mededeling al herhaald." - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "De mededeling van %s is herhaald" +msgid "Notice from %s repeated." +msgstr "De mededeling van %s is herhaald." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Er is een fout opgetreden bij het herhalen van de mededeling." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"De mededeling is te lang. De maximale lengte is %d tekens. Uw mededeling " -"bevatte %d tekens" +"De mededeling is te lang. De maximale lengte is %1$d tekens. Uw mededeling " +"bevatte %2$d tekens." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Het antwoord aan %s is verzonden" +msgid "Reply to %s sent." +msgstr "Het antwoord aan %s is verzonden." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Er is een fout opgetreden bij het opslaan van de mededeling." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Geef de naam op van de gebruiker waarop u wilt abonneren" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Geef de naam op van de gebruiker waarop u zich wilt abonneren." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Abonneren op OMB-profielen op commando is niet mogelijk." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Geabonneerd op %s" +msgid "Subscribed to %s." +msgstr "Geabonneerd op %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "" -"Geef de naam op van de gebruiker waarvoor u het abonnement wilt opzeggen" +"Geef de naam op van de gebruiker waarop u het abonnement wilt opzeggen." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "Uw abonnement op %s is opgezegd" +msgid "Unsubscribed from %s." +msgstr "Uw abonnement op %s is opgezegd." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Dit commando is nog niet geïmplementeerd." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notificaties uitgeschakeld." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Het is niet mogelijk de mededelingen uit te schakelen." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notificaties ingeschakeld." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Het is niet mogelijk de notificatie uit te schakelen." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Het aanmeldcommando is uitgeschakeld" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Het aanmeldcommando is uitgeschakeld." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" "Deze verwijzing kan slechts één keer gebruikt worden en is twee minuten " -"geldig: %s" +"geldig: %s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "Het abonnement van %s is opgeheven" +msgid "Unsubscribed %s." +msgstr "Het abonnement van %s is opgeheven." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "U bent op geen enkele gebruiker geabonneerd." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "U bent geabonneerd op deze gebruiker:" msgstr[1] "U bent geabonneerd op deze gebruikers:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Niemand heeft een abonnenment op u." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Deze gebruiker is op u geabonneerd:" msgstr[1] "Deze gebruikers zijn op u geabonneerd:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "U bent lid van geen enkele groep." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "U bent lid van deze groep:" msgstr[1] "U bent lid van deze groepen:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6162,8 +6359,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" @@ -6189,19 +6395,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" @@ -6223,30 +6429,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 " @@ -6275,13 +6481,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" @@ -6316,13 +6522,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" @@ -6361,7 +6567,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" @@ -6372,13 +6578,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" @@ -6440,7 +6646,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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "van" @@ -6501,24 +6707,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." @@ -6531,41 +6737,41 @@ msgstr "Directe mededeling verzenden" msgid "To" msgstr "Aan" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Beschikbare tekens" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "OK" +msgstr "Verzenden" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "Mededeling verzenden" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Hallo, %s." -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Toevoegen" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Bestand toevoegen" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Mijn locatie bekend maken" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Mijn locatie niet bekend maken" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6574,51 +6780,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "in context" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Herhaald door" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Op deze mededeling antwoorden" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Antwoorden" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Mededeling herhaald" @@ -6693,7 +6903,7 @@ msgstr "Uw verzonden berichten" msgid "Tags in %s's notices" msgstr "Labels in de mededelingen van %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Onbekend" @@ -6730,7 +6940,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." @@ -6754,7 +6964,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." @@ -6775,7 +6985,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." @@ -6873,6 +7083,62 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Het opslaan van de vormgeving is mislukt." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "Het uiterlijk bevat onveilige namen voor bestandsextensies." + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6901,11 +7167,6 @@ msgstr "Uitschrijven van deze gebruiker" msgid "Unsubscribe" msgstr "Abonnement opheffen" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "Gebruiker %s (%d) heeft geen profielrecord." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Avatar bewerken" @@ -6953,56 +7214,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "ongeveer een jaar geleden" @@ -7015,10 +7276,3 @@ msgstr "%s is geen geldige kleur." #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s is geen geldige kleur. Gebruik drie of zes hexadecimale tekens." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Het bericht te is lang. De maximale lengte is %1$d tekens. De lengte van uw " -"bericht was %2$d." diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po index 2df7238a6c..badba4fc2c 100644 --- a/locale/nn/LC_MESSAGES/statusnet.po +++ b/locale/nn/LC_MESSAGES/statusnet.po @@ -1,6 +1,7 @@ # Translation of StatusNet to Norwegian Nynorsk # # Author@translatewiki.net: Nghtwlkr +# Author@translatewiki.net: Ranveig # -- # This file is distributed under the same license as the StatusNet package. # @@ -8,59 +9,27 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:27+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:06+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: nn\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy -msgid "Access" -msgstr "Godta" - -#. TRANS: Page notice -#: actions/accessadminpanel.php:67 -#, fuzzy -msgid "Site access settings" -msgstr "Avatar-innstillingar" - -#. TRANS: Form legend for registration form. -#: actions/accessadminpanel.php:161 -#, fuzzy -msgid "Registration" -msgstr "Registrér" - #. TRANS: Checkbox instructions for admin setting "Private" #: 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 -#, fuzzy -msgctxt "LABEL" -msgid "Private" -msgstr "Personvern" - #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." msgstr "" -#. TRANS: Checkbox label for configuring site as invite only. -#: actions/accessadminpanel.php:176 -#, fuzzy -msgid "Invite only" -msgstr "Invitér" - #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." @@ -68,101 +37,58 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Blokkér" +msgstr "" -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "Avatar-innstillingar" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -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/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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -#, fuzzy, php-format +#: actions/all.php:90 +#, php-format msgid "%1$s and friends, page %2$d" -msgstr "%s med vener, side %d" +msgstr "%s med vener" #. 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:114 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 -#, 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 -#, 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 -#, 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,85 +96,48 @@ 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 -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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Kan ikkje oppdatera brukar." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -259,14 +148,9 @@ msgstr "Kan ikkje oppdatera brukar." msgid "User has no profile." msgstr "Brukaren har inga profil." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Kan ikkje lagra profil." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,28 +160,6 @@ msgid "" "current configuration." msgstr "" -#: 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 -#, fuzzy -msgid "Unable to save your design settings." -msgstr "Klarte ikkje Ã¥ lagra Twitter-innstillingane dine!" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Kan ikkje oppdatera brukar." - -#: actions/apiblockcreate.php:105 -#, fuzzy -msgid "You cannot block yourself!" -msgstr "Kan ikkje oppdatera brukar." - #: actions/apiblockcreate.php:126 msgid "Block user failed." msgstr "Blokkering av brukar feila." @@ -306,11 +168,6 @@ msgstr "Blokkering av brukar feila." msgid "Unblock user failed." msgstr "De-blokkering av brukar feila." -#: actions/apidirectmessage.php:89 -#, fuzzy, php-format -msgid "Direct messages from %s" -msgstr "Direkte meldingar til %s" - #: actions/apidirectmessage.php:93 #, php-format msgid "All the direct messages sent from %s" @@ -326,49 +183,35 @@ msgstr "Direkte meldingar til %s" msgid "All the direct messages sent to %s" msgstr "Alle direkte meldingar sendt til %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Inga meldingstekst!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format -msgid "That's too long. Max message size is %d chars." -msgstr "Det er for langt. Ein notis kan berre være 140 teikn." - -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Kunne ikkje finne mottakar." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 -#, 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." msgstr "Kunne ikkje lagre favoritt." -#: actions/apifavoritedestroy.php:122 -#, 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." -msgstr "Fann ikkje brukaren, so han kan ikkje fylgjast" +msgid "Could not follow user: profile not found." +msgstr "Kan ikkje fylgja brukar: %s er allereie pÃ¥ lista di." #: actions/apifriendshipscreate.php:118 #, php-format @@ -376,169 +219,118 @@ msgid "Could not follow user: %s is already on your list." msgstr "Kan ikkje fylgja brukar: %s er allereie pÃ¥ lista di." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "Fann ikkje brukaren, so han kan ikkje fylgjast" +msgstr "Kan ikkje fylgja brukar: %s er allereie pÃ¥ lista di." -#: actions/apifriendshipsdestroy.php:120 -#, fuzzy -msgid "You cannot unfollow yourself." -msgstr "Kan ikkje oppdatera brukar." - -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "To brukar IDer eller kallenamn er naudsynte." +#: 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 "Kan ikkje hente offentleg straum." +msgstr "Kan ikkje oppdatera brukar." #: actions/apifriendshipsshow.php:142 -#, fuzzy msgid "Could not find target user." -msgstr "Kan ikkje finna einkvan status." +msgstr "Kan ikkje oppdatera brukar." -#: 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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "skildringa er for lang (maks 140 teikn)." +msgstr "Plassering er for lang (maksimalt 255 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 -#, fuzzy, php-format -msgid "Invalid alias: \"%s\"." -msgstr "Ugyldig merkelapp: %s" - -#: actions/apigroupcreate.php:275 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 -#, 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 "Fann ikkje API-metode." +msgstr "Finst ikkje." -#: actions/apigroupjoin.php:110 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 -msgid "You have been blocked from that group by the admin." -msgstr "" - -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "Kunne ikkje melde brukaren %s inn i gruppa %s" +msgstr "Kunne ikkje bli med i gruppa." -#: actions/apigroupleave.php:114 -#, 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 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 -#, 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 -#, fuzzy, php-format -msgid "%1$s groups %2$s is a member of." -msgstr "Grupper %s er medlem av" +msgstr "Kunne ikkje laga gruppa." #. 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 -#, fuzzy, php-format -msgid "groups on %s" -msgstr "Gruppe handlingar" - #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Ugyldig storleik." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -546,21 +338,6 @@ msgstr "Ugyldig storleik." msgid "There was a problem with your session token. Try again, please." msgstr "Der var eit problem med sesjonen din. Vennlegst prøv pÃ¥ nytt." -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "Ugyldig brukarnamn eller passord." - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "Feil ved Ã¥ setja brukar." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -602,12 +379,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:463 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 +392,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" @@ -624,20 +401,15 @@ msgstr "Passord" msgid "Deny" msgstr "" -#: actions/apioauthauthorize.php:334 -#, fuzzy -msgid "Allow" -msgstr "Alle" - #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." msgstr "" -#: actions/apistatusesdestroy.php:107 +#: 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." @@ -646,99 +418,70 @@ msgstr "Du kan ikkje sletta statusen til ein annan brukar." msgid "No such notice." msgstr "Denne notisen finst ikkje." -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "Kan ikkje slÃ¥ pÃ¥ notifikasjon." - -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." -msgstr "Slett denne notisen" +msgstr "Kan ikkje sletta notisen." -#: actions/apistatusesshow.php:138 -#, 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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "Det er for langt! Ein notis kan berre innehalde 140 teikn." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Finst ikkje." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy -msgid "Unsupported format." -msgstr "Støttar ikkje bileteformatet." - -#: actions/apitimelinefavorites.php:109 -#, fuzzy, php-format +#: actions/apitimelinefavorites.php:110 +#, php-format msgid "%1$s / Favorites from %2$s" -msgstr "%s / Favorittar frÃ¥ %s" +msgstr "%1$s sin status pÃ¥ %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 oppdateringar favorisert av %s / %s." +msgstr "%1$s oppdateringar som svarar pÃ¥ oppdateringar frÃ¥ %2$s / %3$s." -#: actions/apitimelinementions.php:117 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, php-format msgid "%1$s / Updates mentioning %2$s" -msgstr "%1$s / Oppdateringar som svarar til %2$s" +msgstr "%1$s sin status pÃ¥ %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:107 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:112 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!" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "Svar til %s" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format -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 -#, 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." -msgstr "Slikt dokument finst ikkje." +msgstr "Dette emneord finst ikkje." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -762,16 +505,15 @@ msgid "Avatar" msgstr "Brukarbilete" #: actions/avatarsettings.php:78 -#, fuzzy, php-format +#, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "Du kan laste opp ein personleg avatar." +msgstr "Du kan lasta opp ein logo for gruppa." #: 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 "Kan ikkje finne brukar" +msgstr "Brukaren har inga profil." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -789,7 +531,7 @@ msgid "Preview" msgstr "Forhandsvis" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Slett" @@ -801,11 +543,6 @@ msgstr "Last opp" msgid "Crop" msgstr "Skaler" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "Ingen vald profil." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "Velg eit utvalg av bildet som vil blir din avatar." @@ -822,21 +559,15 @@ msgstr "Lasta opp brukarbilete." msgid "Failed updating avatar." msgstr "Feil ved oppdatering av brukarbilete." -#: actions/avatarsettings.php:397 -#, fuzzy -msgid "Avatar deleted." -msgstr "Lasta opp brukarbilete." - #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Du har allereie blokkert denne brukaren." +msgstr "Du tingar allereie oppdatering frÃ¥ desse brukarane:" -#: 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,43 +579,24 @@ 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 "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 -#, fuzzy -msgid "Do not block this user" -msgstr "LÃ¥s opp brukaren" - -#. 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/deletenotice.php:154 actions/deleteuser.php:159 -#: actions/groupblock.php:185 -#, fuzzy -msgctxt "BUTTON" -msgid "Yes" -msgstr "Jau" +msgstr "Merknad" #. 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -894,31 +606,11 @@ msgstr "Lagring av informasjon feila." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Denne gruppa finst ikkje." -#: actions/blockedfromgroup.php:97 -#, fuzzy, php-format -msgid "%s blocked profiles" -msgstr "Brukarprofil" - -#: actions/blockedfromgroup.php:100 -#, fuzzy, php-format -msgid "%1$s blocked profiles, page %2$d" -msgstr "%s med vener, side %d" - -#: actions/blockedfromgroup.php:115 -#, fuzzy -msgid "A list of the users blocked from joining this group." -msgstr "Ei liste over brukarane i denne gruppa." - -#: actions/blockedfromgroup.php:288 -#, fuzzy -msgid "Unblock user from group" -msgstr "De-blokkering av brukar feila." - #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" msgstr "LÃ¥s opp" @@ -929,9 +621,9 @@ msgstr "LÃ¥s opp brukaren" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Bilete" +msgstr "Svar til %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -947,9 +639,9 @@ msgstr "Den godkjenningskoden er ikkje for deg!" #. 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 "Ukjend adressetype %s" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -978,52 +670,33 @@ msgid "Couldn't delete email confirmation." msgstr "Kan ikkje sletta e-postgodkjenning." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Stadfest adresse" +msgstr "Godkjent epostadresse." #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." msgstr "Addressa \"%s\" har blitt bekrefta for din konto." -#: actions/conversation.php:99 -#, fuzzy -msgid "Conversation" -msgstr "Stadfestingskode" - #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" msgstr "Notisar" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." +msgstr "Du mÃ¥ være innlogga for Ã¥ melde deg ut av ei gruppe." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Notisen har ingen profil" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Du er ikkje medlem av den gruppa." +msgstr "Fann ikkje stadfestingskode." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." msgstr "Det var eit problem med sesjons billetten din." -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "Denne notisen finst ikkje." - #: actions/deleteapplication.php:149 msgid "" "Are you sure you want to delete this application? This will clear all data " @@ -1031,25 +704,13 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "Kan ikkje sletta notisen." - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -msgstr "Slett denne notisen" - #. 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "Ikkje logga inn" @@ -1059,13 +720,10 @@ msgid "Can't delete this notice." msgstr "Kan ikkje sletta notisen." #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." msgstr "" -"Du er i ferd med Ã¥ sletta ei melding. NÃ¥r den fyrst er sletta, kann du " -"ikkje finne ho att." #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" @@ -1075,44 +733,17 @@ msgstr "Slett notis" msgid "Are you sure you want to delete this notice?" msgstr "Sikker pÃ¥ at du vil sletta notisen?" -#. TRANS: Submit button title for 'No' when deleting a notice. -#: actions/deletenotice.php:151 -#, fuzzy -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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Slett denne notisen" -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "Kan ikkje oppdatera brukar." - -#: actions/deleteuser.php:74 -#, fuzzy -msgid "You can only delete local users." -msgstr "Du kan ikkje sletta statusen til ein annan brukar." - -#: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy -msgid "Delete user" -msgstr "Slett" - #: 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 "" -#. TRANS: Submit button title for 'Yes' when deleting a user. -#: actions/deleteuser.php:163 lib/deleteuserform.php:77 -#, fuzzy -msgid "Delete this user" -msgstr "Slett denne notisen" - #. 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 @@ -1124,113 +755,84 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, fuzzy -msgid "Invalid logo URL." -msgstr "Ugyldig storleik." - -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Denne sida er ikkje tilgjengleg i eit" +msgstr "" -#: actions/designadminpanel.php:376 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "Endra passordet ditt" - -#: actions/designadminpanel.php:381 -#, fuzzy -msgid "Site logo" -msgstr "Invitér" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" msgstr "Endra" -#: actions/designadminpanel.php:405 -#, fuzzy -msgid "Site theme" +#: actions/designadminpanel.php:431 +msgid "Site logo" msgstr "Statusmelding" -#: actions/designadminpanel.php:406 -#, fuzzy -msgid "Theme for the site." -msgstr "Logg ut or sida" +#: 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 "" + +#: 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 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -#, fuzzy -msgid "Change colours" -msgstr "Endra passordet ditt" - -#: actions/designadminpanel.php:513 lib/designsettings.php:191 -#, fuzzy +#: actions/designadminpanel.php:587 lib/designsettings.php:191 msgid "Content" -msgstr "Kopla til" +msgstr "Innhald" -#: actions/designadminpanel.php:526 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 -#, fuzzy -msgid "Links" -msgstr "Logg inn" +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: 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 @@ -1240,7 +842,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 "" @@ -1253,69 +855,22 @@ msgid "Add to favorites" msgstr "Legg til i favorittar" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Slikt dokument finst ikkje." - -#: actions/editapplication.php:54 -#, fuzzy -msgid "Edit Application" -msgstr "Andre val" - -#: actions/editapplication.php:66 -#, fuzzy -msgid "You must be logged in to edit an application." -msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." - -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." msgstr "Denne notisen finst ikkje." -#: actions/editapplication.php:161 -#, fuzzy -msgid "Use this form to edit your application." -msgstr "Bruk dette skjemaet for Ã¥ redigere gruppa" - -#: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy -msgid "Name is required." -msgstr "Samme som passord over. PÃ¥krevd." - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)." - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Kallenamnet er allereie i bruk. Prøv eit anna." - -#: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy -msgid "Description is required." -msgstr "Beskriving" +#: actions/editapplication.php:54 +msgid "Edit Application" +msgstr "" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "Heimesida er ikkje ei gyldig internettadresse." - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "" -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "Plassering er for lang (maksimalt 255 teikn)." - #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." msgstr "" @@ -1328,11 +883,6 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Kann ikkje oppdatera gruppa." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" @@ -1344,42 +894,30 @@ msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." #: 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 "Du mÃ¥ være administrator for Ã¥ redigere gruppa" +msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." #: actions/editgroup.php:158 msgid "Use this form to edit the group." msgstr "Bruk dette skjemaet for Ã¥ redigere gruppa" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "skildringa er for lang (maks 140 teikn)." - -#: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format -msgid "Invalid alias: \"%s\"" -msgstr "Ugyldig merkelapp: %s" +msgstr "Plassering er for lang (maksimalt 255 teikn)." #: actions/editgroup.php:258 msgid "Could not update group." msgstr "Kann ikkje oppdatera gruppa." -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy -msgid "Could not create aliases." -msgstr "Kunne ikkje lagre favoritt." - #: actions/editgroup.php:280 msgid "Options saved." msgstr "Lagra innstillingar." #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Epostinnstillingar" +msgstr "Profilinnstillingar" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1388,13 +926,6 @@ msgstr "Epostinnstillingar" msgid "Manage how you get email from %%site.name%%." msgstr "Styr korleis du fÃ¥r epost frÃ¥ %%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 "Epostadresser" - #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." @@ -1408,10 +939,9 @@ msgstr "Godkjent epostadresse." #: 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 "Fjern" +msgstr "Gjenopprett" #: actions/emailsettings.php:122 msgid "" @@ -1421,17 +951,6 @@ msgstr "" "Ventar pÃ¥ godkjenning. Sjekk innboksen (og søppelpostboksen) for ei melding " "med instruksjonar." -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "Avbryt" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1442,10 +961,9 @@ msgstr "Epostadresse («brukarnamn@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 "Legg til" +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1468,16 +986,14 @@ msgstr "Vel ny epostadresse til Ã¥ oppdatera med; fjerner 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 -#, fuzzy msgctxt "BUTTON" msgid "New" -msgstr "Ny" +msgstr "" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Brukarval" +msgstr "Epostadresser" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1495,12 +1011,6 @@ msgstr "" msgid "Send me email when someone sends me a private message." msgstr "Send meg ein epost nÃ¥r nokon sender meg ei privat melding." -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:199 -#, fuzzy -msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "Send meg ein epost nÃ¥r nokon sender meg ei privat melding." - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." @@ -1518,9 +1028,8 @@ msgstr "Publiser ein MicroID for epost addressa mi." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Synkroniserings innstillingar blei lagra." +msgstr "Lagra brukarval." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1533,7 +1042,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." @@ -1573,17 +1082,10 @@ msgstr "" msgid "No pending confirmation to cancel." msgstr "Ingen ventande stadfesting Ã¥ avbryta." -#. 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 "Det er feil lynmeldings addresse." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Stadfesting avbrutt." +msgstr "Ingen ventande stadfesting Ã¥ avbryta." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1593,9 +1095,8 @@ msgstr "Det er ikkje din epost addresse." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Addressa blei fjerna." +msgstr "Fjerna innkomande epostadresse." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1663,11 +1164,6 @@ msgstr "" msgid "%s's favorite notices" msgstr "%s's favoritt meldingar" -#: actions/favoritesrss.php:115 -#, fuzzy, php-format -msgid "Updates favored by %1$s on %2$s!" -msgstr "Oppdateringar frÃ¥ %1$s pÃ¥ %2$s!" - #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 msgid "Featured users" @@ -1679,38 +1175,25 @@ msgid "Featured users, page %d" msgstr "Profilerte folk, side %d" #: actions/featured.php:99 -#, fuzzy, php-format +#, php-format msgid "A selection of some great users on %s" -msgstr "Eit utval av nokre av dei flotte folka pÃ¥ %s" +msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Ny notis" +msgstr "Denne notisen finst ikkje." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Ny notis" - -#: actions/file.php:42 -#, fuzzy -msgid "No attachments." -msgstr "Slikt dokument finst ikkje." - -#: actions/file.php:51 -#, fuzzy -msgid "No uploaded attachments." -msgstr "Slikt dokument finst ikkje." +msgstr "Denne notisen finst ikkje." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "Venta ikkje dette svaret!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "Brukaren du lyttar til eksisterer ikkje." +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1721,91 +1204,45 @@ msgid "That user has blocked you from subscribing." msgstr "Brukaren tillet deg ikkje Ã¥ tinga meldingane sine." #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "Ikkje autorisert." +msgstr "Du tingar ikkje oppdateringar til den profilen." #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Kan ikkje konvertera spyrjebillett til tilgongsbillett." +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Ukjend versjon av OMB-protokollen." - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Feil ved oppdatering av ekstern profil" - -#: actions/getfile.php:79 -#, fuzzy -msgid "No such file." -msgstr "Denne notisen finst ikkje." - -#: actions/getfile.php:83 -#, fuzzy -msgid "Cannot read file." -msgstr "Mista fila vÃ¥r." - -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Ugyldig storleik." +msgstr "" #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Du kan ikkje sende melding til denne brukaren." +msgstr "Du kan ikkje lengre legge inn notisar pÃ¥ denne sida." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "Brukar har blokkert deg." +msgstr "Brukaren har inga 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 "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." -#: actions/groupblock.php:81 actions/groupunblock.php:81 -#: actions/makeadmin.php:81 -#, fuzzy -msgid "No group specified." -msgstr "Ingen vald profil." - #: actions/groupblock.php:91 msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -#, fuzzy -msgid "User is already blocked from group." -msgstr "Brukar har blokkert deg." - -#: actions/groupblock.php:100 -#, fuzzy -msgid "User is not a member of group." -msgstr "Du er ikkje medlem av den gruppa." - -#: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy -msgid "Block user from group" -msgstr "Blokker brukaren" - #: actions/groupblock.php:160 #, php-format msgid "" @@ -1814,36 +1251,13 @@ msgid "" "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 "Ei liste over brukarane i denne gruppa." - -#. 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 "Ei liste over brukarane i denne gruppa." - #: actions/groupblock.php:206 msgid "Database error blocking user from group." msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "Ingen ID" - -#: actions/groupdesignsettings.php:68 -#, fuzzy -msgid "You must be logged in to edit a group." -msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." - -#: actions/groupdesignsettings.php:144 -#, fuzzy -msgid "Group design" -msgstr "Grupper" +msgstr "Nei Jabber-ID" #: actions/groupdesignsettings.php:155 msgid "" @@ -1851,32 +1265,14 @@ msgid "" "palette of your choice." 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 "Kan ikkje oppdatera brukar." - #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy msgid "Design preferences saved." -msgstr "Synkroniserings innstillingar blei lagra." +msgstr "Lagra brukarval." #: actions/grouplogo.php:142 actions/grouplogo.php:195 msgid "Group logo" msgstr "Logo Ã¥t gruppa" -#: actions/grouplogo.php:153 -#, fuzzy, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "Du kan lasta opp ein logo for gruppa." - -#: actions/grouplogo.php:365 -#, fuzzy -msgid "Pick a square area of the image to be the logo." -msgstr "Velg eit utvalg av bildet som vil blir din avatar." - #: actions/grouplogo.php:399 msgid "Logo updated." msgstr "Logo oppdatert." @@ -1891,9 +1287,9 @@ msgid "%s group members" msgstr "%s medlemmar i gruppa" #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "%s medlemmar i gruppa, side %d" +msgstr "%s medlemmar i gruppa" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1907,16 +1303,6 @@ msgstr "Administrator" msgid "Block" msgstr "Blokkér" -#: actions/groupmembers.php:487 -#, fuzzy -msgid "Make user an admin of the group" -msgstr "Du mÃ¥ være administrator for Ã¥ redigere gruppa" - -#: actions/groupmembers.php:519 -#, fuzzy -msgid "Make Admin" -msgstr "Administrator" - #: actions/groupmembers.php:519 msgid "Make this user an admin" msgstr "" @@ -1925,17 +1311,11 @@ 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" -#. 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 -msgid "Updates from members of %1$s on %2$s!" -msgstr "Oppdateringar frÃ¥ %1$s pÃ¥ %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" @@ -1960,24 +1340,14 @@ msgstr "" msgid "Create a new group" msgstr "Opprett ei ny gruppe" -#: actions/groupsearch.php:52 -#, 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 "" -"Søk for mennesker pÃ¥ %%site.name%% i namn, lokasjon eller interesse. Separer " -"nøkkelord med mellomrom; dei mÃ¥ være minimum 3 bokstavar eller meir." - #: actions/groupsearch.php:58 msgid "Group search" msgstr "Gruppesøk" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "Ingen resultat" +msgstr "Resultat frÃ¥ kommandoen" #: actions/groupsearch.php:82 #, php-format @@ -1997,20 +1367,14 @@ msgstr "" msgid "Only an admin can unblock group members." msgstr "" -#: actions/groupunblock.php:95 -#, fuzzy -msgid "User is not blocked from group." -msgstr "Brukar har blokkert deg." - #: actions/groupunblock.php:128 actions/unblock.php:86 msgid "Error removing the block." msgstr "Feil ved fjerning av blokka." #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "Ljonmeldinginnstillingar" +msgstr "Avatar-innstillingar" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2026,16 +1390,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 "Denne sida er ikkje tilgjengleg i eit" +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 "Ljonmeldingadresse" +msgstr "Epostadresser" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2065,9 +1427,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Brukarval" +msgstr "Lagra brukarval." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2135,17 +1496,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Det er feil lynmeldings addresse." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Kan ikkje sletta e-postgodkjenning." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Stadfesting avbrutt." +msgstr "Ingen stadfestingskode." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2155,14 +1509,8 @@ msgstr "Det er ikkje din Jabber ID." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "Addressa blei fjerna." - -#: actions/inbox.php:59 -#, fuzzy, php-format -msgid "Inbox for %1$s - page %2$d" -msgstr "Innboks for %s" +msgstr "Fjerna innkomande epostadresse." #: actions/inbox.php:62 #, php-format @@ -2178,9 +1526,9 @@ 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 "Du mÃ¥ verta logga inn for Ã¥ invitera andre brukarar til %s" +msgstr "Du mÃ¥ være logga inn for Ã¥ bli med i ei gruppe." #: actions/invite.php:72 #, php-format @@ -2201,7 +1549,7 @@ msgstr "Du tingar allereie oppdatering frÃ¥ desse brukarane:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2249,10 +1597,9 @@ msgstr "Eventuelt legg til ei personleg melding til invitasjonen." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "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 @@ -2317,67 +1664,49 @@ msgstr "" msgid "You must be logged in to join a group." msgstr "Du mÃ¥ være logga inn for Ã¥ bli med i ei gruppe." -#: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy -msgid "No nickname or ID." -msgstr "Ingen kallenamn." - -#. 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 -msgid "%1$s joined group %2$s" -msgstr "%s blei medlem av gruppe %s" - #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." msgstr "Du mÃ¥ være innlogga for Ã¥ melde deg ut av ei gruppe." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Du er ikkje medlem av den gruppa." -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%s forlot %s gruppa" +msgstr "%1$s sin status pÃ¥ %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 "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 -#, 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." @@ -2385,64 +1714,25 @@ msgstr "" "Skriv inn brukarnam og passord før du endrar innstillingar (av " "tryggleiksomsyn)." -#: actions/login.php:270 -#, fuzzy, php-format +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Logg inn med brukarnamn og passord. Har du ikkje brukarnamn endÃ¥? [Opprett](%" -"%action.register%%) ein ny konto, eller prøv [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 -msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "Brukar har blokkert deg." - #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "Kunne ikkje fjerne %s fra %s gruppa " - -#: actions/makeadmin.php:146 -#, fuzzy, php-format -msgid "Can't make %1$s an admin for group %2$s." -msgstr "Du mÃ¥ være administrator for Ã¥ redigere gruppa" - -#: actions/microsummary.php:69 -#, fuzzy -msgid "No current status." -msgstr "Ingen status" - -#: actions/newapplication.php:52 -#, fuzzy -msgid "New Application" -msgstr "Denne notisen finst ikkje." - -#: actions/newapplication.php:64 -#, fuzzy -msgid "You must be logged in to register an application." -msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." - -#: actions/newapplication.php:143 -#, fuzzy -msgid "Use this form to register a new application." -msgstr "Bruk dette skjemaet for Ã¥ lage ein ny gruppe." +msgstr "" #: actions/newapplication.php:176 msgid "Source URL is required." msgstr "" -#: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy -msgid "Could not create application." -msgstr "Kunne ikkje lagre favoritt." - #: actions/newgroup.php:53 msgid "New group" msgstr "Ny gruppe" @@ -2455,12 +1745,15 @@ msgstr "Bruk dette skjemaet for Ã¥ lage ein ny gruppe." msgid "New message" msgstr "Ny melding" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Du kan ikkje sende melding til denne brukaren." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Ingen innhald." @@ -2468,24 +1761,15 @@ msgstr "Ingen innhald." msgid "No recipient specified." msgstr "Ingen mottakar spesifisert." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" "Ikkje send ei melding til deg sjølv; berre sei det til deg sjølv stille og " "fredleg." -#: actions/newmessage.php:181 -#, fuzzy -msgid "Message sent" -msgstr "Melding" - -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "Direkte melding til %s sendt" - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax feil" @@ -2493,7 +1777,7 @@ msgstr "Ajax feil" msgid "New notice" msgstr "Ny notis" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Melding lagra" @@ -2511,9 +1795,9 @@ msgid "Text search" msgstr "Tekstsøk" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr " Søkestraum for «%s»" +msgstr "Melding fra %1$s pÃ¥ %2$s" #: actions/noticesearch.php:121 #, php-format @@ -2530,21 +1814,19 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "Oppdateringar frÃ¥ %1$s pÃ¥ %2$s!" +msgstr "" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Alle oppdateringer frÃ¥ søket «%s»" +msgstr "Oppdateringar frÃ¥ %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 brukaren tillét ikkje Ã¥ bli dytta, eller har ikkje stadfasta eller sat " -"e-postadressa si enno." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2555,37 +1837,17 @@ msgid "Nudge sent!" msgstr "Dytta!" #: actions/oauthappssettings.php:59 -#, fuzzy msgid "You must be logged in to list your applications." -msgstr "Du mÃ¥ være logga inn for Ã¥ lage ei gruppe." - -#: actions/oauthappssettings.php:74 -#, fuzzy -msgid "OAuth applications" -msgstr "Andre val" +msgstr "Du mÃ¥ være logga inn for Ã¥ bli med i ei gruppe." #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Du er ikkje medlem av den gruppa." - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2599,31 +1861,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 "Notisen har ingen profil" +msgstr "Brukaren har inga 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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "Kopla til" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Ikkje eit støtta dataformat." @@ -2636,9 +1897,8 @@ msgid "Notice Search" msgstr "Notissøk" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Andre innstillingar" +msgstr "Avatar-innstillingar" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2656,11 +1916,6 @@ msgstr "" msgid "Automatic shortening service to use." msgstr "Den automatisk forkortingstenesta du vil bruke" -#: actions/othersettings.php:122 -#, fuzzy -msgid "View profile designs" -msgstr "Profilinnstillingar" - #: actions/othersettings.php:123 msgid "Show or hide profile designs." msgstr "" @@ -2669,35 +1924,9 @@ msgstr "" msgid "URL shortening service is too long (max 50 chars)." msgstr "Adressa til forkortingstenesta er for lang (maksimalt 50 teikn)." -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "Ingen vald profil." - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "Ingen vald profil." - #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "Ingen profil-ID i førespurnaden." - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "Ugyldig notisinnhald" - -#: actions/otp.php:104 -#, fuzzy -msgid "Login token expired." -msgstr "Logg inn " - -#: actions/outbox.php:58 -#, fuzzy, php-format -msgid "Outbox for %1$s - page %2$d" -msgstr "Utboks for %s" +msgstr "Ingen autoriserings-spørjing!" #: actions/outbox.php:61 #, php-format @@ -2733,7 +1962,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" @@ -2745,11 +1974,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." @@ -2770,7 +1999,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 "" @@ -2779,34 +2008,29 @@ 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 "Denne sida er ikkje tilgjengleg i eit" +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Denne sida er ikkje tilgjengleg i eit" +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Denne sida er ikkje tilgjengleg i eit" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Denne sida er ikkje tilgjengleg i eit" +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." msgstr "" -#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 -#, fuzzy -msgid "Site" -msgstr "Invitér" - #: actions/pathsadminpanel.php:238 msgid "Server" msgstr "Tenar" @@ -2819,11 +2043,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "Statusmelding" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2844,10 +2063,6 @@ msgstr "" msgid "Theme" msgstr "" -#: actions/pathsadminpanel.php:264 -msgid "Theme server" -msgstr "" - #: actions/pathsadminpanel.php:268 msgid "Theme path" msgstr "" @@ -2856,25 +2071,9 @@ msgstr "" msgid "Theme directory" msgstr "" -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "Brukarbilete" - -#: actions/pathsadminpanel.php:284 -#, fuzzy -msgid "Avatar server" -msgstr "Avatar-innstillingar" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "Lasta opp brukarbilete." - #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "Lasta opp brukarbilete." +msgstr "" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" @@ -2892,20 +2091,9 @@ msgstr "" msgid "Background directory" msgstr "" -#: actions/pathsadminpanel.php:320 -#, fuzzy -msgid "SSL" -msgstr "SMS" - #: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy msgid "Never" -msgstr "Gjenopprett" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "Notisar" +msgstr "Tenar" #: actions/pathsadminpanel.php:325 msgid "Always" @@ -2920,18 +2108,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Gjenopprett" +msgstr "Tenar" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Statusmelding" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2947,19 +2133,13 @@ msgid "People search" msgstr "Søk etter folk" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Ikkje gyldig merkelapp: %s" - -#: actions/peopletag.php:142 -#, fuzzy, php-format -msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Brukarar sjølv-merka med %s, side %d" +msgstr "Ikkje ei gyldig epostadresse." #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Ugyldig notisinnhald" +msgstr "Ugyldig filnamn." #: actions/postnotice.php:101 #, php-format @@ -2986,44 +2166,43 @@ 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 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "Skriv om deg og interessene dine med 140 teikn" +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 "Skildra deg sjølv og din" +msgstr "" -#: 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»" @@ -3066,11 +2245,6 @@ msgid "" msgstr "" "Automatisk ting notisane til dei som tingar mine (best for ikkje-menneskje)" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format -msgid "Bio is too long (max %d chars)." -msgstr "«Om meg» er for lang (maks 140 " - #: actions/profilesettings.php:235 actions/siteadminpanel.php:151 msgid "Timezone not selected." msgstr "Tidssone er ikkje valt." @@ -3088,11 +2262,6 @@ msgstr "Ugyldig merkelapp: %s" msgid "Couldn't update user for autosubscribe." msgstr "Kan ikkje oppdatera brukar for automatisk tinging." -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Kan ikkje lagra merkelapp." - #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Kan ikkje lagra profil." @@ -3124,20 +2293,9 @@ msgstr "Offentleg tidsline, side %d" msgid "Public timeline" msgstr "Offentleg tidsline" -#: actions/public.php:160 -#, fuzzy -msgid "Public Stream Feed (RSS 1.0)" -msgstr "Offentleg straum" - -#: actions/public.php:164 -#, fuzzy -msgid "Public Stream Feed (RSS 2.0)" -msgstr "Offentleg straum" - #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Offentleg straum" +msgstr "" #: actions/public.php:188 #, php-format @@ -3166,14 +2324,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 "" -"Dette er %%site.name%%, ei [mikroblogging](http://en.wikipedia.org/wiki/" -"Micro-blogging)-teneste" #: actions/publictagcloud.php:57 msgid "Public tag cloud" @@ -3230,26 +2386,12 @@ msgstr "Denne godkjenningskoden er for gammal. Vennligst start pÃ¥ nytt." #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." -msgstr "Kan ikkje oppdatera brukar med stadfesta e-postadresse." - -#: 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 "" +msgstr "Kunne ikkje oppdatera brukar med stadfesta e-postadresse." #: 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 "Ditt kallenamn pÃ¥ denne servere, eller din registrerte epost addresse." @@ -3318,7 +2460,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." @@ -3326,85 +2468,100 @@ 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 -#, 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:507 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:494 -#, fuzzy, php-format +#: 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 "" -" unnateke privatdata: passord, epostadresse, ljonmeldingsadresse og " -"telefonnummer." -#: actions/register.php:542 -#, 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" @@ -3421,21 +2578,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Gratulerer, %s! Og velkomen til %%%%site.name%%%%. FrÃ¥ her kann det henda du " -"vil...\n" -"\n" -"* GÃ¥ til [profilen din](%s) og skriva den fyrste meldinga.\n" -"* Leggja til ei [Jabber/GTalk adresse](%%%%action.imsettings%%%%) so du kann " -"laga nye meldingar ved hjelp av direktemeldingar.\n" -"* [Søkje etter folk](%%%%action.profilesettings%%%%) det kan hende du " -"kjenner, eller som du delar interesser med.\n" -"* Uppdatere dine [profilval] so du kann fortelja andre meir um deg sjølv.* " -"Lesa [hjelpetekstane](%%%%doc.help%%%%) for Ã¥ finna ut meir um funksjonar du " -"kann ha gÃ¥dd glipp av.\n" -"\n" -"Takk for at du blei med, og vi hÃ¥par du vil lika tenesta!" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3459,11 +2603,6 @@ msgstr "" msgid "Remote subscribe" msgstr "Eksternt abbonement" -#: actions/remotesubscribe.php:124 -#, fuzzy -msgid "Subscribe to a remote user" -msgstr "Lagre tinging for brukar: %s" - #: actions/remotesubscribe.php:129 msgid "User nickname" msgstr "Brukaren sitt kallenamn" @@ -3490,49 +2629,20 @@ msgid "Invalid profile URL (bad format)" msgstr "Ugyldig profil-nettadresse (feil format)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Ikkje ein brukande profil-netadresse (ingen YADIS-dokument)." +msgstr "" #: actions/remotesubscribe.php:176 -#, fuzzy msgid "That’s a local profile! Login to subscribe." -msgstr "Det er ikkje ein lokal profil! Log inn for Ã¥ tinge." +msgstr "" #: actions/remotesubscribe.php:183 -#, fuzzy msgid "Couldn’t get a request token." -msgstr "Fekk ikkje spørjingsbillett (request token)." +msgstr "" -#: actions/repeat.php:57 -#, fuzzy -msgid "Only logged-in users can repeat notices." -msgstr "Kun brukaren kan lese sine eigne meldingar." - -#: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy -msgid "No notice specified." -msgstr "Ingen vald profil." - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "Du kan ikkje registrera deg om du ikkje godtek vilkÃ¥ra i lisensen." - -#: actions/repeat.php:90 -#, fuzzy -msgid "You already repeated that notice." -msgstr "Du har allereie blokkert denne brukaren." - -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "Lag" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "Lag" +msgstr "Framheva" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3541,19 +2651,9 @@ msgid "Replies to %s" msgstr "Svar til %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Melding til %1$s pÃ¥ %2$s" - -#: actions/replies.php:145 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 1.0)" -msgstr "Notisstraum for %s" - -#: actions/replies.php:152 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 2.0)" -msgstr "Notisstraum for %s" +msgstr "Svar til %s" #: actions/replies.php:159 #, php-format @@ -3564,7 +2664,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 @@ -3577,43 +2677,21 @@ 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 -msgid "Replies to %1$s on %2$s!" -msgstr "Melding til %1$s pÃ¥ %2$s" - #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Du kan ikkje sende melding til denne brukaren." +msgstr "Du kan ikkje lengre legge inn notisar pÃ¥ denne sida." -#: actions/revokerole.php:82 -#, fuzzy -msgid "User doesn't have this role." -msgstr "Kan ikkje finne brukar" - -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "Lasta opp brukarbilete." - -#: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy -msgid "You cannot sandbox users on this site." -msgstr "Du kan ikkje sende melding til denne brukaren." - -#: actions/sandbox.php:72 -#, fuzzy -msgid "User is already sandboxed." -msgstr "Brukar har blokkert deg." +msgstr "Statistikk" #. 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 "" @@ -3637,47 +2715,18 @@ msgstr "" 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 "Avatar-innstillingar" - -#: actions/showapplication.php:82 -#, fuzzy -msgid "You must be logged in to view an application." -msgstr "Du mÃ¥ være innlogga for Ã¥ melde deg ut av ei gruppe." - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "Notisen har ingen profil" - #. 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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Kallenamn" - #. TRANS: Form input field label. -#: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy -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" @@ -3687,18 +2736,10 @@ msgstr "Statistikk" 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 "" @@ -3725,16 +2766,6 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Sikker pÃ¥ at du vil sletta notisen?" - -#: actions/showfavorites.php:79 -#, fuzzy, php-format -msgid "%1$s's favorite notices, page %2$d" -msgstr "%s's favoritt meldingar" - #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." msgstr "Kunne ikkje hente fram favorittane." @@ -3763,16 +2794,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 @@ -3785,9 +2816,9 @@ msgid "%s group" msgstr "%s gruppe" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "%s medlemmar i gruppa, side %d" +msgstr "Grupper, side %d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3812,26 +2843,26 @@ msgid "Group actions" msgstr "Gruppe handlingar" #: actions/showgroup.php:338 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "Notisstraum for %s gruppa" +msgstr "Straum for vener av %s" #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "Notisstraum for %s gruppa" +msgstr "Straum for vener av %s" #: actions/showgroup.php:350 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (Atom)" -msgstr "Notisstraum for %s gruppa" +msgstr "Notisstraum for %s" #: actions/showgroup.php:355 #, php-format 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" @@ -3845,12 +2876,11 @@ msgstr "(Ingen)" msgid "All members" msgstr "Alle medlemmar" -#: actions/showgroup.php:447 -#, fuzzy +#: actions/showgroup.php:439 msgid "Created" -msgstr "Lag" +msgstr "Framheva" -#: actions/showgroup.php:463 +#: actions/showgroup.php:455 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3860,21 +2890,14 @@ 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** er ei brukargruppe pÃ¥ %%%%site.name%%%%, ei [mikroblogging](http://en." -"wikipedia.org/wiki/Micro-blogging)-teneste" - -#: actions/showgroup.php:497 -#, fuzzy -msgid "Admins" -msgstr "Administrator" #: actions/showmessage.php:81 msgid "No such message." @@ -3894,45 +2917,25 @@ msgstr "Melding til %1$s pÃ¥ %2$s" msgid "Message from %1$s on %2$s" msgstr "Melding fra %1$s pÃ¥ %2$s" -#: actions/shownotice.php:90 -#, fuzzy -msgid "Notice deleted." -msgstr "Melding lagra" - -#: actions/showstream.php:73 -#, fuzzy, php-format -msgid " tagged %s" -msgstr "Notisar merka med %s" - #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s med vener, side %d" +msgstr "Grupper, side %d" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Notisstraum for %s gruppa" +msgstr "Straum for vener av %s" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Notisstraum for %s" +msgstr "Straum for vener av %s" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Notisstraum for %s" - -#: actions/showstream.php:143 -#, fuzzy, php-format -msgid "Notice feed for %s (Atom)" -msgstr "Notisstraum for %s" - -#: actions/showstream.php:148 -#, fuzzy, php-format -msgid "FOAF for %s" -msgstr "Utboks for %s" +msgstr "Straum for vener av %s" #: actions/showstream.php:200 #, php-format @@ -3948,8 +2951,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 @@ -3962,29 +2965,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** har ein konto pÃ¥ %%%%site.name%%%%, ei [mikroblogging](http://en." -"wikipedia.org/wiki/Micro-blogging)-teneste" - -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "Svar til %s" - -#: actions/silence.php:65 actions/unsilence.php:65 -#, fuzzy -msgid "You cannot silence users on this site." -msgstr "Du kan ikkje sende melding til denne brukaren." - -#: actions/silence.php:72 -#, fuzzy -msgid "User is already silenced." -msgstr "Brukar har blokkert deg." #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" @@ -3995,9 +2981,8 @@ msgid "Site name must have non-zero length." msgstr "" #: actions/siteadminpanel.php:141 -#, fuzzy msgid "You must have a valid contact email address." -msgstr "Ikkje ei gyldig epostadresse" +msgstr "Ikkje ei gyldig epostadresse." #: actions/siteadminpanel.php:159 #, php-format @@ -4016,11 +3001,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "Statusmelding" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -4041,16 +3021,6 @@ msgstr "" 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 "Ny epostadresse for Ã¥ oppdatera %s" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "Lokale syningar" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4059,11 +3029,6 @@ msgstr "" msgid "Default timezone for the site; usually UTC." msgstr "" -#: actions/siteadminpanel.php:262 -#, fuzzy -msgid "Default language" -msgstr "Foretrukke sprÃ¥k" - #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" @@ -4088,44 +3053,18 @@ msgstr "" msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -msgid "Site Notice" -msgstr "Statusmelding" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "Ny melding" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Klarte ikkje Ã¥ lagra Twitter-innstillingane dine!" - #: 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 "Statusmelding" - #: 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 "Statusmelding" - #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "SMS innstillingar" +msgstr "Avatar-innstillingar" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4136,15 +3075,13 @@ msgstr "Du kan motta SMS-meldingar gjennom e-post frÃ¥ %%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 "Denne sida er ikkje tilgjengleg i eit" +msgstr "" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Ljonmeldingadresse" +msgstr "Epostadresser" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4166,18 +3103,10 @@ msgstr "Stadfestingskode" msgid "Enter the code you received on your phone." msgstr "Skriv inn koden du fekk pÃ¥ telefonen." -#. TRANS: Button label to confirm SMS confirmation code in SMS settings. -#: actions/smssettings.php:148 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Godta" - #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "SMS telefon nummer" +msgstr "Ingen telefonnummer." #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4186,9 +3115,8 @@ msgstr "Telefonnummer, kun tall, med landskode" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Brukarval" +msgstr "Lagra brukarval." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4199,12 +3127,6 @@ msgstr "" "Send meg ein notis via SMS; eg forstÃ¥r at dette kan føre til kostnadar fra " "min tilbydar." -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Lagra brukarval." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." @@ -4227,13 +3149,12 @@ msgstr "Det telefonnummeret er alt registrert hos ein annan brukar." #. 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 "" -"Sende godkjenningskode til telefonnummeret du la til. Sjekk innboksen for " -"koden og veiledning pÃ¥ korleis du nyttar han." +"Sendte godkjenningskode til epostadressa du la til. Sjekk innboksen (og " +"søppelpostboksen) for koden og veiledning pÃ¥ korleis du nyttar han." #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4242,9 +3163,8 @@ msgstr "Det er feil godkjennings nummer." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Stadfesting avbrutt." +msgstr "SMS bekreftelse" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4252,12 +3172,6 @@ msgstr "Stadfesting avbrutt." msgid "That is not your phone number." msgstr "Det er ikkje ditt telefonnummer" -#. 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 telefon nummer" - #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 msgid "Mobile carrier" @@ -4286,18 +3200,13 @@ 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 "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Navigasjon for hovudsida" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Stadfesting av epostadresse" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." @@ -4339,16 +3248,12 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Avatar-innstillingar" - #: actions/subedit.php:70 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." @@ -4356,16 +3261,6 @@ msgstr "Kunne ikkje lagra abonnement." msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "Denne notisen finst ikkje." - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Du tingar ikkje oppdateringar til den profilen." - #: actions/subscribe.php:145 msgid "Subscribed" msgstr "Abonnent" @@ -4376,9 +3271,9 @@ msgid "%s subscribers" msgstr "%s tingarar" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "%s tingarar, side %d" +msgstr "%s tingarar" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4413,9 +3308,9 @@ msgid "%s subscriptions" msgstr "%s tingarar" #: actions/subscriptions.php:54 -#, fuzzy, php-format +#, php-format msgid "%1$s subscriptions, page %2$d" -msgstr "%s tingingar, side %d" +msgstr "%s tingarar" #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." @@ -4437,9 +3332,9 @@ msgid "" msgstr "" #: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format +#, php-format msgid "%s is not listening to anyone." -msgstr "%1$s høyrer no pÃ¥" +msgstr "%1$s høyrer no pÃ¥ notisane dine pÃ¥ %2$s." #: actions/subscriptions.php:208 msgid "Jabber" @@ -4450,29 +3345,23 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Brukarar sjølv-merka med %s, side %d" +msgstr "Notisar merka med %s" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Notisstraum for %s" +msgstr "Straum for vener av %s" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Notisstraum for %s" - -#: actions/tag.php:99 -#, fuzzy, php-format -msgid "Notice feed for tag %s (Atom)" -msgstr "Notisstraum for %s" +msgstr "Straum for vener av %s" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "Manglar argumentet ID." +msgstr "" #: actions/tagother.php:65 #, php-format @@ -4521,29 +3410,17 @@ 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." -msgstr "Du har allereie blokkert denne brukaren." +msgstr "Du tingar ikkje oppdateringar til den profilen." #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "Brukar har blokkert deg." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "Brukaren har inga profil." +msgstr "Brukaren har ikkje siste notis" #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Ingen profil-ID i førespurnaden." +msgstr "Fann ingen profil med den IDen." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4555,13 +3432,6 @@ msgid "" "Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’." msgstr "" -#. TRANS: User admin panel title -#: actions/useradminpanel.php:59 -#, fuzzy -msgctxt "TITLE" -msgid "User" -msgstr "Brukar" - #: actions/useradminpanel.php:70 msgid "User settings for this StatusNet site." msgstr "" @@ -4593,11 +3463,6 @@ msgstr "" msgid "Maximum length of a profile bio in characters." msgstr "" -#: actions/useradminpanel.php:231 -#, fuzzy -msgid "New users" -msgstr "Invitér nye brukarar" - #: actions/useradminpanel.php:235 msgid "New user welcome" msgstr "" @@ -4606,27 +3471,6 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "Alle tingingar" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "" -"Automatisk ting notisane til dei som tingar mine (best for ikkje-menneskje)" - -#: actions/useradminpanel.php:251 -#, fuzzy -msgid "Invitations" -msgstr "Invitasjon(er) sendt" - -#: actions/useradminpanel.php:256 -#, fuzzy -msgid "Invitations enabled" -msgstr "Invitasjon(er) sendt" - #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" @@ -4636,19 +3480,15 @@ msgid "Authorize subscription" msgstr "Autoriser tinging" #: 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 "" -"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 -#, fuzzy +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" -msgstr "lisens." +msgstr "" #: actions/userauthorization.php:217 msgid "Accept" @@ -4663,11 +3503,6 @@ msgstr "Lagre tinging for brukar: %s" msgid "Reject" msgstr "AvslÃ¥" -#: actions/userauthorization.php:220 -#, fuzzy -msgid "Reject this subscription" -msgstr "%s tingarar" - #: actions/userauthorization.php:232 msgid "No authorization request!" msgstr "Ingen autoriserings-spørjing!" @@ -4677,29 +3512,22 @@ msgid "Subscription authorized" msgstr "Tinging autorisert" #: 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 "" -"Tingina har blitt autorisert, men ingen henvisnings URL er tilgjengleg. " -"Sjekk med sida sine instruksjonar for korleis autorisering til tinginga skal " -"gjennomførast. Ditt tingings teikn er: " #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "Tinging avvist" #: 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 "" -"Tingina har blitt avvist, men ingen henvisnings URL er tilgjengleg. Sjekk " -"med sida sine instruksjonar for korleis ein skal avvise tinginga." #: actions/userauthorization.php:303 #, php-format @@ -4727,19 +3555,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 "Kan ikkje lesa brukarbilete-URL «%s»" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Feil biletetype for '%s'" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "Profilinnstillingar" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4753,19 +3576,13 @@ 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 medlemmar i gruppa, side %d" +msgstr "Grupper, side %d" #: actions/usergroups.php:132 -#, fuzzy msgid "Search for more groups" -msgstr "Søk etter folk eller innhald" - -#: actions/usergroups.php:159 -#, fuzzy, php-format -msgid "%s is not a member of any group." -msgstr "Du er ikkje medlem av den gruppa." +msgstr "" #: actions/usergroups.php:164 #, php-format @@ -4777,29 +3594,24 @@ 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 -#, 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 " @@ -4807,7 +3619,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 " @@ -4815,186 +3627,177 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -msgstr "Gruppe profil" +#. 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." -#: classes/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Kann ikkje oppdatera gruppa." +#. 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/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Gruppe profil" - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Kann ikkje oppdatera gruppa." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Kunne ikkje lagre favoritt." - -#: classes/Message.php:45 -#, 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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s" +msgstr "Feil med innhenting av brukarbilete." -#: classes/Notice.php:245 -#, 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:270 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:276 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 -#, fuzzy -msgid "" -"Too many duplicate messages too quickly; take a breather and post again in a " -"few minutes." -msgstr "" -"For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt." - -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Eit problem oppstod ved lagring av notis." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Eit problem oppstod ved lagring av notis." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%1$s (%2$s)" +msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -#, fuzzy -msgid "You have been banned from subscribing." -msgstr "Brukaren tillet deg ikkje Ã¥ tinga meldingane sine." - -#: classes/Subscription.php:78 -msgid "Already subscribed!" +#. 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:82 +#. 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 tag cannot be saved. +#: classes/Status_network.php:339 +msgid "Unable to save tag." +msgstr "Kunne ikkje lagra emneord." + +#. 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 -#, fuzzy -msgid "Not subscribed!" -msgstr "Ikkje tinga." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Kunne ikkje lagra abonnement." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Kan ikkje sletta tinging." +#. 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 "Kunne ikkje lagra abonnement." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Kan ikkje sletta tinging." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Kunne ikkje lagra abonnement." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Kan ikkje sletta tinging." - -#: classes/User.php:363 -#, 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Kunne ikkje bli med i gruppa." +msgstr "Kunne ikkje laga 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 -#, fuzzy -msgid "Could not save local group info." -msgstr "Kunne ikkje lagra abonnement." - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" @@ -5015,12 +3818,6 @@ msgstr "Endra passordet ditt" msgid "Change email handling" msgstr "Endra eposthandtering" -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:137 -#, fuzzy -msgid "Design your profile" -msgstr "Brukarprofil" - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:144 msgid "Other options" @@ -5031,234 +3828,152 @@ msgstr "Andre val" msgid "Other" msgstr "Anna" -#. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Navigasjon for hovudsida" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -#, fuzzy -msgctxt "MENU" -msgid "Personal" -msgstr "Personleg" +msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "Endra e-posten, avataren, passordet eller profilen" +msgstr "Endra passordet ditt" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Klarte ikkje Ã¥ omdirigera til tenaren: %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:468 msgid "Connect" msgstr "Kopla til" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Admin" -msgstr "Administrator" - -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, 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 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "Invitér" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 msgctxt "TOOLTIP" msgid "Logout from the site" -msgstr "Logg ut or sida" +msgstr "Logg inn " #. TRANS: Main menu option when logged in to log out the current user -#: lib/action.php:467 -#, fuzzy +#: lib/action.php:490 msgctxt "MENU" msgid "Logout" -msgstr "Logg ut" +msgstr "Logo" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "Registrér" +msgstr "Opprett ei ny gruppe" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "Logg inn or sida" - -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "Logg inn" +msgstr "Logg inn " #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "Hjelp meg!" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" msgstr "Hjelp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "Søk etter folk eller innhald" - -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -msgstr "Søk" +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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Hjelp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Om" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "OSS" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Personvern" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Kjeldekode" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 -#, fuzzy -msgid "Badge" -msgstr "Dult" - #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 msgid "StatusNet software license" msgstr "StatusNets programvarelisens" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set. -#: lib/action.php:817 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** er ei mikrobloggingteneste av [%%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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5269,56 +3984,50 @@ msgstr "" "%s, tilgjengeleg under [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 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Før »" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5326,162 +4035,40 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "Du kan ikkje sende melding til denne brukaren." - -#. 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 "Registrering ikkje tillatt." - -#. TRANS: Client error message. -#: lib/adminpanelaction.php:229 -#, fuzzy -msgid "showForm() not implemented." -msgstr "Kommando ikkje implementert." - -#. TRANS: Client error message -#: lib/adminpanelaction.php:259 -#, fuzzy -msgid "saveSettings() not implemented." -msgstr "Kommando ikkje implementert." - -#. 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 "Klarte ikkje Ã¥ lagra Twitter-innstillingane dine!" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Stadfesting av epostadresse" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy -msgctxt "MENU" -msgid "Site" -msgstr "Invitér" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "SMS bekreftelse" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "Personleg" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy -msgid "User configuration" -msgstr "SMS bekreftelse" +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 "Brukar" -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy -msgid "Access configuration" -msgstr "SMS bekreftelse" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "SMS bekreftelse" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "SMS bekreftelse" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "Statusmelding" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "SMS bekreftelse" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format -msgid "Describe your application in %d characters" -msgstr "Beskriv gruppa eller emnet med 140 teikn" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Beskriv gruppa eller emnet med 140 teikn" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:224 -#, fuzzy -msgid "URL of the homepage of this application" -msgstr "URL til heimesida eller bloggen for gruppa eller emnet" - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "Kjeldekode" +msgstr "Beskriving" #. 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 -#, fuzzy -msgid "URL for the homepage of the organization" -msgstr "URL til heimesida eller bloggen for gruppa eller emnet" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" @@ -5540,15 +4127,9 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Fjern" - -#. TRANS: DT element label in attachment list. -#: lib/attachmentlist.php:88 -msgid "Attachments" -msgstr "" +msgstr "Gjenopprett" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 @@ -5557,28 +4138,13 @@ msgstr "" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 -#, fuzzy msgid "Provider" -msgstr "Profil" +msgstr "Forhandsvis" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Endra passord" - -#: lib/authenticationplugin.php:235 -#, fuzzy -msgid "Password changing is not allowed" -msgstr "Endra passord" - #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" msgstr "Resultat frÃ¥ kommandoen" @@ -5591,45 +4157,21 @@ msgstr "Kommandoen utførd" msgid "Command failed" msgstr "Kommandoen feila" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "Fann ingen profil med den IDen." - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Brukaren har ikkje siste notis" - -#. 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 "Kan ikkje oppdatera brukar med stadfesta e-postadresse." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Kan ikkje oppdatera brukar med stadfesta e-postadresse." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Orsak, men kommandoen er ikkje laga enno." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Dytta!" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5637,55 +4179,39 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Notis markert som favoritt." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Du er allereie medlem av den gruppa" - -#. 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 "Kunne ikkje melde brukaren %s inn i gruppa %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 "Kunne ikkje fjerne %s fra %s gruppa " - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Heimeside: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Om: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5694,150 +4220,105 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Melding for lang - maksimum 140 teikn, du skreiv %d" - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "Direkte melding til %s sendt" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Ein feil oppstod ved sending av direkte melding." -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Kan ikkje slÃ¥ pÃ¥ notifikasjon." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Slett denne notisen" - -#. 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 "Melding lagra" - -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Eit problem oppstod ved lagring av notis." +msgstr "Feil ved Ã¥ setja brukar." -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Melding for lang - maksimum 140 teikn, du skreiv %d" - -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "Svar pÃ¥ denne notisen" - -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "Eit problem oppstod ved lagring av notis." - -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Spesifer namnet til brukaren du vil tinge" - -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "Du tingar ikkje oppdateringar til den profilen." - -#: lib/command.php:634 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Subscribed to %s" -msgstr "Tingar %s" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Spesifer namnet til brukar du vil fjerne tinging pÃ¥" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Tingar ikkje %s lengre" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Kommando ikkje implementert." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notifikasjon av." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Kan ikkje skru av notifikasjon." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notifikasjon pÃ¥." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Kan ikkje slÃ¥ pÃ¥ notifikasjon." -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Tingar ikkje %s lengre" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Du tingar ikkje oppdateringar til den profilen." - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Du tingar allereie oppdatering frÃ¥ desse brukarane:" msgstr[1] "Du tingar allereie oppdatering frÃ¥ desse brukarane:" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Kan ikkje tinga andre til deg." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Kan ikkje tinga andre til deg." msgstr[1] "Kan ikkje tinga andre til deg." -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "Du er ikkje medlem av den gruppa." - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Du er ikkje medlem av den gruppa." msgstr[1] "Du er ikkje medlem av den gruppa." -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5879,11 +4360,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Ingen stadfestingskode." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5892,11 +4368,6 @@ msgstr "" msgid "You may wish to run the installer to fix this." msgstr "" -#: lib/common.php:139 -#, fuzzy -msgid "Go to the installer." -msgstr "Logg inn or sida" - #: lib/connectsettingsaction.php:110 msgid "IM" msgstr "Ljonmelding" @@ -5909,11 +4380,6 @@ msgstr "Oppdateringar over direktemeldingar (IM)" msgid "Updates by SMS" msgstr "Oppdateringar over SMS" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "Kopla til" - #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" msgstr "" @@ -5923,19 +4389,13 @@ msgid "Database error" msgstr "" #: lib/designsettings.php:105 -#, fuzzy msgid "Upload file" -msgstr "Last opp" +msgstr "Last opp fil" #: lib/designsettings.php:109 -#, fuzzy msgid "" "You can upload your personal background image. The maximum file size is 2MB." -msgstr "Du kan laste opp ein personleg avatar." - -#: lib/designsettings.php:418 -msgid "Design defaults restored." -msgstr "" +msgstr "Du kan lasta opp ein logo for gruppa." #: lib/disfavorform.php:114 lib/disfavorform.php:140 msgid "Disfavor this notice" @@ -5977,11 +4437,6 @@ msgstr "Filtrer emneord" msgid "All" msgstr "Alle" -#: lib/galleryaction.php:139 -#, fuzzy -msgid "Select tag to filter" -msgstr "Velg ein tilbydar" - #: lib/galleryaction.php:140 msgid "Tag" msgstr "Merkelapp" @@ -6003,15 +4458,10 @@ msgstr "" msgid "URL of the homepage or blog of the group or topic" msgstr "URL til heimesida eller bloggen for gruppa eller emnet" -#: lib/groupeditform.php:168 -#, fuzzy -msgid "Describe the group or topic" -msgstr "Beskriv gruppa eller emnet med 140 teikn" - #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Beskriv gruppa eller emnet med 140 teikn" +msgstr "" #: lib/groupeditform.php:179 msgid "" @@ -6027,16 +4477,6 @@ msgstr "" msgid "Group" msgstr "Gruppe" -#: lib/groupnav.php:101 -#, fuzzy -msgid "Blocked" -msgstr "Blokkér" - -#: lib/groupnav.php:102 -#, fuzzy, php-format -msgid "%s blocked users" -msgstr "Blokker brukaren" - #: lib/groupnav.php:108 #, php-format msgid "Edit %s group properties" @@ -6051,11 +4491,6 @@ msgstr "Logo" msgid "Add or edit %s logo" msgstr "Legg til eller rediger logoen til %s" -#: lib/groupnav.php:120 -#, fuzzy, php-format -msgid "Add or edit %s design" -msgstr "Legg til eller rediger logoen til %s" - #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" msgstr "Grupper med flest medlemmar" @@ -6078,11 +4513,6 @@ msgstr "Denne sida er ikkje tilgjengeleg i nokon mediatype du aksepterer." msgid "Unsupported image file format." msgstr "Støttar ikkje bileteformatet." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "Du kan lasta opp ein logo for gruppa." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Hallvegs opplasta." @@ -6166,9 +4596,16 @@ 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 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6181,29 +4618,21 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s fylgjer no oppdateringane dine pÃ¥ %2$s.\n" -"\n" -"\t%3$s\n" -"\n" -"Beste helsing,\n" -"%4$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 "" -"Bio: %s\n" -"\n" +msgstr "Stad: %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 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" @@ -6224,30 +4653,24 @@ 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 -#, 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 " @@ -6264,13 +4687,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" @@ -6290,13 +4713,14 @@ 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 "%s la til di melding som ein favoritt" +msgstr "" +"Send meg ein epost nÃ¥r nokon legg til ein av mine notisar som 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" @@ -6318,7 +4742,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" @@ -6326,13 +4750,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6369,10 +4788,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " frÃ¥ " +msgstr "" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6390,11 +4808,6 @@ msgstr "Beklager, det er ikkje di inngÃ¥ande epost addresse." msgid "Sorry, no incoming email allowed." msgstr "Beklager, inngÃ¥ande epost er ikkje tillatt." -#: lib/mailhandler.php:228 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "Støttar ikkje bileteformatet." - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6425,25 +4838,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 "Kan ikkje hente offentleg straum." +msgstr "Kunne ikkje slette favoritt." -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." msgstr "" -#: lib/mediafile.php:275 +#: lib/mediafile.php:323 #, php-format msgid "%s is not a supported file type on this server." msgstr "" @@ -6456,102 +4868,82 @@ msgstr "Send ei direkte melding" msgid "To" msgstr "Til" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Tilgjenglege teikn" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Send" +msgstr "" #: lib/noticeform.php:160 msgid "Send a notice" msgstr "Send ei melding" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Kva skjer, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Kan ikkje lagra merkelapp." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Kan ikkje lagra merkelapp." +msgstr "" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "" + +#: lib/noticeform.php:217 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 -#, 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:567 -#, fuzzy -msgid "in context" -msgstr "Ingen innhald." +#: lib/noticelist.php:502 +msgid "web" +msgstr "" -#: lib/noticelist.php:602 -#, fuzzy -msgid "Repeated by" -msgstr "Lag" - -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Svar pÃ¥ denne notisen" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Svar" -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "Melding lagra" - #: lib/nudgeform.php:116 msgid "Nudge this user" msgstr "Dult denne brukaren" @@ -6580,11 +4972,6 @@ msgstr "Feil ved oppdatering av ekstern profil" msgid "Error inserting remote profile" msgstr "Feil med Ã¥ henta inn ekstern profil" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Slett notis" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Kan ikkje leggja til ny tinging." @@ -6622,11 +5009,6 @@ msgstr "Dine sende meldingar" msgid "Tags in %s's notices" msgstr "Merkelappar i %s sine notisar" -#: lib/plugin.php:114 -#, fuzzy -msgid "Unknown" -msgstr "Uventa handling." - #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" msgstr "Tingingar" @@ -6643,11 +5025,6 @@ msgstr "Tingarar" msgid "All subscribers" msgstr "Tingarar" -#: lib/profileaction.php:191 -#, fuzzy -msgid "User ID" -msgstr "Brukar" - #: lib/profileaction.php:196 msgid "Member since" msgstr "Medlem sidan" @@ -6661,7 +5038,7 @@ msgstr "" msgid "All groups" msgstr "Alle gruppar" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6685,48 +5062,22 @@ msgstr "Framheva" msgid "Popular" msgstr "Populære" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Manglar argumentet ID." - -#: lib/repeatform.php:107 -#, fuzzy -msgid "Repeat this notice?" -msgstr "Svar pÃ¥ denne notisen" +msgstr "" #: lib/repeatform.php:132 msgid "Yes" msgstr "Jau" -#: lib/repeatform.php:132 -#, fuzzy -msgid "Repeat this notice" -msgstr "Svar pÃ¥ denne notisen" - #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Ei liste over brukarane i denne gruppa." - -#: lib/router.php:704 -msgid "No single user defined for single-user mode." msgstr "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "Innboks" - -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "LÃ¥s opp brukaren" - -#: lib/searchaction.php:120 -#, fuzzy -msgid "Search site" -msgstr "Søk" +#: lib/router.php:709 +msgid "No single user defined for single-user mode." +msgstr "" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6736,11 +5087,6 @@ msgstr "" msgid "Search" msgstr "Søk" -#: lib/searchaction.php:162 -#, fuzzy -msgid "Search help" -msgstr "Søk" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "Folk" @@ -6765,16 +5111,6 @@ msgstr "Seksjon utan tittel" msgid "More..." msgstr "" -#: lib/silenceform.php:67 -#, fuzzy -msgid "Silence" -msgstr "Statusmelding" - -#: lib/silenceform.php:78 -#, fuzzy -msgid "Silence this user" -msgstr "Blokkér denne brukaren" - #: lib/subgroupnav.php:83 #, php-format msgid "People %s subscribes to" @@ -6813,6 +5149,46 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Feil ved fjerning av blokka." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Med flest meldingar" @@ -6821,20 +5197,10 @@ msgstr "Med flest meldingar" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "LÃ¥s opp brukaren" - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -msgid "Unsilence this user" -msgstr "LÃ¥s opp brukaren" - #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" msgstr "Fjern tinging fra denne brukaren" @@ -6843,16 +5209,6 @@ msgstr "Fjern tinging fra denne brukaren" msgid "Unsubscribe" msgstr "Fjern tinging" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Brukaren har inga profil." - -#: lib/userprofile.php:117 -#, fuzzy -msgid "Edit Avatar" -msgstr "Brukarbilete" - #: lib/userprofile.php:234 lib/userprofile.php:248 msgid "User actions" msgstr "Brukarverkty" @@ -6861,11 +5217,6 @@ msgstr "Brukarverkty" msgid "User deletion in progress..." msgstr "" -#: lib/userprofile.php:263 -#, fuzzy -msgid "Edit profile settings" -msgstr "Profilinnstillingar" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" @@ -6882,16 +5233,10 @@ msgstr "Melding" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "Brukarprofil" - #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" -msgstr "Administrator" +msgstr "" #: lib/userprofile.php:367 msgctxt "role" @@ -6899,70 +5244,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "omtrent eitt Ã¥r sidan" -#: lib/webcolor.php:82 -#, fuzzy, php-format -msgid "%s is not a valid color!" -msgstr "Heimesida er ikkje ei gyldig internettadresse." - #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" - -#: lib/xmppmanager.php:403 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Melding for lang - maksimum 140 teikn, du skreiv %d" diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po index 4aeae1113e..d87c2de9ec 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:35+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:13+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +89,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +128,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:114 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 +162,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 +172,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +269,7 @@ msgstr "Nie można zapisać profilu." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -328,49 +328,50 @@ msgstr "BezpoÅ›rednia wiadomość do użytkownika %s" msgid "All the direct messages sent to %s" msgstr "Wszystkie bezpoÅ›rednie wiadomoÅ›ci wysÅ‚ane do użytkownika %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Brak tekstu wiadomoÅ›ci." -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Wiadomość jest za dÅ‚uga. Maksymalna dÅ‚ugość wynosi %d znaków." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Nie odnaleziono odbiorcy." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +387,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 +400,134 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +538,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 +611,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:463 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 +624,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 +641,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." @@ -641,67 +654,73 @@ msgstr "Nie można usuwać stanów innych użytkowników." msgid "No such notice." msgstr "Nie ma takiego wpisu." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Nie można powtórzyć wÅ‚asnego wpisu." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Nie odnaleziono." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 +735,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 +801,7 @@ msgid "Preview" msgstr "PodglÄ…d" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "UsuÅ„" @@ -818,11 +841,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 +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" @@ -846,7 +869,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 +878,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,14 +886,16 @@ 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Ä™." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -880,8 +905,8 @@ msgstr "Zapisanie informacji o blokadzie nie powiodÅ‚o siÄ™." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Nie ma takiej grupy." @@ -994,7 +1019,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:1307 msgid "There was a problem with your session token." msgstr "WystÄ…piÅ‚ problem z tokenem sesji." @@ -1027,7 +1052,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 +1083,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "UsuÅ„ ten wpis" @@ -1098,45 +1123,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 +1177,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 +1245,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 +1359,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 +1517,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 +1745,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 +1888,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" @@ -2126,7 +2168,7 @@ msgstr "JesteÅ› już subskrybowany do tych użytkowników:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2250,9 +2292,7 @@ msgstr "Musisz być zalogowany, aby doÅ‚Ä…czyć do grupy." msgid "No nickname or ID." msgstr "Brak pseudonimu lub identyfikatora." -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "Użytkownik %1$s doÅ‚Ä…czyÅ‚ do grupy %2$s" @@ -2261,52 +2301,51 @@ msgstr "Użytkownik %1$s doÅ‚Ä…czyÅ‚ do grupy %2$s" msgid "You must be logged in to leave a group." msgstr "Musisz być zalogowany, aby opuÅ›cić grupÄ™." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Nie jesteÅ› czÅ‚onkiem tej grupy." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2353,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Zaloguj się za pomocÄ… nazwy użytkownika i hasÅ‚a. Nie masz ich jeszcze? " -"[Zarejestruj](%%action.register%%) nowe konto." +"Nie masz jeszcze nazwy użytkownika? [Zarejestruj](%%action.register%%) nowe " +"konto." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2378,12 +2420,15 @@ msgstr "Użyj tego formularza, aby utworzyć nowÄ… grupÄ™." msgid "New message" msgstr "Nowa wiadomość" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Nie można wysÅ‚ać wiadomoÅ›ci do tego użytkownika." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Brak treÅ›ci." @@ -2391,7 +2436,8 @@ msgstr "Brak treÅ›ci." msgid "No recipient specified." msgstr "Nie podano odbiorcy." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Nie wysyÅ‚aj wiadomoÅ›ci do siebie, po prostu powiedz to sobie po cichu." @@ -2400,12 +2446,14 @@ msgstr "Nie wysyÅ‚aj wiadomoÅ›ci do siebie, po prostu powiedz to sobie po cichu. msgid "Message sent" msgstr "WysÅ‚ano wiadomość" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "WysÅ‚ano bezpoÅ›redniÄ… wiadomość do użytkownika %s." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "BÅ‚Ä…d AJAX" @@ -2413,7 +2461,7 @@ msgstr "BÅ‚Ä…d AJAX" msgid "New notice" msgstr "Nowy wpis" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "WysÅ‚ano wpis" @@ -2466,7 +2514,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." @@ -2521,30 +2569,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "To nie jest obsÅ‚ugiwany format danych." @@ -2647,7 +2695,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ź" @@ -2659,11 +2707,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." @@ -2684,7 +2732,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" @@ -2890,43 +2938,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\"" @@ -2969,7 +3017,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)." @@ -3230,7 +3278,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." @@ -3238,40 +3286,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:507 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. " @@ -3279,34 +3327,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "Rozumiem, że treść i dane %1$s sÄ… prywatne i poufne." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +msgstr "Moje teksty i pliki pozostajÄ… pod moimi prawami autorskimi." + +#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved. +#: actions/register.php:535 +msgid "All rights reserved." +msgstr "Wszystkie prawa zastrzeżone." + +#. 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, " @@ -3315,7 +3385,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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3348,7 +3418,7 @@ msgstr "" "DziÄ™kujemy za zarejestrowanie siÄ™ i mamy nadziejÄ™, że używanie tej usÅ‚ugi " "sprawi ci przyjemność." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3431,7 +3501,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Powtórzono" @@ -3469,10 +3539,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 @@ -3486,11 +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 "" -"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 @@ -3505,7 +3575,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" @@ -3519,7 +3589,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" @@ -3562,7 +3632,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" @@ -3573,12 +3643,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" @@ -3668,8 +3738,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. :)" @@ -3677,9 +3747,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Å› " @@ -3741,7 +3811,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" @@ -3755,11 +3825,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." @@ -3775,7 +3845,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." @@ -3788,7 +3858,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" @@ -3866,11 +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 "" -"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 @@ -4196,7 +4266,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" @@ -4256,7 +4326,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." @@ -4437,10 +4508,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." @@ -4552,7 +4619,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" @@ -4678,18 +4745,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, " @@ -4698,11 +4765,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 " @@ -4714,7 +4781,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 " @@ -4727,7 +4794,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 " @@ -4737,96 +4804,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4834,71 +4948,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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problem podczas zapisywania wpisu." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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." @@ -4938,199 +5099,199 @@ msgid "Other" msgstr "Inne" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Główna nawigacja witryny" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Osobiste" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "PoÅ‚Ä…cz" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administrator" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "ZaproÅ›" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Wyloguj siÄ™" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Zarejestruj siÄ™" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Zaloguj siÄ™ na witrynie" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Zaloguj siÄ™" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Pomóż mi." -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Pomoc" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Wyszukaj osoby lub tekst" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Pomoc" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "O usÅ‚udze" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Prywatność" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 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:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Odznaka" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5140,13 +5301,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5158,20 +5319,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:866 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:873 #, 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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" @@ -5179,14 +5340,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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" @@ -5194,24 +5355,24 @@ msgstr "" "$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1236 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:1247 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:1257 msgid "Before" msgstr "WczeÅ›niej" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "Oczekiwano elementu kanaÅ‚u roota, ale otrzymano caÅ‚y dokument XML." @@ -5219,11 +5380,11 @@ msgstr "Oczekiwano elementu kanaÅ‚u roota, ale otrzymano caÅ‚y dokument XML." msgid "Can't handle remote content yet." msgstr "Nie można jeszcze obsÅ‚ugiwać zdalnej treÅ›ci." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Nie można jeszcze obsÅ‚ugiwać zagnieżdżonej treÅ›ci XML." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Nie można jeszcze obsÅ‚ugiwać zagnieżdżonej treÅ›ci Base64." @@ -5254,64 +5415,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:95 +#: 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 " @@ -5444,11 +5605,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" @@ -5464,44 +5625,53 @@ msgstr "ZakoÅ„czono polecenie" msgid "Command failed" msgstr "Polecenie nie powiodÅ‚o siÄ™" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." msgstr "Wpis z tym identyfikatorem nie istnieje." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." msgstr "Użytkownik nie posiada ostatniego wpisu." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" +msgid "Could not find a user with nickname %s." msgstr "Nie można odnaleźć użytkownika z pseudonimem %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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Nie można odnaleźć lokalnego użytkownika z pseudonimem %s." +msgid "Could not find a local user with nickname %s." +msgstr "Nie można odnaleźć lokalnego użytkownika o pseudonimie %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Te polecenie nie zostaÅ‚o jeszcze zaimplementowane." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Szturchanie samego siebie nie ma zbyt wiele sensu." #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" +msgid "Nudge sent to %s." msgstr "WysÅ‚ano szturchniÄ™cie do użytkownika %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5512,55 +5682,53 @@ msgstr "" "Subskrybenci: %2$s\n" "Wpisy: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Zaznaczono wpis jako ulubiony." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "JesteÅ› już czÅ‚onkiem tej grupy." - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, 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." +msgid "%1$s joined group %2$s." +msgstr "Użytkownik %1$s doÅ‚Ä…czyÅ‚ do grupy %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "Użytkownik %1$s opuÅ›ciÅ‚ grupÄ™ %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Strona domowa: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "O mnie: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5571,147 +5739,171 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Wiadomość jest za dÅ‚uga - maksymalnie %1$d znaków, wysÅ‚ano %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "Wiadomość jest za dÅ‚uga - maksymalnie %1$d znaków, wysÅ‚ano %2$d." -#. 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 "WysÅ‚ano bezpoÅ›redniÄ… wiadomość do użytkownika %s." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "BÅ‚Ä…d podczas wysyÅ‚ania bezpoÅ›redniej wiadomoÅ›ci." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Nie można powtórzyć wÅ‚asnego wpisu" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Już powtórzono ten wpis" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Powtórzono wpis od użytkownika %s" +msgid "Notice from %s repeated." +msgstr "Powtórzono wpis od użytkownika %s." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "BÅ‚Ä…d podczas powtarzania wpisu." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "Wpis jest za dÅ‚ugi - maksymalnie %1$d znaków, wysÅ‚ano %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" +msgid "Reply to %s sent." msgstr "WysÅ‚ano odpowiedź do %s." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "BÅ‚Ä…d podczas zapisywania wpisu." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "Podaj nazwÄ™ użytkownika do subskrybowania." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Nie można subskrybować profili OMB za pomocÄ… polecenia." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Subskrybowano użytkownika %s" +msgid "Subscribed to %s." +msgstr "Subskrybowano użytkownika %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "Podaj nazwÄ™ użytkownika do usuniÄ™cia subskrypcji." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "UsuniÄ™to subskrypcjÄ™ użytkownika %s" +msgid "Unsubscribed from %s." +msgstr "UsuniÄ™to subskrypcjÄ™ użytkownika %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Nie zaimplementowano polecenia." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "WyÅ‚Ä…czono powiadomienia." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Nie można wyÅ‚Ä…czyć powiadomieÅ„." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "WÅ‚Ä…czono powiadomienia." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Nie można wÅ‚Ä…czyć powiadomieÅ„." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Polecenie logowania jest wyÅ‚Ä…czone" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Polecenie logowania jest wyÅ‚Ä…czone." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -"Tego odnoÅ›nika można użyć tylko raz i bÄ™dzie prawidÅ‚owy tylko przez dwie " -"minuty: %s." +"Tego odnoÅ›nika można użyć tylko raz i jest ważny przez dwie minuty: %s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "UsuniÄ™to subskrypcjÄ™ użytkownika %s" +msgid "Unsubscribed %s." +msgstr "UsuniÄ™to subskrypcjÄ™ użytkownika %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Nie subskrybujesz nikogo." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Subskrybujesz tÄ™ osobÄ™:" msgstr[1] "Subskrybujesz te osoby:" msgstr[2] "Subskrybujesz te osoby:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Nikt ciÄ™ nie subskrybuje." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Ta osoba ciÄ™ subskrybuje:" msgstr[1] "Te osoby ciÄ™ subskrybujÄ…:" msgstr[2] "Te osoby ciÄ™ subskrybujÄ…:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Nie jesteÅ› czÅ‚onkiem żadnej grupy." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "JesteÅ› czÅ‚onkiem tej grupy:" msgstr[1] "JesteÅ› czÅ‚onkiem tych grup:" msgstr[2] "JesteÅ› czÅ‚onkiem tych grup:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6089,8 +6281,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" @@ -6116,19 +6318,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" @@ -6150,30 +6352,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 " @@ -6201,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 "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" @@ -6241,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 "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" @@ -6286,7 +6488,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" @@ -6297,13 +6499,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" @@ -6366,7 +6568,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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "z" @@ -6422,24 +6624,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." @@ -6452,11 +6654,11 @@ msgstr "WyÅ›lij bezpoÅ›redni wpis" msgid "To" msgstr "Do" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "DostÄ™pne znaki" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "WyÅ›lij" @@ -6465,28 +6667,28 @@ msgstr "WyÅ›lij" msgid "Send a notice" msgstr "WyÅ›lij wpis" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Co sÅ‚ychać, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "ZaÅ‚Ä…cz" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "ZaÅ‚Ä…cz plik" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Ujawnij poÅ‚ożenie" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Nie ujawniaj poÅ‚ożenia" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6495,51 +6697,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "WWW" + +#: lib/noticelist.php:568 msgid "in context" msgstr "w rozmowie" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Powtórzone przez" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Odpowiedz na ten wpis" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Odpowiedz" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Powtórzono wpis" @@ -6612,7 +6818,7 @@ msgstr "WysÅ‚ane wiadomoÅ›ci" msgid "Tags in %s's notices" msgstr "Znaczniki we wpisach użytkownika %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Nieznane" @@ -6649,7 +6855,7 @@ msgstr "Dziennie Å›rednio" msgid "All groups" msgstr "Wszystkie grupy" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Niezaimplementowana metoda." @@ -6673,7 +6879,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." @@ -6694,7 +6900,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." @@ -6793,6 +6999,59 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Zapisanie motywu nie powiodÅ‚o siÄ™." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" +"Temat zawiera niebezpieczne rozszerzenie nazwy pliku, co może stanowić " +"zagrożenie." + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6821,11 +7080,6 @@ msgstr "Zrezygnuj z subskrypcji tego użytkownika" msgid "Unsubscribe" msgstr "Zrezygnuj z subskrypcji" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "Użytkownik %s (%d) nie posiada wpisu profilu." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Zmodyfikuj awatar" @@ -6873,56 +7127,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "okoÅ‚o rok temu" @@ -6937,8 +7191,3 @@ msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" "%s nie jest prawidÅ‚owym kolorem. Użyj trzech lub szeÅ›ciu znaków " "szesnastkowych." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Wiadomość jest za dÅ‚uga - maksymalnie %1$d znaków, wysÅ‚ano %2$d." diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po index 8318da1ba5..44dc05c506 100644 --- a/locale/pt/LC_MESSAGES/statusnet.po +++ b/locale/pt/LC_MESSAGES/statusnet.po @@ -1,7 +1,10 @@ # Translation of StatusNet to Portuguese # +# Author@translatewiki.net: Gallaecio +# Author@translatewiki.net: Giro720 # Author@translatewiki.net: Hamilton Abreu # Author@translatewiki.net: Ipublicis +# Author@translatewiki.net: Waldir # -- # This file is distributed under the same license as the StatusNet package. # @@ -9,12 +12,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:38+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:15+0000\n" "Language-Team: Portuguese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: pt\n" "X-Message-Group: out-statusnet\n" @@ -22,21 +25,19 @@ 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" #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -msgstr "Gravar configurações do site" +msgstr "Configurações de acesso ao site" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 -#, fuzzy msgid "Registration" -msgstr "Registar" +msgstr "Registo" #. TRANS: Checkbox instructions for admin setting "Private" #: actions/accessadminpanel.php:165 @@ -45,7 +46,6 @@ msgstr "Proibir utilizadores anónimos (sem sessão iniciada) de ver o site?" #. TRANS: Checkbox label for prohibiting anonymous users from viewing site. #: actions/accessadminpanel.php:167 -#, fuzzy msgctxt "LABEL" msgid "Private" msgstr "Privado" @@ -72,9 +72,8 @@ msgstr "Fechado" #. TRANS: Title / tooltip for button to save access settings in site admin panel #: actions/accessadminpanel.php:202 -#, fuzzy msgid "Save access settings" -msgstr "Gravar configurações do site" +msgstr "Gravar configurações de acesso" #. TRANS: Button label to save e-mail preferences. #. TRANS: Button label to save IM preferences. @@ -83,85 +82,84 @@ msgstr "Gravar configurações do site" #: 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 "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 -#, fuzzy msgid "No such page." -msgstr "Página não encontrada." +msgstr "Página não foi encontrada." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 msgid "No such user." -msgstr "Utilizador não encontrado." +msgstr "Utilizador não foi encontrado." #. 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 "Perfis bloqueados de %1$s, página %2$d" +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:114 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 " @@ -171,85 +169,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy +#: 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" +"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." @@ -269,7 +266,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:131 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 @@ -328,48 +325,49 @@ msgstr "Mensagens directas para %s" msgid "All the direct messages sent to %s" msgstr "Todas as mensagens directas enviadas para %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Mensagem não tem texto!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Demasiado longo. Tamanho máx. das mensagens é %d caracteres." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Destinatário não encontrado." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 @@ -385,9 +383,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." @@ -397,144 +395,153 @@ 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)." +msgstr "Descrição demasiado longa (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 "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 sinónimos (máx. %d)." +msgstr "Demasiados nomes alternativos! Máx. %d." -#: actions/apigroupcreate.php:266 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Sinónimo inválido: \"%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 "Sinónimo \"%s\" já em uso. Tente outro." +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 "Os sinónimos não podem ser iguais ao nome do utilizador." +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 -#, 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 "Grupo não foi encontrado!" +msgstr "Grupo não foi encontrado." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "Grupos de que %s é membro" +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 "" +msgstr "Não foi fornecido o parâmetro oauth_token." #: actions/apioauthauthorize.php:106 -#, fuzzy msgid "Invalid token." -msgstr "Tamanho inválido." +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 @@ -543,31 +550,28 @@ msgid "There was a problem with your session token. Try again, please." msgstr "Ocorreu um problema com a sua sessão. Por favor, tente novamente." #: actions/apioauthauthorize.php:135 -#, fuzzy msgid "Invalid nickname / password!" -msgstr "Nome de utilizador ou senha inválidos." +msgstr "Utilizador ou senha inválidos!" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "Erro ao configurar utilizador." +msgstr "Erro na base de dados ao apagar o utilizador da aplicação OAuth." #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "Erro na base de dados ao inserir a marca: %s" +msgstr "Erro na base de dados ao inserir o utilizador da aplicação OAuth." #: actions/apioauthauthorize.php:214 #, php-format msgid "" "The request token %s has been authorized. Please exchange it for an access " "token." -msgstr "" +msgstr "A chave de pedido %s foi autorizada. Troque-a por uma chave de acesso." #: actions/apioauthauthorize.php:227 #, php-format msgid "The request token %s has been denied and revoked." -msgstr "" +msgstr "A chave de pedido %s foi negada e retirada." #. 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. @@ -583,11 +587,11 @@ msgstr "Envio inesperado de formulário." #: actions/apioauthauthorize.php:259 msgid "An application would like to connect to your account" -msgstr "" +msgstr "Uma aplicação pretende ligar-se à sua conta" #: actions/apioauthauthorize.php:276 msgid "Allow or deny access" -msgstr "" +msgstr "Permitir ou negar acesso" #: actions/apioauthauthorize.php:292 #, php-format @@ -596,14 +600,17 @@ 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 "" +"A aplicação <strong>%1$s</strong> por <strong>%2$s</strong> solicita " +"permissão para <strong>%3$s</strong> os dados da sua conta %4$s. Só deve " +"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:463 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 @@ -611,99 +618,103 @@ 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" #: actions/apioauthauthorize.php:328 -#, fuzzy msgid "Deny" -msgstr "Estilo" +msgstr "Negar" #: actions/apioauthauthorize.php:334 -#, fuzzy msgid "Allow" -msgstr "Todas" +msgstr "Permitir" #: actions/apioauthauthorize.php:351 msgid "Allow or deny access to your account information." -msgstr "" +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." #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." -msgstr "Nota não encontrada." +msgstr "Nota não foi encontrada." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Não pode repetir a sua própria nota." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Não encontrado." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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!" @@ -718,26 +729,30 @@ 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 encontrado." +msgstr "Anexo não foi encontrado." #: 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 "Nenhuma utilizador." +msgstr "Nome de utilizador não definido." #: actions/avatarbynickname.php:64 msgid "No size." @@ -780,7 +795,7 @@ msgid "Preview" msgstr "Antevisão" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Apagar" @@ -793,9 +808,8 @@ msgid "Crop" msgstr "Cortar" #: actions/avatarsettings.php:305 -#, fuzzy msgid "No file uploaded." -msgstr "Não foi especificado um perfil." +msgstr "Não foi carregado nenhum ficheiro." #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" @@ -821,11 +835,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 " @@ -840,17 +854,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 "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" @@ -859,23 +872,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -885,8 +899,8 @@ msgstr "Não foi possível gravar informação do bloqueio." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Grupo não foi encontrado." @@ -918,9 +932,9 @@ msgstr "Desbloquear este utilizador" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Publicar em " +msgstr "Publicar em %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -936,9 +950,9 @@ msgstr "Esse código de confirmação não é para si!" #. 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 "Tipo do endereço %s não reconhecido" +msgstr "Tipo do endereço %s não reconhecido." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -967,9 +981,8 @@ msgid "Couldn't delete email confirmation." msgstr "Não foi possível apagar a confirmação do endereço electrónico." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Confirmar Endereço" +msgstr "Confirmar endereço" #: actions/confirmaddress.php:161 #, php-format @@ -986,53 +999,47 @@ msgid "Notices" msgstr "Notas" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "Precisa de iniciar sessão para editar um grupo." +msgstr "Tem de iniciar uma sessão para eliminar uma aplicação." #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Nota não tem perfil" +msgstr "Aplicação não foi encontrada." #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 -#, fuzzy msgid "You are not the owner of this application." -msgstr "Não é membro deste grupo." +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:1307 msgid "There was a problem with your session token." msgstr "Ocorreu um problema com a sua sessão." #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "Nota não encontrada." +msgstr "Apagar aplicação" #: actions/deleteapplication.php:149 -#, fuzzy msgid "" "Are you sure you want to delete this application? This will clear all data " "about the application from the database, including all existing user " "connections." msgstr "" -"Tem a certeza de que quer apagar este utilizador? Todos os dados do " -"utilizador serão eliminados da base de dados, sem haver cópias." +"Tem a certeza de que quer apagar esta aplicação? Todos os dados da aplicação " +"serão eliminados da base de dados, incluindo todas as ligações de " +"utilizadores em existência." #. TRANS: Submit button title for 'No' when deleting an application. #: actions/deleteapplication.php:158 -#, fuzzy msgid "Do not delete this application" -msgstr "Não apagar esta nota" +msgstr "Não apagar esta aplicação" #. TRANS: Submit button title for 'Yes' when deleting an application. #: actions/deleteapplication.php:164 -#, fuzzy msgid "Delete this application" -msgstr "Apagar esta nota" +msgstr "Apagar esta aplicação" #. 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 @@ -1040,7 +1047,7 @@ msgstr "Apagar esta nota" #: 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." @@ -1071,7 +1078,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Apagar esta nota" @@ -1111,45 +1118,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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Tema não está disponível: %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" @@ -1159,57 +1176,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 @@ -1219,7 +1244,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" @@ -1232,86 +1257,74 @@ msgid "Add to favorites" msgstr "Adicionar às favoritas" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Documento não encontrado." +msgstr "Documento \"%s\" não foi encontrado" #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "Outras opções" +msgstr "Editar Aplicação" #: actions/editapplication.php:66 -#, fuzzy msgid "You must be logged in to edit an application." -msgstr "Precisa de iniciar sessão para editar um grupo." +msgstr "Tem de iniciar uma sessão para editar uma aplicação." #: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 #: actions/showapplication.php:87 -#, fuzzy msgid "No such application." -msgstr "Nota não encontrada." +msgstr "Aplicação não foi encontrada." #: actions/editapplication.php:161 -#, fuzzy msgid "Use this form to edit your application." -msgstr "Use este formulário para editar o grupo." +msgstr "Use este formulário para editar a sua aplicação." #: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy msgid "Name is required." -msgstr "Repita a senha acima. Obrigatório." +msgstr "Nome é obrigatório." #: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy msgid "Name is too long (max 255 chars)." -msgstr "Nome completo demasiado longo (máx. 255 caracteres)." +msgstr "Nome é demasiado longo (máx. 255 caracteres)." #: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy msgid "Name already in use. Try another one." -msgstr "Utilizador já é usado. Tente outro." +msgstr "Nome já é usado. Tente outro." #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "Descrição" +msgstr "Descrição é obrigatória." #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "URL de origem é demasiado longa." #: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy msgid "Source URL is not valid." -msgstr "A URL ‘%s’ do avatar é inválida." +msgstr "A URL de origem é inválida." #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." -msgstr "" +msgstr "Organização é obrigatória." #: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy msgid "Organization is too long (max 255 chars)." -msgstr "Localidade demasiado longa (máx. 255 caracteres)." +msgstr "Organização é demasiado longa (máx. 255 caracteres)." #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." -msgstr "" +msgstr "Página da organização é obrigatória." #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." -msgstr "" +msgstr "Callback é demasiado longo." #: actions/editapplication.php:225 actions/newapplication.php:215 -#, fuzzy msgid "Callback URL is not valid." -msgstr "A URL ‘%s’ do avatar é inválida." +msgstr "A URL de callback é inválida." #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "Não foi possível actualizar o grupo." +msgstr "Não foi possível actualizar a aplicação." #: actions/editgroup.php:56 #, php-format @@ -1339,15 +1352,16 @@ msgstr "descrição é demasiada extensa (máx. %d caracteres)." #: actions/editgroup.php:228 actions/newgroup.php:168 #, php-format msgid "Invalid alias: \"%s\"" -msgstr "Sinónimo inválido: \"%s\"" +msgstr "Nome alternativo inválido: \"%s\"" #: actions/editgroup.php:258 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 sinónimos." +msgstr "Não foi possível criar os nomes alternativos." #: actions/editgroup.php:280 msgid "Options saved." @@ -1384,7 +1398,6 @@ msgstr "Endereço de correio já confirmado." #: 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 "Remover" @@ -1403,7 +1416,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 "Cancelar" @@ -1419,7 +1431,6 @@ 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 "Adicionar" @@ -1445,16 +1456,14 @@ msgstr "Crie um endereço electrónico novo para publicações; cancela o antigo #. 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 "Novo" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferências" +msgstr "Preferências de correio electrónico" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1478,7 +1487,7 @@ msgstr "" #: actions/emailsettings.php:199 msgid "Send me email when someone sends me an \"@-reply\"." msgstr "" -"Enviem-me notificação electrónica quando me enviarem uma \"@-resposta\"." +"Enviem-me notificação electrónica quando me enviarem uma \"resposta-@\"." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 @@ -1493,13 +1502,12 @@ msgstr "Quero publicar notas por correio electrónico." #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:219 msgid "Publish a MicroID for my email address." -msgstr "Publicar uma MicroID para o meu endereço electrónico." +msgstr "Publicar um MicroID para o meu endereço electrónico." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "Preferências de estilo foram gravadas." +msgstr "Preferências de correio electrónico foram gravadas." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1512,7 +1520,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." @@ -1555,15 +1563,13 @@ msgstr "Nenhuma confirmação pendente para cancelar." #. 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 "Esse endereço de mensagens instantâneas está errado." +msgstr "Esse endereço de correio electrónico está errado." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Confirmação cancelada." +msgstr "Confirmação de correio electrónico cancelada." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1573,9 +1579,8 @@ msgstr "Esse não é o seu endereço electrónico." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "O endereço foi removido." +msgstr "O endereço de correio electrónico foi removido." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1713,9 +1718,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "Serviço remoto usa uma versão desconhecida do protocolo OMB." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Erro ao actualizar o perfil remoto" +msgstr "Erro ao actualizar o perfil remoto." #: actions/getfile.php:79 msgid "No such file." @@ -1726,33 +1730,30 @@ msgid "Cannot read file." msgstr "Não foi possível ler o ficheiro." #: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy msgid "Invalid role." -msgstr "Tamanho inválido." +msgstr "Função inválida." #: actions/grantrole.php:66 actions/revokerole.php:66 msgid "This role is reserved and cannot be set." -msgstr "" +msgstr "Esta função está reservada e não pode ser activada." #: actions/grantrole.php:75 -#, fuzzy msgid "You cannot grant user roles on this site." -msgstr "Não pode impedir notas públicas neste site." +msgstr "Não pode atribuir funções aos utilizadores neste site." #: actions/grantrole.php:82 -#, fuzzy msgid "User already has this role." -msgstr "O utilizador já está silenciado." +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." @@ -1808,7 +1809,7 @@ msgstr "Sem ID." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." -msgstr "Precisa de iniciar sessão para editar um grupo." +msgstr "Tem de iniciar uma sessão para editar um grupo." #: actions/groupdesignsettings.php:144 msgid "Group design" @@ -1893,7 +1894,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" @@ -2039,9 +2040,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferências" +msgstr "Preferências de MI" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2061,7 +2061,7 @@ msgstr "Enviar-me via Jabber/GTalk respostas de pessoas que não subscrevo." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:179 msgid "Publish a MicroID for my Jabber/GTalk address." -msgstr "Publicar uma MicroID para o meu endereço Jabber/GTalk." +msgstr "Publicar um MicroID para o meu endereço Jabber/GTalk." #. TRANS: Confirmation message for successful IM preferences save. #: actions/imsettings.php:287 actions/othersettings.php:180 @@ -2111,15 +2111,13 @@ msgstr "Esse endereço de mensagens instantâneas está errado." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Não foi possível apagar a confirmação do endereço electrónico." +msgstr "Não foi possível apagar a confirmação do mensageiro instantâneo." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Confirmação cancelada." +msgstr "Confirmação do mensageiro instantâneo cancelada." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2129,14 +2127,13 @@ msgstr "Esse não é o seu Jabber ID." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "O endereço foi removido." +msgstr "O endereço do mensageiro instantâneo foi removido." #: actions/inbox.php:59 -#, fuzzy, php-format +#, php-format msgid "Inbox for %1$s - page %2$d" -msgstr "Caixa de entrada de %s" +msgstr "Caixa de entrada de %s - página %2$d" #: actions/inbox.php:62 #, php-format @@ -2154,11 +2151,11 @@ msgid "Invites have been disabled." msgstr "Convites foram desabilitados." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." msgstr "" -"Precisa de iniciar uma sessão para convidar outros utilizadores a usarem o " -"site %s." +"Tem de iniciar uma sessão para convidar outros utilizadores a usarem o site %" +"s." #: actions/invite.php:72 #, php-format @@ -2179,7 +2176,7 @@ msgstr "Já subscreveu estes utilizadores:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2226,7 +2223,6 @@ msgstr "Pode optar por acrescentar uma mensagem pessoal ao convite" #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" msgstr "Enviar" @@ -2296,70 +2292,66 @@ msgstr "" #: actions/joingroup.php:60 msgid "You must be logged in to join a group." -msgstr "Precisa de iniciar uma sessão para se juntar a um grupo." +msgstr "Tem de iniciar uma sessão para se juntar a um grupo." #: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy msgid "No nickname or ID." -msgstr "Nenhuma utilizador." +msgstr "Nenhum utilizador ou 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s juntou-se ao grupo %2$s" #: actions/leavegroup.php:60 msgid "You must be logged in to leave a group." -msgstr "Precisa de iniciar uma sessão para deixar um grupo." +msgstr "Tem de iniciar uma sessão para deixar um grupo." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Não é um membro desse grupo." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2367,14 +2359,15 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." -msgstr "" -"Entrar com o seu nome de utilizador e senha. Ainda não está registado? " -"[Registe](%%action.register%%) uma conta." +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "Ainda não está registado? [Registe](%%action.register%%) uma conta." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2396,33 +2389,28 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "Não é possível tornar %1$s administrador do grupo %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Sem estado actual" +msgstr "Sem estado actual." #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "Nota não encontrada." +msgstr "Aplicação Nova" #: actions/newapplication.php:64 -#, fuzzy msgid "You must be logged in to register an application." -msgstr "Tem de iniciar uma sessão para criar o grupo." +msgstr "Tem de iniciar uma sessão para registar uma aplicação." #: actions/newapplication.php:143 -#, fuzzy msgid "Use this form to register a new application." -msgstr "Use este formulário para criar um grupo novo." +msgstr "Use este formulário para registar uma nova aplicação." #: actions/newapplication.php:176 msgid "Source URL is required." -msgstr "" +msgstr "É necessária a URL de origem." #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "Não foi possível criar sinónimos." +msgstr "Não foi possível criar a aplicação." #: actions/newgroup.php:53 msgid "New group" @@ -2436,12 +2424,15 @@ msgstr "Use este formulário para criar um grupo novo." msgid "New message" msgstr "Mensagem nova" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Não pode enviar uma mensagem a este utilizador." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Sem conteúdo!" @@ -2449,7 +2440,8 @@ msgstr "Sem conteúdo!" msgid "No recipient specified." msgstr "Não especificou um destinatário." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Não auto-envie uma mensagem; basta lê-la baixinho a si próprio." @@ -2458,12 +2450,14 @@ msgstr "Não auto-envie uma mensagem; basta lê-la baixinho a si próprio." msgid "Message sent" msgstr "Mensagem enviada" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Mensagem directa para %s foi enviada." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Erro do Ajax" @@ -2471,7 +2465,7 @@ msgstr "Erro do Ajax" msgid "New notice" msgstr "Nota nova" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Nota publicada" @@ -2523,10 +2517,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" @@ -2537,75 +2531,72 @@ msgid "Nudge sent!" msgstr "Toque enviado!" #: actions/oauthappssettings.php:59 -#, fuzzy msgid "You must be logged in to list your applications." -msgstr "Precisa de iniciar sessão para editar um grupo." +msgstr "Tem de iniciar uma sessão para listar as suas aplicações." #: actions/oauthappssettings.php:74 -#, fuzzy msgid "OAuth applications" -msgstr "Outras opções" +msgstr "Aplicações OAuth" #: actions/oauthappssettings.php:85 msgid "Applications you have registered" -msgstr "" +msgstr "Aplicações que registou" #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "Ainda não registou nenhuma aplicação." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" -msgstr "" +msgstr "Aplicações ligadas" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "Permitiu que as seguintes aplicações acedam à sua conta." #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "Não é um membro desse grupo." +msgstr "Não é utilizador dessa aplicação." #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." -msgstr "" +msgstr "Não foi possível retirar acesso da aplicação: %s" #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." -msgstr "" +msgstr "Não permitiu que nenhuma aplicação use a sua conta." #: actions/oauthconnectionssettings.php:211 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 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "Nota não tem perfil" +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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "tipo de conteúdo " +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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Formato de dados não suportado." @@ -2618,9 +2609,8 @@ msgid "Notice Search" msgstr "Pesquisa de Notas" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Outras Configurações" +msgstr "Outras configurações" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2651,34 +2641,29 @@ msgid "URL shortening service is too long (max 50 chars)." msgstr "Serviço de encurtamento de URLs demasiado extenso (máx. 50 caracteres)" #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "Não foi especificado um grupo." +msgstr "Não foi especificado um ID de utilizador." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "Nota não foi especificada." +msgstr "Chave de entrada não foi especificada." #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "O pedido não tem a identificação do perfil." +msgstr "Chave de entrada não foi pedida." #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "Chave inválida ou expirada." +msgstr "Chave de entrada especificada é inválida." #: actions/otp.php:104 -#, fuzzy msgid "Login token expired." -msgstr "Iniciar sessão no site" +msgstr "Chave de entrada expirou." #: actions/outbox.php:58 -#, fuzzy, php-format +#, php-format msgid "Outbox for %1$s - page %2$d" -msgstr "Caixa de saída de %s" +msgstr "Caixa de saída de %s - página %2$d" #: actions/outbox.php:61 #, php-format @@ -2715,7 +2700,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" @@ -2727,11 +2712,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." @@ -2752,7 +2737,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" @@ -2761,24 +2746,24 @@ msgid "Path and server settings for this StatusNet site." msgstr "Configurações de localização e servidor deste site StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Sem acesso de leitura do directório do tema: %s" +msgstr "Sem acesso de leitura do directório do tema: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Sem acesso de escrita no directório do avatar: %s" +msgstr "Sem acesso de escrita no directório do avatar: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Sem acesso de escrita no directório do fundo: %s" +msgstr "Sem acesso de escrita no directório do fundo: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, 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." @@ -2806,11 +2791,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" @@ -2919,9 +2904,9 @@ msgid "People search" msgstr "Pesquisa de pessoas" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Categoria de pessoas inválida: %s" +msgstr "Categoria de pessoas inválida: %s." #: actions/peopletag.php:142 #, php-format @@ -2929,9 +2914,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "Utilizadores auto-categorizados com %1$s - página %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Conteúdo da nota é inválido" +msgstr "Conteúdo da nota é inválido." #: actions/postnotice.php:101 #, php-format @@ -2958,43 +2942,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\"" @@ -3017,11 +3001,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" @@ -3036,7 +3020,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)." @@ -3047,7 +3031,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 @@ -3076,9 +3060,9 @@ msgid "Settings saved." msgstr "Configurações gravadas." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "Além do limite de página (%s)" +msgstr "Além do limite de página (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3187,7 +3171,7 @@ msgstr "Já tem uma sessão iniciada!" #: actions/recoverpassword.php:62 msgid "No such recovery code." -msgstr "Esse código de recuperação não existe." +msgstr "Código de recuperação não foi encontrado." #: actions/recoverpassword.php:66 msgid "Not a recovery code." @@ -3234,7 +3218,7 @@ msgstr "Utilizador ou endereço de correio electrónico" #: actions/recoverpassword.php:193 msgid "Your nickname on this server, or your registered email address." msgstr "" -"A sua utilizador neste servidor, ou o seu correio electrónico registado." +"O seu utilizador neste servidor, ou o seu correio electrónico registado." #: actions/recoverpassword.php:199 actions/recoverpassword.php:200 msgid "Recover" @@ -3266,7 +3250,7 @@ msgstr "Reiniciar" #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." -msgstr "Introduza uma utilizador ou um endereço de correio electrónico." +msgstr "Introduza um utilizador ou um endereço de correio electrónico." #: actions/recoverpassword.php:282 msgid "No user with that email address or username." @@ -3301,7 +3285,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." @@ -3309,40 +3293,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:507 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 -#, fuzzy +#: 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. " @@ -3350,43 +3333,70 @@ 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:494 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Compreendo que o conteúdo e dados do site %1$s são privados e confidenciais." + +#: 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: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:535 +msgid "All rights reserved." +msgstr "Todos os direitos reservados." + +#. 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 "" -" excepto estes dados privados: senha, endereço de correio electrónico, " -"endereço de mensageiro instantâneo, número de telefone." +"Os meus textos e ficheiros são disponibilizados nos termos da %s excepto " +"estes dados privados: senha, endereço de correio electrónico, endereço de " +"mensageiro instantâneo, número de telefone." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3419,7 +3429,7 @@ msgstr "" "\n" "Obrigado por se ter registado e esperamos que se divirta usando este serviço." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3502,7 +3512,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repetida" @@ -3517,9 +3527,9 @@ msgid "Replies to %s" msgstr "Respostas a %s" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "Respostas a %1$s em %2$s!" +msgstr "Respostas a %1$s, página %2$d" #: actions/replies.php:145 #, php-format @@ -3540,10 +3550,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 @@ -3557,11 +3566,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 @@ -3569,16 +3578,14 @@ msgid "Replies to %1$s on %2$s!" msgstr "Respostas a %1$s em %2$s!" #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Não pode silenciar utilizadores neste site." +msgstr "Não pode retirar funções aos utilizadores neste site." #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "Utilizador sem perfil correspondente." +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" @@ -3592,14 +3599,13 @@ 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" #: actions/sessionsadminpanel.php:65 -#, fuzzy msgid "Session settings for this StatusNet site." -msgstr "Configurações do estilo deste site StatusNet." +msgstr "Configurações da sessão para este site StatusNet." #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" @@ -3623,39 +3629,36 @@ msgid "Save site settings" msgstr "Gravar configurações do site" #: actions/showapplication.php:82 -#, fuzzy msgid "You must be logged in to view an application." -msgstr "Precisa de iniciar uma sessão para deixar um grupo." +msgstr "Tem de iniciar uma sessão para ver uma aplicação." #: actions/showapplication.php:157 -#, fuzzy msgid "Application profile" -msgstr "Nota não tem perfil" +msgstr "Perfil da aplicação" #. TRANS: Form input field label for application icon. #: actions/showapplication.php:159 lib/applicationeditform.php:182 msgid "Icon" -msgstr "" +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" #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "Paginação" +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" @@ -3663,56 +3666,57 @@ msgstr "Estatísticas" #: actions/showapplication.php:203 #, php-format msgid "Created by %1$s - %2$s access by default - %3$d users" -msgstr "" +msgstr "Criado por %1$s - acesso por omissão %2$s - %3$d utilizadores" #: actions/showapplication.php:213 msgid "Application actions" -msgstr "" +msgstr "Operações da aplicação" #: actions/showapplication.php:236 msgid "Reset key & secret" -msgstr "" +msgstr "Reiniciar chave e segredo" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "Informação da aplicação" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "Chave do consumidor" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "Segredo do consumidor" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "URL da chave de pedido" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "URL da chave de acesso" #: actions/showapplication.php:283 -#, fuzzy msgid "Authorize URL" -msgstr "Autor" +msgstr "Autorizar URL" #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" +"Nota: Assinaturas HMAC-SHA1 são suportadas. O método de assinatura com texto " +"simples não é suportado." #: actions/showapplication.php:309 -#, fuzzy msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Tem a certeza de que quer apagar esta nota?" +msgstr "" +"Tem a certeza de que quer reiniciar a sua chave e segredo de consumidor?" #: actions/showfavorites.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s's favorite notices, page %2$d" -msgstr "Notas favoritas de %s" +msgstr "Notas favoritas de %1$s, página %2$d" #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." @@ -3745,8 +3749,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 :)" @@ -3754,13 +3758,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." @@ -3772,9 +3776,9 @@ msgid "%s group" msgstr "Grupo %s" #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -msgstr "Membros do grupo %1$s, página %2$d" +msgstr "Grupo %1$s, página %2$d" #: actions/showgroup.php:227 msgid "Group profile" @@ -3792,7 +3796,7 @@ msgstr "Anotação" #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" -msgstr "Sinónimos" +msgstr "Nomes alternativos" #: actions/showgroup.php:302 msgid "Group actions" @@ -3818,7 +3822,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" @@ -3832,11 +3836,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." @@ -3852,7 +3856,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." @@ -3865,7 +3869,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" @@ -3897,9 +3901,9 @@ msgid " tagged %s" msgstr " categorizou %s" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "Perfis bloqueados de %1$s, página %2$d" +msgstr "%1$s, página %2$d" #: actions/showstream.php:122 #, php-format @@ -3942,10 +3946,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 @@ -3987,9 +3991,8 @@ msgid "User is already silenced." msgstr "O utilizador já está silenciado." #: actions/siteadminpanel.php:69 -#, fuzzy msgid "Basic settings for this StatusNet site" -msgstr "Configurações básicas para este site StatusNet." +msgstr "Configurações básicas para este site StatusNet" #: actions/siteadminpanel.php:133 msgid "Site name must have non-zero length." @@ -4005,14 +4008,12 @@ msgid "Unknown language \"%s\"." msgstr "Língua desconhecida \"%s\"." #: actions/siteadminpanel.php:165 -#, fuzzy msgid "Minimum text limit is 0 (unlimited)." -msgstr "O valor mínimo de limite para o texto é 140 caracteres." +msgstr "O limite mínimo para o texto é 0 (sem limite)." #: actions/siteadminpanel.php:171 -#, fuzzy msgid "Dupe limit must be one or more seconds." -msgstr "O limite de duplicados tem de ser 1 ou mais segundos." +msgstr "O limite de duplicados tem de ser um ou mais segundos." #: actions/siteadminpanel.php:221 msgid "General" @@ -4059,13 +4060,14 @@ msgid "Default timezone for the site; usually UTC." msgstr "Fuso horário por omissão, para o site; normalmente, UTC." #: actions/siteadminpanel.php:262 -#, fuzzy 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 "" +"Língua do site quando a sua detecção na configuração do browser não é " +"possível" #: actions/siteadminpanel.php:271 msgid "Limits" @@ -4090,37 +4092,32 @@ msgstr "" "mesma coisa outra vez." #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Aviso do site" +msgstr "Aviso do Site" #: actions/sitenoticeadminpanel.php:67 -#, fuzzy msgid "Edit site-wide message" -msgstr "Mensagem nova" +msgstr "Editar mensagem do site" #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "Não foi possível gravar as configurações do estilo." +msgstr "Não foi possível gravar o aviso do site." #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "" +msgstr "Tamanho máximo do aviso do site é 255 caracteres." #: actions/sitenoticeadminpanel.php:176 -#, fuzzy msgid "Site notice text" -msgstr "Aviso do site" +msgstr "Texto do aviso do site" #: actions/sitenoticeadminpanel.php:178 msgid "Site-wide notice text (255 chars max; HTML okay)" -msgstr "" +msgstr "Texto do aviso do site (máx. 255 caracteres; pode usar HTML)" #: actions/sitenoticeadminpanel.php:198 -#, fuzzy msgid "Save site notice" -msgstr "Aviso do site" +msgstr "Gravar aviso do site" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 @@ -4141,9 +4138,8 @@ msgstr "SMS não está disponível." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Endereço IM" +msgstr "Endereço SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4167,10 +4163,9 @@ msgstr "Introduza o código que recebeu no seu telefone." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" -msgstr "Confirmação" +msgstr "Confirmar" #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 @@ -4184,9 +4179,8 @@ msgstr "Número de telefone, sem pontuação ou espaços, com código de área" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferências" +msgstr "Preferências de SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4199,9 +4193,8 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "Preferências gravadas." +msgstr "Preferências de SMS gravadas." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4240,9 +4233,8 @@ msgstr "Esse número de confirmação está errado." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Confirmação cancelada." +msgstr "Confirmação de SMS cancelada." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4252,9 +4244,8 @@ msgstr "Esse número de telefone não é o seu." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Número de telefone para SMS" +msgstr "Número de telefone para SMS foi removido." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4285,14 +4276,13 @@ 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" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Alterar a configuração do site" +msgstr "Alterar a configuração do instantâneo" #: actions/snapshotadminpanel.php:127 msgid "Invalid snapshot run value." @@ -4307,7 +4297,6 @@ msgid "Invalid snapshot report URL." msgstr "URL para onde enviar instantâneos é inválida" #: actions/snapshotadminpanel.php:200 -#, fuzzy msgid "Randomly during web hit" msgstr "Aleatoriamente, durante o acesso pela internet" @@ -4340,31 +4329,29 @@ msgid "Snapshots will be sent to this URL" msgstr "Instantâneos serão enviados para esta URL" #: actions/snapshotadminpanel.php:248 -#, fuzzy msgid "Save snapshot settings" -msgstr "Gravar configurações do site" +msgstr "Gravar configurações do instantâneo" #: actions/subedit.php:70 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." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." -msgstr "" +msgstr "Esta operação só aceita pedidos POST." #: actions/subscribe.php:107 -#, fuzzy msgid "No such profile." -msgstr "Ficheiro não foi encontrado." +msgstr "Perfil não foi encontrado." #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Não subscreveu esse perfil." +msgstr "Não pode subscrever um perfil remoto OMB 0.1 com esta operação." #: actions/subscribe.php:145 msgid "Subscribed" @@ -4460,9 +4447,9 @@ msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Utilizadores auto-categorizados com %1$s - página %2$d" +msgstr "Notas categorizadas com %1$s, página %2$d" #: actions/tag.php:87 #, php-format @@ -4526,11 +4513,7 @@ msgstr "" #: actions/tagrss.php:35 msgid "No such tag." -msgstr "Categoria não existe." - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "Método da API em desenvolvimento." +msgstr "Categoria não foi encontrada." #: actions/unblock.php:59 msgid "You haven't blocked that user." @@ -4545,7 +4528,6 @@ msgid "User is not silenced." msgstr "Utilizador não está silenciado." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." msgstr "O pedido não tem a identificação do perfil." @@ -4563,7 +4545,6 @@ msgstr "" #. TRANS: User admin panel title #: actions/useradminpanel.php:59 -#, fuzzy msgctxt "TITLE" msgid "User" msgstr "Utilizador" @@ -4645,7 +4626,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" @@ -4751,9 +4732,9 @@ msgstr "Disfrute do seu cachorro-quente!" #. 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 "Membros do grupo %1$s, página %2$d" +msgstr "Grupos de %1$s, página %2$d" #: actions/usergroups.php:132 msgid "Search for more groups" @@ -4774,18 +4755,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, " @@ -4794,11 +4775,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 " @@ -4810,7 +4791,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 " @@ -4821,7 +4802,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 " @@ -4830,98 +4811,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:805 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 -#, fuzzy +#. 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 "Perfil do grupo" +msgstr "Entrada no grupo falhou." -#: 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 "Não foi possível actualizar o grupo." +msgstr "Não faz parte do grupo." -#: 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 "Perfil do grupo" +msgstr "Saída do grupo falhou." -#: 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 "Não foi possível actualizar o grupo." +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. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format -msgid "Database error inserting hashtag: %s" -msgstr "Erro na base de dados ao inserir a marca: %s" +#. 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)." -#: classes/Notice.php:245 +#. TRANS: Server exception. %s are the error details. +#: classes/Notice.php:193 +#, php-format +msgid "Database error inserting hashtag: %s" +msgstr "Erro na base de dados ao inserir o elemento criptográfico: %s" + +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4929,77 +4953,122 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problema na gravação da nota." -#: classes/Notice.php:965 -#, fuzzy +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +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:998 msgid "Problem saving group inbox." -msgstr "Problema na gravação da nota." +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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 -#, fuzzy -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 "Não foi possível apagar a chave OMB da subscrição." + +#. 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/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. 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 membros do grupo." +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 -#, fuzzy +#. 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 subscrição." +msgstr "Não foi possível gravar a informação do grupo local." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 @@ -5037,232 +5106,215 @@ msgid "Other" msgstr "Outras" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%1$s (%2$s)" +msgstr "%1$s - %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Navegação primária deste site" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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 -#, fuzzy +#: lib/action.php:458 msgctxt "MENU" msgid "Personal" msgstr "Pessoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 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 -#, fuzzy +#: lib/action.php:465 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:468 msgid "Connect" msgstr "Ligar" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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 -#, fuzzy +#: lib/action.php:474 msgctxt "MENU" msgid "Admin" msgstr "Gestor" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, 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 -#, fuzzy +#: lib/action.php:481 msgctxt "MENU" msgid "Invite" msgstr "Convidar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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 -#, fuzzy +#: lib/action.php:490 msgctxt "MENU" msgid "Logout" msgstr "Sair" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy +#: lib/action.php:498 msgctxt "MENU" msgid "Register" msgstr "Registar" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Iniciar uma sessão" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Entrar" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ajudem-me!" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Ajuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Procurar pessoas ou pesquisar texto" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Ajuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Sobre" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "Termos" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacidade" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" -msgstr "Código" +msgstr "Código fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contacto" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Emblema" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" "**%%site.name%%** é um serviço de microblogues disponibilizado por [%%site." -"broughtby%%](%%site.broughtbyurl%%). " +"broughtby%%](%%site.broughtbyurl%%)." #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5274,68 +5326,76 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, php-format msgid "Content and data of %1$s are private and confidential." -msgstr "" +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:880 #, php-format msgid "Content and data copyright by %1$s. All rights reserved." msgstr "" +"Direitos de autor sobre o conteúdo e dados, detidos por %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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." msgstr "" +"Todo o conteúdo e dados do site %1$s são disponibilizados nos termos da " +"licença %2$s." #. TRANS: DT element for pagination (previous/next, etc.). -#: lib/action.php:1182 +#: lib/action.php:1236 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:1247 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:1257 msgid "Before" msgstr "Anteriores" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" +"Era esperado um elemento raiz da fonte, mas foi recebido um documento XML " +"inteiro." #: lib/activityutils.php:208 msgid "Can't handle remote content yet." -msgstr "" +msgstr "Ainda não é possível processar conteúdos remotos." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "Ainda não é possível processar conteúdo XML embutido." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." -msgstr "" +msgstr "Ainda não é possível processar conteúdo Base64 embutido." #. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights. #: lib/adminpanelaction.php:98 @@ -5364,153 +5424,142 @@ 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 -#, fuzzy +#: 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 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" msgstr "Estilo" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "Configuração das localizações" +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 -#, fuzzy +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "Configuração do estilo" +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 -#, fuzzy +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "Configuração do estilo" +msgstr "Configuração das sessões" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Aviso do site" +msgstr "Editar aviso do site" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "Configuração das localizações" +msgstr "Configuração dos instântaneos" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." -msgstr "" +msgstr "API requer acesso de leitura e escrita, mas só tem acesso de leitura." #. TRANS: Form legend. #: lib/applicationeditform.php:137 msgid "Edit application" -msgstr "" +msgstr "Editar aplicação" #. TRANS: Form guide. #: lib/applicationeditform.php:187 msgid "Icon for this application" -msgstr "" +msgstr "Ãcone para esta aplicação" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:209 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "Descreva o grupo ou o assunto em %d caracteres" +msgstr "Descreva a sua aplicação em %d caracteres" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Descreva o grupo ou assunto" +msgstr "Descreva a sua aplicação" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "URL da página ou do blogue, deste grupo ou assunto" +msgstr "URL da página desta aplicação" #. TRANS: Form input field label. #: lib/applicationeditform.php:226 -#, fuzzy msgid "Source URL" -msgstr "Código" +msgstr "URL de origem" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" -msgstr "" +msgstr "Organização responsável por esta aplicação" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "URL da página ou do blogue, deste grupo ou assunto" +msgstr "URL da página desta organização" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "URL para onde reencaminhar após autenticação" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:278 msgid "Browser" -msgstr "" +msgstr "Browser" #. TRANS: Radio button label for application type #: lib/applicationeditform.php:295 msgid "Desktop" -msgstr "" +msgstr "Desktop" #. TRANS: Form guide. #: lib/applicationeditform.php:297 msgid "Type of application, browser or desktop" -msgstr "" +msgstr "Tipo da aplicação, browser ou desktop" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:320 msgid "Read-only" -msgstr "" +msgstr "Leitura" #. TRANS: Radio button label for access type. #: lib/applicationeditform.php:339 msgid "Read-write" -msgstr "" +msgstr "Leitura e escrita" #. TRANS: Form guide. #: lib/applicationeditform.php:341 msgid "Default access for this application: read-only, or read-write" -msgstr "" +msgstr "Acesso por omissão para esta aplicação: leitura ou leitura e escrita" #. TRANS: Submit button title #: lib/applicationeditform.php:359 @@ -5520,25 +5569,24 @@ msgstr "Cancelar" #. TRANS: Application access type #: lib/applicationlist.php:136 msgid "read-write" -msgstr "" +msgstr "leitura e escrita" #. TRANS: Application access type #: lib/applicationlist.php:138 msgid "read-only" -msgstr "" +msgstr "leitura" #. 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 "" +msgstr "Aprovado a %1$s - acesso \"%2$s\"." #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Remover" +msgstr "Retirar" #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 @@ -5563,11 +5611,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" @@ -5583,44 +5631,53 @@ msgstr "Comando terminado" msgid "Command failed" msgstr "Comando falhou" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Não existe nenhuma nota com essa identificação" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Não existe nenhuma nota com essa identificação." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Utilizador não tem nenhuma última nota" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "Utilizador não tem nenhuma última nota." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Não foi encontrado um utilizador com a alcunha %s" +msgid "Could not find a user with nickname %s." +msgstr "Não foi encontrado um utilizador com o nome %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 -msgid "Could not find a local user with nickname %s" -msgstr "Não foi encontrado um utilizador com a alcunha %s" +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "Não foi encontrado nenhum utilizador local com o nome %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Desculpe, este comando ainda não foi implementado." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Não faz muito sentido tocar-nos a nós mesmos!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Cotovelada enviada a %s" +msgid "Nudge sent to %s." +msgstr "Toque enviado para %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5631,203 +5688,224 @@ msgstr "" "Subscritores: %2$s\n" "Notas: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Nota marcada como favorita." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Já é membro desse grupo" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Não foi possível juntar o utilizador %1$s ao grupo %2$s" +msgid "%1$s joined group %2$s." +msgstr "%1$s juntou-se ao grupo %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s deixou o grupo %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Página pessoal: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Sobre: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " "same server." msgstr "" +"%s é um perfil remoto; só pode enviar mensagens directas a utilizadores no " +"mesmo servidor." #. 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "Mensagem demasiado extensa - máx. %1$d caracteres, enviou %2$d." -#. 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 "Mensagem directa para %s enviada" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Erro no envio da mensagem directa." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Não pode repetir a sua própria nota" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Já repetiu essa nota" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Nota de %s repetida" +msgid "Notice from %s repeated." +msgstr "Nota de %s repetida." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Erro ao repetir nota." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Nota demasiado extensa - máx. %d caracteres, enviou %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "Nota demasiado extensa - máx. %1$d caracteres, enviou %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Resposta a %s enviada" +msgid "Reply to %s sent." +msgstr "Resposta a %s enviada." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Erro ao gravar nota." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Introduza o nome do utilizador para subscrever" - -#: lib/command.php:628 -#, fuzzy -msgid "Can't subscribe to OMB profiles by command." -msgstr "Não subscreveu esse perfil." - -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Subscreveu %s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Introduza o nome do utilizador para deixar de subscrever" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Introduza o nome do utilizador para subscrever." +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Deixou de subscrever %s" +msgid "Can't subscribe to OMB profiles by command." +msgstr "Não pode subscrever perfis OMB por comando." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "Subscreveu %s." + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Introduza o nome do utilizador para deixar de subscrever." + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 +#, php-format +msgid "Unsubscribed from %s." +msgstr "Deixou de subscrever %s." + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Comando ainda não implementado." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notificação desligada." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Não foi possível desligar a notificação." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notificação ligada." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Não foi possível ligar a notificação." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Comando para iniciar sessão foi desactivado" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Comando para iniciar sessão foi desactivado." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "" -"Esta ligação é utilizável uma única vez e só durante os próximos 2 minutos: %" -"s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "O link é utilizável uma única vez e só é válido durante 2 minutos: %s." -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Deixou de subscrever %s" +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 +#, php-format +msgid "Unsubscribed %s." +msgstr "Subscrição de %s cancelada." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Não subscreveu ninguém." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Subscreveu esta pessoa:" msgstr[1] "Subscreveu estas pessoas:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Ninguém subscreve as suas notas." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Esta pessoa subscreve as suas notas:" msgstr[1] "Estas pessoas subscrevem as suas notas:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Não está em nenhum grupo." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Está no grupo:" msgstr[1] "Está nos grupos:" -#: lib/command.php:838 -#, fuzzy +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5880,6 +5958,7 @@ msgstr "" "d <utilizador> <texto> - mensagem directa para o utilizador\n" "get <utilizador> - receber última nota do utilizador\n" "whois <utilizador> - receber perfil do utilizador\n" +"lose <utilizador> - obrigar o utilizador a deixar de subscrevê-lo\n" "fav <utilizador> - adicionar última nota do utilizador às favoritas\n" "fav #<id_da_nota> - adicionar nota com esta identificação às favoritas\n" "repeat #<id_da_nota> - repetir uma nota com uma certa identificação\n" @@ -5935,13 +6014,12 @@ msgid "Updates by SMS" msgstr "Actualizações por SMS" #: lib/connectsettingsaction.php:120 -#, fuzzy msgid "Connections" -msgstr "Ligar" +msgstr "Ligações" #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" -msgstr "" +msgstr "Aplicações ligadas autorizadas" #: lib/dberroraction.php:60 msgid "Database error" @@ -6021,7 +6099,7 @@ msgstr "Prosseguir" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "" +msgstr "Atribuir a este utilizador a função \"%s\"" #: lib/groupeditform.php:163 msgid "URL of the homepage or blog of the group or topic" @@ -6045,7 +6123,7 @@ msgstr "Localidade do grupo, se aplicável, por ex. \"Cidade, Região, País\"" #, php-format msgid "Extra nicknames for the group, comma- or space- separated, max %d" msgstr "" -"Utilizadors extra para o grupo, separadas por vírgulas ou espaços, máx. %d" +"Nomes adicionais para o grupo, separados por vírgulas ou espaços, máx. %d" #: lib/groupnav.php:85 msgid "Group" @@ -6140,9 +6218,9 @@ msgid "[%s]" msgstr "[%s]" #: lib/jabber.php:567 -#, fuzzy, php-format +#, php-format msgid "Unknown inbox source %d." -msgstr "Língua desconhecida \"%s\"." +msgstr "Origem da caixa de entrada desconhecida \"%s\"." #: lib/joinform.php:114 msgid "Join" @@ -6201,8 +6279,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" @@ -6229,19 +6317,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" @@ -6263,30 +6351,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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, php-format msgid "%s: confirm you own this phone number with this code:" -msgstr "A aguardar confirmação deste número de telefone." +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 " @@ -6314,13 +6402,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" @@ -6354,13 +6442,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" @@ -6398,21 +6486,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 "" +"O diálogo completo pode ser lido aqui:\n" +"\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" @@ -6438,6 +6529,29 @@ msgid "" "\n" "P.S. You can turn off these email notifications here: %8$s\n" msgstr "" +"%1$s (@%9$s) acaba de enviar uma nota à sua atenção (uma 'resposta-@') em %2" +"$s.\n" +"\n" +"A nota está aqui:\n" +"\n" +"\t%3$s\n" +"\n" +"Diz:\n" +"\n" +"\t%4$s\n" +"\n" +"%5$sPode responder aqui:\n" +"\n" +"\t%6$s\n" +"\n" +"A lista de todas as respostas-@ aqui:\n" +"\n" +"%7$s\n" +"\n" +"Atenciosamente,\n" +"%2$s\n" +"\n" +"P.S. Pode desligar estas notificações electrónicas aqui: %8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." @@ -6452,9 +6566,9 @@ msgstr "" "conversa com outros utilizadores. Outros podem enviar-lhe mensagens, a que " "só você terá acesso." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "de" +msgstr "a partir de" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6511,24 +6625,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." @@ -6541,12 +6655,11 @@ msgstr "Enviar uma nota directa" msgid "To" msgstr "Para" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Caracteres disponíveis" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Enviar" @@ -6555,80 +6668,85 @@ msgstr "Enviar" msgid "Send a notice" msgstr "Enviar uma nota" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Novidades, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Anexar" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Anexar um ficheiro" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Partilhar a minha localização." -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Não partilhar a minha localização." - #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "Não partilhar a minha localização" + +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" msgstr "" +"A obtenção da sua geolocalização está a demorar mais do que o esperado; " +"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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "no contexto" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetida por" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Responder a esta nota" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Nota repetida" @@ -6701,7 +6819,7 @@ msgstr "Mensagens enviadas" msgid "Tags in %s's notices" msgstr "Categorias nas notas de %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Desconhecida" @@ -6723,7 +6841,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" @@ -6732,13 +6850,13 @@ msgstr "Membro desde" #. TRANS: Average count of posts made per day since account registration #: lib/profileaction.php:235 msgid "Daily average" -msgstr "" +msgstr "Média diária" #: lib/profileaction.php:264 msgid "All groups" msgstr "Todos os grupos" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Método não implementado." @@ -6762,7 +6880,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." @@ -6779,13 +6897,13 @@ msgid "Repeat this notice" msgstr "Repetir esta nota" #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Bloquear acesso deste utilizador a este grupo" +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 "" +msgstr "Nenhum utilizador único definido para o modo de utilizador único." #: lib/sandboxform.php:67 msgid "Sandbox" @@ -6881,6 +6999,57 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Não foi possível gravar o tema." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "O tema contém extensões de ficheiro inseguras; pode não ser seguro." + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6909,11 +7078,6 @@ msgstr "Deixar de subscrever este utilizador" msgid "Unsubscribe" msgstr "Abandonar" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Utilizador não tem perfil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Editar Avatar" @@ -6924,7 +7088,7 @@ msgstr "Acções do utilizador" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "A apagar o utilizador..." #: lib/userprofile.php:263 msgid "Edit profile settings" @@ -6947,73 +7111,70 @@ msgid "Moderate" msgstr "Moderar" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "Perfil" +msgstr "Função" #: lib/userprofile.php:366 -#, fuzzy msgctxt "role" msgid "Administrator" -msgstr "Gestores" +msgstr "Gestor" #: lib/userprofile.php:367 -#, fuzzy msgctxt "role" msgid "Moderator" -msgstr "Moderar" +msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "há cerca de um ano" @@ -7026,8 +7187,3 @@ msgstr "%s não é uma cor válida!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s não é uma cor válida! Use 3 ou 6 caracteres hexadecimais." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Mensagem demasiado extensa - máx. %1$d caracteres, enviou %2$d." diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po index b506f7f297..259149cc01 100644 --- a/locale/pt_BR/LC_MESSAGES/statusnet.po +++ b/locale/pt_BR/LC_MESSAGES/statusnet.po @@ -1,7 +1,9 @@ # Translation of StatusNet to Brazilian Portuguese # # Author@translatewiki.net: Aracnus +# Author@translatewiki.net: Brion # Author@translatewiki.net: Ewout +# Author@translatewiki.net: Giro720 # Author@translatewiki.net: Luckas Blade # Author@translatewiki.net: McDutchie # Author@translatewiki.net: Vuln @@ -12,12 +14,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:42+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:17+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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 +27,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,38 +89,38 @@ 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 -#, fuzzy msgid "No such page." msgstr "Esta página não existe." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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" @@ -126,33 +128,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:114 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." @@ -160,7 +162,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 " @@ -170,87 +172,85 @@ 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 +#: 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 "" -"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)." +"Seja o primeiro a [publicar sobre este tópico](%%%%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 "" -"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." +"Por que você não [registra uma conta](%%action.register%%) pra ser o " +"primeiro a publicar?" #. 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:106 msgid "" "You must specify a parameter named 'device' with a value of one of: sms, im, " "none." msgstr "" -"Você pode especificar um parâmetro denominado 'device', com um dos valores: " -"sms, im, none" +"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." @@ -270,7 +270,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:131 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,49 +329,50 @@ msgstr "Mensagens diretas para %s" msgid "All the direct messages sent to %s" msgstr "Todas as mensagens diretas enviadas para %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Nenhuma mensagem de texto!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Isso é muito extenso. O tamanho máximo das mensagens é %d caracteres." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "O usuário destinatário não foi encontrado." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." msgstr "" "Não é possível enviar mensagens diretas para usuários que não 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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." -msgstr "Não é possível seguir o usuário: Usuário não encontrado." +msgid "Could not follow user: profile not found." +msgstr "Não é possível deixar de seguir o usuário: Usuário não encontrado." #: actions/apifriendshipscreate.php:118 #, php-format @@ -386,9 +387,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." -msgstr "Duas IDs de usuário ou screen_names devem ser informados." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "Devem ser fornecidos dois IDs ou nomes de usuários válidos." #: actions/apifriendshipsshow.php:134 msgid "Could not determine source user." @@ -398,126 +399,136 @@ 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Apelido inválido: \"%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 -#, 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 "O grupo não foi encontrado!" +msgstr "O grupo não foi encontrado." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, php-format msgid "%1$s groups %2$s is a member of." -msgstr "Grupos dos quais %s é membro" +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 +msgid "Upload failed." +msgstr "O upload falhou." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "Não foi fornecido nenhum parâmetro oauth_token" @@ -528,15 +539,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 @@ -606,12 +617,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:463 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 @@ -619,8 +630,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" @@ -636,11 +647,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." @@ -649,67 +660,73 @@ msgstr "Você não pode excluir uma mensagem de outro usuário." msgid "No such notice." msgstr "Essa mensagem não existe." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Você não pode repetir a sua própria mensagem." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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." +msgstr "Está muito extenso. O tamanho máximo é de %d caracteres." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Não encontrado." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." -msgstr "O tamanho máximo da mensagem é de %s caracteres" +msgstr "O tamanho máximo da mensagem é de %d 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:107 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:112 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!" @@ -724,16 +741,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,10 +805,10 @@ msgstr "Original" #: actions/avatarsettings.php:142 actions/avatarsettings.php:217 #: actions/grouplogo.php:213 actions/grouplogo.php:274 msgid "Preview" -msgstr "Visualização" +msgstr "Pré-visualizar" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Excluir" @@ -827,11 +848,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 " @@ -847,17 +868,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 "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" @@ -866,23 +886,24 @@ 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 -#, fuzzy msgctxt "BUTTON" 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -892,8 +913,8 @@ msgstr "Não foi possível salvar a informação de bloqueio." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Esse grupo não existe." @@ -925,9 +946,9 @@ msgstr "Desbloquear este usuário" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Enviar para " +msgstr "Publicar em %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -943,9 +964,9 @@ msgstr "Esse não é o seu código de confirmação!" #. 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 "Tipo de endereço desconhecido %s" +msgstr "Tipo de endereço %s não reconhecido." #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -1006,7 +1027,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:1307 msgid "There was a problem with your session token." msgstr "Ocorreu um problema com o seu token de sessão." @@ -1040,7 +1061,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." @@ -1071,7 +1092,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Excluir esta mensagem" @@ -1111,45 +1132,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 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Tema não disponível: %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" @@ -1159,57 +1190,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 @@ -1219,7 +1258,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" @@ -1333,7 +1372,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." @@ -1372,7 +1412,6 @@ msgstr "Endereço de e-mail já confirmado." #: 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 "Remover" @@ -1391,7 +1430,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 "Cancelar" @@ -1406,7 +1444,6 @@ msgstr "Endereço de e-mail, ex: \"usuario@exemplo.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 "Adicionar" @@ -1432,16 +1469,14 @@ msgstr "Cria um novo endereço de e-mail para publicar e cancela o antigo." #. 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 "Novo" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Preferências" +msgstr "Preferências de e-mail" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1484,9 +1519,8 @@ msgstr "Publique um MicroID para meu endereço de e-mail." #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "As configurações da aparência foram salvas." +msgstr "As configurações de e-mail foram salvas." #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1499,7 +1533,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." @@ -1542,15 +1576,13 @@ msgstr "Nenhuma confirmação pendente para cancelar." #. 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 "Isso é um endereço de MI errado." +msgstr "Esse é o endereço de e-mail errado." #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "A confirmação foi cancelada." +msgstr "A confirmação por e-mail foi cancelada." #. TRANS: Message given trying to remove an e-mail address that is not #. TRANS: registered for the active user. @@ -1560,9 +1592,8 @@ msgstr "Esse não é seu endereço de email." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "O endereço foi removido." +msgstr "O endereço de e-mail foi removido." #: actions/emailsettings.php:493 actions/smssettings.php:568 msgid "No incoming email address." @@ -1702,9 +1733,8 @@ msgid "Remote service uses unknown version of OMB protocol." msgstr "O serviço remoto usa uma versão desconhecida do protocolo OMB." #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "Ocorreu um erro na atualização do perfil remoto" +msgstr "Ocorreu um erro durante a atualização do perfil remoto." #: actions/getfile.php:79 msgid "No such file." @@ -1732,13 +1762,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." @@ -1880,7 +1910,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" @@ -2026,9 +2056,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Preferências" +msgstr "Preferências do mensageiro instantâneo" #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2100,15 +2129,13 @@ msgstr "Isso é um endereço de MI errado." #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "Não foi possível excluir a confirmação de e-mail." +msgstr "Não foi possível excluir a confirmação do mensageiro instantâneo." #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "A confirmação foi cancelada." +msgstr "A confirmação do mensageiro instantâneo foi cancelada." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2118,9 +2145,8 @@ msgstr "Essa não é sua ID do Jabber." #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "O endereço foi removido." +msgstr "O endereço de mensageiro instantâneo foi removido." #: actions/inbox.php:59 #, php-format @@ -2143,10 +2169,10 @@ msgid "Invites have been disabled." msgstr "Os convites foram desabilitados." #: actions/invite.php:41 -#, fuzzy, php-format +#, php-format msgid "You must be logged in to invite other users to use %s." msgstr "" -"Você deve estar autenticado para convidar outros usuários para usar o %s" +"Você deve estar autenticado para convidar outros usuários para usar o %s." #: actions/invite.php:72 #, php-format @@ -2167,7 +2193,7 @@ msgstr "Você já está assinando esses usuários:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2290,9 +2316,7 @@ msgstr "Você deve estar autenticado para se associar a um grupo." msgid "No nickname or ID." msgstr "Nenhum apelido ou identificação." -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s associou-se ao grupo %2$s" @@ -2301,53 +2325,52 @@ msgstr "%1$s associou-se ao grupo %2$s" msgid "You must be logged in to leave a group." msgstr "Você deve estar autenticado para sair de um grupo." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Você não é um membro desse grupo." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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." @@ -2355,14 +2378,16 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Digite seu nome de usuário e senha. Ainda não possui um usuário? [Registre](%" -"%action.register%%) uma nova conta." +"Ainda não possui um usuário? [Registre](%%action.register%%) uma nova conta." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2386,9 +2411,8 @@ msgid "Can't make %1$s an admin for group %2$s." msgstr "Não foi possível tornar %1$s um administrador do grupo %2$s." #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Nenhuma mensagem atual" +msgstr "Nenhuma mensagem atual." #: actions/newapplication.php:52 msgid "New Application" @@ -2422,12 +2446,15 @@ msgstr "Utilize este formulário para criar um novo grupo." msgid "New message" msgstr "Nova mensagem" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Você não pode enviar mensagens para este usuário." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Nenhum conteúdo!" @@ -2435,7 +2462,8 @@ msgstr "Nenhum conteúdo!" msgid "No recipient specified." msgstr "Não foi especificado nenhum destinatário." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2446,12 +2474,14 @@ msgstr "" msgid "Message sent" msgstr "A mensagem foi enviada" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "A mensagem direta para %s foi enviada." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Erro no Ajax" @@ -2459,7 +2489,7 @@ msgstr "Erro no Ajax" msgid "New notice" msgstr "Nova mensagem" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "A mensagem foi publicada" @@ -2512,10 +2542,10 @@ msgstr "Mensagens correspondentes aos termos \"%1$s\" no %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 "" -"Esse usuário não permite ser chamado à atenção ou ainda não confirmou ou " -"configurou seu e-mail." +"Este usuário não aceita toques ou ainda não confirmou ou forneceu um correio " +"eletrônico." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2555,9 +2585,9 @@ msgid "You are not a user of that application." msgstr "Você não é um usuário dessa aplicação." #: actions/oauthconnectionssettings.php:186 -#, fuzzy, php-format +#, php-format msgid "Unable to revoke access for app: %s." -msgstr "Não foi possível revogar o acesso para a aplicação: " +msgstr "Não foi possível revogar o acesso para a aplicação: %s." #: actions/oauthconnectionssettings.php:198 msgid "You have not authorized any applications to use your account." @@ -2569,31 +2599,30 @@ msgstr "" "Os desenvolvedores podem editar as configurações de registro para suas " "aplicações " -#: actions/oembed.php:79 actions/shownotice.php:100 -#, fuzzy +#: actions/oembed.php:80 actions/shownotice.php:100 msgid "Notice has no profile." -msgstr "A mensagem não está associada a nenhum perfil" +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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "tipo de conteúdo " +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 "" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Não é um formato de dados suportado." @@ -2698,7 +2727,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" @@ -2710,11 +2739,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." @@ -2735,7 +2764,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" @@ -2744,24 +2773,24 @@ msgid "Path and server settings for this StatusNet site." msgstr "Configurações dos caminhos e do servidor para este site StatusNet." #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "Sem permissão de leitura no diretório de temas: %s" +msgstr "Sem permissão de leitura no diretório de temas: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Sem permissão de escrita no diretório de avatares: %s" +msgstr "Sem permissão de escrita no diretório de avatares: %s." #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Sem permissão de escrita no diretório de imagens de fundo: %s" +msgstr "Sem permissão de escrita no diretório de imagens de fundo: %s." #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Sem permissão de leitura no diretório de locales: %s" +msgstr "Sem permissão de leitura no diretório de locales: %s." #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2902,9 +2931,9 @@ msgid "People search" msgstr "Procurar pessoas" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "Não é uma etiqueta de pessoa válida: %s" +msgstr "Não é uma etiqueta de pessoa válida: %s." #: actions/peopletag.php:142 #, php-format @@ -2912,9 +2941,8 @@ msgid "Users self-tagged with %1$s - page %2$d" msgstr "Usuários auto-etiquetados com %1$s - pág. %2$d" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "O conteúdo da mensagem é inválido" +msgstr "O conteúdo da mensagem é inválido." #: actions/postnotice.php:101 #, php-format @@ -2941,43 +2969,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\"" @@ -3020,7 +3048,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)." @@ -3060,9 +3088,9 @@ msgid "Settings saved." msgstr "As configurações foram salvas." #: actions/public.php:83 -#, fuzzy, php-format +#, php-format msgid "Beyond the page limit (%s)." -msgstr "Além do limite da página (%s)" +msgstr "Além do limite da página (%s)." #: actions/public.php:92 msgid "Could not retrieve public stream." @@ -3284,7 +3312,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." @@ -3294,40 +3322,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:507 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 -#, fuzzy +#: 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. " @@ -3335,43 +3362,68 @@ 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:494 -#, fuzzy, php-format +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Eu entendo que o conteúdo e os dados de %1$s são particulares e " +"confidenciais." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Todos os direitos reservados." + +#. 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 "" -" exceto estes dados particulares: senha, endereço de e-mail, endereço de MI " +"Meus textos e arquivos estão disponíveis sob a %s, exceto estes dados " +"particulares: senha, endereço de e-mail, endereço do mensageiro instantâneo " "e número de telefone." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3404,7 +3456,7 @@ msgstr "" "\n" "Obrigado por se registrar e esperamos que você aproveite o serviço." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3486,7 +3538,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Repetida" @@ -3524,10 +3576,10 @@ msgstr "Fonte de respostas para %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 "" -"Esse é o fluxo de mensagens de resposta para %1$s, mas %2$s ainda não " -"recebeu nenhuma mensagem direcionada a ele(a)." +"Este é o fluxo público de mensagens de %1$s, mas %2$s não publicou nada " +"ainda." #: actions/replies.php:204 #, php-format @@ -3541,12 +3593,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 "" -"Você pode tentar [chamar a atenção de %1$s](../%2$s) ou [publicar alguma " -"coisa que desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%3" -"$s)." +"Seja o primeiro a [publicar sobre este tópico](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/repliesrss.php:72 #, php-format @@ -3561,7 +3612,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" @@ -3575,7 +3626,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" @@ -3618,7 +3669,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" @@ -3629,12 +3680,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,22 +3775,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 não adicionou nenhuma mensagem às suas favoritas. Publique alguma coisa " -"interessante para para as pessoas marcarem como favorita. :)" +"%s ainda não adicionou nenhuma nota às favoritas. Publique algo interessante " +"para que as pessoas as marcarem como favorita. :)" #: 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ão adicionou nenhuma mensagem às suas favoritas. Por que você não " -"[registra uma conta](%%%%action.register%%%%) e publica alguma coisa " -"interessante para as pessoas marcarem como favorita? :)" +"Por que você não [registra uma conta](%%action.register%%) pra ser o " +"primeiro a adicionar uma mensagem aos favoritos?" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3797,7 +3847,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" @@ -3811,11 +3861,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." @@ -3831,7 +3881,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." @@ -3844,7 +3894,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,11 +3973,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 "" -"Você pode tentar chamar a atenção de %1$s ou [publicar alguma coisa que " -"desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%2$s)." +"Seja o primeiro a [publicar sobre este tópico](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/showstream.php:243 #, php-format @@ -3989,7 +4039,6 @@ msgid "Minimum text limit is 0 (unlimited)." msgstr "O valor mínimo para o limite de texto é 0 (sem limites)." #: actions/siteadminpanel.php:171 -#, fuzzy msgid "Dupe limit must be one or more seconds." msgstr "O limite de duplicatas deve ser de um ou mais segundos." @@ -4082,7 +4131,6 @@ msgid "Unable to save site notice." msgstr "Não foi possível salvar os avisos do site." #: actions/sitenoticeadminpanel.php:113 -#, fuzzy msgid "Max length for the site-wide notice is 255 chars." msgstr "O tamanho máximo para os avisos é de 255 caracteres." @@ -4117,9 +4165,8 @@ msgstr "SMS não está disponível." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "Endereço do MI" +msgstr "Endereço de SMS" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4143,7 +4190,6 @@ msgstr "Informe o código que você recebeu no seu telefone." #. TRANS: Button label to confirm SMS confirmation code in SMS settings. #: actions/smssettings.php:148 -#, fuzzy msgctxt "BUTTON" msgid "Confirm" msgstr "Confirmar" @@ -4160,9 +4206,8 @@ msgstr "Número de telefone, sem pontuação ou espaços, com código de área" #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Preferências" +msgstr "Preferências do SMS" #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4175,9 +4220,8 @@ msgstr "" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "As preferências foram salvas." +msgstr "As preferências do SMS foram salvas." #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4215,9 +4259,8 @@ msgstr "Isso é um número de confirmação errado." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "A confirmação foi cancelada." +msgstr "A confirmação do SMS foi cancelada." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4227,9 +4270,8 @@ msgstr "Esse não é seu número de telefone." #. TRANS: Message given after successfully removing a registered SMS phone number. #: actions/smssettings.php:470 -#, fuzzy msgid "The SMS phone number was removed." -msgstr "Telefone para SMS" +msgstr "O número de telefone para SMS foi removido." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4259,7 +4301,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" @@ -4280,9 +4322,8 @@ msgid "Invalid snapshot report URL." msgstr "A URL para o envio das estatísticas é inválida." #: actions/snapshotadminpanel.php:200 -#, fuzzy msgid "Randomly during web hit" -msgstr "Aleatoriamente durante o funcionamento" +msgstr "Aleatoriamente durante as visitas ao site" #: actions/snapshotadminpanel.php:201 msgid "In a scheduled job" @@ -4320,7 +4361,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." @@ -4498,10 +4540,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." @@ -4515,9 +4553,8 @@ msgid "User is not silenced." msgstr "O usuário não está silenciado." #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Nenhuma ID de perfil na requisição." +msgstr "A requisição não possui nenhuma ID de perfil." #: actions/unsubscribe.php:98 msgid "Unsubscribed" @@ -4615,7 +4652,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" @@ -4746,18 +4783,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, " @@ -4766,11 +4803,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 " @@ -4782,7 +4819,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 " @@ -4794,7 +4831,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 " @@ -4803,93 +4840,140 @@ 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:805 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 "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 arquivo pode ser maior que %d bytes e o arquivo que você enviou " -"possui %d bytes. Experimente enviar uma versão menor." +"Nenhum arquivo pode ter mais de %1$d bytes e o que você 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 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 +msgid "Invalid filename." +msgstr "Nome de arquivo 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 "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 "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 "Não existe o perfil (%1$d) para a nota (%2$d)." + #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4897,71 +4981,119 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problema no salvamento da mensagem." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "O tipo fornecido ao método saveKnownGroups é incorreto" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 usuário #%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 usuário #%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:339 +msgid "Unable to save tag." +msgstr "Não foi salvar 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 "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." -msgstr "Não foi possível excluir a auto-assinatura." +#. 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 salvar a assinatura." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Não foi possível excluir o token de assinatura 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 salvar a assinatura." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Não foi possível excluir a assinatura." +#. 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 salvar 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." @@ -5001,200 +5133,200 @@ msgid "Other" msgstr "Outras" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 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:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Pessoal" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Conectar" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administrar" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Convidar" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Sair" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrar-se" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Autentique-se no site" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Entrar" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Ajudem-me!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Ajuda" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Procure por pessoas ou textos" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Ajuda" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Sobre" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "Termos de uso" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Privacidade" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Fonte" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Contato" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Mini-aplicativo" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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 -#, fuzzy, php-format +#: lib/action.php:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." @@ -5203,13 +5335,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5217,60 +5349,60 @@ msgid "" "org/licensing/licenses/agpl-3.0.html)." msgstr "" "Ele funciona sobre o software de microblog [StatusNet](http://status.net/), " -"versão %s, disponível sob a [GNU Affero General Public License] (http://www." +"versão %s, disponível sob a [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:866 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:873 #, 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:880 #, 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:884 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:897 #, php-format msgid "All %1$s content and data are available under the %2$s license." -msgstr "" +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:1236 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:1247 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:1257 msgid "Before" msgstr "Anterior" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" "Era esperado um elemento raiz da fonte, mas foi obtido o documento XML " @@ -5280,11 +5412,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "Ainda não é possível manipular conteúdo remoto." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Ainda não é possível manipular conteúdo XML incorporado." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Ainda não é possível manipular conteúdo Base64." @@ -5315,64 +5447,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:95 +#: 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 " @@ -5462,25 +5594,22 @@ msgstr "Cancelar" #. TRANS: Application access type #: lib/applicationlist.php:136 -#, fuzzy msgid "read-write" -msgstr "Leitura e escrita" +msgstr "leitura e escrita" #. TRANS: Application access type #: lib/applicationlist.php:138 -#, fuzzy msgid "read-only" -msgstr "Somente leitura" +msgstr "somente leitura" #. 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 "" +msgstr "Aprovado em %1$s - acesso \"%2$s\"." #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" msgstr "Revogar" @@ -5508,11 +5637,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" @@ -5528,44 +5657,54 @@ msgstr "O comando foi completado" msgid "Command failed" msgstr "O comando falhou" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Não existe uma mensagem com essa id" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "Não existe uma mensagem com essa id." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "O usuário não tem uma \"última mensagem\"" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +msgid "User has no last notice." +msgstr "O usuário não tem nenhuma \"última mensagem\"." #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Não foi possível encontrar um usuário com a identificação %s" +msgid "Could not find a user with nickname %s." +msgstr "Não foi possível encontrar nenhum usuário com a identificação %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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Não foi possível encontrar um usuário local com a identificação %s" +msgid "Could not find a local user with nickname %s." +msgstr "" +"Não foi possível encontrar nenhum usuário local com a identificação %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Desculpe, mas esse comando ainda não foi implementado." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Não faz muito sentido chamar a sua própria atenção!" #. TRANS: Message given having nudged another user. #. TRANS: %s is the nickname of the user that was nudged. -#: lib/command.php:234 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Foi enviada a chamada de atenção para %s" +msgid "Nudge sent to %s." +msgstr "Foi enviada a chamada de atenção para %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5576,55 +5715,53 @@ msgstr "" "Assinantes: %2$s\n" "Mensagens: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Mensagem marcada como favorita." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Você já é um membro desse grupo." - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:360 #, 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." +msgid "%1$s joined group %2$s." +msgstr "%1$s associou-se ao grupo %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, 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." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s deixou o grupo %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Site: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Sobre: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5635,146 +5772,171 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, 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." -#. 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 "A mensagem direta para %s foi enviada" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Ocorreu um erro durante o envio da mensagem direta." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Você não pode repetir sua própria mensagem" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Você já repetiu essa mensagem" - #. 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Mensagem de %s repetida" +msgid "Notice from %s repeated." +msgstr "A mensagem de %s foi repetida." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Erro na repetição da mensagem." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"A mensagem é muito extensa - o máximo são %d caracteres e você enviou %d" +"A mensagem é muito extensa - o máximo são %1$d caracteres e você enviou %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "A resposta a %s foi enviada" +msgid "Reply to %s sent." +msgstr "A resposta para %s foi enviada." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Erro no salvamento da mensagem." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Especifique o nome do usuário que será assinado" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Especifique o nome do usuário que será assinado." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Não é possível assinar perfis OMB com comandos." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "Efetuada a assinatura de %s" +msgid "Subscribed to %s." +msgstr "Foi efetuada a assinatura de $s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Especifique o nome do usuário cuja assinatura será cancelada" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Especifique o nome do usuário cuja assinatura será cancelada." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "Cancelada a assinatura de %s" +msgid "Unsubscribed from %s." +msgstr "Foi cancelada a assinatura de %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "O comando não foi implementado ainda." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notificação desligada." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Não é possível desligar a notificação." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notificação ligada." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Não é possível ligar a notificação." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "O comando para autenticação está desabilitado" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "O comando para autenticação está desabilitado." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" "Este link é utilizável somente uma vez e é válido somente por dois minutos: %" -"s" +"s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "Cancelada a assinatura de %s" +msgid "Unsubscribed %s." +msgstr "Foi cancelada a assinatura de %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Você não está assinando ninguém." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Você já está assinando esta pessoa:" msgstr[1] "Você já está assinando estas pessoas:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Ninguém o assinou ainda." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Esta pessoa está assinando você:" msgstr[1] "Estas pessoas estão assinando você:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Você não é membro de nenhum grupo." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Você é membro deste grupo:" msgstr[1] "Você é membro destes grupos:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6150,8 +6312,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" @@ -6177,19 +6349,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" @@ -6211,30 +6383,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 " @@ -6262,13 +6436,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" @@ -6302,13 +6476,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" @@ -6346,21 +6520,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" @@ -6386,6 +6563,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." @@ -6400,7 +6600,7 @@ msgstr "" "privadas para envolver outras pessoas em uma conversa. Você também pode " "receber mensagens privadas." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "de" @@ -6461,24 +6661,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." @@ -6491,11 +6691,11 @@ msgstr "Enviar uma mensagem direta" msgid "To" msgstr "Para" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Caracteres disponíveis" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Enviar" @@ -6504,28 +6704,28 @@ msgstr "Enviar" msgid "Send a notice" msgstr "Enviar uma mensagem" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "E aí, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Anexo" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Anexar um arquivo" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Divulgar minha localização" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Não divulgar minha localização" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6534,51 +6734,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" msgstr "no contexto" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Repetida por" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Responder a esta mensagem" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Responder" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Mensagem repetida" @@ -6628,7 +6832,7 @@ msgstr "Respostas" #: lib/personalgroupnav.php:114 msgid "Favorites" -msgstr "Favoritas" +msgstr "Favoritos" #: lib/personalgroupnav.php:125 msgid "Inbox" @@ -6651,7 +6855,7 @@ msgstr "Suas mensagens enviadas" msgid "Tags in %s's notices" msgstr "Etiquetas nas mensagens de %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Desconhecido" @@ -6688,7 +6892,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." @@ -6712,7 +6916,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." @@ -6733,7 +6937,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." @@ -6831,6 +7035,56 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Não foi possível salvar o tema." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "O tema contém extensões de arquivo inseguras; pode não ser seguro." + +#: lib/themeuploader.php:241 +#, 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:259 +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" @@ -6859,11 +7113,6 @@ msgstr "Cancelar a assinatura deste usuário" msgid "Unsubscribe" msgstr "Cancelar" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "O usuário %s (%d) não tem nenhum registro do perfil." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Editar o avatar" @@ -6911,56 +7160,56 @@ msgid "Moderator" msgstr "Moderador" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "cerca de 1 ano atrás" @@ -6973,9 +7222,3 @@ msgstr "%s não é uma cor válida!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s não é uma cor válida! Utilize 3 ou 6 caracteres hexadecimais." - -#: lib/xmppmanager.php:403 -#, 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." diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po index 87e7ea8fb2..f219931c7b 100644 --- a/locale/ru/LC_MESSAGES/statusnet.po +++ b/locale/ru/LC_MESSAGES/statusnet.po @@ -1,6 +1,7 @@ # Translation of StatusNet to Russian # # Author@translatewiki.net: Brion +# Author@translatewiki.net: Eleferen # Author@translatewiki.net: Kirill # Author@translatewiki.net: Lockal # Author@translatewiki.net: Rubin @@ -12,12 +13,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:46+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:19+0000\n" "Language-Team: Russian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: ru\n" "X-Message-Group: out-statusnet\n" @@ -26,9 +27,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,37 +90,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +129,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:114 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 +171,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +249,7 @@ msgstr "" "Ð’Ñ‹ должны указать параметр Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «device» и одним из значений: sms, im, " "none." -#: actions/apiaccountupdatedeliverydevice.php:132 +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ пользователÑ." @@ -268,7 +269,7 @@ msgstr "Ðе удаётÑÑ Ñохранить профиль." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -327,51 +328,50 @@ msgstr "ПрÑмые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s" msgid "All the direct messages sent to %s" msgstr "Ð’Ñе прÑмые ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñланные Ð´Ð»Ñ %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "ОтÑутÑтвует текÑÑ‚ ÑообщениÑ!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Слишком длинно. МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ â€” %d знаков." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Получатель не найден." -#: actions/apidirectmessagenew.php:150 +#: 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 "Ðет ÑтатуÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +388,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 +400,135 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "Ð’Ñ‹ уже ÑвлÑетеÑÑŒ членом Ñтой группы." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "Ð’Ñ‹ заблокированы из Ñтой группы админиÑтратором." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +539,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 +613,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:463 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 +626,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 +643,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 "Ð’Ñ‹ не можете удалÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей." @@ -645,67 +656,73 @@ msgstr "Ð’Ñ‹ не можете удалÑÑ‚ÑŒ ÑÑ‚Ð°Ñ‚ÑƒÑ Ð´Ñ€ÑƒÐ³Ð¸Ñ… поль msgid "No such notice." msgstr "Ðет такой запиÑи." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Ðевозможно повторить ÑобÑтвенную запиÑÑŒ." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Слишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° — %d знаков." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе найдено." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð»ÐµÐ½Ñ‚Ð° %s" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ %s от вÑех!" @@ -720,16 +737,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 +804,7 @@ msgid "Preview" msgstr "ПроÑмотр" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Удалить" @@ -823,11 +844,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 +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" @@ -851,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 msgid "Do not block this user" msgstr "Ðе блокировать Ñтого пользователÑ" @@ -860,7 +881,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,14 +889,16 @@ 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 "Ðе удаётÑÑ Ñохранить информацию о блокировании." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -885,8 +908,8 @@ msgstr "Ðе удаётÑÑ Ñохранить информацию о блок #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Ðет такой группы." @@ -999,7 +1022,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:1307 msgid "There was a problem with your session token." msgstr "Проблема Ñ Ð’Ð°ÑˆÐµÐ¹ ÑеÑÑией. Попробуйте ещё раз, пожалуйÑта." @@ -1033,7 +1056,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 +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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Удалить Ñту запиÑÑŒ" @@ -1104,45 +1127,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 +1183,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 +1251,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 +1365,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 +1532,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 +1760,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 +1907,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" @@ -2150,7 +2190,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2273,9 +2313,7 @@ msgstr "Ð’Ñ‹ должны авторизоватьÑÑ Ð´Ð»Ñ Ð²Ñтуплени msgid "No nickname or ID." msgstr "Ðет имени или 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s вÑтупил в группу %2$s" @@ -2284,50 +2322,49 @@ msgstr "%1$s вÑтупил в группу %2$s" msgid "You must be logged in to leave a group." msgstr "Ð’Ñ‹ должны авторизоватьÑÑ, чтобы покинуть группу." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2372,17 @@ msgstr "" "По причинам ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑти введите Ð¸Ð¼Ñ Ð¸ пароль ещё раз, прежде чем " "изменÑÑ‚ÑŒ Ваши уÑтановки." -#: actions/login.php:270 +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Войти Ñ Ð²Ð°ÑˆÐ¸Ð¼ именем учаÑтника и паролем." + +#: actions/login.php:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2400,12 +2440,15 @@ msgstr "ИÑпользуйте Ñту форму Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð² msgid "New message" msgstr "Ðовое Ñообщение" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Ðет контента!" @@ -2413,7 +2456,8 @@ msgstr "Ðет контента!" msgid "No recipient specified." msgstr "Ðет адреÑата." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "Ðе поÑылайте ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñами Ñебе; проÑто потихоньку Ñкажите Ñто Ñебе." @@ -2422,12 +2466,14 @@ msgstr "Ðе поÑылайте ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñами Ñебе; проÑÑ‚ msgid "Message sent" msgstr "Сообщение отправлено" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "ПрÑмое Ñообщение Ð´Ð»Ñ %s поÑлано." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ошибка AJAX" @@ -2435,7 +2481,7 @@ msgstr "Ошибка AJAX" msgid "New notice" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "ЗапиÑÑŒ опубликована" @@ -2487,10 +2533,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" @@ -2542,30 +2588,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Ðеподдерживаемый формат данных." @@ -2670,7 +2716,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 "Подтверждение" @@ -2682,11 +2728,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 "Пароли не Ñовпадают." @@ -2707,7 +2753,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 "Пути" @@ -2761,7 +2807,7 @@ msgstr "Путь к Ñайту" #: actions/pathsadminpanel.php:246 msgid "Path to locales" -msgstr "ПуÑÑ‚ÑŒ к локализациÑм" +msgstr "Путь к локализациÑм" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" @@ -2910,43 +2956,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 "Где вы находитеÑÑŒ, например «Город, облаÑÑ‚ÑŒ, Ñтрана»" @@ -2988,7 +3034,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 Ñимволов)." @@ -2999,7 +3045,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 @@ -3248,7 +3294,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 "Ошибка в уÑтановках пользователÑ." @@ -3256,41 +3302,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:507 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. " @@ -3299,34 +3345,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Я понимаю, что Ñодержание и данные %1$s ÑвлÑÑŽÑ‚ÑÑ Ñ‡Ð°Ñтными и " +"конфиденциальными." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "ÐвторÑким правом на мои текÑÑ‚Ñ‹ и файлы обладает %1$s." + +#. 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, " @@ -3335,7 +3405,7 @@ msgstr "" "Мои текÑÑ‚Ñ‹ и файлы доÑтупны на уÑловиÑÑ… %s, за иÑключением Ñледующей личной " "информации: паролÑ, почтового адреÑа, номера меÑÑенджера и номера телефона." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3369,7 +3439,7 @@ msgstr "" "СпаÑибо за то, что приÑоединилиÑÑŒ к нам, надеемÑÑ, что вы получите " "удовольÑтвие от иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑервиÑа!" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3448,7 +3518,7 @@ msgstr "Ð’Ñ‹ не можете повторить ÑобÑтвенную зап msgid "You already repeated that notice." msgstr "Ð’Ñ‹ уже повторили Ñту запиÑÑŒ." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Повторено" @@ -3486,9 +3556,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 @@ -3502,12 +3573,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 @@ -3522,7 +3592,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" @@ -3537,7 +3607,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 "СеÑÑии" @@ -3580,7 +3650,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 "ИмÑ" @@ -3591,12 +3661,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 "СтатиÑтика" @@ -3686,8 +3756,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 пока не выбрал ни одной любимой запиÑи. Ðапишите такую интереÑную запиÑÑŒ, " "которую он добавит её в чиÑло любимых :)" @@ -3695,17 +3765,17 @@ 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%%%%) и не напиÑать что-нибудь " "интереÑное, что понравилоÑÑŒ бы Ñтому пользователю? :)" #: 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 @@ -3759,7 +3829,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 "УчаÑтники" @@ -3773,11 +3843,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." @@ -3793,7 +3863,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." @@ -3806,7 +3876,7 @@ msgstr "" "обеÑпечении [StatusNet](http://status.net/). УчаÑтники обмениваютÑÑ " "короткими ÑообщениÑми о Ñвоей жизни и интереÑах. " -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "ÐдминиÑтраторы" @@ -3883,12 +3953,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 @@ -3912,10 +3981,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 @@ -4217,7 +4286,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 "Снимки" @@ -4277,7 +4346,8 @@ msgstr "Сохранить наÑтройки Ñнимка" msgid "You are not subscribed to that profile." msgstr "Ð’Ñ‹ не подпиÑаны на Ñтот профиль." -#: actions/subedit.php:83 classes/Subscription.php:132 +#. TRANS: Exception thrown when a subscription could not be stored on the server. +#: actions/subedit.php:83 classes/Subscription.php:136 msgid "Could not save subscription." msgstr "Ðе удаётÑÑ Ñохранить подпиÑку." @@ -4458,10 +4528,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 "Ð’Ñ‹ не заблокировали Ñтого пользователÑ." @@ -4497,7 +4563,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." @@ -4573,7 +4639,7 @@ msgstr "" "подпиÑатьÑÑ Ð½Ð° запиÑи Ñтого пользователÑ. ЕÑли Ð’Ñ‹ Ñтого не хотите делать, " "нажмите «Отказ»." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "ЛицензиÑ" @@ -4584,7 +4650,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" @@ -4701,18 +4767,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, " @@ -4721,11 +4787,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 " @@ -4737,7 +4803,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 " @@ -4749,7 +4815,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 " @@ -4758,93 +4824,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4852,71 +4965,120 @@ msgstr "" "Слишком много одинаковых запиÑей за Ñтоль короткий Ñрок; передохните немного " "и попробуйте вновь через пару минут." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Проблемы Ñ Ñохранением запиÑи." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "Ð”Ð»Ñ saveKnownGroups указан неверный тип" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 "Ðе удаётÑÑ Ñохранить информацию о локальной группе." @@ -4956,199 +5118,199 @@ msgid "Other" msgstr "Другое" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Страница без названиÑ" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Личное" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Соединить" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "ÐаÑтройки" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "ПриглаÑить" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Выход" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "РегиÑтрациÑ" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Войти" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Вход" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Помощь" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Помощь" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "ИÑкать людей или текÑÑ‚" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "Локальные виды" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð¾ подпиÑкам" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Помощь" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "О проекте" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "ЧаВо" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "TOS" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "ПользовательÑкое Ñоглашение" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "ИÑходный код" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "ÐšÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Бедж" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5158,13 +5320,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5177,57 +5339,57 @@ msgstr "" "licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Туда" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "ОжидалÑÑ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð¹ Ñлемент потока, а получен XML-документ целиком." @@ -5235,11 +5397,11 @@ msgstr "ОжидалÑÑ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð¹ Ñлемент потока, а пол msgid "Can't handle remote content yet." msgstr "Пока ещё Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒ удалённое Ñодержимое." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Пока ещё Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒ вÑтроенный XML." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Пока ещё Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒ вÑтроенное Ñодержание Base64." @@ -5270,64 +5432,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:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API реÑурÑа требует доÑтуп Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ запиÑи, но у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ только доÑтуп " @@ -5460,11 +5622,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 "Смена Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð½Ðµ разрешена" @@ -5480,44 +5642,53 @@ msgstr "Команда завершена" msgid "Command failed" msgstr "Команда неудачна" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "ЗапиÑи Ñ Ñ‚Ð°ÐºÐ¸Ð¼ id не ÑущеÑтвует" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "ЗапиÑи Ñ Ñ‚Ð°ÐºÐ¸Ð¼ id не ÑущеÑтвует." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Ðе удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %s" +msgid "Could not find a user with nickname %s." +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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Ðе удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %s" +msgid "Could not find a local user with nickname %s." +msgstr "Ðе удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ локального Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ %s." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "ПроÑтите, Ñта команда ещё не выполнена." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "«Подталкивание» поÑлано %s" +msgid "Nudge sent to %s." +msgstr "«Подталкивание» поÑлано %s." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5528,55 +5699,53 @@ msgstr "" "ПодпиÑчиков: %2$s\n" "ЗапиÑей: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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: 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Ðе удаётÑÑ Ð¿Ñ€Ð¸Ñоединить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1$s к группе %2$s." +msgid "%1$s joined group %2$s." +msgstr "%1$s приÑоединилÑÑ Ðº группе %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %1$s из группы %2$s." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s покинул группу %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "ДомашнÑÑ Ñтраница: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "О пользователе: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5587,147 +5756,173 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"Сообщение Ñлишком велико. Предельно допуÑÑ‚Ð¸Ð¼Ð°Ñ Ð´Ð»Ð¸Ð½Ð° ÑоÑтавлÑет %1$d " -"Ñимволов, вы отправили %2$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. -#: lib/command.php:492 -#, php-format -msgid "Direct message to %s sent" -msgstr "ПрÑмое Ñообщение Ð´Ð»Ñ %s поÑлано." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "ЗапиÑÑŒ %s повторена" +msgid "Notice from %s repeated." +msgstr "ЗапиÑÑŒ %s повторена." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Ошибка при повторении запиÑи." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "ЗапиÑÑŒ Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ â€” не больше %d Ñимволов, вы поÑылаете %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "ЗапиÑÑŒ Ñлишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ â€” не больше %1$d Ñимволов, вы отправили %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Ответ %s отправлен" +msgid "Reply to %s sent." +msgstr "Ответ %s отправлен." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Проблемы Ñ Ñохранением запиÑи." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "Укажите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Ðевозможно подпиÑатьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ на профили OMB." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "ПодпиÑано на %s" +msgid "Subscribed to %s." +msgstr "ПодпиÑалÑÑ Ð½Ð° %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "Укажите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹ подпиÑки." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "ОтпиÑано от %s" +msgid "Unsubscribed from %s." +msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ %s." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Команда ещё не выполнена." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Оповещение отÑутÑтвует." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Ðет оповещениÑ." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "ЕÑÑ‚ÑŒ оповещение." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "ЕÑÑ‚ÑŒ оповещение." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Команда входа отключена" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Команда входа отключена." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "Эта ÑÑылка дейÑтвительна только один раз в течение 2 минут: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" +"Эта ÑÑылка Ñработает только один раз, она дейÑтвительна в течение 2 минут: %" +"s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "ОтпиÑано %s" +msgid "Unsubscribed %s." +msgstr "ОтпиÑано %s." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Ð’Ñ‹ ни на кого не подпиÑаны." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ð’Ñ‹ подпиÑаны на Ñтих людей:" msgstr[1] "Ð’Ñ‹ подпиÑаны на Ñтих людей:" msgstr[2] "Ð’Ñ‹ подпиÑаны на Ñтих людей:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Ðикто не подпиÑан на ваÑ." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Эти люди подпиÑалиÑÑŒ на ваÑ:" msgstr[1] "Эти люди подпиÑалиÑÑŒ на ваÑ:" msgstr[2] "Эти люди подпиÑалиÑÑŒ на ваÑ:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Ð’Ñ‹ не ÑоÑтоите ни в одной группе." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Ð’Ñ‹ ÑвлÑетеÑÑŒ учаÑтником Ñледующих групп:" msgstr[1] "Ð’Ñ‹ ÑвлÑетеÑÑŒ учаÑтником Ñледующих групп:" msgstr[2] "Ð’Ñ‹ ÑвлÑетеÑÑŒ учаÑтником Ñледующих групп:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6103,8 +6298,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" @@ -6130,19 +6335,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" @@ -6164,30 +6369,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 " @@ -6215,13 +6420,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" @@ -6255,13 +6460,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" @@ -6299,7 +6504,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" @@ -6310,13 +6515,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" @@ -6378,9 +6583,9 @@ msgstr "" "Ð²Ð¾Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей в разговор. СообщениÑ, получаемые от других " "людей, видите только вы." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "от " +msgstr "от" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6436,24 +6641,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 не поддерживаетÑÑ Ð½Ðµ Ñтом Ñервере." @@ -6466,11 +6671,11 @@ msgstr "ПоÑлать прÑмую запиÑÑŒ" msgid "To" msgstr "ДлÑ" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "6 или больше знаков" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Отправить" @@ -6479,28 +6684,28 @@ msgstr "Отправить" msgid "Send a notice" msgstr "ПоÑлать запиÑÑŒ" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Что нового, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Прикрепить" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Прикрепить файл" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "ПоделитьÑÑ Ñвоим меÑтоположением." -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Ðе публиковать Ñвоё меÑтоположение" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6509,51 +6714,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "web" + +#: lib/noticelist.php:568 msgid "in context" -msgstr "в контекÑте" +msgstr "перепиÑка" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Повторено" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Ответить на Ñту запиÑÑŒ" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Ответить" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "ЗапиÑÑŒ повторена" @@ -6626,7 +6835,7 @@ msgstr "Ваши иÑходÑщие ÑообщениÑ" msgid "Tags in %s's notices" msgstr "Теги запиÑей Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "ÐеизвеÑтно" @@ -6663,7 +6872,7 @@ msgstr "СреднеÑуточнаÑ" msgid "All groups" msgstr "Ð’Ñе группы" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "Ðереализованный метод." @@ -6687,7 +6896,7 @@ msgstr "ОÑобые" msgid "Popular" msgstr "ПопулÑрное" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Ðет аргумента return-to." @@ -6708,7 +6917,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 "Ðи задан пользователь Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого режима." @@ -6806,6 +7015,56 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Ошибка при Ñохранении темы." + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"Тема Ñодержит недопуÑтимое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° или папки. ДопуÑтимы буквы ASCII, " +"цифры, подчеркивание и знак минуÑа." + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "Тема Ñодержит файлы Ñ Ð¾Ð¿Ð°Ñным раÑширением; Ñто может быть небезопаÑно." + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Тема Ñодержит файл недопуÑтимого типа «.%s»." + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° темы." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Самые активные" @@ -6834,11 +7093,6 @@ msgstr "ОтпиÑатьÑÑ Ð¾Ñ‚ Ñтого пользователÑ" msgid "Unsubscribe" msgstr "ОтпиÑатьÑÑ" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "У Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ %s (%d) нет профильной запиÑи." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Изменить аватару" @@ -6886,56 +7140,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "пару Ñекунд назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "около минуты назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "около чаÑа назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "около Ð´Ð½Ñ Ð½Ð°Ð·Ð°Ð´" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "около меÑÑца назад" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "около года назад" @@ -6950,9 +7204,3 @@ msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "" "%s не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым цветом! ИÑпользуйте 3 или 6 шеÑтнадцатеричных " "Ñимволов." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"Сообщение Ñлишком длинное — не больше %1$d Ñимволов, вы отправили %2$d." diff --git a/locale/statusnet.pot b/locale/statusnet.pot index 12fa2d986f..4656cdd1fc 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-04-12 21:47+0000\n" +"POT-Creation-Date: 2010-09-09 18:07+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,37 +81,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +120,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:114 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 +160,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +252,7 @@ msgstr "" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -308,46 +309,47 @@ msgstr "" msgid "All the direct messages sent to %s" msgstr "" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "" -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "" -#: actions/apidirectmessagenew.php:150 +#: 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +365,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 +377,134 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +515,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 +584,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:463 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 +597,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 +614,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 "" @@ -614,67 +627,73 @@ msgstr "" msgid "No such notice." msgstr "" -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "" -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "" -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -689,16 +708,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 +774,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "" @@ -791,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 " @@ -807,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" @@ -816,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 "" @@ -825,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" @@ -833,14 +856,16 @@ 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 "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -850,8 +875,8 @@ msgstr "" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "" @@ -964,7 +989,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:1307 msgid "There was a problem with your session token." msgstr "" @@ -995,7 +1020,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 +1049,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "" @@ -1062,45 +1087,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 +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 "" #. 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 +1209,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 +1323,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 +1478,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 +1697,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 +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 "" @@ -2052,7 +2094,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "" @@ -2145,9 +2187,7 @@ msgstr "" 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "" @@ -2156,60 +2196,62 @@ msgstr "" msgid "You must be logged in to leave a group." msgstr "" -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" #: actions/makeadmin.php:92 @@ -2267,12 +2309,15 @@ msgstr "" msgid "New message" msgstr "" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "" @@ -2280,7 +2325,8 @@ msgstr "" msgid "No recipient specified." msgstr "" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2289,12 +2335,14 @@ msgstr "" msgid "Message sent" msgstr "" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "" @@ -2302,7 +2350,7 @@ msgstr "" msgid "New notice" msgstr "" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "" @@ -2348,7 +2396,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 @@ -2401,30 +2449,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "" @@ -2527,7 +2575,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 "" @@ -2539,11 +2587,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 "" @@ -2564,7 +2612,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 "" @@ -2763,43 +2811,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 "" @@ -2839,7 +2887,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 "" @@ -3083,7 +3131,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 "" @@ -3091,78 +3139,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:507 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:494 +#: 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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3181,7 +3251,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3256,7 +3326,7 @@ msgstr "" msgid "You already repeated that notice." msgstr "" -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "" @@ -3294,7 +3364,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 @@ -3307,8 +3377,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 @@ -3324,7 +3394,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 "" @@ -3338,7 +3408,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 "" @@ -3381,7 +3451,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 "" @@ -3392,12 +3462,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 "" @@ -3482,16 +3552,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 @@ -3550,7 +3620,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 "" @@ -3564,11 +3634,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." @@ -3578,7 +3648,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." @@ -3587,7 +3657,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3662,8 +3732,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 @@ -3970,7 +4040,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 "" @@ -4030,7 +4100,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 "" @@ -4194,10 +4265,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 "" @@ -4304,7 +4371,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4425,29 +4492,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 " @@ -4455,7 +4522,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 " @@ -4463,166 +4530,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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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:193 #, 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:265 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:270 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:276 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:283 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "" -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 "" @@ -4662,199 +4822,199 @@ msgid "Other" msgstr "" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, php-format msgid "%1$s - %2$s" msgstr "" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:465 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:468 msgid "Connect" msgstr "" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -4862,13 +5022,13 @@ msgid "" msgstr "" #. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set. -#: lib/action.php:820 +#: lib/action.php:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -4877,54 +5037,54 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -4932,11 +5092,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -4967,64 +5127,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:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5154,11 +5314,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 "" @@ -5174,44 +5334,53 @@ msgstr "" msgid "Command failed" msgstr "" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." msgstr "" -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" +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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" +msgid "Could not find a local user with nickname %s." msgstr "" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" +msgid "Nudge sent to %s." msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5219,55 +5388,53 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "" -#: lib/command.php:323 -msgid "You are already a member of that group" +#. 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. +#: lib/command.php:360 +#, php-format +msgid "%1$s joined group %2$s." msgstr "" -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 +#: lib/command.php:408 #, 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" +msgid "%1$s left group %2$s." msgstr "" #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, 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:263 +#: lib/command.php:438 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:442 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 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5276,142 +5443,167 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" +msgid "Notice from %s repeated." msgstr "" -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "" -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" +msgid "Reply to %s sent." msgstr "" -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" +msgid "Subscribed to %s." msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "" -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" +msgid "Unsubscribed from %s." msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "" -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "" -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "" -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" +msgid "Unsubscribed %s." msgstr "" -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "" -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "" msgstr[1] "" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "" -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "" msgstr[1] "" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "" -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "" msgstr[1] "" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5732,8 +5924,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" @@ -5749,19 +5948,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" @@ -5775,30 +5974,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 " @@ -5815,13 +6014,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" @@ -5841,13 +6040,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" @@ -5869,7 +6068,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" @@ -5877,13 +6076,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" @@ -5920,7 +6119,7 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "" @@ -5975,24 +6174,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 "" @@ -6005,11 +6204,11 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "" @@ -6018,79 +6217,83 @@ msgstr "" msgid "Send a notice" msgstr "" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "" @@ -6163,7 +6366,7 @@ msgstr "" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "" @@ -6200,7 +6403,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6224,7 +6427,7 @@ msgstr "" msgid "Popular" msgstr "" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "" @@ -6245,7 +6448,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 "" @@ -6343,6 +6546,52 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "" + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6371,11 +6620,6 @@ msgstr "" 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 "" @@ -6423,56 +6667,56 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "" @@ -6485,8 +6729,3 @@ msgstr "" #, 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/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po index 1e6065dc53..ceb7de7362 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:49+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:26+0000\n" "Language-Team: Swedish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +86,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +125,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:114 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 +167,83 @@ 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 +#: 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 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)." +"Var den första att [skriva i detta ämne](%%%%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 "" -"Varför inte [registrera ett konto](%%%%action.register%%%%) och sedan knuffa " -"%s eller skriva en notis för hans eller hennes uppmärksamhet." +"Varför inte [registrera ett konto](%%action.register%%) och bli först att " +"posta en!" #. 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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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:131 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,47 +322,48 @@ msgstr "Direktmeddelande till %s" msgid "All the direct messages sent to %s" msgstr "Alla direktmeddelanden skickade till %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "Ingen meddelandetext!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Detta är för lÃ¥ngt. Maximal meddelandestorlek är %d tecken." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Mottagare hittades inte." -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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." -msgstr "Kunde inte följa användare: användare hittades inte." +msgid "Could not follow user: profile not found." +msgstr "Kunde inte sluta följa användaren: användaren hittades inte." #: actions/apifriendshipscreate.php:118 #, php-format @@ -376,9 +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." -msgstr "TvÃ¥ användar-ID:n eller screen_names mÃ¥ste tillhandahÃ¥llas." +#: 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." @@ -388,120 +390,127 @@ 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)." +msgstr "Beskrivning är för lÃ¥ng (max %d 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 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 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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" @@ -516,15 +525,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 +597,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:463 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 +610,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 +627,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." @@ -631,67 +640,73 @@ msgstr "Du kan inte ta bort en annan användares status." msgid "No such notice." msgstr "Ingen sÃ¥dan notis." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Kan inte upprepa din egen notis." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: 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:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Hittades inte." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 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:112 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 +721,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 +788,7 @@ msgid "Preview" msgstr "Förhandsgranska" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Ta bort" @@ -809,11 +828,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 +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" @@ -837,7 +856,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 +865,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,14 +873,16 @@ 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." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -871,8 +892,8 @@ msgstr "Misslyckades att spara blockeringsinformation." #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Ingen sÃ¥dan grupp." @@ -986,7 +1007,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:1307 msgid "There was a problem with your session token." msgstr "Det var ett problem med din sessions-token." @@ -1020,7 +1041,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 +1072,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Ta bort denna notis" @@ -1091,45 +1112,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 +1168,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 +1236,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 +1350,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 +1508,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 +1736,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 +1882,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" @@ -2124,7 +2162,7 @@ msgstr "Du prenumererar redan pÃ¥ dessa användare:" #. 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2249,9 +2287,7 @@ msgstr "Du mÃ¥ste vara inloggad för att kunna gÃ¥ med i en grupp." msgid "No nickname or ID." msgstr "Inget smeknamn eller 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s gick med i grupp %2$s" @@ -2260,50 +2296,49 @@ msgstr "%1$s gick med i grupp %2$s" msgid "You must be logged in to leave a group." msgstr "Du mÃ¥ste vara inloggad för att lämna en grupp." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 msgid "You are not a member of that group." msgstr "Du är inte en medlem i den gruppen." -#. 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2346,17 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Logga in med ditt användarnamn och lösenord. Har du inget användarnamn ännu? " -"[Registrera](%%action.register%%) ett nytt konto." +"Har du inte ett användarnamn ännu? [Registrera](%%action.register%%) ett " +"nytt konto." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2375,12 +2413,15 @@ msgstr "Använd detta formulär för att skapa en ny grupp." msgid "New message" msgstr "Nytt meddelande" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." msgstr "Du kan inte skicka ett meddelande till den användaren." -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Inget innehÃ¥ll!" @@ -2388,7 +2429,8 @@ msgstr "Inget innehÃ¥ll!" msgid "No recipient specified." msgstr "Ingen mottagare angiven." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2399,12 +2441,14 @@ msgstr "" msgid "Message sent" msgstr "Meddelande skickat" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "Direktmeddelande till %s skickat." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "AJAX-fel" @@ -2412,7 +2456,7 @@ msgstr "AJAX-fel" msgid "New notice" msgstr "Ny notis" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Notis postad" @@ -2464,10 +2508,8 @@ msgstr "Uppdateringar som matchar söksträngen \"%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 "" -"Denna användare har inte tillÃ¥tit knuffar eller har inte bekräftat eller " -"angett sitt e-post än." #: actions/nudge.php:94 msgid "Nudge sent" @@ -2520,30 +2562,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Ett dataformat som inte stödjs" @@ -2646,7 +2688,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" @@ -2658,11 +2700,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." @@ -2683,7 +2725,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" @@ -2887,43 +2929,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\"" @@ -2967,7 +3009,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)." @@ -3229,7 +3271,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" @@ -3237,39 +3279,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:507 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. " @@ -3277,37 +3319,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "" +"Jag förstÃ¥r att innehÃ¥ll och data av %1$s är privata och konfidentiella." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +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:532 +msgid "My text and files remain under my own copyright." +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:535 +msgid "All rights reserved." +msgstr "Alla rättigheter reserverade." + +#. 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, " @@ -3316,7 +3381,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:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3349,7 +3414,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:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3432,7 +3497,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:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Upprepad" @@ -3470,10 +3535,8 @@ msgstr "Flöde med svar för %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." -msgstr "" -"Detta är tidslinjen som visar svar till %s1$ men %2$s har inte tagit emot en " -"notis för dennes uppmärksamhet än." +"notice to them yet." +msgstr "Detta är tidslinjen för %1$s men %2$s har inte postat nÃ¥got än." #: actions/replies.php:204 #, php-format @@ -3487,11 +3550,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 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)." +"Var den första att [skriva i detta ämne](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/repliesrss.php:72 #, php-format @@ -3506,7 +3569,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" @@ -3520,7 +3583,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" @@ -3563,7 +3626,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" @@ -3574,12 +3637,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" @@ -3667,25 +3730,15 @@ msgstr "" "bredvid nÃ¥gon notis du skulle vilja bokmärka för senare tillfälle eller för " "att sätta strÃ¥lkastarljuset pÃ¥." -#: actions/showfavorites.php:208 -#, php-format -msgid "" -"%s hasn't added any notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" -msgstr "" -"%s har inte lagt till nÃ¥gra notiser till sina favoriter ännu. Posta nÃ¥got " -"intressant de skulle lägga till sina favoriter :)" - #: actions/showfavorites.php: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 inte lagt till nÃ¥gra notiser till sina favoriter ännu. Varför inte " -"[registrera ett konto](%%%%action.register%%%%) och posta nÃ¥got intressant " -"de skulle lägga till sina favoriter :)" +"Varför inte [registrera ett konto](%%action.register%%) och vara först med " +"att lägga en notis till dina favoriter!" #: actions/showfavorites.php:243 msgid "This is a way to share what you like." @@ -3743,7 +3796,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" @@ -3757,11 +3810,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." @@ -3776,7 +3829,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." @@ -3789,7 +3842,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" @@ -3866,11 +3919,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 kan prova att knuffa %1$s eller [posta nÃ¥got för hans eller hennes " -"uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%2$s)." +"Var den första att [skriva i detta ämne](%%%%action.newnotice%%%%?" +"status_textarea=%s)!" #: actions/showstream.php:243 #, php-format @@ -4193,7 +4246,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" @@ -4253,7 +4306,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." @@ -4432,10 +4486,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." @@ -4549,7 +4599,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" @@ -4678,18 +4728,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, " @@ -4698,11 +4748,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 " @@ -4714,7 +4764,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 " @@ -4726,7 +4776,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 " @@ -4735,93 +4785,133 @@ 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:805 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 #, 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: 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4829,71 +4919,107 @@ 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Problem med att spara notis." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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 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." -msgstr "Kunde inte ta bort själv-prenumeration." +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Kunde inte spara prenumeration." -#: classes/Subscription.php:200 -msgid "Couldn't delete subscription OMB token." -msgstr "Kunde inte radera OMB prenumerations-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 "Kunde inte spara prenumeration." -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Kunde inte ta bort prenumeration." +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Kunde inte spara 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." @@ -4933,199 +5059,199 @@ msgid "Other" msgstr "Övrigt" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 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:449 msgid "Primary site navigation" msgstr "Primär webbplatsnavigation" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "Personligt" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "Anslut" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Administratör" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "Bjud in" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Logga ut" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "Registrera" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Logga in pÃ¥ webbplatsen" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Logga in" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Hjälp mig!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Hjälp" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Sök efter personer eller text" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 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:675 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:778 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:784 msgid "Help" msgstr "Hjälp" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Om" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FrÃ¥gor & svar" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "Användarvillkor" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Sekretess" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 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:808 msgid "Contact" msgstr "Kontakt" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Emblem" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5135,13 +5261,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5153,55 +5279,55 @@ msgstr "" "fsf.org/licensing/licenses/agpl-3.0.html)." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Tidigare" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "Förväntade ett flödes rotelement, men fick ett helt XML-dokument." @@ -5209,11 +5335,11 @@ msgstr "Förväntade ett flödes rotelement, men fick ett helt XML-dokument." msgid "Can't handle remote content yet." msgstr "Kan inte hantera fjärrinnehÃ¥ll ännu." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Kan inte hantera inbäddat XML-innehÃ¥ll ännu." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Kan inte hantera inbäddat Base64-innehÃ¥ll ännu." @@ -5244,64 +5370,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:95 +#: 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." @@ -5433,11 +5559,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" @@ -5453,44 +5579,21 @@ msgstr "Kommando komplett" msgid "Command failed" msgstr "Kommando misslyckades" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Notis med den ID:n finns inte" - -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "Användare har ingen sista notis" - -#. 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 "Kunde inte hitta en användare med smeknamnet %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 -#, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Kunde inte hitta en lokal användare med smeknamnet %s" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Tyvärr, detta kommando är inte implementerat än." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 msgid "It does not make a lot of sense to nudge yourself!" msgstr "Det verkar inte vara särskilt meningsfullt att knuffa dig själv!" -#. 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 "Knuff skickad till %s" - -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5501,55 +5604,39 @@ msgstr "" "Prenumeranter: %2$s\n" "Notiser: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "Notis markerad som favorit." -#: lib/command.php:323 -msgid "You are already a member of that group" -msgstr "Du är redan en medlem i denna grupp" - -#. 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 "Kunde inte ansluta användare %1$s till grupp %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 "Kunde inte ta bort användare %1$s frÃ¥n grupp %2$s." - #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Hemsida: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Om: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5560,143 +5647,125 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "Meddelande för lÃ¥ngt - maximum är %1$d tecken, du skickade %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "Meddelande för lÃ¥ngt - maximum är %1$d tecken, du skickade %2$d." -#. 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 "Direktmeddelande till %s skickat" - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "Fel vid sändning av direktmeddelande." -#: lib/command.php:514 -msgid "Cannot repeat your own notice" -msgstr "Kan inte upprepa din egen notis" - -#: lib/command.php:519 -msgid "Already repeated that notice" -msgstr "Redan upprepat denna notis" - -#. 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 "Notis fron %s upprepad" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Fel vid upprepning av notis." -#: lib/command.php:562 -#, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Notis för lÃ¥ngt - maximum är %d tecken, du skickade %d" - -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "Svar pÃ¥ %s skickat" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Fel vid sparande av notis." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Ange namnet pÃ¥ användaren att prenumerara pÃ¥" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Kan inte prenumera pÃ¥ OMB-profiler via kommando." -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "Prenumerar pÃ¥ %s" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Ange namnet pÃ¥ användaren att avsluta prenumeration pÃ¥" - -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "Prenumeration hos %s avslutad" - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Kommando inte implementerat än." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Notifikation av." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Kan inte sätta pÃ¥ notifikation." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Notifikation pÃ¥." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Kan inte stänga av notifikation." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Inloggningskommando är inaktiverat" - -#: lib/command.php:734 -#, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -"Denna länk är endast användbar en gÃ¥ng, och gäller bara i 2 minuter: %s" -#: lib/command.php:761 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "Unsubscribed %s" -msgstr "Prenumeration avslutad %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Du prenumererar inte pÃ¥ nÃ¥gon." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Du prenumererar pÃ¥ denna person:" msgstr[1] "Du prenumererar pÃ¥ dessa personer:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "Ingen prenumerar pÃ¥ dig." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Denna person prenumererar pÃ¥ dig:" msgstr[1] "Dessa personer prenumererar pÃ¥ dig:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Du är inte medlem i nÃ¥gra grupper." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Du är en medlem i denna grupp:" msgstr[1] "Du är en medlem i dessa grupper:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -6069,8 +6138,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" @@ -6096,19 +6175,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" @@ -6130,30 +6209,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 " @@ -6181,13 +6260,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" @@ -6221,13 +6300,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" @@ -6265,7 +6344,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" @@ -6276,13 +6355,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" @@ -6344,7 +6423,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:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "frÃ¥n" @@ -6403,24 +6482,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." @@ -6433,11 +6512,11 @@ msgstr "Skicka en direktnotis" msgid "To" msgstr "Till" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "Tillgängliga tecken" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Skicka" @@ -6446,28 +6525,28 @@ msgstr "Skicka" msgid "Send a notice" msgstr "Skicka en notis" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Vad är pÃ¥ gÃ¥ng, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "Bifoga" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "Bifoga en fil" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Dela min plats" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Dela inte min plats" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6476,51 +6555,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "" + +#: lib/noticelist.php:568 msgid "in context" msgstr "i sammanhang" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Upprepad av" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "Svara pÃ¥ denna notis" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "Svara" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Notis upprepad" @@ -6593,7 +6676,7 @@ msgstr "Dina skickade meddelanden" msgid "Tags in %s's notices" msgstr "Taggar i %ss notiser" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Okänd" @@ -6630,7 +6713,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." @@ -6654,7 +6737,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." @@ -6675,7 +6758,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." @@ -6773,6 +6856,55 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Kunde inte spara tema." + +#: lib/themeuploader.php:147 +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:218 +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:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, 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:259 +msgid "Error opening theme archive." +msgstr "Fel vid öppning temaarkiv." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Toppostare" @@ -6801,11 +6933,6 @@ msgstr "Avsluta prenumerationen pÃ¥ denna användare" msgid "Unsubscribe" msgstr "Avsluta pren." -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "Användare %s (%d) har inga profiluppgifter." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Redigera avatar" @@ -6853,56 +6980,56 @@ msgid "Moderator" msgstr "Moderator" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "för ett Ã¥r sedan" @@ -6915,8 +7042,3 @@ msgstr "%s är inte en giltig färg!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s är inte en giltig färg! Använd 3 eller 6 hexadecimala tecken." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "Meddelande för lÃ¥ngt - maximum är %1$d tecken, du skickade %2$d." diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po index b591d2fc01..e1390e1140 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:52+0000\n" +"POT-Creation-Date: 2010-09-09 17:35+0000\n" +"PO-Revision-Date: 2010-09-09 17:38:05+0000\n" "Language-Team: Telugu\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +84,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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,124 +123,78 @@ 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:114 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 " "something yourself." 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 -msgid "" -"You can try to [nudge %1$s](../%2$s) from his profile or [post something to " -"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)." -msgstr "" - -#: actions/all.php:145 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." -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:120 -#: 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 "%2$sలో %1$s మరియౠసà±à°¨à±‡à°¹à°¿à°¤à±à°² à°¨à±à°‚à°¡à°¿ తాజాకరణలà±!" -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 -#: 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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -250,14 +205,9 @@ msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨ msgid "User has no profile." msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "à°ªà±à°°à±Šà°«à±ˆà°²à±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°²à±‡à°•à±à°¨à±à°¨à°¾à°‚." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -277,12 +227,6 @@ msgstr "" msgid "Unable to save your design settings." msgstr "మీ రూపà±à°°à±‡à°–à°² అమరికలని à°­à°¦à±à°°à°ªà°°à°šà°²à±‡à°•à±à°¨à±à°¨à°¾à°‚." -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." - #: actions/apiblockcreate.php:105 msgid "You cannot block yourself!" msgstr "మిమà±à°®à°²à±à°¨à°¿ మీరే నిరోధించà±à°•à±‹à°²à±‡à°°à±!" @@ -291,10 +235,6 @@ msgstr "మిమà±à°®à°²à±à°¨à°¿ మీరే నిరోధించà±à°• msgid "Block user failed." msgstr "వాడà±à°•à°°à°¿ నిరోధం విఫలమైంది." -#: actions/apiblockdestroy.php:114 -msgid "Unblock user failed." -msgstr "" - #: actions/apidirectmessage.php:89 #, php-format msgid "Direct messages from %s" @@ -315,47 +255,48 @@ msgstr "%s à°•à°¿ నేరౠసందేశాలà±" msgid "All the direct messages sent to %s" msgstr "%sà°•à°¿ పంపిన à°…à°¨à±à°¨à°¿ నేరౠసందేశాలà±" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "సందేశపౠపాఠà±à°¯à°‚ లేదà±!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "చాలా పొడవà±à°‚ది. à°—à°°à°¿à°·à±à°  సందేశ పరిమాణం %d à°…à°•à±à°·à°°à°¾à°²à±." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "à°…à°‚à°¦à±à°•à±‹à°µà°¾à°²à±à°¸à°¿à°¨ వాడà±à°•à°°à°¿ కనబడలేదà±." -#: actions/apidirectmessagenew.php:150 +#: 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 "" +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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 "వాడà±à°•à°°à°¿à°¨à°¿ à°…à°¨à±à°¸à°°à°¿à°‚చలేకపోయాం: %s ఇపà±à°ªà°Ÿà°¿à°•à±‡ మీ జాబితాలో ఉనà±à°¨à°¾à°°à±." #: actions/apifriendshipscreate.php:118 #, php-format @@ -363,164 +304,172 @@ msgid "Could not follow user: %s is already on your list." msgstr "వాడà±à°•à°°à°¿à°¨à°¿ à°…à°¨à±à°¸à°°à°¿à°‚చలేకపోయాం: %s ఇపà±à°ªà°Ÿà°¿à°•à±‡ మీ జాబితాలో ఉనà±à°¨à°¾à°°à±." #: actions/apifriendshipsdestroy.php:109 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "ఓపెనà±à°à°¡à±€ ఫారమà±à°¨à± సృషà±à°Ÿà°¿à°‚చలేకపోయాం: %s" +msgstr "వాడà±à°•à°°à°¿à°¨à°¿ à°…à°¨à±à°¸à°°à°¿à°‚చలేకపోయాం: %s ఇపà±à°ªà°Ÿà°¿à°•à±‡ మీ జాబితాలో ఉనà±à°¨à°¾à°°à±." #: actions/apifriendshipsdestroy.php:120 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 -#, fuzzy msgid "Could not determine source user." -msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." +msgstr "లకà±à°·à±à°¯à°¿à°¤ వాడà±à°•à°°à°¿à°¨à°¿ à°•à°¨à±à°—ొనలేకపోయాం." #: actions/apifriendshipsshow.php:142 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† à°—à±à°‚à°ªà±à°²à±‹ సభà±à°¯à±à°²à±." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à± à°† à°—à±à°‚పౠనà±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిరోధించారà±." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +msgid "Upload failed." +msgstr "à°Žà°•à±à°•à°¿à°‚పౠవిఫలమైంది." + #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" #: 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 @@ -533,14 +482,8 @@ msgid "Invalid nickname / password!" msgstr "తపà±à°ªà±à°¡à± పేరౠ/ సంకేతపదం!" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±" - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±" +msgstr "à°ˆ ఉపకరణానà±à°¨à°¿ తొలగించకà±" #: actions/apioauthauthorize.php:214 #, php-format @@ -583,12 +526,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:463 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 +539,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 +556,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 "ఇతర వాడà±à°•à°°à±à°² à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ మీరౠతొలగించలేరà±." @@ -626,90 +569,81 @@ msgstr "ఇతర వాడà±à°•à°°à±à°² à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ మీరౠmsgid "No such notice." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ సందేశమేమీ లేదà±." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "మీ నోటీసà±à°¨à°¿ మీరే à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చలేరà±." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "అది చాలా పొడవà±à°‚ది. à°—à°°à°¿à°·à±à°  నోటీసౠపరిమాణం %d à°…à°•à±à°·à°°à°¾à°²à±." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "కనబడలేదà±." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, php-format -msgid "%1$s / Favorites from %2$s" -msgstr "" - -#: actions/apitimelinefavorites.php:118 -#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s బహిరంగ కాలరేఖ" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "అందరి à°¨à±à°‚à°¡à°¿ %s తాజాకరణలà±!" #: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format +#, php-format msgid "Repeated to %s" -msgstr "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" +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:107 actions/tagrss.php:65 #, php-format -msgid "Notices tagged with %s" -msgstr "" - -#: actions/apitimelinetag.php:106 actions/tagrss.php:65 -#, fuzzy, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "%s యొకà±à°• మైకà±à°°à±‹à°¬à±à°²à°¾à°—à±" +msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" #: actions/attachment.php:73 msgid "No such attachment." @@ -719,9 +653,8 @@ msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ జోడింపౠలేదà±." #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 #: actions/grouplogo.php:86 actions/groupmembers.php:76 #: actions/grouprss.php:91 actions/showgroup.php:121 -#, fuzzy msgid "No nickname." -msgstr "పేరౠలేదà±." +msgstr "పేరà±" #: actions/avatarbynickname.php:64 msgid "No size." @@ -742,13 +675,6 @@ msgstr "అవతారం" msgid "You can upload your personal avatar. The maximum file size is %s." msgstr "మీ à°µà±à°¯à°•à±à°¤à°¿à°—à°¤ అవతారానà±à°¨à°¿ మీరౠఎకà±à°•à°¿à°‚చవచà±à°šà±. à°—à°°à°¿à°·à±à°  ఫైలౠపరిమాణం %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 -#, fuzzy -msgid "User without matching profile." -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." - #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 msgid "Avatar settings" @@ -765,7 +691,7 @@ msgid "Preview" msgstr "à°®à±à°¨à±à°œà±‚à°ªà±" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "తొలగించà±" @@ -778,18 +704,13 @@ 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" msgstr "మీ అవతారానికి గానూ à°ˆ à°šà°¿à°¤à±à°°à°‚ à°¨à±à°‚à°¡à°¿ à°’à°• à°šà°¤à±à°°à°¸à±à°°à°ªà± à°ªà±à°°à°¦à±‡à°¶à°¾à°¨à±à°¨à°¿ à°Žà°‚à°šà±à°•à±‹à°‚à°¡à°¿" -#: actions/avatarsettings.php:347 actions/grouplogo.php:380 -msgid "Lost our file data." -msgstr "" - #: actions/avatarsettings.php:370 msgid "Avatar updated." msgstr "అవతారానà±à°¨à°¿ తాజాకరించాం." @@ -806,11 +727,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 " @@ -824,17 +745,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 "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించకà±" @@ -843,7 +763,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" @@ -851,14 +771,16 @@ 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 "నిరోధపౠసమాచారానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో విఫలమయà±à°¯à°¾à°‚." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -868,44 +790,42 @@ msgstr "నిరోధపౠసమాచారానà±à°¨à°¿ à°­à°¦à±à°°à°ª #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ à°—à±à°‚పౠలేదà±." #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." +msgstr "%s నిరోధిత వాడà±à°•à°°à±à°²à±" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s మరియౠమితà±à°°à±à°²à±" +msgstr "%1$s మరియౠమితà±à°°à±à°²à±, పేజీ %2$d" #: 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 "" +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 +#, php-format msgid "Post to %s" -msgstr "%s పై à°—à±à°‚à°ªà±à°²à±" +msgstr "%sà°•à°¿ టపాచెయà±à°¯à°¿" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -984,7 +904,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:1307 msgid "There was a problem with your session token." msgstr "" @@ -1017,7 +937,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 "లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చలేదà±." @@ -1046,7 +966,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "à°ˆ నోటీసà±à°¨à°¿ తొలగించà±" @@ -1086,45 +1006,49 @@ 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: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" @@ -1132,57 +1056,49 @@ 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 "" +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 "" +msgstr "ఆఫà±" -#: actions/designadminpanel.php:477 lib/designsettings.php:156 -msgid "Turn background image on or off." -msgstr "" - -#: actions/designadminpanel.php:482 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 -msgid "Restore default designs" -msgstr "" - -#: actions/designadminpanel.php:587 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 @@ -1192,7 +1108,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 "రూపà±à°°à±‡à°–లని à°­à°¦à±à°°à°ªà°°à°šà±" @@ -1205,9 +1121,9 @@ msgid "Add to favorites" msgstr "ఇషà±à°Ÿà°¾à°‚శాలకౠచేరà±à°šà±" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ పతà±à°°à°®à±‡à°®à±€ లేదà±." +msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ జోడింపౠలేదà±." #: actions/editapplication.php:54 msgid "Edit Application" @@ -1246,11 +1162,6 @@ msgstr "వివరణ తపà±à°ªà°¨à°¿à°¸à°°à°¿." msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "హోమౠపేజీ URL సరైనది కాదà±." - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "సంసà±à°¥ తపà±à°ªà°¨à°¿à°¸à°°à°¿." @@ -1259,10 +1170,6 @@ msgstr "సంసà±à°¥ తపà±à°ªà°¨à°¿à°¸à°°à°¿." msgid "Organization is too long (max 255 chars)." msgstr "సంసà±à°¥ పేరౠమరీ పెదà±à°¦à°—à°¾ ఉంది (255 à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." -#: actions/editapplication.php:209 actions/newapplication.php:194 -msgid "Organization homepage is required." -msgstr "" - #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." msgstr "" @@ -1272,9 +1179,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 @@ -1308,7 +1214,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 +1254,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 "తొలగించà±" @@ -1366,7 +1272,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 "à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿" @@ -1381,7 +1286,6 @@ 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 "చేరà±à°šà±" @@ -1392,18 +1296,6 @@ msgstr "చేరà±à°šà±" msgid "Incoming email" 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 "" - -#. 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 "" - #. 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 @@ -1421,11 +1313,6 @@ msgstr "ఈమెయిలౠఅభిరà±à°šà±à°²à±" msgid "Send me notices of new subscriptions through email." 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 "" - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:193 msgid "Send me email when someone sends me a private message." @@ -1446,11 +1333,6 @@ msgstr "" msgid "I want to post notices by email." msgstr "నేనౠఈమెయిలౠదà±à°µà°¾à°°à°¾ నోటీసà±à°²à± పంపాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°¨à±." -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:219 -msgid "Publish a MicroID for my email address." -msgstr "" - #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 msgid "Email preferences saved." @@ -1461,13 +1343,8 @@ msgstr "ఈమెయిలౠఅభిరà±à°šà±à°²à± à°­à°¦à±à°°à°®à°¯à± msgid "No email address." msgstr "ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾ లేదà±." -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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 "సరైన ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾ కాదà±:" @@ -1490,13 +1367,6 @@ msgstr "à°† ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾ ఇపà±à°ªà°Ÿà±‡à°• msgid "Couldn't insert confirmation code." msgstr "నిరà±à°§à°¾à°°à°£ సంకేతానà±à°¨à°¿ చేరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚." -#. 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 "" - #. 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. @@ -1526,35 +1396,10 @@ msgstr "అది మీ ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾ à°•à°¾ msgid "The email address was removed." msgstr "à°† ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾à°¨à°¿ తొలగించాం." -#: actions/emailsettings.php:493 actions/smssettings.php:568 -msgid "No incoming email address." -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 -msgid "Couldn't update user record." -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 "" - -#. 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 "" - #: actions/favor.php:79 msgid "This notice is already a favorite!" msgstr "à°ˆ నోటీసౠఇపà±à°ªà°Ÿà°¿à°•à±‡ మీ ఇషà±à°Ÿà°¾à°‚శం!" -#: actions/favor.php:92 lib/disfavorform.php:140 -msgid "Disfavor favorite" -msgstr "" - #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 msgid "Popular notices" @@ -1579,13 +1424,6 @@ msgid "" "next to any notice you like." msgstr "" -#: 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 "" - #: actions/favoritesrss.php:111 actions/showfavorites.php:77 #: lib/personalgroupnav.php:115 #, php-format @@ -1593,9 +1431,9 @@ msgid "%s's favorite notices" msgstr "%sà°•à°¿ ఇషà±à°Ÿà°®à±ˆà°¨ నోటీసà±à°²à±" #: actions/favoritesrss.php:115 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "%s యొకà±à°• మైకà±à°°à±‹à°¬à±à°²à°¾à°—à±" +msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1613,9 +1451,8 @@ msgid "A selection of some great users on %s" msgstr "%sలో కొందరౠగొపà±à°ª వాడà±à°•à°°à±à°² యొకà±à°• ఎంపిక" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "సందేశం లేదà±" +msgstr "సందేశం లేదà±." #: actions/file.php:38 msgid "No notice." @@ -1657,11 +1494,6 @@ msgstr "" msgid "Remote service uses unknown version of OMB protocol." msgstr "" -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "దూరపౠపà±à°°à±Šà°ªà±ˆà°²à±à°¨à°¿ తాజాకరించటంలో పొరపాటà±" - #: actions/getfile.php:79 msgid "No such file." msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ ఫైలౠలేదà±." @@ -1686,18 +1518,6 @@ msgstr "à°ˆ సైటà±à°²à±‹ మీరౠవాడà±à°•à°°à°²à°•à°¿ పా msgid "User already has this role." msgstr "వాడà±à°•à°°à°¿à°•à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ à°ˆ పాతà±à°° ఉంది." -#: actions/groupblock.php:71 actions/groupunblock.php:71 -#: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 -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 -msgid "No profile with that ID." -msgstr "" - #: actions/groupblock.php:81 actions/groupunblock.php:81 #: actions/makeadmin.php:81 msgid "No group specified." @@ -1739,12 +1559,7 @@ msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ à°ˆ à°—à±à°‚పౠనà±à°‚à°¡à°¿ à°¨ msgid "Block this user from this group" msgstr "à°ˆ à°—à±à°‚à°ªà±à°¨à±à°‚à°¡à°¿ à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించà±" -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" - #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." msgstr "à°à°¡à±€ లేదà±." @@ -1768,9 +1583,8 @@ msgid "Couldn't update your design." 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" @@ -1832,16 +1646,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 "%s కాలరేఖ" #. 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 "%2$sలో %1$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 @@ -1908,7 +1722,7 @@ msgstr "" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à± మాతà±à°°à°®à±‡ à°—à±à°‚పౠసభà±à°¯à±à°²à°ªà±ˆ నిరోధానà±à°¨à°¿ à°Žà°¤à±à°¤à°¿à°µà±‡à°¯à°—లరà±." #: actions/groupunblock.php:95 msgid "User is not blocked from group." @@ -1948,15 +1762,6 @@ msgstr "IM à°šà°¿à°°à±à°¨à°¾à°®à°¾" msgid "Current confirmed Jabber/GTalk address." msgstr "à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ నిరà±à°§à°¾à°°à°¿à°‚à°šà°¿à°¨ Jabber/GTalk à°šà°¿à°°à±à°¨à°¾à°®à°¾" -#. 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 @@ -1986,11 +1791,6 @@ msgstr "" 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." @@ -2001,11 +1801,6 @@ msgstr "à°…à°­à°¿à°°à±à°šà±à°²à± à°­à°¦à±à°°à°®à°¯à±à°¯à°¾à°¯à°¿." msgid "No Jabber ID." msgstr "Jabber ID లేదà±." -#. 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" @@ -2035,17 +1830,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "à°† IM à°šà°¿à°°à±à°¨à°¾à°®à°¾ సరైనది కాదà±." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "ఈమెయిలౠనిరà±à°§à°¾à°°à°£à°¨à°¿ తొలగించలేకà±à°¨à±à°¨à°¾à°‚." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "నిరà±à°§à°¾à°°à°£ à°°à°¦à±à°¦à°¯à°¿à°‚ది." +msgstr "IM నిరà±à°§à°¾à°°à°£ à°°à°¦à±à°¦à°¯à°¿à°‚ది." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2055,9 +1843,8 @@ msgstr "ఇది మీ Jabber ID కాదà±" #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "à°† à°šà°¿à°°à±à°¨à°¾à°®à°¾à°¨à°¿ తొలగించాం." +msgstr "à°† IM à°šà°¿à°°à±à°¨à°¾à°®à°¾à°¨à°¿ తొలగించాం." #: actions/inbox.php:59 #, php-format @@ -2101,7 +1888,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2120,6 +1907,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 "" @@ -2185,19 +1974,39 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" +"%2$s (%3$s) లో వారితో చేరమని %1$s మిమà±à°®à°²à±à°¨à°¿ ఆహà±à°µà°¾à°¨à°¿à°‚చారà±.\n" +"\n" +"%2$s అనేది మీకౠతెలిసిన మరియౠమీకౠఆసకà±à°¤à°¿ ఉనà±à°¨ à°µà±à°¯à°•à±à°¤à±à°²à°¤à±‹ à°Žà°ªà±à°ªà°Ÿà°¿à°•à°ªà±à°ªà±à°¡à± పరిచయంలో ఉండేదà±à°•à± " +"వీలà±à°•à°²à±à°ªà°¿à°‚చే à°’à°• సూకà±à°·à±à°®-à°¬à±à°²à°¾à°—ింగౠసేవ.\n" +"\n" +"మీరౠకూడా మీ à°—à±à°°à°¿à°‚à°šà°¿, మీ ఆలోచనల à°—à±à°°à°¿à°‚à°šà°¿ లేదా మీ జీవితం à°—à±à°°à°¿à°‚à°šà°¿à°¨ విశేషాలనౠమీకౠతెలిసిన వారితో " +"పంచà±à°•à±‹à°µà°šà±à°šà±. అలానే ఇది మీలాంటి ఆసకà±à°¤à±à°²à± కలిగిన కొతà±à°¤ à°µà±à°¯à°•à±à°¤à±à°²à°¨à°¿ à°•à°²à±à°¸à±à°•à±à°¨à±‡à°‚à°¦à±à°•à± గొపà±à°ª à°ªà±à°°à°¦à±‡à°¶à°‚.\n" +"\n" +"%1$s à°…à°¨à±à°¨à°¾à°°à±:\n" +"\n" +"%4$s\n" +"\n" +"%2$sలో %1$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 "Jabber 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s %2$s à°—à±à°‚à°ªà±à°²à±‹ చేరారà±" @@ -2206,64 +2015,64 @@ msgstr "%1$s %2$s à°—à±à°‚à°ªà±à°²à±‹ చేరారà±" msgid "You must be logged in to leave a group." msgstr "à°—à±à°‚à°ªà±à°¨à°¿ వదిలివెళà±à°³à°¡à°¾à°¨à°¿à°•à°¿ మీరౠపà±à°°à°µà±‡à°¶à°¿à°‚à°šà°¿ ఉండాలి." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." -msgstr "" -"మీ వాడà±à°•à°°à°¿à°ªà±‡à°°à± మరియౠసంకేతపదాలతో à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿. మీకౠఇంకా వాడà±à°•à°°à°¿à°ªà±‡à°°à± లేదా? కొతà±à°¤ ఖాతాని [నమోదà±à°šà±‡à°¸à±à°•à±‹à°‚à°¡à°¿]" -"(%%action.register%%)." +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "మీకౠఇంకా వాడà±à°•à°°à°¿à°ªà±‡à°°à± లేదా? కొతà±à°¤ ఖాతాని [నమోదà±à°šà±‡à°¸à±à°•à±‹à°‚à°¡à°¿](%%action.register%%)." #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." @@ -2275,9 +2084,9 @@ msgid "%1$s is already an admin for group \"%2$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 #, php-format @@ -2300,10 +2109,6 @@ msgstr "ఉపకరణాలని నమోదà±à°šà±‡à°¸à±à°•à±‹à°¡à°¾à°¨ 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 "ఉపకరణానà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం." @@ -2320,20 +2125,24 @@ msgstr "కొతà±à°¤ à°—à±à°‚à°ªà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚డాని msgid "New message" msgstr "కొతà±à°¤ సందేశం" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "విషయం లేదà±!" #: actions/newmessage.php:158 msgid "No recipient specified." -msgstr "" +msgstr "ఎవరికి పంపించాలో పేరà±à°•à±Šà°¨à°²à±‡à°¦à±." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "మీకౠమీరే సందేశానà±à°¨à°¿ పంపà±à°•à±‹à°•à°‚à°¡à°¿; దాని బదà±à°²à± మీలో మీరే మెలà±à°²à°—à°¾ చెపà±à°ªà±à°•à±‹à°‚à°¡à°¿." @@ -2342,12 +2151,14 @@ msgstr "మీకౠమీరే సందేశానà±à°¨à°¿ పంపà±à°• msgid "Message sent" msgstr "సందేశానà±à°¨à°¿ పంపించాం" -#: actions/newmessage.php:185 -#, fuzzy, php-format +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 +#, php-format msgid "Direct message to %s sent." -msgstr "%sà°•à°¿ నేరౠసందేశానà±à°¨à°¿ పంపించాం" +msgstr "%sà°•à°¿ నేరౠసందేశానà±à°¨à°¿ పంపించాం." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "అజాకà±à°¸à± పొరపాటà±" @@ -2355,10 +2166,9 @@ msgstr "అజాకà±à°¸à± పొరపాటà±" msgid "New notice" msgstr "కొతà±à°¤ సందేశం" -#: actions/newnotice.php:217 -#, fuzzy +#: actions/newnotice.php:227 msgid "Notice posted" -msgstr "సందేశాలà±" +msgstr "నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±" #: actions/noticesearch.php:68 #, php-format @@ -2384,6 +2194,7 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!" #: actions/noticesearch.php:124 #, php-format @@ -2395,26 +2206,18 @@ msgstr "" "newnotice%%%%?status_textarea=%s) మొదటివారౠఎందà±à°•à±à°•à°¾à°•à±‚à°¡à°¦à±!" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "%s యొకà±à°• మైకà±à°°à±‹à°¬à±à°²à°¾à°—à±" +msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "\"%s\"తో సరిపోలే à°…à°¨à±à°¨à°¿ తాజాకరణలà±" +msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." -msgstr "" - -#: actions/nudge.php:94 -msgid "Nudge sent" -msgstr "" - -#: actions/nudge.php:97 -msgid "Nudge sent!" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/oauthappssettings.php:59 @@ -2432,7 +2235,7 @@ msgstr "మీరౠనమోదౠచేసివà±à°¨à±à°¨ ఉపకరణ #: actions/oauthappssettings.php:135 #, php-format msgid "You have not registered any applications yet." -msgstr "" +msgstr "మీరౠఇంకా ఠఉపకరణానà±à°¨à±€ నమోదౠచేసà±à°•à±‹à°²à±‡à°¦à±." #: actions/oauthconnectionssettings.php:72 msgid "Connected applications" @@ -2440,7 +2243,7 @@ msgstr "సంధానిత ఉపకరణాలà±" #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." -msgstr "" +msgstr "మీ ఖాతాని à°ªà±à°°à°¾à°ªà°¿à°‚చడానికి మీరౠఈ à°•à±à°°à°¿à°‚ది ఉపకరణాలకి à°…à°¨à±à°®à°¤à°¿à°¨à°¿à°šà±à°šà°¾à°°à±." #: actions/oauthconnectionssettings.php:175 msgid "You are not a user of that application." @@ -2453,37 +2256,36 @@ msgstr "" #: 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 "%2$sలో %1$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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "" @@ -2516,51 +2318,20 @@ msgid "Automatic shortening service to use." msgstr "ఉపయోగించాలà±à°¸à°¿à°¨ యాంతà±à°°à°¿à°• à°•à±à°¦à°¿à°‚పౠసేవ." #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -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 "URL à°•à±à°¦à°¿à°‚పౠసేవ మరీ పెదà±à°¦à°—à°¾ ఉంది (50 à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "కొతà±à°¤ సందేశం" +msgstr "à°—à±à°‚పౠà°à°®à±€ పేరà±à°•à±Šà°¨à°²à±‡à°¦à±." #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "కొతà±à°¤ సందేశం" - -#: actions/otp.php:90 -msgid "No login token requested." -msgstr "" - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "సందేశపౠవిషయం సరైనది కాదà±" - -#: actions/otp.php:104 -#, fuzzy -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 "" +msgstr "à°—à±à°‚పౠà°à°®à±€ పేరà±à°•à±Šà°¨à°²à±‡à°¦à±." #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." @@ -2591,7 +2362,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 "నిరà±à°¥à°¾à°°à°¿à°‚à°šà±" @@ -2603,11 +2374,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 "సంకేతపదాలౠసరిపోలలేదà±." @@ -2628,37 +2399,19 @@ 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 "" - #: actions/pathsadminpanel.php:157 -#, fuzzy, php-format +#, php-format msgid "Theme directory not readable: %s." -msgstr "హోమౠపేజీ URL సరైనది కాదà±." +msgstr "అలంకారం à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ లేదà±: %s." #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "హోమౠపేజీ URL సరైనది కాదà±." - -#: actions/pathsadminpanel.php:169 -#, fuzzy, php-format -msgid "Background directory not writable: %s." -msgstr "నేపథà±à°¯à°¾à°² సంచయం" - -#: actions/pathsadminpanel.php:177 -#, fuzzy, php-format -msgid "Locales directory not readable: %s." -msgstr "హోమౠపేజీ URL సరైనది కాదà±." - -#: actions/pathsadminpanel.php:183 -msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "అవతారాల సంచయం" #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 msgid "Site" @@ -2674,12 +2427,11 @@ 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" @@ -2705,10 +2457,6 @@ msgstr "అలంకారం" msgid "Theme server" msgstr "అలంకారాల సేవకి" -#: actions/pathsadminpanel.php:268 -msgid "Theme path" -msgstr "" - #: actions/pathsadminpanel.php:272 msgid "Theme directory" msgstr "అలంకార సంచయం" @@ -2721,11 +2469,6 @@ msgstr "అవతారాలà±" msgid "Avatar server" msgstr "అవతారాల సేవకి" -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "అవతారానà±à°¨à°¿ తాజాకరించాం." - #: actions/pathsadminpanel.php:292 msgid "Avatar directory" msgstr "అవతారాల సంచయం" @@ -2738,23 +2481,13 @@ msgstr "నేపథà±à°¯à°¾à°²à±" msgid "Background server" msgstr "నేపథà±à°¯à°¾à°² సేవకి" -#: actions/pathsadminpanel.php:309 -#, fuzzy -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 -#, fuzzy msgid "Never" -msgstr "వైదొలగà±" +msgstr "సేవకి" #: actions/pathsadminpanel.php:324 msgid "Sometimes" @@ -2773,19 +2506,13 @@ msgid "When to use SSL" msgstr "SSLని à°Žà°ªà±à°ªà±à°¡à± ఉపయోగించాలి" #: 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 "కొతà±à°¤ సందేశం" - #: actions/peoplesearch.php:52 #, php-format msgid "" @@ -2799,20 +2526,14 @@ msgstr "" msgid "People search" msgstr "à°µà±à°¯à°•à±à°¤à±à°² à°…à°¨à±à°µà±‡à°·à°£" -#: actions/peopletag.php:68 -#, fuzzy, php-format -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 "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "సందేశపౠవిషయం సరైనది కాదà±" +msgstr "తపà±à°ªà±à°¡à± దసà±à°¤à±à°°à°ªà±à°ªà±‡à°°à±.." #: actions/postnotice.php:101 #, php-format @@ -2838,43 +2559,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 "మీరౠఎకà±à°•à°¡ à°¨à±à°‚à°¡à°¿, \"నగరం, రాషà±à°Ÿà±à°°à°‚ (లేదా à°ªà±à°°à°¾à°‚తం), దేశం\"" @@ -2914,7 +2635,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 à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." @@ -2928,18 +2649,9 @@ msgid "Language is too long (max 50 chars)." msgstr "భాష మరీ పెదà±à°¦à°—à°¾ ఉంది (50 à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚)." #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "'%s' అనే హోమౠపేజీ సరైనదికాదà±" - -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "à°Ÿà±à°¯à°¾à°—à±à°²à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°²à±‡à°•à±à°¨à±à°¨à°¾à°‚." +msgstr "తపà±à°ªà±à°¡à± మారà±à°ªà±‡à°°à±: \"%s\"" #: actions/profilesettings.php:375 msgid "Couldn't save profile." @@ -2959,10 +2671,6 @@ msgstr "అమరికలౠభదà±à°°à°®à°¯à±à°¯à°¾à°¯à°¿." 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" @@ -2984,13 +2692,6 @@ msgstr "à°ªà±à°°à°œà°¾ వాహిని ఫీడౠ(RSS 2.0)" 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 "" @@ -3001,15 +2702,6 @@ msgid "" "Why not [register an account](%%action.register%%) and be the first to post!" msgstr "[ఖాతా నమోదౠచేసà±à°•à±à°¨à°¿](%%action.register%%) మొదటగా à°µà±à°°à°¾à°¸à±‡à°¦à°¿ మీరే à°Žà°‚à°¦à±à°•à± కాకూడదà±!" -#: 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 "" @@ -3021,9 +2713,8 @@ msgstr "" "ఆధారపడిన à°’à°• [మైకà±à°°à±‹-à°¬à±à°²à°¾à°—à°¿à°‚à°—à±](http://en.wikipedia.org/wiki/Micro-blogging) సేవ." #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "à°ªà±à°°à°œà°¾ వాహిని ఫీడà±" +msgstr "à°Ÿà±à°¯à°¾à°—ౠమేఘం" #: actions/publictagcloud.php:63 #, php-format @@ -3054,14 +2745,6 @@ msgstr "à°Ÿà±à°¯à°¾à°—ౠమేఘం" 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 "" @@ -3089,10 +2772,6 @@ msgstr "" 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 "à°®à±à°¦à±à°¦à±à°ªà±‡à°°à± లేదా ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾" @@ -3101,18 +2780,6 @@ msgstr "à°®à±à°¦à±à°¦à±à°ªà±‡à°°à± లేదా ఈమెయిలౠచి 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 "" @@ -3127,7 +2794,7 @@ msgstr "6 లేదా అంతకంటే à°Žà°•à±à°•à±à°µ à°…à°•à±à°·à°° #: actions/recoverpassword.php:243 msgid "Reset" -msgstr "" +msgstr "రీసెటà±" #: actions/recoverpassword.php:252 msgid "Enter a nickname or email address." @@ -3163,86 +2830,106 @@ msgstr "సంకేతపదం 6 లేదా అంతకంటే à°Žà°•à± msgid "Password and confirmation do not match." msgstr "సంకేతపదం మరియౠనిరà±à°§à°¾à°°à°£ సరిపోలేదà±." -#: actions/recoverpassword.php:388 actions/register.php:248 -msgid "Error setting user." -msgstr "" - #: 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 "నమోదౠవిజయవంతం" -#: actions/register.php:114 actions/register.php:507 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:494 -#, fuzzy, php-format +#: 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 " à°ˆ అంతరంగిక భోగటà±à°Ÿà°¾ తపà±à°ª: సంకేతపదం, ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾, IM à°šà°¿à°°à±à°¨à°¾à°®à°¾, మరియౠఫోనౠనంబరà±." +msgstr "" +"నా పాఠà±à°¯à°‚ మరియౠదసà±à°¤à±à°°à°¾à°²à± %s à°•à±à°°à°¿à°‚à°¦ లభà±à°¯à°‚, à°ˆ అంతరంగిక భోగటà±à°Ÿà°¾ తపà±à°ª: సంకేతపదం, ఈమెయిలౠచిరà±à°¨à°¾à°®à°¾, IM " +"à°šà°¿à°°à±à°¨à°¾à°®à°¾, మరియౠఫోనౠనంబరà±." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3273,7 +2960,7 @@ msgstr "" "\n" "నమోదà±à°šà±‡à°¸à±à°•à±à°¨à±à°¨à°‚à°¦à±à°•à± కృతజà±à°žà°¤à°²à± మరియౠఈ సేవని ఉపయోగిసà±à°¤à±‚ మీరౠఆనందిసà±à°¤à°¾à°°à°¨à°¿ మేం ఆశిసà±à°¤à±à°¨à±à°¨à°¾à°‚." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3294,12 +2981,11 @@ msgstr "" #: actions/remotesubscribe.php:112 msgid "Remote subscribe" -msgstr "" +msgstr "à°¸à±à°¦à±‚à°° చందా" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "చందాదారà±à°²à±" +msgstr "à°ˆ వాడà±à°•à°°à°¿à°•à°¿ చందాచేరà±" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3307,7 +2993,7 @@ msgstr "వాడà±à°•à°°à°¿ పేరà±" #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" -msgstr "" +msgstr "మీరౠఅనà±à°¸à°°à°¿à°‚చాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨ వాడà±à°•à°°à°¿ యొకà±à°• à°®à±à°¦à±à°¦à±à°ªà±‡à°°à±" #: actions/remotesubscribe.php:133 msgid "Profile URL" @@ -3332,7 +3018,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." @@ -3343,9 +3029,8 @@ 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." @@ -3355,16 +3040,6 @@ msgstr "మీ నోటీసà±à°¨à°¿ మీరే à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿ msgid "You already repeated that notice." msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±." -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy -msgid "Repeated" -msgstr "సృషà±à°Ÿà°¿à°¤à°‚" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "సృషà±à°Ÿà°¿à°¤à°‚" - #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 #, php-format @@ -3392,11 +3067,11 @@ msgid "Replies feed for %s (Atom)" msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(ఆటమà±)" #: actions/replies.php:199 -#, fuzzy, php-format +#, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." -msgstr "ఇది %s మరియౠమితà±à°°à±à°² కాలరేఖ కానీ ఇంకా ఎవరూ à°à°®à±€ రాయలేదà±." +"notice to them yet." +msgstr "ఇది %1$s యొకà±à°• కాలరేఖ కానీ %2$s ఇంకా à°à°®à±€ రాయలేదà±." #: actions/replies.php:204 #, php-format @@ -3407,61 +3082,31 @@ msgstr "" "మీరౠఇతర వాడà±à°•à°°à±à°²à°¤à±‹ సంభాషించవచà±à°šà±, మరింత మంది à°µà±à°¯à°•à±à°¤à±à°²à°•à± చందాచేరవచà±à°šà± లేదా [à°—à±à°‚à°ªà±à°²à°²à±‹ చేరవచà±à°šà±]" "(%%action.groups%%)." -#: 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)." -msgstr "" - #: actions/repliesrss.php:72 #, php-format msgid "Replies to %1$s on %2$s!" 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 msgid "StatusNet" msgstr "à°¸à±à°Ÿà±‡à°Ÿà°¸à±â€Œà°¨à±†à°Ÿà±" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±!" - -#: actions/sandbox.php:72 -#, fuzzy -msgid "User is already sandboxed." -msgstr "వాడà±à°•à°°à°¿à°¨à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ à°—à±à°‚à°ªà±à°¨à±à°‚à°¡à°¿ నిరోధించారà±." - -#. TRANS: Menu item for site administration -#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170 -#: lib/adminpanelaction.php:391 -msgid "Sessions" -msgstr "" - -#: actions/sessionsadminpanel.php:65 -#, fuzzy -msgid "Session settings for this StatusNet site." -msgstr "à°ˆ à°¸à±à°Ÿà±‡à°Ÿà°¸à±‌నెటౠసైటà±à°•à°¿ రూపà±à°°à±‡à°–à°² అమరికలà±." +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 "" @@ -3476,9 +3121,8 @@ msgid "Save site settings" msgstr "సైటౠఅమరికలనౠభదà±à°°à°ªà°°à°šà±" #: actions/showapplication.php:82 -#, fuzzy msgid "You must be logged in to view an application." -msgstr "à°—à±à°‚à°ªà±à°¨à°¿ వదిలివెళà±à°³à°¡à°¾à°¨à°¿à°•à°¿ మీరౠపà±à°°à°µà±‡à°¶à°¿à°‚à°šà°¿ ఉండాలి." +msgstr "ఉపకరణాలని చూడడానికి మీరౠతపà±à°ªà°¨à°¿à°¸à°°à°¿à°—à°¾ à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°¿ ఉండాలి." #: actions/showapplication.php:157 msgid "Application profile" @@ -3490,7 +3134,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 "పేరà±" @@ -3501,12 +3145,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 "గణాంకాలà±" @@ -3514,7 +3158,7 @@ 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" @@ -3544,40 +3188,26 @@ msgstr "" msgid "Access token URL" msgstr "" -#: actions/showapplication.php:283 -#, fuzzy -msgid "Authorize URL" -msgstr "రచయిత" - #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "మీరౠనిజంగానే à°ˆ నోటీసà±à°¨à°¿ తొలగించాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¾?" - #: actions/showfavorites.php:79 #, php-format msgid "%1$s's favorite notices, page %2$d" msgstr "%1$sà°•à°¿ ఇషà±à°Ÿà°®à±ˆà°¨ నోటీసà±à°²à±, పేజీ %2$d" -#: actions/showfavorites.php:132 -msgid "Could not retrieve favorite notices." -msgstr "" - #: actions/showfavorites.php:171 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "%s యొకà±à°• మితà±à°°à±à°² ఫీడà±" +msgstr "%s యొకà±à°• ఇషà±à°Ÿà°¾à°‚శాల ఫీడౠ(RSS 2.0)" #: actions/showfavorites.php:178 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "%s యొకà±à°• మితà±à°°à±à°² ఫీడà±" +msgstr "%s యొకà±à°• ఇషà±à°Ÿà°¾à°‚శాల ఫీడౠ(RSS 2.0)" #: actions/showfavorites.php:185 #, php-format @@ -3593,15 +3223,7 @@ 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 :)" -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 " +"%s hasn't added any favorite notices yet. Post something interesting they " "would add to their favorites :)" msgstr "" @@ -3642,26 +3264,26 @@ msgid "Group actions" msgstr "à°—à±à°‚పౠచరà±à°¯à°²à±" #: actions/showgroup.php:338 -#, fuzzy, php-format +#, 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 +#, 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 +#, php-format msgid "Notice feed for %s group (Atom)" -msgstr "%s యొకà±à°• సందేశమà±à°² ఫీడà±" +msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(ఆటమà±)" #: 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 msgid "Members" msgstr "సభà±à°¯à±à°²à±" @@ -3675,11 +3297,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." @@ -3688,17 +3310,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** అనేది [à°¸à±à°Ÿà±‡à°Ÿà°¸à±â€Œà°¨à±†à°Ÿà±](http://status.net/) అనే à°¸à±à°µà±‡à°šà±à°›à°¾ ఉపకరణ అధారిత [సూకà±à°·à±à°®-à°¬à±à°²à°¾à°—à°¿à°‚à°—à±]" +"(http://en.wikipedia.org/wiki/Micro-blogging) సేవ అయిన %%%%site.name%%%%లో à°’à°• " +"వాడà±à°•à°°à°¿ à°—à±à°‚à°ªà±.\n" +"దీని సభà±à°¯à±à°²à± వారి జీవితం మరియౠఆసకà±à°¤à±à°² à°—à±à°°à°¿à°‚à°šà°¿ à°šà°¿à°¨à±à°¨ సందేశాలని పంచà±à°•à±à°‚టారà±. à°ˆ à°—à±à°‚పౠమరియౠఇంకా " +"చాల వాటిలో భాగసà±à°¤à±à°²à°µà±à°µà°¡à°¾à°¨à°¿à°•à°¿ [ఇపà±à°ªà±à°¡à±‡ చేరండి](%%%%action.register%%%%)! ([మరింత చదవండి](%%%%" +"doc.help%%%%))" -#: actions/showgroup.php:469 -#, 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:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à±" @@ -3710,16 +3329,6 @@ msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ సందేశం లేదà±." 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 "నోటీసà±à°¨à°¿ తొలగించాం." @@ -3735,34 +3344,29 @@ msgid "%1$s, page %2$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 యొకà±à°• సందేశమà±à°² ఫీడà±" +msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(RSS 1.0)" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "%s యొకà±à°• సందేశమà±à°² ఫీడà±" +msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, 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 యొకà±à°• సందేశమà±à°² ఫీడà±" - -#: actions/showstream.php:148 #, php-format -msgid "FOAF for %s" -msgstr "" +msgid "Notice feed for %s (Atom)" +msgstr "%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 "" @@ -3771,44 +3375,11 @@ msgid "" 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)." -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 "%s యొకà±à°• à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°‚" -#: actions/silence.php:65 actions/unsilence.php:65 -msgid "You cannot silence users on this site." -msgstr "" - -#: actions/silence.php:72 -#, fuzzy -msgid "User is already silenced." -msgstr "వాడà±à°•à°°à°¿à°¨à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ à°—à±à°‚à°ªà±à°¨à±à°‚à°¡à°¿ నిరోధించారà±." - #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" msgstr "à°ˆ à°¸à±à°Ÿà±‡à°Ÿà°¸à±‌నెటౠసైటà±à°•à°¿ à°ªà±à°°à°¾à°§à°®à°¿à°• అమరికలà±" @@ -3884,7 +3455,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" @@ -3898,32 +3469,21 @@ msgstr "పాఠà±à°¯à°ªà± పరిమితి" 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 "" +msgstr "అదే విషయానà±à°¨à°¿ మళà±à°³à±€ టపా చేయడానికి వాడà±à°•à°°à±à°²à± à°Žà°‚à°¤ సమయం (à°•à±à°·à°£à°¾à°²à±à°²à±‹) వేచివà±à°‚డాలి." #: actions/sitenoticeadminpanel.php:56 msgid "Site Notice" msgstr "సైటౠగమనిక" -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "కొతà±à°¤ సందేశం" - #: actions/sitenoticeadminpanel.php:103 -#, fuzzy msgid "Unable to save site notice." -msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." +msgstr "సైటౠగమనికని à°­à°¦à±à°°à°ªà°°à°šà±" #: actions/sitenoticeadminpanel.php:113 -#, fuzzy msgid "Max length for the site-wide notice is 255 chars." -msgstr "సైటà±-వారీ నోటీసà±à°•à°¿ à°—à°°à°¿à°·à±à°  పొడవౠ255 à°…à°•à±à°·à°°à°¾à°²à±" +msgstr "సైటà±-వారీ నోటీసà±à°•à°¿ à°—à°°à°¿à°·à±à°  పొడవౠ255 à°…à°•à±à°·à°°à°¾à°²à±." #: actions/sitenoticeadminpanel.php:176 msgid "Site notice text" @@ -3942,29 +3502,15 @@ msgstr "సైటౠగమనికని à°­à°¦à±à°°à°ªà°°à°šà±" msgid "SMS settings" msgstr "SMS అమరికలà±" -#. 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 -#, fuzzy msgid "SMS is not available." -msgstr "హోమౠపేజీ URL సరైనది కాదà±." +msgstr "IM à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ లేదà±." #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM à°šà°¿à°°à±à°¨à°¾à°®à°¾" - -#. TRANS: Form guide in SMS settings form. -#: actions/smssettings.php:120 -msgid "Current confirmed SMS-enabled phone number." -msgstr "" +msgstr "SMS à°šà°¿à°°à±à°¨à°¾à°®à°¾" #. TRANS: Form guide in IM settings form. #: actions/smssettings.php:133 @@ -3987,16 +3533,6 @@ 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" @@ -4009,22 +3545,11 @@ msgid "" "from my carrier." msgstr "" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -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." @@ -4037,11 +3562,10 @@ msgstr "à°† ఫోనౠనంబరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ వేరే #. 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 "à°† నిరà±à°§à°¾à°°à°£à°¾ సంకేతం మీది కాదà±!" +msgstr "" #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4050,9 +3574,8 @@ msgstr "అది తపà±à°ªà±à°¡à± నిరà±à°§à°¾à°°à°£ సంఖà±à°¯ #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "నిరà±à°§à°¾à°°à°£ à°°à°¦à±à°¦à°¯à°¿à°‚ది." +msgstr "IM నిరà±à°§à°¾à°°à°£ à°°à°¦à±à°¦à°¯à°¿à°‚ది." #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4062,9 +3585,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 "à°† à°šà°¿à°°à±à°¨à°¾à°®à°¾à°¨à°¿ తొలగించాం." +msgstr "à°† IM à°šà°¿à°°à±à°¨à°¾à°®à°¾à°¨à°¿ తొలగించాం." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4085,34 +3607,20 @@ msgid "" "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:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "చందాలà±" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +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 "" @@ -4145,29 +3653,15 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "సైటౠఅమరికలనౠభదà±à°°à°ªà°°à°šà±" - -#: actions/subedit.php:70 -msgid "You are not subscribed to that profile." -msgstr "" - -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ ఫైలౠలేదà±." - #: actions/subscribe.php:117 msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." msgstr "" @@ -4213,6 +3707,8 @@ msgid "" "%s has no subscribers. Why not [register an account](%%%%action.register%%%" "%) and be the first?" msgstr "" +"%sà°•à°¿ చందాదారà±à°²à± ఎవరూ లేరà±. [à°’à°• ఖాతాని నమోదౠచేసà±à°•à±à°¨à°¿](%%%%action.register%%%%) మీరౠ" +"à°Žà°‚à°¦à±à°•à± మొదటి చందాదారౠకాకూడదà±?" #: actions/subscriptions.php:52 #, php-format @@ -4226,12 +3722,12 @@ 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 @@ -4257,34 +3753,28 @@ msgid "SMS" msgstr "" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "%s యొకà±à°• మైకà±à°°à±‹à°¬à±à°²à°¾à°—à±" +msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!" #: actions/tag.php:87 -#, fuzzy, php-format +#, 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 +#, 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 +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "%s యొకà±à°• సందేశమà±à°² ఫీడà±" +msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(ఆటమà±)" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ పతà±à°°à°®à±‡à°®à±€ లేదà±." - -#: actions/tagother.php:65 -#, php-format -msgid "Tag %s" -msgstr "" +msgstr "జోడింపà±à°²à± లేవà±." #: actions/tagother.php:77 lib/userprofile.php:76 msgid "User profile" @@ -4295,10 +3785,6 @@ msgstr "వాడà±à°•à°°à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à±" 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- " @@ -4314,41 +3800,21 @@ msgstr "" 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/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" - #: actions/unblock.php:59 msgid "You haven't blocked that user." msgstr "మీరౠఆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించలేదà±." #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." - -#: actions/unsubscribe.php:77 -#, fuzzy -msgid "No profile ID in request." -msgstr "అధీకరణ à°…à°­à±à°¯à°°à±à°¥à°¨ లేదà±!" +msgstr "వాడà±à°•à°°à°¿à°¨à°¿ à°—à±à°‚పౠనà±à°‚à°¡à°¿ నిరోధించలేదà±." #: actions/unsubscribe.php:98 -#, fuzzy msgid "Unsubscribed" -msgstr "చందాదారà±à°²à±" +msgstr "చందామానà±" #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format @@ -4372,7 +3838,7 @@ msgstr "" #: actions/useradminpanel.php:155 msgid "Invalid welcome text. Max length is 255 characters." -msgstr "" +msgstr "చెలà±à°²à°¨à°¿ à°¸à±à°µà°¾à°—à°¤ పాఠà±à°¯à°‚. à°—à°°à°¿à°·à±à°  పొడవౠ255 à°…à°•à±à°·à°°à°¾à°²à±." #: actions/useradminpanel.php:165 #, php-format @@ -4409,11 +3875,6 @@ msgstr "కొతà±à°¤ వాడà±à°•à°°à±à°²à°•à±ˆ à°¸à±à°µà°¾à°—à°¤ సం msgid "Default subscription" msgstr "à°…à°ªà±à°°à°®à±‡à°¯ చందా" -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "ఉపయోగించాలà±à°¸à°¿à°¨ యాంతà±à°°à°¿à°• à°•à±à°¦à°¿à°‚పౠసేవ." - #: actions/useradminpanel.php:251 msgid "Invitations" msgstr "ఆహà±à°µà°¾à°¨à°¾à°²à±" @@ -4437,7 +3898,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "లైసెనà±à°¸à±" @@ -4510,25 +3971,19 @@ 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 "'%s' అనే అవతారపౠURL తపà±à°ªà±" +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 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 "" @@ -4553,34 +4008,19 @@ msgstr "%s à° à°—à±à°‚పౠలోనూ సభà±à°¯à±à°²à± కాదà±." 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 -#, 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 -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 " @@ -4588,7 +4028,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 " @@ -4596,181 +4036,216 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy, 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 "" -#: 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 -msgid "Could not insert message." +#. 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 "" -#: classes/Message.php:71 -msgid "Could not update message with new URI." -msgstr "" - -#. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format -msgid "Database error inserting hashtag: %s" -msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±" - -#: classes/Notice.php:245 -#, fuzzy +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 msgid "Problem saving notice. Too long." -msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." +msgstr "నోటీసà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±. చాలా పొడవà±à°—à°¾ ఉంది." -#: classes/Notice.php:249 -#, fuzzy +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 msgid "Problem saving notice. Unknown user." -msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." +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:276 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." -msgstr "" +msgstr "చాలా à°Žà°•à±à°•à±à°µ నోటీసà±à°²à± à°…à°‚à°¤ వేగంగా; కాసà±à°¤ ఊపిరి తీసà±à°•à±à°¨à°¿ మళà±à°³à±€ కొనà±à°¨à°¿ నిమిషాల తరà±à°µà°¾à°¤ à°µà±à°°à°¾à°¯à°‚à°¡à°¿." -#: classes/Notice.php:260 -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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%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 tag cannot be saved. +#: classes/Status_network.php:339 +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 -#, fuzzy -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 "కొతà±à°¤ చందాని చేరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't 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 "కొతà±à°¤ చందాని చేరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚." -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't 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 "కొతà±à°¤ చందాని చేరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚." -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 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 -#, fuzzy +#. 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 "" +msgstr "à°¸à±à°¥à°¾à°¨à°¿à°• à°—à±à°‚à°ªà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:116 @@ -4789,9 +4264,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 @@ -4804,218 +4278,209 @@ msgid "Other" msgstr "ఇతర" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "శీరà±à°·à°¿à°•à°²à±‡à°¨à°¿ పేజీ" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" -msgstr "" +msgstr "à°ªà±à°°à°¾à°§à°®à°¿à°• సైటౠమారà±à°—దరà±à°¶à°¿à°¨à°¿" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "à°µà±à°¯à°•à±à°¤à°¿à°—à°¤" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "మీ ఈమెయిలà±, అవతారం, సంకేతపదం మరియౠపà±à°°à±Œà°«à±ˆà°³à±à°³à°¨à± మారà±à°šà±à°•à±‹à°‚à°¡à°¿" -#. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, 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:468 msgid "Connect" msgstr "à°…à°¨à±à°¸à°‚ధానించà±" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à±" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "à°ˆ ఫారానà±à°¨à°¿ ఉపయోగించి మీ à°¸à±à°¨à±‡à°¹à°¿à°¤à±à°²à°¨à± మరియౠసహోదà±à°¯à±‹à°—à±à°²à°¨à± à°ˆ సేవనౠవినియోగించà±à°•à±‹à°®à°¨à°¿ ఆహà±à°µà°¾à°¨à°¿à°‚à°šà°‚à°¡à°¿." +msgstr "%sలో తోడà±à°•à±ˆ మీ à°¸à±à°¨à±‡à°¹à°¿à°¤à±à°²à°¨à°¿ మరియౠసహోదà±à°¯à±‹à°—à±à°²à°¨à°¿ ఆహà±à°µà°¾à°¨à°¿à°‚à°šà°‚à°¡à°¿" #. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 +#: lib/action.php:481 msgctxt "MENU" msgid "Invite" msgstr "ఆహà±à°µà°¾à°¨à°¿à°‚à°šà±" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "నిషà±à°•à±à°°à°®à°¿à°‚à°šà±" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "నమోదà±" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "సైటౠలోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà±" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "సహాయం కావాలి!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "సహాయం" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "à°ªà±à°°à°œà°²à± లేదా పాఠà±à°¯à°‚ కొరకౠవెతకండి" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "à°¸à±à°¥à°¾à°¨à°¿à°• వీకà±à°·à°£à°²à±" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "పేజీ గమనిక" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "చందాలà±" +msgstr "à°¦à±à°µà°¿à°¤à±€à°¯ సైటౠమారà±à°—దరà±à°¶à°¿à°¨à°¿" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "సహాయం" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "à°—à±à°°à°¿à°‚à°šà°¿" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "à°ªà±à°°à°¶à±à°¨à°²à±" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "సేవా నియమాలà±" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "అంతరంగికత" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "మూలమà±" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "సంపà±à°°à°¦à°¿à°‚à°šà±" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "బాడà±à°œà°¿" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5027,55 +4492,54 @@ msgstr "" "పై నడà±à°¸à±à°¤à±à°‚ది." #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, fuzzy +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "ఇంతకà±à°°à°¿à°¤à°‚" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5083,11 +4547,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5096,11 +4560,6 @@ msgstr "" 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." @@ -5111,76 +4570,60 @@ msgstr "" 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: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 -#, fuzzy +#: lib/adminpanelaction.php:374 msgid "Access configuration" -msgstr "SMS నిరà±à°§à°¾à°°à°£" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "SMS నిరà±à°§à°¾à°°à°£" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" msgstr "రూపకలà±à°ªà°¨ à°¸à±à°µà°°à±‚పణం" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "సైటౠగమనిక" +#: lib/adminpanelaction.php:382 +msgid "Paths configuration" +msgstr "వాడà±à°•à°°à°¿ à°¸à±à°µà°°à±‚పణం" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy +#: lib/adminpanelaction.php:398 +msgid "Edit site notice" +msgstr "సైటౠగమనికని à°­à°¦à±à°°à°ªà°°à°šà±" + +#. TRANS: Menu item title/tooltip +#: lib/adminpanelaction.php:406 msgid "Snapshots configuration" -msgstr "SMS నిరà±à°§à°¾à°°à°£" +msgstr "వాడà±à°•à°°à°¿ à°¸à±à°µà°°à±‚పణం" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" @@ -5210,12 +4653,6 @@ msgstr "మీ ఉపకరణానà±à°¨à°¿ వివరించండి" msgid "URL of the homepage of this application" msgstr "à°ˆ ఉపకరణం యొకà±à°• హోమà±‌పేజీ à°šà°¿à°°à±à°¨à°¾à°®à°¾" -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "మూలమà±" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 msgid "Organization responsible for this application" @@ -5223,9 +4660,8 @@ msgstr "à°ˆ ఉపకరణానికి బాధà±à°¯à°¤à°¾à°¯à±à°¤à°®à±ˆ #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "మీ హోమౠపేజీ, à°¬à±à°²à°¾à°—à±, లేదా వేరే సేటà±à°²à±‹à°¨à°¿ మీ à°ªà±à°°à±Šà°«à±ˆà°²à± యొకà±à°• à°šà°¿à°°à±à°¨à°¾à°®à°¾" +msgstr "à°ˆ ఉపకరణం యొకà±à°• హోమà±‌పేజీ à°šà°¿à°°à±à°¨à°¾à°®à°¾" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5269,13 +4705,11 @@ msgstr "à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿" #. TRANS: Application access type #: lib/applicationlist.php:136 -#, fuzzy msgid "read-write" msgstr "చదవడం-à°µà±à°°à°¾à°¯à°¡à°‚" #. TRANS: Application access type #: lib/applicationlist.php:138 -#, fuzzy msgid "read-only" msgstr "చదవడం-మాతà±à°°à°®à±‡" @@ -5285,13 +4719,6 @@ msgstr "చదవడం-మాతà±à°°à°®à±‡" msgid "Approved %1$s - \"%2$s\" access." msgstr "" -#. TRANS: Button label -#: lib/applicationlist.php:159 -#, fuzzy -msgctxt "BUTTON" -msgid "Revoke" -msgstr "తొలగించà±" - #. TRANS: DT element label in attachment list. #: lib/attachmentlist.php:88 msgid "Attachments" @@ -5304,27 +4731,16 @@ 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 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy +#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226 msgid "Password changing failed" -msgstr "సంకేతపదం మారà±à°ªà±" - -#: lib/authenticationplugin.php:235 -#, fuzzy -msgid "Password changing is not allowed" -msgstr "సంకేతపదం మారà±à°ªà±" +msgstr "సంకేతపదం మారà±à°ªà± విఫలమైంది" #: lib/channel.php:157 lib/channel.php:177 msgid "Command results" @@ -5338,46 +4754,28 @@ msgstr "ఆదేశం పూరà±à°¤à°¯à±à°¯à°¿à°‚ది" msgid "Command failed" msgstr "ఆదేశం విఫలమైంది" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -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 "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." - -#. 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 -#, fuzzy, php-format -msgid "Could not find a local user with nickname %s" -msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "à°•à±à°·à°®à°¿à°‚à°šà°‚à°¡à°¿, à°ˆ ఆదేశం ఇంకా అమలà±à°ªà°°à°šà°¬à°¡à°²à±‡à°¦à±." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5388,55 +4786,39 @@ msgstr "" "చందాదారà±à°²à±: %2$s\n" "నోటీసà±à°²à±: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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 "వాడà±à°•à°°à°¿ %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 -msgid "Could not remove user %1$s from group %2$s" -msgstr "వాడà±à°•à°°à°¿ %1$sని %2$s à°—à±à°‚పౠనà±à°‚à°¡à°¿ తొలగించలేకపోయాం." +msgstr "నోటీసà±à°¨à°¿ ఇషà±à°Ÿà°¾à°‚శంగా à°—à±à°°à±à°¤à°¿à°‚చాం." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "హోంపేజీ: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "à°—à±à°°à°¿à°‚à°šà°¿: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5445,142 +4827,106 @@ 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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +#: lib/command.php:491 lib/xmppmanager.php:403 +#, php-format +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "నోటిసౠచాలా పొడవà±à°—à°¾ ఉంది - %1$d à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚, మీరౠ%2$d పంపించారà±." -#. 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 "%sà°•à°¿ నేరౠసందేశానà±à°¨à°¿ పంపించాం" - -#: 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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "సందేశాలà±" - -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చడంలో పొరపాటà±." -#: lib/command.php:562 -#, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "నోటిసౠచాలా పొడవà±à°—à°¾ ఉంది - %d à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚, మీరౠ%d పంపించారà±" - -#: lib/command.php:571 -#, php-format -msgid "Reply to %s sent" -msgstr "%sà°•à°¿ à°¸à±à°ªà°‚దనని పంపించాం" - -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "నోటీసà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "à°à°µà°°à°¿à°•à°¿ చందా చేరాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à±‹ à°† వాడà±à°•à°°à°¿ పేరౠతెలియజేయండి" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "à°à°µà°°à°¿à°•à°¿ చందా చేరాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à±‹ à°† వాడà±à°•à°°à°¿ పేరà±à°¨à°¿ ఇవà±à°µà°‚à°¡à°¿." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "%sà°•à°¿ చందా చేరారà±" +msgid "Subscribed to %s." +msgstr "%sà°•à°¿ చందా చేరారà±." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "ఎవరి à°¨à±à°‚à°¡à°¿ చందా విరమించాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à±‹ à°† వాడà±à°•à°°à°¿ పేరౠతెలియజేయండి" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "ఎవరినà±à°‚డైతే చందావిరమించాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à±‹ à°† వాడà±à°•à°°à°¿ పేరà±à°¨à°¿ ఇవà±à°µà°‚à°¡à°¿." -#: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "%s à°¨à±à°‚à°¡à°¿ చందా విరమించారà±" - -#: 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 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." 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 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "à°ˆ లంకెని ఒకే సారి ఉపయోగించగలరà±, మరియౠఅది పనిచేసేది 2 నిమిషాలౠమాతà±à°°à°®à±‡: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "" -#: lib/command.php:761 -#, php-format -msgid "Unsubscribed %s" -msgstr "%s à°¨à±à°‚à°¡à°¿ చందా విరమించారà±" - -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "మీరౠఎవరికీ చందాచేరలేదà±." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" msgstr[1] "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "మీకౠచందాదారà±à°²à± ఎవరూ లేరà±." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" msgstr[1] "%sà°•à°¿ à°¸à±à°ªà°‚దనలà±" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "మీరౠఠగà±à°‚à°ªà±à°²à±‹à°¨à±‚ సభà±à°¯à±à°²à± కాదà±." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±!" msgstr[1] "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ లోనికి à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±!" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5623,22 +4969,17 @@ msgid "" msgstr "" #: lib/common.php:135 -#, fuzzy msgid "No configuration file found. " -msgstr "నిరà±à°§à°¾à°°à°£ సంకేతం లేదà±." +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." msgstr "" -#: lib/common.php:139 -msgid "Go to the installer." -msgstr "" - #: lib/connectsettingsaction.php:110 msgid "IM" msgstr "" @@ -5672,22 +5013,13 @@ msgid "" "You can upload your personal background image. The maximum file size is 2MB." msgstr "మీ à°µà±à°¯à°•à±à°¤à°¿à°—à°¤ నేపథà±à°¯à°ªà± à°šà°¿à°¤à±à°°à°¾à°¨à±à°¨à°¿ మీరౠఎకà±à°•à°¿à°‚చవచà±à°šà±. à°—à°°à°¿à°·à±à°  ఫైలౠపరిమాణం 2మెబై." -#: 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 -#, fuzzy msgid "Favor this notice" -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ సందేశమేమీ లేదà±." +msgstr "à°ˆ నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚à°šà±" #: lib/favorform.php:140 msgid "Favor" -msgstr "" +msgstr "ఇషà±à°Ÿà°ªà°¡à±" #: lib/feed.php:85 msgid "RSS 1.0" @@ -5707,7 +5039,7 @@ msgstr "" #: lib/feedlist.php:64 msgid "Export data" -msgstr "" +msgstr "భోగటà±à°Ÿà°¾ à°Žà°—à±à°®à°¤à°¿" #: lib/galleryaction.php:121 msgid "Filter tags" @@ -5721,10 +5053,6 @@ msgstr "à°…à°¨à±à°¨à±€" 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 "" @@ -5739,14 +5067,12 @@ 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 "à°ˆ ఉపకరణం యొకà±à°• హోమà±‌పేజీ à°šà°¿à°°à±à°¨à°¾à°®à°¾" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "మీ à°—à±à°°à°¿à°‚à°šà°¿ మరియౠమీ ఆసకà±à°¤à±à°² à°—à±à°°à°¿à°‚à°šà°¿ 140 à°…à°•à±à°·à°°à°¾à°²à±à°²à±‹ చెపà±à°ªà°‚à°¡à°¿" +msgstr "à°—à±à°‚à°ªà±à°¨à°¿ లేదా విషయానà±à°¨à°¿ వివరించండి" #: lib/groupeditform.php:170 #, php-format @@ -5768,9 +5094,8 @@ msgid "Group" msgstr "à°—à±à°‚à°ªà±" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ వాడà±à°•à°°à°¿ లేరà±." +msgstr "నిరోధించారà±" #: lib/groupnav.php:102 #, php-format @@ -5804,11 +5129,6 @@ msgstr "à°Žà°•à±à°•à±à°µà°®à°‚ది సభà±à°¯à±à°²à±à°¨à±à°¨ à°—à±à°‚ 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" @@ -5818,11 +5138,6 @@ msgstr "" msgid "Unsupported image file format." msgstr "" -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "ఇది చాలా పొడవà±à°‚ది. à°—à°°à°¿à°·à±à°  సందేశ పరిమాణం 140 à°…à°•à±à°·à°°à°¾à°²à±." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "పాకà±à°·à°¿à°• à°Žà°—à±à°®à°¤à°¿." @@ -5836,9 +5151,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" @@ -5858,9 +5172,9 @@ msgid "[%s]" msgstr "[%s]" #: lib/jabber.php:567 -#, fuzzy, php-format +#, php-format msgid "Unknown inbox source %d." -msgstr "à°—à±à°°à±à°¤à± తెలియని భాష \"%s\"" +msgstr "à°—à±à°°à±à°¤à± తెలియని భాష \"%s\"." #: lib/joinform.php:114 msgid "Join" @@ -5875,9 +5189,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 @@ -5920,8 +5233,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" @@ -5947,19 +5267,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" @@ -5973,30 +5293,24 @@ 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 -#, 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 " @@ -6011,15 +5325,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 "%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" @@ -6053,13 +5378,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" @@ -6097,7 +5422,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" @@ -6108,13 +5433,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" @@ -6175,14 +5500,10 @@ msgstr "" "మీకౠఅంతరంగిక సందేశాలౠలేవà±. ఇతర వాడà±à°•à°°à±à°²à°¤à±‹ సంభాషణకై మీరౠవారికి అంతరంగిక సందేశాలౠ" "పంపించవచà±à°šà±. మీ à°•à°‚à°Ÿà°¿à°•à°¿ మాతà±à°°à°®à±‡ కనబడేలా వారౠమీకౠసందేశాలౠపంపవచà±à°šà±." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" msgstr "à°¨à±à°‚à°¡à°¿" -#: lib/mailhandler.php:37 -msgid "Could not parse message." -msgstr "" - #: lib/mailhandler.php:42 msgid "Not a registered user." msgstr "నమోదైన వాడà±à°•à°°à°¿ కాదà±." @@ -6191,15 +5512,6 @@ msgstr "నమోదైన వాడà±à°•à°°à°¿ కాదà±." 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 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "%s à°•à°¿ నేరౠసందేశాలà±" - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6230,73 +5542,67 @@ 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 "" -#: 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 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ ఉనà±à°¨ à°…à°•à±à°·à°°à°¾à°²à±" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "పంపించà±" #: lib/noticeform.php:160 -#, fuzzy msgid "Send a notice" -msgstr "కొతà±à°¤ సందేశం" +msgstr "సైటౠగమనిక" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "%s, సంగతà±à°²à±‡à°®à°¿à°Ÿà°¿?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "జోడించà±" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "à°’à°• ఫైలà±à°¨à°¿ జోడించà±" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "నేనà±à°¨à±à°¨ à°ªà±à°°à°¾à°‚తానà±à°¨à°¿ బహిరంగపరచà±" -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "నేనà±à°¨à±à°¨ à°ªà±à°°à°¾à°‚తానà±à°¨à°¿ బహిరంగపరచకà±" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6305,76 +5611,65 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "జాలం" + +#: lib/noticelist.php:568 msgid "in context" msgstr "సందరà±à°­à°‚లో" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "సృషà±à°Ÿà°¿à°¤à°‚" +msgstr "%s యొకà±à°• à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°‚" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "à°ˆ నోటీసà±à°ªà±ˆ à°¸à±à°ªà°‚దించండి" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "à°¸à±à°ªà°‚దించండి" -#: lib/noticelist.php:674 -#, fuzzy +#: lib/noticelist.php:675 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 "" +msgstr "నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±" #: lib/oauthstore.php:283 msgid "Error inserting new profile" msgstr "కొతà±à°¤ à°ªà±à°°à±Šà°ªà±ˆà°²à±à°¨à°¿ చేరà±à°šà°Ÿà°‚లో పొరపాటà±" #: lib/oauthstore.php:291 -#, fuzzy msgid "Error inserting avatar" -msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±" +msgstr "కొతà±à°¤ à°ªà±à°°à±Šà°ªà±ˆà°²à±à°¨à°¿ చేరà±à°šà°Ÿà°‚లో పొరపాటà±" #: lib/oauthstore.php:306 msgid "Error updating remote profile" @@ -6385,9 +5680,8 @@ msgid "Error inserting remote profile" msgstr "దూరపౠపà±à°°à±Šà°ªà±ˆà°²à±à°¨à°¿ చేరà±à°šà°Ÿà°‚లో పొరపాటà±" #: lib/oauthstore.php:345 -#, fuzzy msgid "Duplicate notice" -msgstr "కొతà±à°¤ సందేశం" +msgstr "నోటీసà±à°¨à°¿ తొలగించà±" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." @@ -6426,10 +5720,6 @@ msgstr "మీరౠపంపిన సందేశాలà±" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 -msgid "Unknown" -msgstr "" - #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" msgstr "చందాలà±" @@ -6463,7 +5753,7 @@ msgstr "రోజà±à°µà°¾à°°à±€ సగటà±" msgid "All groups" msgstr "à°…à°¨à±à°¨à°¿ à°—à±à°‚à°ªà±à°²à±" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6487,10 +5777,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 msgid "Repeat this notice?" @@ -6504,23 +5793,13 @@ msgstr "à°…à°µà±à°¨à±" msgid "Repeat this notice" 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 "" -#: lib/sandboxform.php:67 -msgid "Sandbox" -msgstr "" - #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ వాడà±à°•à°°à°¿ లేరà±." +msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించà±" #: lib/searchaction.php:120 msgid "Search site" @@ -6546,10 +5825,6 @@ msgstr "à°ªà±à°°à°œà°²à±" 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 "à°ˆ సైటà±à°²à±‹à°¨à°¿ à°—à±à°‚à°ªà±à°²à°¨à°¿ à°•à°¨à±à°—ొనండి" @@ -6563,14 +5838,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 #, php-format @@ -6610,27 +5883,57 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + +#: lib/themeuploader.php:259 +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 -#, fuzzy msgid "Unsandbox this user" -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ వాడà±à°•à°°à°¿ లేరà±." - -#: lib/unsilenceform.php:67 -msgid "Unsilence" -msgstr "" +msgstr "à°ˆ వాడà±à°•à°°à°¿ à°¨à±à°‚à°¡à°¿ చందామానà±" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ వాడà±à°•à°°à°¿ లేరà±." +msgstr "à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ తొలగించà±" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" @@ -6640,11 +5943,6 @@ msgstr "à°ˆ వాడà±à°•à°°à°¿ à°¨à±à°‚à°¡à°¿ చందామానà±" msgid "Unsubscribe" msgstr "చందామానà±" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "అవతారానà±à°¨à°¿ మారà±à°šà±" @@ -6673,10 +5971,6 @@ msgstr "à°ˆ వాడà±à°•à°°à°¿à°•à°¿ à°’à°• నేరౠసందేశా msgid "Message" msgstr "సందేశం" -#: lib/userprofile.php:326 -msgid "Moderate" -msgstr "" - #: lib/userprofile.php:364 msgid "User role" msgstr "వాడà±à°•à°°à°¿ పాతà±à°°" @@ -6692,56 +5986,56 @@ msgid "Moderator" msgstr "సమనà±à°µà°¯à°•à°°à±à°¤" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°² à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "à°“ నిమిషం à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "à°’à°• à°—à°‚à°Ÿ à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "à°“ రోజౠకà±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "à°“ నెల à°•à±à°°à°¿à°¤à°‚" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "à°’à°• సంవతà±à°¸à°°à°‚ à°•à±à°°à°¿à°¤à°‚" @@ -6754,8 +6048,3 @@ msgstr "%s అనేది సరైన రంగౠకాదà±!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s అనేది సరైన రంగౠకాదà±! 3 లేదా 6 హెకà±à°¸à± à°…à°•à±à°·à°°à°¾à°²à°¨à± వాడండి." - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "నోటిసౠచాలా పొడవà±à°—à°¾ ఉంది - %1$d à°…à°•à±à°·à°°à°¾à°²à± à°—à°°à°¿à°·à±à° à°‚, మీరౠ%2$d పంపించారà±." diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po index 3fe578e086..b1ce8405e6 100644 --- a/locale/tr/LC_MESSAGES/statusnet.po +++ b/locale/tr/LC_MESSAGES/statusnet.po @@ -9,48 +9,27 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:55+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:34+0000\n" "Language-Team: Turkish\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: tr\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=1; plural=0;\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, fuzzy -msgid "Access" -msgstr "Kabul et" - #. TRANS: Page notice #: actions/accessadminpanel.php:67 -#, fuzzy msgid "Site access settings" -msgstr "Ayarlar" - -#. TRANS: Form legend for registration form. -#: actions/accessadminpanel.php:161 -#, fuzzy -msgid "Registration" -msgstr "Kayıt" +msgstr "Profil ayarları" #. TRANS: Checkbox instructions for admin setting "Private" #: 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 -#, fuzzy -msgctxt "LABEL" -msgid "Private" -msgstr "Gizlilik" - #. TRANS: Checkbox instructions for admin setting "Invite only" #: actions/accessadminpanel.php:174 msgid "Make registration invitation only." @@ -68,101 +47,70 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Böyle bir kullanıcı yok." - -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "Ayarlar" - -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Save" -msgstr "Kaydet" +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 "Böyle bir durum mesajı yok." +msgstr "Böyle bir kullanıcı yok." -#: actions/all.php:75 actions/allrss.php:68 -#: actions/apiaccountupdatedeliverydevice.php:113 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -#, fuzzy, php-format -msgid "%1$s and friends, page %2$d" -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:114 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 -#, fuzzy, php-format +#: actions/all.php:107 +#, php-format msgid "Feed for friends of %s (RSS 1.0)" -msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" +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 için arkadaÅŸ güncellemeleri RSS beslemesi" +msgstr "" #. TRANS: %1$s is user nickname -#: actions/all.php:121 -#, 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,85 +118,48 @@ 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 -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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Kullanıcı güncellenemedi." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -259,14 +170,9 @@ msgstr "Kullanıcı güncellenemedi." msgid "User has no profile." msgstr "Kullanıcının profili yok." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "Profil kaydedilemedi." - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,16 +192,9 @@ msgstr "" msgid "Unable to save your design settings." msgstr "" -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Kullanıcı güncellenemedi." - #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Kullanıcı güncellenemedi." +msgstr "" #: actions/apiblockcreate.php:126 msgid "Block user failed." @@ -325,197 +224,125 @@ msgstr "" msgid "All the direct messages sent to %s" msgstr "" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format -msgid "That's too long. Max message size is %d chars." -msgstr "" -"Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" - -#: actions/apidirectmessagenew.php:146 -msgid "Recipient user not found." -msgstr "" - -#: actions/apidirectmessagenew.php:150 +#: 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 -#, 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 -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 -msgid "Could not delete favorite." -msgstr "" - #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" - -#: actions/apifriendshipscreate.php:118 -#, php-format -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 "Sunucuya yönlendirme yapılamadı: %s" +msgid "Could not follow user: profile not found." +msgstr "Profil kaydedilemedi." #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "Kullanıcı güncellenemedi." - -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." msgstr "" -#: actions/apifriendshipsshow.php:134 -#, fuzzy -msgid "Could not determine source user." -msgstr "Kullanıcı güncellenemedi." +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "" -#: actions/apifriendshipsshow.php:142 -#, fuzzy -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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "Hakkında bölümü çok uzun (azm 140 karakter)." +msgstr "Yer bilgisi çok uzun (azm: %d 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "%s Geçersiz baÅŸlangıç sayfası" +msgstr "Geçersiz büyüklük." -#: actions/apigroupcreate.php:275 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 -#, 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 "Ä°stek bulunamadı!" +msgstr "Onay kodu bulunamadı." -#: actions/apigroupjoin.php:110 actions/joingroup.php:100 -#, fuzzy +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" +msgstr "Bize o profili yollamadınız" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 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 -#, 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 -#, 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 -#, 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 -#, 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/apigrouplist.php:98 #, php-format -msgid "%s groups" +msgid "%s's groups" msgstr "" -#: actions/apigrouplistall.php:95 +#. 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 "" + +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "" @@ -524,22 +351,17 @@ msgstr "" msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Geçersiz büyüklük." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -547,21 +369,6 @@ msgstr "Geçersiz büyüklük." msgid "There was a problem with your session token. Try again, please." msgstr "" -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "Geçersiz kullanıcı adı veya parola." - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "Kullanıcı ayarlamada hata oluÅŸtu." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "Cevap eklenirken veritabanı hatası: %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -602,14 +409,8 @@ msgid "" "give access to your %4$s account to third parties you trust." msgstr "" -#. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 -#, 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 +418,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 +435,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,101 +448,47 @@ msgstr "" msgid "No such notice." msgstr "Böyle bir durum mesajı yok." -#: actions/apistatusesretweet.php:83 -#, fuzzy -msgid "Cannot repeat your own notice." -msgstr "EÄŸer lisansı kabul etmezseniz kayıt olamazsınız." - -#: actions/apistatusesretweet.php:91 -#, fuzzy -msgid "Already repeated that notice." -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" - -#: actions/apistatusesshow.php:138 -#, 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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." msgstr "" -"Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 -#, fuzzy -msgid "Not found." -msgstr "Ä°stek bulunamadı!" - -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy -msgid "Unsupported format." -msgstr "Desteklenmeyen görüntü dosyası biçemi." - -#: actions/apitimelinefavorites.php:109 -#, fuzzy, php-format -msgid "%1$s / Favorites from %2$s" -msgstr "%1$s'in %2$s'deki durum mesajları " - -#: 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 adli kullanicinin durum mesajlari" +msgstr "" -#: actions/apitimelinementions.php:117 -#, 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:107 actions/publicrss.php:103 -#, php-format -msgid "%s public timeline" -msgstr "" - -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "%s için cevaplar" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format -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 -#, fuzzy, php-format +#: actions/apitimelinetag.php:107 actions/tagrss.php:65 +#, php-format msgid "Updates tagged with %1$s on %2$s!" -msgstr "%s adli kullanicinin durum mesajlari" +msgstr "" #: actions/attachment.php:73 -#, fuzzy msgid "No such attachment." -msgstr "Böyle bir belge yok." +msgstr "Böyle bir durum mesajı yok." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -750,10 +497,6 @@ msgstr "Böyle bir belge yok." msgid "No nickname." msgstr "Takma ad yok" -#: actions/avatarbynickname.php:64 -msgid "No size." -msgstr "" - #: actions/avatarbynickname.php:69 msgid "Invalid size." msgstr "Geçersiz büyüklük." @@ -764,23 +507,10 @@ msgstr "Geçersiz büyüklük." msgid "Avatar" msgstr "Avatar" -#: actions/avatarsettings.php:78 -#, php-format -msgid "You can upload your personal avatar. The maximum file size is %s." -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 "Kullanıcının profili yok." - #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 -#, fuzzy msgid "Avatar settings" -msgstr "Ayarlar" +msgstr "Profil ayarları" #: actions/avatarsettings.php:127 actions/avatarsettings.php:205 #: actions/grouplogo.php:202 actions/grouplogo.php:262 @@ -793,7 +523,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "" @@ -805,11 +535,6 @@ msgstr "Yükle" msgid "Crop" msgstr "" -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "Kısmi yükleme." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "" @@ -826,22 +551,11 @@ msgstr "Avatar güncellendi." msgid "Failed updating avatar." msgstr "Avatar güncellemede hata." -#: actions/avatarsettings.php:397 -#, fuzzy -msgid "Avatar deleted." -msgstr "Avatar güncellendi." - #: actions/block.php:69 -#, fuzzy msgid "You already blocked that user." -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" +msgstr "Jabber ID baÅŸka bir kullanıcıya ait." -#: actions/block.php:105 actions/block.php:128 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,27 +567,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: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 "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 -#, fuzzy -msgid "Do not block this user" -msgstr "Böyle bir kullanıcı yok." +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" @@ -881,15 +587,16 @@ 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 "Böyle bir kullanıcı yok." +msgstr "" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -899,46 +606,33 @@ msgstr "" #: 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 -#, fuzzy +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." -msgstr "Böyle bir durum mesajı yok." +msgstr "Böyle bir kullanıcı yok." #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "Kullanıcının profili yok." +msgstr "" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s ve arkadaÅŸları" +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 "Böyle bir kullanıcı yok." +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 "Böyle bir kullanıcı yok." - -#. TRANS: Title for mini-posting window loaded from bookmarklet. -#: actions/bookmarklet.php:51 -#, fuzzy, php-format -msgid "Post to %s" -msgstr "%s için cevaplar" - #: actions/confirmaddress.php:75 msgid "No confirmation code." msgstr "Onay kodu yok." @@ -953,9 +647,9 @@ msgstr "O onay kodu sizin için deÄŸil!" #. 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 "Tanınmayan adres türü %s" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -984,52 +678,29 @@ msgid "Couldn't delete email confirmation." msgstr "Eposta onayı silinemedi." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Adresi Onayla" +msgstr "Onayla" #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." msgstr "\"%s\" adresi hesabınız için onaylandı." -#: actions/conversation.php:99 -#, fuzzy -msgid "Conversation" -msgstr "Yer" - #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" msgstr "Durum mesajları" -#: actions/deleteapplication.php:63 -#, fuzzy -msgid "You must be logged in to delete an application." -msgstr "Kullanıcı güncellenemedi." - #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Bize o profili yollamadınız" +msgstr "Onay kodu bulunamadı." #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 msgid "There was a problem with your session token." msgstr "" -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "Böyle bir durum mesajı yok." - #: actions/deleteapplication.php:149 msgid "" "Are you sure you want to delete this application? This will clear all data " @@ -1037,67 +708,36 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "Böyle bir durum mesajı yok." - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" - #. 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "GiriÅŸ yapılmadı." -#: actions/deletenotice.php:71 -msgid "Can't delete this notice." -msgstr "" - #: actions/deletenotice.php:103 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" -msgstr "" - #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" msgstr "" #. TRANS: Submit button title for 'No' when deleting a notice. #: actions/deletenotice.php:151 -#, fuzzy 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:656 -msgid "Delete this notice" msgstr "" -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "Kullanıcı güncellenemedi." - -#: actions/deleteuser.php:74 -#, fuzzy -msgid "You can only delete local users." -msgstr "Yerel aboneliÄŸi kullanabilirsiniz!" +#. TRANS: Submit button title for 'Yes' when deleting a notice. +#: actions/deletenotice.php:158 lib/noticelist.php:657 +msgid "Delete this notice" +msgstr "" #: actions/deleteuser.php:110 actions/deleteuser.php:133 msgid "Delete user" @@ -1109,12 +749,6 @@ msgid "" "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 "Böyle bir kullanıcı yok." - #. 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 @@ -1126,113 +760,80 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, fuzzy -msgid "Invalid logo URL." -msgstr "Geçersiz büyüklük." - -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" +msgstr "" -#: actions/designadminpanel.php:376 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "Parolayı deÄŸiÅŸtir" - -#: actions/designadminpanel.php:381 -#, fuzzy -msgid "Site logo" -msgstr "Yeni durum mesajı" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" msgstr "DeÄŸiÅŸtir" -#: actions/designadminpanel.php:405 -#, 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 +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 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." -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 -#, fuzzy -msgid "Change colours" -msgstr "Parolayı deÄŸiÅŸtir" - -#: actions/designadminpanel.php:513 lib/designsettings.php:191 -#, fuzzy -msgid "Content" -msgstr "BaÄŸlan" - -#: actions/designadminpanel.php:526 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 -#, fuzzy -msgid "Links" -msgstr "GiriÅŸ" +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: 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,10 +843,6 @@ msgstr "" msgid "Save" msgstr "Kaydet" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "" @@ -1255,70 +852,26 @@ msgid "Add to favorites" msgstr "" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "Böyle bir belge yok." +msgstr "Böyle bir durum mesajı yok." #: actions/editapplication.php:54 -#, fuzzy msgid "Edit Application" -msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok" - -#: actions/editapplication.php:66 -msgid "You must be logged in to edit an application." msgstr "" -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." -msgstr "Böyle bir durum mesajı yok." - #: actions/editapplication.php:161 msgid "Use this form to edit your application." msgstr "" -#: actions/editapplication.php:177 actions/newapplication.php:159 -msgid "Name is required." -msgstr "" - -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Tam isim çok uzun (azm: 255 karakter)." - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Takma ad kullanımda. BaÅŸka bir tane deneyin." - #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "Abonelikler" +msgstr "Abonelik reddedildi." #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "BaÅŸlangıç sayfası adresi geçerli bir URL deÄŸil." - -#: actions/editapplication.php:203 actions/newapplication.php:188 -msgid "Organization is required." -msgstr "" - -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "Yer bilgisi çok uzun (azm: 255 karakter)." - -#: actions/editapplication.php:209 actions/newapplication.php:194 -msgid "Organization homepage is required." -msgstr "" - #: actions/editapplication.php:218 actions/newapplication.php:206 msgid "Callback is too long." msgstr "" @@ -1327,20 +880,11 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Kullanıcı güncellenemedi." - #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" msgstr "" -#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -msgid "You must be logged in to create a group." -msgstr "" - #: 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." @@ -1351,35 +895,14 @@ msgid "Use this form to edit the group." msgstr "" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "Hakkında bölümü çok uzun (azm 140 karakter)." +msgstr "Yer bilgisi çok uzun (azm: 255 karakter)." -#: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format -msgid "Invalid alias: \"%s\"" -msgstr "%s Geçersiz baÅŸlangıç sayfası" - -#: actions/editgroup.php:258 -#, fuzzy -msgid "Could not update group." -msgstr "Kullanıcı güncellenemedi." - -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." -msgstr "Avatar bilgisi kaydedilemedi" - -#: actions/editgroup.php:280 -#, fuzzy -msgid "Options saved." -msgstr "Ayarlar kaydedildi." - -#. TRANS: Title for e-mail settings. -#: actions/emailsettings.php:61 -#, fuzzy -msgid "Email settings" -msgstr "Profil ayarları" +msgstr "Kullanıcı güncellenemedi." #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1388,18 +911,6 @@ msgstr "Profil ayarları" msgid "Manage how you get email from %%site.name%%." msgstr "" -#. 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 "Eposta adresi onayı" - -#. TRANS: Form note in e-mail settings form. -#: actions/emailsettings.php:112 -msgid "Current confirmed email address." -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. #. TRANS: Button label to remove a confirmed IM address. @@ -1408,27 +919,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 "Kaldır" - -#: actions/emailsettings.php:122 -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. -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "Ä°ptal et" +msgstr "Geri al" #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 @@ -1440,10 +933,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 "Ekle" +msgstr "" #. TRANS: Form legend for incoming e-mail settings form. #. TRANS: Form legend for incoming SMS settings form. @@ -1470,17 +962,6 @@ msgctxt "BUTTON" msgid "New" msgstr "" -#. TRANS: Form legend for e-mail preferences form. -#: actions/emailsettings.php:174 -#, fuzzy -msgid "Email preferences" -msgstr "Tercihler" - -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:180 -msgid "Send me notices of new subscriptions through email." -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." @@ -1506,43 +987,12 @@ msgstr "" msgid "I want to post notices by email." msgstr "" -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:219 -msgid "Publish a MicroID for my email address." -msgstr "" - -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Tercihler kaydedildi." - -#. TRANS: Message given saving e-mail address without having provided one. -#: actions/emailsettings.php:353 -msgid "No email address." -msgstr "" - -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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." -#. TRANS: Message given saving e-mail address that is already set. -#: actions/emailsettings.php:370 -msgid "That is already your email address." -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 "" - #. 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. @@ -1551,13 +1001,6 @@ msgstr "" msgid "Couldn't insert confirmation code." msgstr "Onay kodu eklenemedi." -#. 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 "" - #. 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. @@ -1566,50 +1009,15 @@ msgstr "" msgid "No pending confirmation to cancel." msgstr "Ä°ptal etmek için beklenen onay yok." -#. 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 "Yanlış IM adresi." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Onaylama iptal edildi." - -#. 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 "Ä°ptal etmek için beklenen onay yok." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Bu adres kaldırılmıştı." - -#: actions/emailsettings.php:493 actions/smssettings.php:568 -msgid "No incoming email address." -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 -msgid "Couldn't update user record." -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 "" - -#. 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 "Eposta adresi zaten var." #: actions/favor.php:79 msgid "This notice is already a favorite!" @@ -1619,16 +1027,10 @@ msgstr "" msgid "Disfavor favorite" msgstr "" -#: actions/favorited.php:65 lib/popularnoticesection.php:91 -#: lib/publicgroupnav.php:93 -#, fuzzy -msgid "Popular notices" -msgstr "Böyle bir durum mesajı yok." - #: actions/favorited.php:67 -#, fuzzy, php-format +#, php-format msgid "Popular notices, page %d" -msgstr "Böyle bir durum mesajı yok." +msgstr "" #: actions/favorited.php:79 msgid "The most popular notices on the site right now." @@ -1658,9 +1060,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 adli kullanicinin durum mesajlari" +msgstr "" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1678,24 +1080,12 @@ msgid "A selection of some great users on %s" msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Yeni durum mesajı" +msgstr "Böyle bir durum mesajı yok." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Yeni durum mesajı" - -#: actions/file.php:42 -#, fuzzy -msgid "No attachments." -msgstr "Böyle bir belge yok." - -#: actions/file.php:51 -#, fuzzy -msgid "No uploaded attachments." -msgstr "Böyle bir belge yok." +msgstr "Böyle bir durum mesajı yok." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" @@ -1714,62 +1104,38 @@ msgid "That user has blocked you from subscribing." msgstr "" #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "YetkilendirilmemiÅŸ." +msgstr "Takip talebine izin verildi" #: actions/finishremotesubscribe.php:113 msgid "Could not convert request token to access token." msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "OMB protokolünün bilinmeÄŸen sürümü." - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Uzaktaki profili güncellemede hata oluÅŸtu" - -#: actions/getfile.php:79 -#, fuzzy -msgid "No such file." -msgstr "Böyle bir durum mesajı yok." +msgstr "" #: actions/getfile.php:83 -#, fuzzy msgid "Cannot read file." -msgstr "Böyle bir durum mesajı yok." - -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Geçersiz büyüklük." +msgstr "Profil kaydedilemedi." #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Bize o profili yollamadınız" - -#: actions/grantrole.php:82 -#, fuzzy -msgid "User already has this role." -msgstr "Kullanıcının profili yok." +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 "" @@ -1782,20 +1148,9 @@ msgstr "" msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -#, fuzzy -msgid "User is already blocked from group." -msgstr "Kullanıcının profili yok." - -#: actions/groupblock.php:100 -#, fuzzy -msgid "User is not a member of group." -msgstr "Bize o profili yollamadınız" - #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "Böyle bir kullanıcı yok." +msgstr "" #: actions/groupblock.php:160 #, php-format @@ -1807,24 +1162,21 @@ 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 "Sunucuya yönlendirme yapılamadı: %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 "Böyle bir kullanıcı yok." +msgstr "" #: actions/groupblock.php:206 msgid "Database error blocking user from group." msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "Kullanıcı numarası yok" +msgstr "JabberID yok." #: actions/groupdesignsettings.php:68 msgid "You must be logged in to edit a group." @@ -1840,46 +1192,10 @@ msgid "" "palette of your choice." 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 "Kullanıcı güncellenemedi." - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy -msgid "Design preferences saved." -msgstr "Tercihler kaydedildi." - -#: actions/grouplogo.php:142 actions/grouplogo.php:195 -msgid "Group logo" -msgstr "" - -#: actions/grouplogo.php:153 -#, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "" - #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." msgstr "" -#: actions/grouplogo.php:399 -#, fuzzy -msgid "Logo updated." -msgstr "Avatar güncellendi." - -#: actions/grouplogo.php:401 -#, fuzzy -msgid "Failed updating logo." -msgstr "Avatar güncellemede hata." - -#: actions/groupmembers.php:100 lib/groupnav.php:92 -#, php-format -msgid "%s group members" -msgstr "" - #: actions/groupmembers.php:103 #, php-format msgid "%1$s group members, page %2$d" @@ -1909,20 +1225,11 @@ msgstr "" 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:62 lib/atomusernoticefeed.php:68 -#, 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 adli kullanicinin durum mesajlari" +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 @@ -1945,30 +1252,13 @@ msgid "" msgstr "" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "Yeni hesap oluÅŸtur" - -#: actions/groupsearch.php:52 -#, 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 "" -"%%site.name%% üyeleri arasında isim, yer ya da ilgi alanları içinde arama " -"yap. Anahtar kelimeleri boÅŸluk ile ayırın. Anahtar kelime 3 veya daha fazla " -"karakterden oluÅŸmalı. " - -#: actions/groupsearch.php:58 -#, fuzzy -msgid "Group search" -msgstr "KiÅŸi Arama" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "Sonuç yok" +msgstr "" #: actions/groupsearch.php:82 #, php-format @@ -1989,20 +1279,13 @@ msgid "Only an admin can unblock group members." msgstr "" #: actions/groupunblock.php:95 -#, fuzzy msgid "User is not blocked from group." -msgstr "Kullanıcının profili yok." - -#: actions/groupunblock.php:128 actions/unblock.php:86 -#, fuzzy -msgid "Error removing the block." -msgstr "Kullanıcıyı kaydetmede hata oluÅŸtu." +msgstr "" #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "IM Ayarları" +msgstr "Profil ayarları" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2018,16 +1301,8 @@ 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 "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" - -#. 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 adresi" +msgstr "" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2057,9 +1332,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Tercihler" +msgstr "Tercihler kaydedildi." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2072,16 +1346,6 @@ msgid "Post a notice when my Jabber/GTalk status changes." msgstr "" "Jabber/GTalk durum mesajim deÄŸiÅŸtiÄŸinde nedurum.com'da durumumu güncelle" -#. 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." @@ -2128,17 +1392,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Yanlış IM adresi." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Eposta onayı silinemedi." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Onaylama iptal edildi." +msgstr "Onay kodu yok." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2146,12 +1403,6 @@ msgstr "Onaylama iptal edildi." msgid "That is not your Jabber ID." msgstr "Bu sizin Jabber ID'niz deÄŸil." -#. TRANS: Message given after successfully removing a registered IM address. -#: actions/imsettings.php:447 -#, fuzzy -msgid "The IM address was removed." -msgstr "Bu adres kaldırılmıştı." - #: actions/inbox.php:59 #, php-format msgid "Inbox for %1$s - page %2$d" @@ -2171,13 +1422,8 @@ msgid "Invites have been disabled." msgstr "" #: actions/invite.php:41 -#, fuzzy, php-format -msgid "You must be logged in to invite other users to use %s." -msgstr "Kullanıcı güncellenemedi." - -#: actions/invite.php:72 #, php-format -msgid "Invalid email address: %s" +msgid "You must be logged in to invite other users to use %s." msgstr "" #: actions/invite.php:110 @@ -2188,13 +1434,9 @@ msgstr "" 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "" @@ -2219,33 +1461,18 @@ 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 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "Gönder" - -#. 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. @@ -2284,14 +1511,7 @@ msgstr "" 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 "Takma ad yok" - -#. 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "" @@ -2300,53 +1520,36 @@ msgstr "" 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 "Bize o profili yollamadınız" - -#. 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 "%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 -#, 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,47 +1557,41 @@ 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 -#, fuzzy, php-format +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Yanlış kullanıcı adı veya parola." + +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Kullanıcı adı ve parolanızla giriÅŸ yapın. Henüz bir hesabınız yok mu? Ne " -"duruyorsunuz, hemen bir [yeni hesap oluÅŸturun](%%action.register%%) ya da " -"[OpenID](%%action.openidlogin%%) ile giriÅŸ yapın." #: 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 "Kullanıcının profili yok." +msgstr "" #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "OpenID formu yaratılamadı: %s" +msgstr "" #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "Kullanıcının profili yok." +msgstr "" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Sonuç yok" +msgstr "" #: actions/newapplication.php:52 -#, fuzzy msgid "New Application" -msgstr "Böyle bir durum mesajı yok." - -#: actions/newapplication.php:64 -msgid "You must be logged in to register an application." msgstr "" #: actions/newapplication.php:143 @@ -2406,13 +1603,8 @@ msgid "Source URL is required." msgstr "" #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "Avatar bilgisi kaydedilemedi" - -#: actions/newgroup.php:53 -msgid "New group" -msgstr "" +msgstr "Eposta onayı silinemedi." #: actions/newgroup.php:110 msgid "Use this form to create a new group." @@ -2422,12 +1614,10 @@ msgstr "" 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "İçerik yok!" @@ -2435,7 +1625,8 @@ msgstr "İçerik yok!" msgid "No recipient specified." msgstr "" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2444,12 +1635,14 @@ msgstr "" msgid "Message sent" msgstr "" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "" @@ -2457,11 +1650,6 @@ msgstr "" msgid "New notice" msgstr "Yeni durum mesajı" -#: actions/newnotice.php:217 -#, fuzzy -msgid "Notice posted" -msgstr "Durum mesajları" - #: actions/noticesearch.php:68 #, php-format msgid "" @@ -2476,9 +1664,9 @@ msgid "Text search" msgstr "Metin arama" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr " \"%s\" için arama sonuçları" +msgstr "" #: actions/noticesearch.php:121 #, php-format @@ -2495,18 +1683,18 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "%s adli kullanicinin durum mesajlari" +msgstr "" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "\"%s\" kelimesinin geçtiÄŸi tüm güncellemeler" +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 @@ -2529,24 +1717,10 @@ msgstr "" msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Bize o profili yollamadınız" - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2560,46 +1734,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 "Bu durum mesajının ait oldugu kullanıcı profili yok" +msgstr "Kullanıcının 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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "BaÄŸlan" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 -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 -#, fuzzy msgid "Other settings" -msgstr "Ayarlar" +msgstr "Profil ayarları" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2617,39 +1775,21 @@ msgstr "" msgid "Automatic shortening service to use." msgstr "" -#: actions/othersettings.php:122 -#, fuzzy -msgid "View profile designs" -msgstr "Profil ayarları" - #: 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 "Yer bilgisi çok uzun (azm: 255 karakter)." - #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "Yeni durum mesajı" +msgstr "" #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "Yeni durum mesajı" - -#: actions/otp.php:90 -#, fuzzy -msgid "No login token requested." -msgstr "Yetkilendirme isteÄŸi yok!" +msgstr "" #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "Geçersiz durum mesajı" +msgstr "" #: actions/otp.php:104 msgid "Login token expired." @@ -2673,16 +1813,6 @@ msgstr "" msgid "Change password" msgstr "Parolayı deÄŸiÅŸtir" -#: actions/passwordsettings.php:69 -#, fuzzy -msgid "Change your password." -msgstr "Parolayı deÄŸiÅŸtir" - -#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy -msgid "Password change" -msgstr "Parola kaydedildi." - #: actions/passwordsettings.php:104 msgid "Old password" msgstr "Eski parola" @@ -2696,7 +1826,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" @@ -2708,11 +1838,7 @@ msgstr "yukarıdaki parolanın aynısı" msgid "Change" msgstr "DeÄŸiÅŸtir" -#: actions/passwordsettings.php:154 actions/register.php:230 -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." @@ -2733,7 +1859,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 "" @@ -2742,24 +1868,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 "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." @@ -2781,11 +1907,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "Yeni durum mesajı" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2806,10 +1927,6 @@ msgstr "" msgid "Theme" msgstr "" -#: actions/pathsadminpanel.php:264 -msgid "Theme server" -msgstr "" - #: actions/pathsadminpanel.php:268 msgid "Theme path" msgstr "" @@ -2818,34 +1935,14 @@ msgstr "" msgid "Theme directory" msgstr "" -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "Avatar" - #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "Ayarlar" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "Avatar güncellendi." - -#: actions/pathsadminpanel.php:292 -#, fuzzy -msgid "Avatar directory" -msgstr "Avatar güncellendi." +msgstr "Avatar" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" msgstr "" -#: actions/pathsadminpanel.php:305 -msgid "Background server" -msgstr "" - #: actions/pathsadminpanel.php:309 msgid "Background path" msgstr "" @@ -2859,14 +1956,8 @@ msgid "SSL" msgstr "" #: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy msgid "Never" -msgstr "Geri al" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "Durum mesajları" +msgstr "Sunucu" #: actions/pathsadminpanel.php:325 msgid "Always" @@ -2881,18 +1972,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Geri al" +msgstr "Sunucu" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Yeni durum mesajı" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -2908,20 +1997,14 @@ msgstr "" msgid "People search" msgstr "KiÅŸi Arama" -#: actions/peopletag.php:68 -#, fuzzy, php-format -msgid "Not a valid people tag: %s." -msgstr "Geçersiz bir eposta adresi." - #: actions/peopletag.php:142 -#, fuzzy, php-format +#, php-format msgid "Users self-tagged with %1$s - page %2$d" -msgstr "%s adli kullanicinin durum mesajlari" +msgstr "" #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Geçersiz durum mesajı" +msgstr "Geçersiz büyüklük." #: actions/postnotice.php:101 #, php-format @@ -2940,9 +2023,8 @@ msgstr "" "hakkınızda daha fazla bilgi sahibi olur." #: actions/profilesettings.php:99 -#, fuzzy msgid "Profile information" -msgstr "Profil bilinmiyor" +msgstr "Profil ayarları" #: actions/profilesettings.php:108 lib/groupeditform.php:154 msgid "1-64 lowercase letters or numbers, no punctuation or spaces" @@ -2950,45 +2032,44 @@ 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 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, php-format msgid "Describe yourself and your interests in %d chars" -msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" +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 "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" +msgstr "" -#: 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" @@ -3028,42 +2109,24 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "Hakkında bölümü çok uzun (azm 140 karakter)." +msgstr "Yer bilgisi çok uzun (azm: %d karakter)." #: 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 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "%s Geçersiz baÅŸlangıç sayfası" - -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Profil kaydedilemedi." +msgstr "Geçersiz büyüklük." #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Profil kaydedilemedi." -#: actions/profilesettings.php:383 -#, fuzzy -msgid "Couldn't save tags." -msgstr "Profil kaydedilemedi." - #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 msgid "Settings saved." @@ -3074,33 +2137,21 @@ msgstr "Ayarlar kaydedildi." msgid "Beyond the page limit (%s)." msgstr "" -#: actions/public.php:92 -msgid "Could not retrieve public stream." -msgstr "" - -#: actions/public.php:130 -#, fuzzy, php-format -msgid "Public timeline, page %d" -msgstr "Genel zaman çizgisi" - #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" msgstr "Genel zaman çizgisi" #: actions/public.php:160 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "Genel Durum Akış RSS Beslemesi" +msgstr "" #: actions/public.php:164 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "Genel Durum Akış RSS Beslemesi" +msgstr "" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Genel Durum Akış RSS Beslemesi" +msgstr "" #: actions/public.php:188 #, php-format @@ -3137,9 +2188,8 @@ msgid "" msgstr "" #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "Genel Durum Akış RSS Beslemesi" +msgstr "" #: actions/publictagcloud.php:63 #, php-format @@ -3190,28 +2240,10 @@ msgstr "Onay kodu hatası." msgid "This confirmation code is too old. Please start again." msgstr "Onay kodu çok eski. Lütfen tekrar baÅŸlayınız." -#: 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 "Bu sunucudaki takma adınız veya kaydedilmiÅŸ eposta adresiniz." @@ -3248,10 +2280,6 @@ msgstr "Sıfırla" msgid "Enter a nickname or email address." msgstr "Bir takma ad veya eposta adresi girin." -#: 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 "Kullanıcı için kaydedilmiÅŸ eposta adresi yok." @@ -3280,7 +2308,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." @@ -3288,82 +2316,85 @@ 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 -#, 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:507 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 -msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -msgstr "" - -#: actions/register.php:430 -msgid "6 or more characters. Required." -msgstr "" - -#: actions/register.php:434 -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:494 -#, fuzzy, php-format +#: 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 "" -"bu özel veriler haricinde: parola, eposta adresi, IM adresi, telefon " -"numarası." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3382,7 +2413,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3400,11 +2431,6 @@ msgstr "" msgid "Remote subscribe" msgstr "Uzaktan abonelik" -#: actions/remotesubscribe.php:124 -#, fuzzy -msgid "Subscribe to a remote user" -msgstr "Takip talebine izin verildi" - #: actions/remotesubscribe.php:129 msgid "User nickname" msgstr "Kullanıcı takma adı" @@ -3431,9 +2457,8 @@ msgid "Invalid profile URL (bad format)" msgstr "" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Geçersiz profil adresi (YADIS belgesi yok)." +msgstr "" #: actions/remotesubscribe.php:176 msgid "That’s a local profile! Login to subscribe." @@ -3447,30 +2472,9 @@ msgstr "" msgid "Only logged-in users can repeat notices." msgstr "" -#: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy -msgid "No notice specified." -msgstr "Yeni durum mesajı" - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "EÄŸer lisansı kabul etmezseniz kayıt olamazsınız." - -#: actions/repeat.php:90 -#, fuzzy -msgid "You already repeated that notice." -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" - -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "Yarat" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "Yarat" +msgstr "Sıfırla" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3478,31 +2482,16 @@ msgstr "Yarat" msgid "Replies to %s" msgstr "%s için cevaplar" -#: actions/replies.php:128 -#, fuzzy, php-format -msgid "Replies to %1$s, page %2$d" -msgstr "%s için cevaplar" - -#: actions/replies.php:145 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 1.0)" -msgstr "%s için durum RSS beslemesi" - -#: actions/replies.php:152 -#, fuzzy, php-format -msgid "Replies feed for %s (RSS 2.0)" -msgstr "%s için durum RSS beslemesi" - #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "%s için durum RSS beslemesi" +msgstr "%s için cevaplar" #: 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 @@ -3515,43 +2504,33 @@ 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 -msgid "Replies to %1$s on %2$s!" -msgstr "%s için cevaplar" - #: actions/revokerole.php:75 -#, fuzzy msgid "You cannot revoke user roles on this site." -msgstr "Bize o profili yollamadınız" +msgstr "" #: actions/revokerole.php:82 -#, fuzzy msgid "User doesn't have this role." -msgstr "Kullanıcının profili yok." +msgstr "" -#: actions/rsd.php:146 actions/version.php:157 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "Avatar güncellendi." +msgstr "Ä°statistikler" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "Bize o profili yollamadınız" +msgstr "" #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "Kullanıcının profili yok." +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 "" @@ -3577,45 +2556,20 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "Ayarlar" - -#: actions/showapplication.php:82 -msgid "You must be logged in to view an application." -msgstr "" - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok" +msgstr "Profil ayarları" #. 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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Takma ad" - #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "Yer" +msgstr "" -#. TRANS: Form input field label. -#: actions/showapplication.php:187 actions/version.php:198 -#: 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" @@ -3625,18 +2579,10 @@ msgstr "Ä°statistikler" 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 "" @@ -3668,28 +2614,19 @@ 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 ve arkadaÅŸları" - -#: actions/showfavorites.php:132 -msgid "Could not retrieve favorite notices." msgstr "" #: actions/showfavorites.php:171 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 1.0)" -msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" +msgstr "" #: actions/showfavorites.php:178 -#, fuzzy, php-format +#, php-format msgid "Feed for favorites of %s (RSS 2.0)" -msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" - -#: actions/showfavorites.php:185 -#, fuzzy, php-format -msgid "Feed for favorites of %s (Atom)" -msgstr "%s için arkadaÅŸ güncellemeleri RSS beslemesi" +msgstr "" #: actions/showfavorites.php:206 msgid "" @@ -3700,80 +2637,54 @@ 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 "" -#: actions/showgroup.php:82 lib/groupnav.php:86 +#: actions/showgroup.php:84 #, php-format -msgid "%s group" +msgid "%1$s group, page %2$d" msgstr "" -#: actions/showgroup.php:84 -#, fuzzy, php-format -msgid "%1$s group, page %2$d" -msgstr "Bütün abonelikler" - #: actions/showgroup.php:227 -#, fuzzy msgid "Group profile" -msgstr "Böyle bir durum mesajı yok." +msgstr "Kullanıcının profili yok." #: 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 -#, fuzzy -msgid "Note" -msgstr "Durum mesajları" - #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" msgstr "" -#: actions/showgroup.php:302 -msgid "Group actions" +#: actions/showgroup.php:338 +#, php-format +msgid "Notice feed for %s group (RSS 1.0)" msgstr "" -#: actions/showgroup.php:338 -#, fuzzy, php-format -msgid "Notice feed for %s group (RSS 1.0)" -msgstr "%s için durum RSS beslemesi" - #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "%s için durum RSS beslemesi" - -#: actions/showgroup.php:350 -#, fuzzy, php-format -msgid "Notice feed for %s group (Atom)" -msgstr "%s için durum RSS beslemesi" +msgstr "" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "%s için durum RSS beslemesi" - -#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91 -#, fuzzy -msgid "Members" -msgstr "Ãœyelik baÅŸlangıcı" +msgstr "" #: actions/showgroup.php:398 lib/profileaction.php:117 #: lib/profileaction.php:152 lib/profileaction.php:255 lib/section.php:95 @@ -3785,12 +2696,7 @@ msgstr "" msgid "All members" msgstr "" -#: actions/showgroup.php:447 -#, 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." @@ -3800,7 +2706,7 @@ msgid "" "of this group and many more! ([Read more](%%%%doc.help%%%%))" msgstr "" -#: actions/showgroup.php:469 +#: actions/showgroup.php:461 #, php-format msgid "" "**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en." @@ -3809,14 +2715,10 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: 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 "" @@ -3832,9 +2734,8 @@ msgid "Message from %1$s on %2$s" msgstr "" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "Durum mesajları" +msgstr "" #: actions/showstream.php:73 #, php-format @@ -3842,29 +2743,14 @@ msgid " tagged %s" msgstr "" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s ve arkadaÅŸları" +msgstr "" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "%s için durum RSS beslemesi" - -#: actions/showstream.php:129 -#, fuzzy, php-format -msgid "Notice feed for %s (RSS 1.0)" -msgstr "%s için durum RSS beslemesi" - -#: actions/showstream.php:136 -#, fuzzy, php-format -msgid "Notice feed for %s (RSS 2.0)" -msgstr "%s için durum RSS beslemesi" - -#: actions/showstream.php:143 -#, fuzzy, php-format -msgid "Notice feed for %s (Atom)" -msgstr "%s için durum RSS beslemesi" +msgstr "" #: actions/showstream.php:148 #, php-format @@ -3885,8 +2771,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 @@ -3906,19 +2792,13 @@ msgid "" "[StatusNet](http://status.net/) tool. " msgstr "" -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "%s için cevaplar" - #: actions/silence.php:65 actions/unsilence.php:65 msgid "You cannot silence users on this site." msgstr "" #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "Kullanıcının profili yok." +msgstr "" #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" @@ -3928,11 +2808,6 @@ msgstr "" msgid "Site name must have non-zero length." msgstr "" -#: actions/siteadminpanel.php:141 -#, fuzzy -msgid "You must have a valid contact email address." -msgstr "Geçersiz bir eposta adresi." - #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." @@ -3950,11 +2825,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "Yeni durum mesajı" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -3975,16 +2845,6 @@ msgstr "" 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 "Kullanıcı için kaydedilmiÅŸ eposta adresi yok." - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "Yer" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4022,42 +2882,25 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Yeni durum mesajı" +msgstr "Durum mesajları" #: actions/sitenoticeadminpanel.php:67 msgid "Edit site-wide message" msgstr "" -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Durum mesajını kaydederken hata oluÅŸtu." - #: 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 "Yeni durum mesajı" - #: 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 "Yeni durum mesajı" - #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "IM Ayarları" +msgstr "Profil ayarları" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4068,15 +2911,8 @@ 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 "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" - -#. TRANS: Form legend for SMS settings form. -#: actions/smssettings.php:111 -#, fuzzy -msgid "SMS address" -msgstr "IM adresi" +msgstr "" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4088,38 +2924,20 @@ msgstr "" 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Onayla" - #. 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 -#, fuzzy msgid "SMS preferences" -msgstr "Tercihler" +msgstr "Tercihler kaydedildi." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4128,62 +2946,24 @@ msgid "" "from my carrier." msgstr "" -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Tercihler kaydedildi." - -#. 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 -#, 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 "O onay kodu sizin için deÄŸil!" - -#. 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 "" +"EklemiÅŸ olduÄŸunuz IM adresine bir onay kodu gönderildi. %s tarafından size " +"mesaj yollanabilmesi için onaylamanız gerekmektedir." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Onaylama iptal edildi." - -#. 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 -#, fuzzy -msgid "The SMS phone number was removed." -msgstr "Bu adres kaldırılmıştı." +msgstr "Onay kodu yok." #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 @@ -4204,25 +2984,15 @@ msgid "" "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:407 +#: lib/adminpanelaction.php:408 msgid "Snapshots" msgstr "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Abonelikler" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Eposta adresi onayı" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." @@ -4264,49 +3034,23 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Ayarlar" - -#: actions/subedit.php:70 -#, fuzzy -msgid "You are not subscribed to that profile." -msgstr "Bize o profili yollamadınız" - -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "Abonelik oluÅŸturulamadı." +msgstr "Yeni abonelik eklenemedi." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "Böyle bir durum mesajı yok." - #: actions/subscribe.php:117 -#, fuzzy msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Bize o profili yollamadınız" - -#: actions/subscribe.php:145 -#, fuzzy -msgid "Subscribed" -msgstr "Abone ol" - -#: actions/subscribers.php:50 -#, fuzzy, php-format -msgid "%s subscribers" -msgstr "Abone olanlar" +msgstr "" #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "Bütün abonelikler" +msgstr "" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4335,16 +3079,6 @@ msgid "" "%) and be the first?" msgstr "" -#: actions/subscriptions.php:52 -#, fuzzy, php-format -msgid "%s subscriptions" -msgstr "Bütün abonelikler" - -#: actions/subscriptions.php:54 -#, fuzzy, php-format -msgid "%1$s subscriptions, page %2$d" -msgstr "Bütün abonelikler" - #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." msgstr "Sizin durumlarını takip ettiÄŸiniz kullanıcılar" @@ -4364,55 +3098,34 @@ msgid "" "automatically subscribe to people you already follow there." msgstr "" -#: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format -msgid "%s is not listening to anyone." -msgstr "%1$s %2$s'da durumunuzu takip ediyor" - -#: actions/subscriptions.php:208 -#, fuzzy -msgid "Jabber" -msgstr "JabberID yok." - #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 msgid "SMS" msgstr "" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "%s adli kullanicinin durum mesajlari" +msgstr "" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "%s için durum RSS beslemesi" +msgstr "" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "%s için durum RSS beslemesi" - -#: actions/tag.php:99 -#, fuzzy, php-format -msgid "Notice feed for tag %s (Atom)" -msgstr "%s için durum RSS beslemesi" +msgstr "" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "Böyle bir belge yok." +msgstr "" #: actions/tagother.php:65 #, php-format msgid "Tag %s" msgstr "" -#: actions/tagother.php:77 lib/userprofile.php:76 -#, fuzzy -msgid "User profile" -msgstr "Kullanıcının profili yok." - #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" @@ -4434,48 +3147,13 @@ msgid "" msgstr "" #: actions/tagother.php:200 -#, fuzzy msgid "Could not save tags." -msgstr "Avatar bilgisi kaydedilemedi" +msgstr "Profil kaydedilemedi." #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." msgstr "" -#: actions/tagrss.php:35 -#, fuzzy -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." -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" - -#: actions/unsandbox.php:72 -#, fuzzy -msgid "User is not sandboxed." -msgstr "Kullanıcının profili yok." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "Kullanıcının profili yok." - -#: actions/unsubscribe.php:77 -#, fuzzy -msgid "No profile ID in request." -msgstr "Yetkilendirme isteÄŸi yok!" - -#: actions/unsubscribe.php:98 -#, fuzzy -msgid "Unsubscribed" -msgstr "AboneliÄŸi sonlandır" - #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format msgid "" @@ -4531,20 +3209,9 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "Bütün abonelikler" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "Takip talebine izin verildi" - #: actions/useradminpanel.php:251 -#, fuzzy msgid "Invitations" -msgstr "Yer" +msgstr "" #: actions/useradminpanel.php:256 msgid "Invitations enabled" @@ -4559,17 +3226,13 @@ msgid "Authorize subscription" msgstr "Takip isteÄŸini onayla" #: 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 "" -"Lütfen bu kullanıcının durumunu takip etmek istediÄŸinizden emin olmak için " -"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 "" @@ -4579,18 +3242,16 @@ msgstr "Kabul et" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 -#, fuzzy msgid "Subscribe to this user" -msgstr "Takip talebine izin verildi" +msgstr "Bize o profili yollamadınız" #: actions/userauthorization.php:219 msgid "Reject" msgstr "Reddet" #: actions/userauthorization.php:220 -#, fuzzy msgid "Reject this subscription" -msgstr "Bütün abonelikler" +msgstr "Takip isteÄŸini onayla" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4644,19 +3305,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 "Avatar URLi '%s' okunamıyor" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "%s için yanlış resim türü" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "Profil ayarları" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4670,19 +3326,14 @@ 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 "Bütün abonelikler" +msgstr "" #: 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 "Bize o profili yollamadınız" - #: actions/usergroups.php:164 #, php-format msgid "Try [searching for groups](%%action.groupsearch%%) and joining them." @@ -4693,29 +3344,24 @@ 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 -#, 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 " @@ -4723,7 +3369,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 " @@ -4731,447 +3377,331 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy -msgid "Group join failed." -msgstr "Böyle bir durum mesajı yok." +#. 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/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Kullanıcı güncellenemedi." - -#: classes/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Böyle bir durum mesajı yok." - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Kullanıcı güncellenemedi." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Avatar bilgisi kaydedilemedi" - -#: 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 -msgid "Could not insert message." -msgstr "" - -#: classes/Message.php:71 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Cevap eklenirken veritabanı hatası: %s" +msgstr "Avatar eklemede hata oluÅŸtu" -#: classes/Notice.php:245 -#, fuzzy -msgid "Problem saving notice. Too long." -msgstr "Durum mesajını kaydederken hata oluÅŸtu." - -#: classes/Notice.php:249 -#, 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:276 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:283 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:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Durum mesajını kaydederken hata oluÅŸtu." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Durum mesajını kaydederken hata oluÅŸtu." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 +#: classes/Notice.php:1759 #, 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 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 -msgid "Already subscribed!" -msgstr "" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Yeni abonelik eklenemedi." -#: classes/Subscription.php:82 -#, fuzzy -msgid "User has blocked you." -msgstr "Kullanıcının profili yok." +#. 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 "Yeni abonelik eklenemedi." -#: classes/Subscription.php:167 -#, fuzzy -msgid "Not subscribed!" -msgstr "Bu kullanıcıyı zaten takip etmiyorsunuz!" +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Yeni abonelik eklenemedi." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Abonelik silinemedi." - -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Abonelik silinemedi." - -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." -msgstr "Avatar bilgisi kaydedilemedi" +msgstr "Kullanıcı güncellenemedi." -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Abonelik oluÅŸturulamadı." +msgstr "Profil kaydedilemedi." -#: classes/User_group.php:510 -#, fuzzy +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." -msgstr "Abonelik oluÅŸturulamadı." +msgstr "Kullanıcı güncellenemedi." -#: 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 "Abonelik oluÅŸturulamadı." - -#. 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 -#, fuzzy -msgid "Upload an avatar" -msgstr "Avatar güncellemede hata." - -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:123 -msgid "Change your password" -msgstr "" +msgstr "Profil kaydedilemedi." #. 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 "Kullanıcının profili yok." - -#. 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 -#, fuzzy, php-format -msgid "%1$s - %2$s" -msgstr "%1$s'in %2$s'deki durum mesajları " - #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "KiÅŸisel" - #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "Parolayı deÄŸiÅŸtir" +msgstr "" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Sunucuya yönlendirme yapılamadı: %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:468 msgid "Connect" msgstr "BaÄŸlan" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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:474 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" -msgstr "Geçersiz büyüklük." +msgstr "" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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 -msgctxt "MENU" -msgid "Logout" -msgstr "Çıkış" - #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "Kayıt" +msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "GiriÅŸ" - -#. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Help me!" -msgstr "Yardım" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" -msgstr "Yardım" - #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -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 -#, 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:605 msgid "Local views" msgstr "" -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, 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 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "Abonelikler" +msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Yardım" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Hakkında" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "SSS" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Gizlilik" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Kaynak" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Ä°letiÅŸim" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** [%%site.broughtby%%](%%site.broughtbyurl%%)\" tarafından " -"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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5182,58 +3712,50 @@ msgstr "" "licenses/agpl-3.0.html) lisansı ile korunan [StatusNet](http://status.net/) " "microbloglama yazılımının %s. versiyonunu kullanmaktadır." -#. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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 -#, fuzzy +#: lib/action.php:1247 msgid "After" -msgstr "« Sonra" +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:1257 msgid "Before" -msgstr "Önce »" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5241,11 +3763,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "" @@ -5275,112 +3797,48 @@ msgstr "" msgid "Unable to delete design setting." msgstr "" -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Eposta adresi onayı" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy +#: lib/adminpanelaction.php:352 msgctxt "MENU" msgid "Site" -msgstr "Yeni durum mesajı" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "Eposta adresi onayı" +msgstr "" #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "KiÅŸisel" +msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "Eposta adresi onayı" +msgstr "Onay kodu yok." #. 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 -msgid "Access configuration" -msgstr "Eposta adresi onayı" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "Eposta adresi onayı" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "Eposta adresi onayı" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy -msgid "Edit site notice" -msgstr "Yeni durum mesajı" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "Eposta adresi onayı" - #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" msgstr "" -"Web Sitenizin, blogunuzun ya da varsa baÅŸka bir sitedeki profilinizin adresi" - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "Kaynak" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 @@ -5389,10 +3847,8 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" msgstr "" -"Web Sitenizin, blogunuzun ya da varsa baÅŸka bir sitedeki profilinizin adresi" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5452,47 +3908,21 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Kaldır" - -#. TRANS: DT element label in attachment list. -#: lib/attachmentlist.php:88 -msgid "Attachments" -msgstr "" +msgstr "Geri al" #. 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 -#, fuzzy -msgid "Provider" -msgstr "Profil" - #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Parola kaydedildi." - -#: lib/authenticationplugin.php:235 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "Parola kaydedildi." - -#: lib/channel.php:157 lib/channel.php:177 -msgid "Command results" msgstr "" #: lib/channel.php:229 lib/mailhandler.php:142 @@ -5503,45 +3933,47 @@ msgstr "" msgid "Command failed" msgstr "" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +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 "Kullanıcının profili yok." - #. 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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Kullanıcı güncellenemedi." +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 -#, fuzzy, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Kullanıcı güncellenemedi." +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "%s için cevaplar" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5549,56 +3981,20 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "" -#: lib/command.php:323 -#, fuzzy -msgid "You are already a member of that group" -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 -#, fuzzy, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Sunucuya yönlendirme yapılamadı: %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 "OpenID formu yaratılamadı: %s" - -#. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 -#, fuzzy, php-format -msgid "Fullname: %s" -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:360 #, php-format -msgid "Location: %s" +msgid "%1$s joined group %2$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 -#, 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 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5607,147 +4003,99 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "EÄŸer lisansı kabul etmezseniz kayıt olamazsınız." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Zaten giriÅŸ yapmış durumdasıznız!" - #. 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 "Durum mesajları" +#: lib/command.php:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "" -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Durum mesajını kaydederken hata oluÅŸtu." +msgstr "Kullanıcı ayarlamada hata oluÅŸtu." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "%s için cevaplar" - -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "Durum mesajını kaydederken hata oluÅŸtu." - -#: lib/command.php:620 -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 "Bize o profili yollamadınız" - -#: 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" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" +msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "" + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "" -#: lib/command.php:685 -msgid "Notification off." -msgstr "" - -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." -msgstr "" - -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "AboneliÄŸi sonlandır" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "Bize o profili yollamadınız" - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Bize o profili yollamadınız" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Uzaktan abonelik" - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Uzaktan abonelik" -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "Bize o profili yollamadınız" - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Bize o profili yollamadınız" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5789,11 +4137,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Onay kodu yok." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5818,31 +4161,10 @@ msgstr "" msgid "Updates by SMS" msgstr "" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "BaÄŸlan" - -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "" -#: lib/designsettings.php:105 -#, fuzzy -msgid "Upload file" -msgstr "Yükle" - -#: lib/designsettings.php:109 -#, fuzzy -msgid "" -"You can upload your personal background image. The maximum file size is 2MB." -msgstr "" -"Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" - #: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" @@ -5851,11 +4173,6 @@ msgstr "" msgid "Disfavor this notice" msgstr "" -#: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy -msgid "Favor this notice" -msgstr "Böyle bir durum mesajı yok." - #: lib/favorform.php:140 msgid "Favor" msgstr "" @@ -5909,27 +4226,14 @@ msgstr "" 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 "" -"Web Sitenizin, blogunuzun ya da varsa baÅŸka bir sitedeki profilinizin adresi" - #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" +msgstr "" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın" - -#: lib/groupeditform.php:179 -#, fuzzy -msgid "" -"Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "BulunduÄŸunuz yer, \"Åžehir, Eyalet (veya Bölge), Ãœlke\" gibi" +msgstr "" #: lib/groupeditform.php:187 #, php-format @@ -5941,14 +4245,13 @@ msgid "Group" msgstr "" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "Böyle bir kullanıcı yok." +msgstr "" #: lib/groupnav.php:102 -#, fuzzy, php-format +#, php-format msgid "%s blocked users" -msgstr "Böyle bir kullanıcı yok." +msgstr "" #: lib/groupnav.php:108 #, php-format @@ -5956,9 +4259,8 @@ msgid "Edit %s group properties" msgstr "" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "Çıkış" +msgstr "GiriÅŸ" #: lib/groupnav.php:114 #, php-format @@ -5992,12 +4294,6 @@ msgstr "Bu sayfa kabul ettiÄŸiniz ortam türünde kullanılabilir deÄŸil" msgid "Unsupported image file format." msgstr "Desteklenmeyen görüntü dosyası biçemi." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "" -"Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?" - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Kısmi yükleme." @@ -6010,11 +4306,6 @@ msgstr "Dosya yüklemede sistem hatası." msgid "Not an image or corrupt file." msgstr "Bu bir resim dosyası deÄŸil ya da dosyada hata var" -#: lib/imagefile.php:122 -#, fuzzy -msgid "Lost our file." -msgstr "Böyle bir durum mesajı yok." - #: lib/imagefile.php:163 lib/imagefile.php:224 msgid "Unknown file type" msgstr "" @@ -6037,25 +4328,9 @@ msgstr "" msgid "Unknown inbox source %d." msgstr "" -#: lib/joinform.php:114 -#, fuzzy -msgid "Join" -msgstr "GiriÅŸ" - -#: lib/leaveform.php:114 -#, fuzzy -msgid "Leave" -msgstr "Kaydet" - -#: lib/logingroupnav.php:80 -#, fuzzy -msgid "Login with a username and password" -msgstr "Geçersiz kullanıcı adı veya parola." - #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" -msgstr "Yeni hesap oluÅŸtur" +msgstr "" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 @@ -6086,9 +4361,16 @@ 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 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6101,27 +4383,9 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s %2$s durum mesajlarınızı takip etmeye baÅŸladı.\n" -"\n" -"\t%3$s\n" -"\n" -"Kendisini durumsuz bırakmayın!,\n" -"%4$s.\n" - -#. TRANS: Profile info line in new-subscriber notification e-mail -#: lib/mail.php:269 -#, fuzzy, php-format -msgid "Bio: %s" -msgstr "Hakkında" - -#. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 -#, 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" @@ -6135,30 +4399,25 @@ 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 -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 " @@ -6175,13 +4434,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" @@ -6201,13 +4460,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'da durumunuzu takip ediyor" +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" @@ -6229,7 +4488,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" @@ -6237,13 +4496,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" @@ -6280,31 +4539,14 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 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 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "Desteklenmeyen görüntü dosyası biçemi." - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6335,25 +4577,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 "Kullanıcı güncellenemedi." +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 "" @@ -6366,116 +4607,79 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy -msgid "Available characters" -msgstr "6 veya daha fazla karakter" - -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Gönder" +msgstr "" -#: lib/noticeform.php:160 -#, fuzzy -msgid "Send a notice" -msgstr "Yeni durum mesajı" - -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "N'aber %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Profil kaydedilemedi." +msgstr "" -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Profil kaydedilemedi." - -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 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:567 -#, fuzzy -msgid "in context" -msgstr "İçerik yok!" - -#: lib/noticelist.php:602 -#, fuzzy -msgid "Repeated by" -msgstr "Yarat" - -#: lib/noticelist.php:629 -msgid "Reply to this notice" +#: lib/noticelist.php:502 +msgid "web" msgstr "" #: lib/noticelist.php:630 -#, fuzzy -msgid "Reply" -msgstr "cevapla" - -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "Durum mesajları" - -#: lib/nudgeform.php:116 -msgid "Nudge this user" +msgid "Reply to this notice" msgstr "" +#: lib/noticelist.php:631 +msgid "Reply" +msgstr "Cevaplar" + #: 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 "Yeni profil eklemede hata oluÅŸtu" @@ -6492,11 +4696,6 @@ msgstr "Uzaktaki profili güncellemede hata oluÅŸtu" msgid "Error inserting remote profile" msgstr "Uzak profil eklemede hata oluÅŸtu" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Yeni durum mesajı" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Yeni abonelik eklenemedi." @@ -6534,7 +4733,7 @@ msgstr "" msgid "Tags in %s's notices" msgstr "" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "" @@ -6550,11 +4749,6 @@ msgstr "Bütün abonelikler" msgid "Subscribers" msgstr "Abone olanlar" -#: lib/profileaction.php:161 -#, fuzzy -msgid "All subscribers" -msgstr "Abone olanlar" - #: lib/profileaction.php:191 msgid "User ID" msgstr "" @@ -6572,7 +4766,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6588,40 +4782,20 @@ msgstr "" msgid "Recent tags" msgstr "" -#: lib/publicgroupnav.php:88 -msgid "Featured" -msgstr "" - -#: lib/publicgroupnav.php:92 -#, fuzzy -msgid "Popular" -msgstr "KiÅŸi Arama" - -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Böyle bir belge yok." - -#: lib/repeatform.php:107 -#, fuzzy -msgid "Repeat this notice?" -msgstr "Böyle bir durum mesajı yok." +msgstr "" #: lib/repeatform.php:132 msgid "Yes" msgstr "" -#: lib/repeatform.php:132 -#, fuzzy -msgid "Repeat this notice" -msgstr "Böyle bir durum mesajı yok." - #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Böyle bir kullanıcı yok." +msgstr "" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." msgstr "" @@ -6629,16 +4803,6 @@ msgstr "" msgid "Sandbox" msgstr "" -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "Böyle bir kullanıcı yok." - -#: lib/searchaction.php:120 -#, fuzzy -msgid "Search site" -msgstr "Ara" - #: lib/searchaction.php:126 msgid "Keyword(s)" msgstr "" @@ -6647,15 +4811,6 @@ msgstr "" msgid "Search" msgstr "Ara" -#: lib/searchaction.php:162 -#, fuzzy -msgid "Search help" -msgstr "Ara" - -#: lib/searchgroupnav.php:80 -msgid "People" -msgstr "" - #: lib/searchgroupnav.php:81 msgid "Find people on this site" msgstr "" @@ -6677,24 +4832,8 @@ msgid "More..." msgstr "" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "Yeni durum mesajı" - -#: lib/silenceform.php:78 -#, fuzzy -msgid "Silence this user" -msgstr "Böyle bir kullanıcı yok." - -#: lib/subgroupnav.php:83 -#, fuzzy, php-format -msgid "People %s subscribes to" -msgstr "Uzaktan abonelik" - -#: lib/subgroupnav.php:91 -#, fuzzy, php-format -msgid "People subscribed to %s" -msgstr "Uzaktan abonelik" +msgstr "" #: lib/subgroupnav.php:99 #, php-format @@ -6724,6 +4863,42 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6732,51 +4907,18 @@ msgstr "" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "Böyle bir kullanıcı yok." - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -msgid "Unsilence this user" -msgstr "Böyle bir kullanıcı yok." - -#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 -msgid "Unsubscribe from this user" -msgstr "" - #: lib/unsubscribeform.php:137 msgid "Unsubscribe" msgstr "AboneliÄŸi sonlandır" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "Kullanıcının profili yok." - -#: lib/userprofile.php:117 -#, fuzzy -msgid "Edit Avatar" -msgstr "Avatar" - -#: 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 -#, fuzzy -msgid "Edit profile settings" -msgstr "Profil ayarları" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" @@ -6793,11 +4935,6 @@ msgstr "" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "Kullanıcının profili yok." - #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" @@ -6809,70 +4946,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "yaklaşık bir yıl önce" -#: lib/webcolor.php:82 -#, fuzzy, php-format -msgid "%s is not a valid color!" -msgstr "BaÅŸlangıç sayfası adresi geçerli bir URL deÄŸil." - #: 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/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po index de2f4e803b..de3b519668 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:49:58+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:39+0000\n" "Language-Team: Ukrainian\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\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,37 +89,38 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 +128,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:114 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 +170,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:120 -#: 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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 +267,7 @@ msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ профіль." #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,47 +326,48 @@ msgstr "ПрÑме Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð¾ %s" msgid "All the direct messages sent to %s" msgstr "Ð’ÑÑ– прÑмі Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ–Ñлані до %s" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±ÐµÐ· текÑту!" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "Ðадто довго. МакÑимальний розмір %d знаків." -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "Отримувача не знайдено." -#: actions/apidirectmessagenew.php:150 +#: 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 "Жодних ÑтатуÑів з таким 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 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 +383,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 +395,136 @@ 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 +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." msgstr "Ви вже Ñ” учаÑником цієї групи." -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "Ðдмін цієї групи заблокував Вашу приÑутніÑÑ‚ÑŒ в ній." -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 #, 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 +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 #, 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 +535,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 +611,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:463 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 +624,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 +641,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 "Ви не можете видалити ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ кориÑтувача." @@ -641,69 +654,75 @@ msgstr "Ви не можете видалити ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ кор msgid "No such notice." msgstr "Такого допиÑу немає." -#: actions/apistatusesretweet.php:83 +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." msgstr "Ðе можу повторити Ваш влаÑний допиÑ." -#: actions/apistatusesretweet.php:91 +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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:161 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:157 #: lib/mailhandler.php:60 #, php-format msgid "That's too long. Max notice size is %d chars." msgstr "Ðадто довго. МакÑимальний розмір допиÑу — %d знаків." -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." msgstr "Ðе знайдено." -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "%s загальна Ñтрічка" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "%s Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ уÑÑ–Ñ…!" @@ -718,16 +737,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 +803,7 @@ msgid "Preview" msgstr "ПереглÑд" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "Видалити" @@ -820,26 +843,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 +871,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 +880,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,14 +888,16 @@ 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 "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð¾ÑÑŒ невдачею." +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -882,8 +907,8 @@ msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð· #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "Такої групи немає." @@ -940,7 +965,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 +995,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 +1021,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:1307 msgid "There was a problem with your session token." msgstr "Виникли певні проблеми з токеном поточної ÑеÑÑ–Ñ—." @@ -1030,7 +1055,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 +1084,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:656 +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" msgstr "Видалити допиÑ" @@ -1099,45 +1124,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 +1180,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 +1248,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 +1356,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 +1427,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 +1486,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 +1519,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 +1745,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 +1892,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 +1924,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 +2033,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." @@ -2132,7 +2174,7 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2257,9 +2299,7 @@ msgstr "Ви повинні Ñпочатку увійти на Ñайт, аби 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 +#: actions/joingroup.php:141 #, php-format msgid "%1$s joined group %2$s" msgstr "%1$s приєднавÑÑ Ð´Ð¾ групи %2$s" @@ -2268,52 +2308,51 @@ msgstr "%1$s приєднавÑÑ Ð´Ð¾ групи %2$s" msgid "You must be logged in to leave a group." msgstr "Ви повинні Ñпочатку увійти на Ñайт, аби залишити групу." -#: actions/leavegroup.php:100 lib/command.php:373 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 #, php-format 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,14 +2360,17 @@ msgstr "" "З міркувань безпеки, будь лаÑка, введіть ще раз Ñ–Ð¼â€™Ñ Ñ‚Ð° пароль, перед тим Ñк " "змінювати налаштуваннÑ." -#: actions/login.php:270 +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "Увійти викориÑтовуючи Ñ–Ð¼â€™Ñ Ñ‚Ð° пароль." + +#: actions/login.php:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"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." @@ -2386,12 +2428,15 @@ msgstr "СкориÑтайтеÑÑŒ цією формою Ð´Ð»Ñ Ñтворенн msgid "New message" msgstr "Ðове повідомленнÑ" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Ðемає зміÑту!" @@ -2399,7 +2444,8 @@ msgstr "Ðемає зміÑту!" msgid "No recipient specified." msgstr "Жодного отримувача не визначено." -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2409,12 +2455,14 @@ msgstr "" msgid "Message sent" msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ–Ñлано" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "ПрÑме Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s надіÑлано." -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Помилка в Ajax" @@ -2422,7 +2470,7 @@ msgstr "Помилка в Ajax" msgid "New notice" msgstr "Ðовий допиÑ" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð½Ð°Ð´Ñ–Ñлано" @@ -2465,16 +2513,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 "" "Цей кориÑтувач не дозволив Ñебе «розштовхувати», або не підтвердив чи не " "налаштував преференції електронної пошти." @@ -2530,30 +2578,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Такий формат даних не підтримуєтьÑÑ." @@ -2579,7 +2627,7 @@ msgstr " (вільний ÑервіÑ)" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ URL-адреÑ" +msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ URL" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." @@ -2658,7 +2706,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 "Підтвердити" @@ -2670,11 +2718,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 "Паролі не Ñпівпадають." @@ -2695,7 +2743,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 "ШлÑÑ…" @@ -2899,43 +2947,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 "Де Ви живете, на кшталт «МіÑто, облаÑÑ‚ÑŒ (регіон), країна»" @@ -2978,7 +3026,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 знаків макÑимум)." @@ -2994,7 +3042,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." @@ -3076,7 +3124,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%%))" @@ -3089,7 +3137,7 @@ msgid "" "tool." msgstr "" "Це %%site.name%% — ÑÐµÑ€Ð²Ñ–Ñ [мікроблоґів](http://uk.wikipedia.org/wiki/" -"Мікроблоггінг), Ñкий працює на вільному програмному забезпеченні [StatusNet]" +"Мікроблогінг), Ñкий працює на вільному програмному забезпеченні [StatusNet]" "(http://status.net/)." #: actions/publictagcloud.php:57 @@ -3240,7 +3288,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 "Помилка в налаштуваннÑÑ… кориÑтувача." @@ -3248,40 +3296,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:507 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. " @@ -3289,35 +3337,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:494 +#: actions/register.php:518 +#, php-format +msgid "" +"I understand that content and data of %1$s are private and confidential." +msgstr "Я розумію, що зміÑÑ‚ Ñ– дані %1$s Ñ” приватними Ñ– конфіденційними." + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "ÐвторÑькі права на мої текÑти Ñ– файли належать %1$s." + +#. 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, " @@ -3326,7 +3396,7 @@ msgstr "" "Мої текÑти Ñ– файли доÑтупні під %s, окрім цих приватних даних: пароль, " "електронна адреÑа, адреÑа IM, телефонний номер." -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3359,7 +3429,7 @@ msgstr "" "ДÑкуємо, що зареєÑтрувалиÑÑŒ у наÑ, Ñ–, ÑподіваємоÑÑŒ, Вам ÑподобаєтьÑÑ Ð½Ð°Ñˆ " "ÑервіÑ." -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3440,7 +3510,7 @@ msgstr "Ви не можете повторювати Ñвої влаÑні до msgid "You already repeated that notice." msgstr "Ви вже повторили цей допиÑ." -#: actions/repeat.php:114 lib/noticelist.php:675 +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" msgstr "Повторено" @@ -3478,7 +3548,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 поки що нічого не " "отримав у відповідь." @@ -3495,8 +3565,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)." @@ -3514,7 +3584,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" @@ -3528,7 +3598,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 "СеÑÑ–Ñ—" @@ -3571,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 "Ім’Ñ" @@ -3582,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 "СтатиÑтика" @@ -3677,20 +3747,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%%%%) Ñ– не напиÑати щоÑÑŒ цікаве, що мало б ÑподобатиÑÑŒ цьому " "кориÑтувачеві :)" @@ -3750,7 +3820,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 "УчаÑники" @@ -3764,11 +3834,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." @@ -3778,12 +3848,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." @@ -3791,12 +3862,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 "Ðдміни" @@ -3873,8 +3944,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)." @@ -3888,10 +3959,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 @@ -3901,7 +3972,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 @@ -3954,7 +4025,7 @@ msgstr "Ðазва Ñайту" #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" -msgstr "Ðазва Вашого Ñайту, щоÑÑŒ на зразок «Мікроблоґи компанії ...»" +msgstr "Ðазва Ñайту, щоÑÑŒ на зразок «Мікроблоґи компанії...»" #: actions/siteadminpanel.php:229 msgid "Brought by" @@ -4008,7 +4079,7 @@ msgstr "ТекÑтові обмеженнÑ" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "МакÑимальна кількіÑÑ‚ÑŒ знаків у допиÑÑ–." +msgstr "МакÑимальна кількіÑÑ‚ÑŒ знаків у допиÑÑ– (0 — необмежено)." #: actions/siteadminpanel.php:278 msgid "Dupe limit" @@ -4038,11 +4109,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" @@ -4204,7 +4276,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 "Снепшоти" @@ -4264,7 +4336,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 "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ підпиÑку." @@ -4442,10 +4515,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 "Цього кориÑтувача блокувати неможливо." @@ -4493,7 +4562,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 @@ -4556,7 +4625,7 @@ msgstr "" "підпиÑатиÑÑŒ на допиÑи цього кориÑтувача. Якщо Ви не збиралиÑÑŒ підпиÑуватиÑÑŒ " "ні на чиї допиÑи, проÑто натиÑніть «Відмінити»." -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "ЛіцензіÑ" @@ -4617,32 +4686,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" @@ -4686,18 +4755,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, " @@ -4706,11 +4775,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 " @@ -4722,7 +4791,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 " @@ -4734,7 +4803,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 " @@ -4743,93 +4812,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:805 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:193 #, 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:265 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:270 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." @@ -4837,71 +4953,118 @@ msgstr "" "Дуже багато повідомлень за короткий термін; ходіть подихайте повітрÑм Ñ– " "повертайтеÑÑŒ за кілька хвилин." -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Проблема при збереженні допиÑу." -#: classes/Notice.php:965 +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "ЗадаєтьÑÑ Ð½ÐµÐ²Ñ–Ñ€Ð½Ð¸Ð¹ тип Ð´Ð»Ñ saveKnownGroups" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ інформацію про локальну групу." @@ -4941,199 +5104,199 @@ msgid "Other" msgstr "Інше" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 +#: lib/action.php:148 #, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "Сторінка без заголовку" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "Відправна Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Ñайту" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "ОÑобиÑте" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" msgstr "Змінити електронну адреÑу, аватару, пароль, профіль" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 +#: lib/action.php:465 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:468 msgid "Connect" msgstr "З’єднаннÑ" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "Ðдмін" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" msgstr "ЗапроÑити" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "Вийти" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "РеєÑтраціÑ" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "Увійти на Ñайт" -#: lib/action.php:481 +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "Увійти" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" msgstr "Допоможіть!" -#: lib/action.php:487 +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "Довідка" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "Пошук людей або текÑтів" -#: lib/action.php:493 +#: lib/action.php:516 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:538 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:605 msgid "Local views" msgstr "ОглÑд" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 +#: lib/action.php:675 msgid "Page notice" msgstr "Ð—Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ Ñторінки" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 +#: lib/action.php:778 msgid "Secondary site navigation" msgstr "ДругорÑдна Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ Ð¿Ð¾ Ñайту" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "Допомога" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "Про" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "ЧаП" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "Умови" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "ПриватніÑÑ‚ÑŒ" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "Джерело" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "Контакт" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "Бедж" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 #, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." @@ -5143,13 +5306,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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5161,55 +5324,55 @@ 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:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" msgstr "Ðазад" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" "Ð’ очікуванні кореневого елементу веб-Ñтрічки, отримали цілий документ XML." @@ -5218,11 +5381,11 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "Поки що не можу обробити віддалений контент." -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "Поки що не можу обробити вбудований XML контент." -#: lib/activityutils.php:240 +#: lib/activityutils.php:248 msgid "Can't handle embedded Base64 content yet." msgstr "Поки що не можу обробити вбудований контент Base64." @@ -5253,64 +5416,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:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." msgstr "" "API-реÑÑƒÑ€Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” дозвіл типу «читаннÑ-запиÑ», але у Ð²Ð°Ñ Ñ” лише доÑтуп Ð´Ð»Ñ " @@ -5443,11 +5606,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 "Змінювати пароль не дозволено" @@ -5463,44 +5626,53 @@ msgstr "Команду виконано" msgid "Command failed" msgstr "Команду не виконано" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" -msgstr "Такого допиÑу не Ñ–Ñнує" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "ДопиÑу з таким id не Ñ–Ñнує." -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "КориÑтувач не має оÑтаннього допиÑу" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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 +#: lib/command.php:130 #, php-format -msgid "Could not find a user with nickname %s" -msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ кориÑтувача з іменем %s" +msgid "Could not find a user with nickname %s." +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 +#: lib/command.php:150 #, php-format -msgid "Could not find a local user with nickname %s" -msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ локального кориÑтувача з іменем %s" +msgid "Could not find a local user with nickname %s." +msgstr "КориÑтувача з нікнеймом %s на даному Ñайті не знайдено." -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "Даруйте, але Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ще не завершено." -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" -msgstr "Спробу «розштовхати» %s зараховано" +msgid "Nudge sent to %s." +msgstr "Спробу «розштовхати» %s зараховано." -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5511,55 +5683,53 @@ msgstr "" "ПідпиÑчики: %2$s\n" "ДопиÑи: %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 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: 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. -#: lib/command.php:339 +#: lib/command.php:360 #, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "Ðе вдалоÑÑŒ долучити кориÑтувача %1$s до групи %2$s." +msgid "%1$s joined group %2$s." +msgstr "%1$s приєднавÑÑ Ð´Ð¾ групи %2$s." -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "Ðе вдалоÑÑŒ видалити кориÑтувача %1$s з групи %2$s." +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s залишив групу %2$s." #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "Веб-Ñторінка: %s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "Про мене: %s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5570,148 +5740,172 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." msgstr "" -"ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ довге — макÑимум Ñтановить %1$d Ñимволів, Ви надÑилаєте %2" -"$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. -#: lib/command.php:492 -#, php-format -msgid "Direct message to %s sent" -msgstr "ПрÑме Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s надіÑлано." - -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 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 +#: lib/command.php:554 #, php-format -msgid "Notice from %s repeated" -msgstr "Ð”Ð¾Ð¿Ð¸Ñ %s повторили" +msgid "Notice from %s repeated." +msgstr "ДопиÑу від %s вторували." -#: lib/command.php:531 +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." msgstr "Помилка при повторенні допиÑу." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð½Ð°Ð´Ñ‚Ð¾ довгий — макÑимум %d знаків, а ви надÑилаєте %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð½Ð°Ð´Ñ‚Ð¾ довгий — макÑимум %1$d Ñимволів, а Ви надÑилаєте %2$d." -#: lib/command.php:571 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 #, php-format -msgid "Reply to %s sent" -msgstr "Відповідь до %s надіÑлано" +msgid "Reply to %s sent." +msgstr "Відповідь Ð´Ð»Ñ %s надіÑлано." -#: lib/command.php:573 +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "Проблема при збереженні допиÑу." -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" -msgstr "Зазначте Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, до Ñкого бажаєте підпиÑатиÑÑŒ" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "Зазначте Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, до Ñкого бажаєте підпиÑатиÑÑŒ." -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "Ðе можу підпиÑатиÑÑŒ до профілю OMB за командою." -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" -msgstr "ПідпиÑано до %s" +msgid "Subscribed to %s." +msgstr "Тепер Ви підпиÑані на допиÑи %s." -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "Зазначте Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, від Ñкого бажаєте відпиÑатиÑÑŒ" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "Зазначте Ñ–Ð¼â€™Ñ ÐºÐ¾Ñ€Ð¸Ñтувача, від Ñкого бажаєте відпиÑатиÑÑŒ." -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" -msgstr "ВідпиÑано від %s" +msgid "Unsubscribed from %s." +msgstr "ПідпиÑку на допиÑи від %s ÑкаÑовано." -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ ще не завершено." -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." msgstr "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¾." -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "Ðе можна вимкнути ÑповіщеннÑ." -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." msgstr "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¾." -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "Ðе можна увімкнути ÑповіщеннÑ." -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "Команду входу відключено" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "Команду входу відключено." -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -"Це поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викориÑтати лише раз, воно дійÑне протÑгом 2 хвилин: %s" +"Дане поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викориÑтати лише раз, воно дійÑне протÑгом 2 хвилин: %s." -#: lib/command.php:761 +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 #, php-format -msgid "Unsubscribed %s" -msgstr "ВідпиÑано %s" +msgid "Unsubscribed %s." +msgstr "ПідпиÑку %s ÑкаÑовано." -#: lib/command.php:778 +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." msgstr "Ви не маєте жодних підпиÑок." -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Ви підпиÑані до цієї оÑоби:" msgstr[1] "Ви підпиÑані до цих людей:" msgstr[2] "Ви підпиÑані до цих людей:" -#: lib/command.php:800 +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." msgstr "До Ð’Ð°Ñ Ð½Ñ–Ñ…Ñ‚Ð¾ не підпиÑаний." -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Ð¦Ñ Ð¾Ñоба Ñ” підпиÑаною до ВаÑ:" msgstr[1] "Ці люди підпиÑані до ВаÑ:" msgstr[2] "Ці люди підпиÑані до ВаÑ:" -#: lib/command.php:822 +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." msgstr "Ви не Ñ” учаÑником жодної групи." -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Ви Ñ” учаÑником групи:" msgstr[1] "Ви Ñ” учаÑником таких груп:" msgstr[2] "Ви Ñ” учаÑником таких груп:" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5769,7 +5963,7 @@ msgstr "" "reply #<notice_id> — відповіÑти на допиÑ\n" "reply <nickname> — відповіÑти на оÑтанній Ð´Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ñ€Ð¸Ñтувача\n" "join <group> — приєднатиÑÑ Ð´Ð¾ групи\n" -"login — отримати поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ у веб-інтерфейÑ\n" +"login — отримати поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð²Ñ…Ð¾Ð´Ñƒ до веб-інтерфейÑу\n" "drop <group> — залишити групу\n" "stats — отримати ÑтатиÑтику\n" "stop — те Ñаме що Ñ– 'off'\n" @@ -5902,7 +6096,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" @@ -6063,17 +6257,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 @@ -6082,8 +6276,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" @@ -6109,19 +6313,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" @@ -6143,18 +6347,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 "" @@ -6162,13 +6366,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 " @@ -6196,13 +6400,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" @@ -6236,13 +6440,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" @@ -6280,7 +6484,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" @@ -6291,13 +6495,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" @@ -6360,9 +6564,9 @@ msgstr "" "Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¸ долучити кориÑтувачів до розмови. Такі Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ð°Ñ‡Ð¸Ñ‚Ðµ " "лише Ви." -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr "від" +msgstr "через" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6418,24 +6622,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 не підтримуєтьÑÑ Ñк тип файлів на цьому Ñервері." @@ -6448,11 +6652,11 @@ msgstr "ÐадіÑлати прÑмий допиÑ" msgid "To" msgstr "До" -#: lib/messageform.php:159 lib/noticeform.php:185 +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" msgstr "ЛишилоÑÑŒ знаків" -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "Так!" @@ -6461,28 +6665,28 @@ msgstr "Так!" msgid "Send a notice" msgstr "ÐадіÑлати допиÑ" -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Що нового, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "ВклаÑти" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "ВклаÑти файл" -#: lib/noticeform.php:212 +#: lib/noticeform.php:213 msgid "Share my location" msgstr "Показувати міÑцезнаходженнÑ." -#: lib/noticeform.php:215 +#: lib/noticeform.php:216 msgid "Do not share my location" msgstr "Приховувати моє міÑцезнаходженнÑ" -#: lib/noticeform.php:216 +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" @@ -6491,51 +6695,55 @@ 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:567 +#: lib/noticelist.php:502 +msgid "web" +msgstr "веб" + +#: lib/noticelist.php:568 msgid "in context" msgstr "в контекÑÑ‚Ñ–" -#: lib/noticelist.php:602 +#: lib/noticelist.php:603 msgid "Repeated by" msgstr "Повторено" -#: lib/noticelist.php:629 +#: lib/noticelist.php:630 msgid "Reply to this notice" msgstr "ВідповіÑти на цей допиÑ" -#: lib/noticelist.php:630 +#: lib/noticelist.php:631 msgid "Reply" msgstr "ВідповіÑти" -#: lib/noticelist.php:674 +#: lib/noticelist.php:675 msgid "Notice repeated" msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð¸Ð»Ð¸" @@ -6608,7 +6816,7 @@ msgstr "ÐадіÑлані вами повідомленнÑ" msgid "Tags in %s's notices" msgstr "Теґи у допиÑах %s" -#: lib/plugin.php:114 +#: lib/plugin.php:115 msgid "Unknown" msgstr "Ðевідомо" @@ -6634,18 +6842,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 "Метод не виконуєтьÑÑ." @@ -6669,7 +6877,7 @@ msgstr "ПоÑтаті" msgid "Popular" msgstr "ПопулÑрне" -#: lib/redirectingaction.php:94 +#: lib/redirectingaction.php:95 msgid "No return-to arguments." msgstr "Ðемає аргументів return-to." @@ -6688,9 +6896,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 "КориÑтувача Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾ÐºÐ¾Ñ€Ð¸Ñтувацького режиму не визначено." @@ -6788,6 +6996,58 @@ 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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "Помилка при збереженні теми." + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"Тема міÑтить неприпуÑтиме Ñ–Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ або теки. ВикориÑтовуйте літери " +"Ñтандарту ASCII, цифри, знаки підкреÑÐ»ÐµÐ½Ð½Ñ Ñ‚Ð° мінуÑу." + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" +"У темі міÑÑ‚ÑÑ‚ÑŒÑÑ Ñ„Ð°Ð¹Ð»Ð¸, що мають небезпечні розширеннÑ; це може виÑвитиÑÑ " +"небезпечним." + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "Тема міÑтить файл типу «.%s», Ñкий Ñ” неприпуÑтимим." + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "Помилка при відкритті архіву з темою." + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "Топ-допиÑувачі" @@ -6816,11 +7076,6 @@ msgstr "ВідпиÑатиÑÑŒ від цього кориÑтувача" msgid "Unsubscribe" msgstr "ВідпиÑатиÑÑŒ" -#: lib/usernoprofileexception.php:58 -#, php-format -msgid "User %s (%d) has no profile record." -msgstr "КориÑтувач %s (%d) не має запиÑу профілю." - #: lib/userprofile.php:117 msgid "Edit Avatar" msgstr "Ðватара" @@ -6868,56 +7123,56 @@ msgid "Moderator" msgstr "Модератор" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "мить тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "хвилину тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "годину тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "день тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "міÑÑць тому" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "рік тому" @@ -6930,9 +7185,3 @@ msgstr "%s Ñ” неприпуÑтимим кольором!" #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." msgstr "%s неприпуÑтимий колір! ВикориÑтайте 3 або 6 знаків (HEX-формат)" - -#: lib/xmppmanager.php:403 -#, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "" -"ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ‚Ð¾ довге — макÑимум %1$d Ñимволів, а Ви надÑилаєте %2$d." diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po index 9f6fd0b166..bd15203297 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-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:50:02+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:41+0000\n" "Language-Team: Vietnamese\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: MediaWiki 1.17alpha (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: vi\n" "X-Message-Group: out-statusnet\n" @@ -20,20 +21,12 @@ 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" - -#. TRANS: Page notice -#: actions/accessadminpanel.php:67 -#, fuzzy -msgid "Site access settings" -msgstr "Thay đổi hình đại diện" +msgstr "Truy cập" #. TRANS: Form legend for registration form. #: actions/accessadminpanel.php:161 -#, fuzzy msgid "Registration" msgstr "Äăng ký" @@ -44,7 +37,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Æ°" @@ -54,12 +46,6 @@ msgstr "Riêng tÆ°" msgid "Make registration invitation only." msgstr "" -#. TRANS: Checkbox label for configuring site as invite only. -#: actions/accessadminpanel.php:176 -#, fuzzy -msgid "Invite only" -msgstr "ThÆ° má»i" - #. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations) #: actions/accessadminpanel.php:183 msgid "Disable new registrations." @@ -67,15 +53,8 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -msgstr "Ban user" - -#. TRANS: Title / tooltip for button to save access settings in site admin panel -#: actions/accessadminpanel.php:202 -#, fuzzy -msgid "Save access settings" -msgstr "Thay đổi hình đại diện" +msgstr "Äóng" #. TRANS: Button label to save e-mail preferences. #. TRANS: Button label to save IM preferences. @@ -84,84 +63,53 @@ 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/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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -#, fuzzy, php-format -msgid "%1$s and friends, page %2$d" -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:114 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 -#, 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 -#, 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 -#, 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,85 +117,45 @@ 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:120 -#: actions/apitimelinehome.php:121 -#, php-format -msgid "Updates from %1$s and friends on %2$s!" -msgstr "" - -#: actions/apiaccountratelimitstatus.php:70 -#: actions/apiaccountupdatedeliverydevice.php:93 -#: 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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "Không thể cập nhật thành viên." - #: actions/apiaccountupdateprofile.php:112 #: actions/apiaccountupdateprofilebackgroundimage.php:194 #: actions/apiaccountupdateprofilecolors.php:185 @@ -258,14 +166,9 @@ msgstr "Không thể cập nhật thành viên." msgid "User has no profile." msgstr "NgÆ°á»i dùng không có thông tin." -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -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:131 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 @@ -275,273 +178,173 @@ msgid "" "current configuration." msgstr "" -#: 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 -#, fuzzy -msgid "Unable to save your design settings." -msgstr "Không thể lÆ°u thông tin Twitter của bạn!" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "Không thể cập nhật thành viên." - #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "Không thể cập nhật thành viên." - -#: actions/apiblockcreate.php:126 -msgid "Block user failed." -msgstr "" - -#: actions/apiblockdestroy.php:114 -msgid "Unblock user failed." msgstr "" #: actions/apidirectmessage.php:89 -#, fuzzy, php-format +#, php-format msgid "Direct messages from %s" -msgstr "Tin nhắn riêng" - -#: actions/apidirectmessage.php:93 -#, fuzzy, php-format -msgid "All the direct messages sent from %s" msgstr "Bạn có tin nhắn riêng từ %s" #: actions/apidirectmessage.php:101 -#, fuzzy, php-format -msgid "Direct messages to %s" -msgstr "Tin nhắn riêng" - -#: actions/apidirectmessage.php:105 #, php-format -msgid "All the direct messages sent to %s" -msgstr "" +msgid "Direct messages to %s" +msgstr "Bạn có tin nhắn riêng từ %s" -#: actions/apidirectmessagenew.php:126 -#, fuzzy -msgid "No message text!" -msgstr "Không có tin nhắn nào." - -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "Quá dài. Tối Ä‘a là 140 ký tá»±." +msgstr "" +"Bạn có thể cập nhật hồ sÆ¡ cá nhân tại đây để má»i ngÆ°á»i có thể biết thông tin " +"vá» bạn." -#: actions/apidirectmessagenew.php:146 -#, fuzzy +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." -msgstr "Không tìm thấy user." +msgstr "Không tìm thấy mã xác nhận." -#: actions/apidirectmessagenew.php:150 +#: 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 "Không tìm thấy trạng thái nào tÆ°Æ¡ng ứng vá»›i ID đó." -#: actions/apifavoritecreate.php:119 -#, 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." msgstr "Không thể tạo favorite." -#: actions/apifavoritedestroy.php:122 -#, fuzzy +#: actions/apifavoritedestroy.php:123 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 -#, 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." -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 #, php-format msgid "Could not follow user: %s is already on your list." 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/apifriendshipsdestroy.php:109 -#, fuzzy -msgid "Could not unfollow user: User 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/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "Không thể cập nhật thành viên." +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 -#, fuzzy msgid "Could not determine source user." -msgstr "Không thể lấy lại các tin nhắn Æ°a thích" +msgstr "Không thể cập nhật thành viên." #: actions/apifriendshipsshow.php:142 -#, fuzzy msgid "Could not find target user." -msgstr "Không tìm thấy bất kỳ trạng thái nào." +msgstr "Không thể cập nhật thành viên." -#: 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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "Lý lịch quá dài (không quá 140 ký tá»±)" +msgstr "Tên khu vá»±c quá dài (không quá %d 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 -#, fuzzy, php-format +#: actions/apigroupcreate.php:267 +#, php-format msgid "Invalid alias: \"%s\"." -msgstr "Trang chủ '%s' không hợp lệ" +msgstr "Äịa chỉ email không đúng:%s" -#: actions/apigroupcreate.php:275 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 -#, fuzzy +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." -msgstr "Bạn đã theo những ngÆ°á»i này:" +msgstr "Bạn chÆ°a cập nhật thông tin riêng" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." msgstr "" -#: actions/apigroupjoin.php:138 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 -#, 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 -#, 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 -#, 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 -#, fuzzy, php-format +#: actions/apigrouplist.php:108 +#, 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" +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 -#, fuzzy, php-format +#: actions/apigrouplistall.php:92 actions/usergroups.php:63 +#, php-format msgid "%s groups" -msgstr "%s và nhóm" - -#: actions/apigrouplistall.php:95 -#, fuzzy, php-format -msgid "groups on %s" -msgstr "Mã nhóm" +msgstr "Há»™p thÆ° Ä‘i của %s" #: actions/apioauthauthorize.php:101 msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "Kích thÆ°á»›c không hợp lệ." - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -549,21 +352,6 @@ msgstr "Kích thÆ°á»›c không hợp lệ." msgid "There was a problem with your session token. Try again, please." msgstr "Có lá»—i xảy ra khi thao tác. Hãy thá»­ lại lần nữa." -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ." - -#: actions/apioauthauthorize.php:159 -#, fuzzy -msgid "Database error deleting OAuth application user." -msgstr "Lá»—i xảy ra khi tạo thành viên." - -#: actions/apioauthauthorize.php:185 -#, fuzzy -msgid "Database error inserting OAuth application user." -msgstr "Lá»—i cÆ¡ sở dữ liệu khi chèn trả lá»i: %s" - #: actions/apioauthauthorize.php:214 #, php-format msgid "" @@ -605,13 +393,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:463 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 +406,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 +423,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." @@ -649,100 +436,65 @@ msgstr "Bạn đã không xóa trạng thái của những ngÆ°á»i khác." msgid "No such notice." msgstr "Không có tin nhắn nào." -#: actions/apistatusesretweet.php:83 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." -msgstr "Bạn không thể đăng ký nếu không đồng ý các Ä‘iá»u khoản." +msgstr "Không thể xóa tin nhắn này." -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 msgid "Already repeated that notice." -msgstr "Xóa tin nhắn" +msgstr "Không thể xóa tin nhắn này." -#: actions/apistatusesshow.php:138 -#, 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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, fuzzy, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "Quá dài. Tối Ä‘a là 140 ký tá»±." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." +msgstr "" -#: actions/apistatusesupdate.php:202 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:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." msgstr "" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy -msgid "Unsupported format." -msgstr "Không há»— trợ kiểu file ảnh này." - -#: actions/apitimelinefavorites.php:109 -#, 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 -#, 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 -#, 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/apitimelinefavorites.php:110 #, php-format -msgid "%1$s updates that reply to updates from %2$s / %3$s." -msgstr "" +msgid "%1$s / Favorites from %2$s" +msgstr "Trạng thái của %1$s vào %2$s" -#: actions/apitimelinepublic.php:107 actions/publicrss.php:103 -#, fuzzy, php-format -msgid "%s public timeline" -msgstr "Dòng tin công cá»™ng" +#: actions/apitimelinefavorites.php:119 +#, php-format +msgid "%1$s updates favorited by %2$s / %2$s." +msgstr "Dòng tin nhắn cho %s" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinementions.php:118 +#, php-format +msgid "%1$s / Updates mentioning %2$s" +msgstr "Trạng thái của %1$s vào %2$s" + +#: 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!" -#: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format -msgid "Repeated to %s" -msgstr "Trả lá»i cho %s" - -#: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format -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 -#, 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." -msgstr "Không có tài liệu nào." +msgstr "Không có tin nhắn nào." #: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73 #: actions/editgroup.php:84 actions/groupdesignsettings.php:84 @@ -765,19 +517,11 @@ msgstr "Kích thÆ°á»›c không hợp lệ." msgid "Avatar" msgstr "Hình đại diện" -#: actions/avatarsettings.php:78 -#, fuzzy, php-format -msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "" -"Bạn có thể cập nhật hồ sÆ¡ cá nhân tại đây để má»i ngÆ°á»i có thể biết thông tin " -"vá» bạn." - #: 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 "Hồ sÆ¡ ở nÆ¡i khác không khá»›p vá»›i hồ sÆ¡ này của bạn" +msgstr "NgÆ°á»i dùng không có thông tin." #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -795,25 +539,14 @@ msgid "Preview" msgstr "Xem trÆ°á»›c" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 -#, fuzzy +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" -msgstr "Xóa tin nhắn" +msgstr "Xóa" #: actions/avatarsettings.php:166 actions/grouplogo.php:236 msgid "Upload" msgstr "Tải file" -#: actions/avatarsettings.php:231 actions/grouplogo.php:289 -#, fuzzy -msgid "Crop" -msgstr "Nhóm" - -#: actions/avatarsettings.php:305 -#, fuzzy -msgid "No file uploaded." -msgstr "Upload từng phần." - #: actions/avatarsettings.php:332 msgid "Pick a square area of the image to be your avatar" msgstr "" @@ -830,22 +563,11 @@ msgstr "Hình đại diện đã được cập nhật." msgid "Failed updating avatar." msgstr "Cập nhật hình đại diện không thành công." -#: actions/avatarsettings.php:397 -#, fuzzy -msgid "Avatar deleted." -msgstr "Hình đại diện đã được cập nhật." - -#: actions/block.php:69 -#, fuzzy -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,44 +579,24 @@ 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 "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 -#, fuzzy -msgid "Do not block this user" -msgstr "Bá» chặn ngÆ°á»i dùng này" - -#. 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/deletenotice.php:154 actions/deleteuser.php:159 -#: actions/groupblock.php:185 -#, fuzzy -msgctxt "BUTTON" -msgid "Yes" -msgstr "Có" +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 "Ban user" +msgstr "Bá» chặn ngÆ°á»i dùng này" -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -904,31 +606,20 @@ msgstr "" #: 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 -#, fuzzy +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." -msgstr "Không có tin nhắn nào." - -#: actions/blockedfromgroup.php:97 -#, fuzzy, php-format -msgid "%s blocked profiles" -msgstr "Hồ sÆ¡" +msgstr "Không có user nào." #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s và bạn bè" +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 "Bá» chặn ngÆ°á»i dùng này" - #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" msgstr "Bá» chặn" @@ -939,9 +630,9 @@ msgstr "Bá» chặn ngÆ°á»i dùng này" #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 -#, fuzzy, php-format +#, php-format msgid "Post to %s" -msgstr "Mã nhóm" +msgstr "Trả lá»i cho %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." @@ -957,9 +648,9 @@ msgstr "Mã xác nhận này không phải của bạn!" #. 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 "Không nhận dạng kiểu địa chỉ %s" +msgstr "" #. TRANS: Client error for an already confirmed email/jabbel/sms address. #: actions/confirmaddress.php:96 @@ -988,9 +679,8 @@ msgid "Couldn't delete email confirmation." msgstr "Không thể xóa email xác nhận." #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "Xác nhận địa chỉ" +msgstr "Äã xác nhận địa chỉ này." #: actions/confirmaddress.php:161 #, php-format @@ -998,42 +688,17 @@ msgid "The address \"%s\" has been confirmed for your account." msgstr "Äịa chỉ \"%s\" đã được xác nhận từ tài khoản của bạn." #: actions/conversation.php:99 -#, fuzzy msgid "Conversation" -msgstr "Không có mã số xác nhận." +msgstr "Thành phố" #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" msgstr "Tin nhắn" -#: actions/deleteapplication.php:63 -#, fuzzy -msgid "You must be logged in to delete an application." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - #: actions/deleteapplication.php:71 -#, fuzzy msgid "Application not found." -msgstr "Tin nhắn không có hồ sÆ¡ cá nhân" - -#: actions/deleteapplication.php:78 actions/editapplication.php:77 -#: actions/showapplication.php:94 -#, fuzzy -msgid "You are not the owner of this application." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" - -#: actions/deleteapplication.php:102 actions/editapplication.php:127 -#: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 -#, fuzzy -msgid "There was a problem with your session token." -msgstr "Có lá»—i xảy ra khi thao tác. Hãy thá»­ lại lần nữa." - -#: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy -msgid "Delete application" -msgstr "Không có tin nhắn nào." +msgstr "Không tìm thấy mã xác nhận." #: actions/deleteapplication.php:149 msgid "" @@ -1042,25 +707,13 @@ msgid "" "connections." msgstr "" -#. TRANS: Submit button title for 'No' when deleting an application. -#: actions/deleteapplication.php:158 -#, fuzzy -msgid "Do not delete this application" -msgstr "Không thể xóa tin nhắn này." - -#. TRANS: Submit button title for 'Yes' when deleting an application. -#: actions/deleteapplication.php:164 -#, fuzzy -msgid "Delete this application" -msgstr "Xóa tin nhắn" - #. 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:63 +#: lib/adminpanelaction.php:73 lib/profileformaction.php:64 #: lib/settingsaction.php:72 msgid "Not logged in." msgstr "ChÆ°a đăng nhập." @@ -1070,11 +723,10 @@ msgid "Can't delete this notice." msgstr "Không thể xóa tin nhắn này." #: actions/deletenotice.php:103 -#, fuzzy msgid "" "You are about to permanently delete a notice. Once this is done, it cannot " "be undone." -msgstr "Bạn muốn xóa tin nhắn này? Sau khi xóa, bạn không thể lấy lại được." +msgstr "" #: actions/deletenotice.php:109 actions/deletenotice.php:141 msgid "Delete notice" @@ -1084,32 +736,9 @@ msgstr "Xóa tin nhắn" msgid "Are you sure you want to delete this notice?" msgstr "Bạn có chắc chắn là muốn xóa tin nhắn này không?" -#. TRANS: Submit button title for 'No' when deleting a notice. -#: actions/deletenotice.php:151 -#, fuzzy -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:656 -#, fuzzy -msgid "Delete this notice" -msgstr "Xóa tin nhắn" - -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "Không thể cập nhật thành viên." - -#: actions/deleteuser.php:74 -#, fuzzy -msgid "You can only delete local users." -msgstr "Bạn đã không xóa trạng thái của những ngÆ°á»i khác." - #: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy msgid "Delete user" -msgstr "Xóa tin nhắn" +msgstr "Xóa" #: actions/deleteuser.php:136 msgid "" @@ -1117,12 +746,6 @@ msgid "" "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 "Xóa tin nhắn" - #. 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 @@ -1134,117 +757,80 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, fuzzy -msgid "Invalid logo URL." -msgstr "Kích thÆ°á»›c không hợp lệ." - -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, 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." +msgstr "" -#: actions/designadminpanel.php:376 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "Thay đổi mật khẩu của bạn" - -#: actions/designadminpanel.php:381 -#, fuzzy -msgid "Site logo" -msgstr "ThÆ° má»i" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" msgstr "Thay đổi" -#: actions/designadminpanel.php:405 -#, 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 -#, fuzzy -msgid "Change background image" -msgstr "Background Theme:" - -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 -#: lib/designsettings.php:178 -#, fuzzy -msgid "Background" -msgstr "Background Theme:" - -#: actions/designadminpanel.php:428 -#, fuzzy, php-format -msgid "" -"You can upload a background image for the site. The maximum file size is %1" -"$s." +#: 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:491 actions/designadminpanel.php:574 +#: lib/designsettings.php:178 +msgid "Background" msgstr "" -"Bạn có thể cập nhật hồ sÆ¡ cá nhân tại đây để má»i ngÆ°á»i có thể biết thông tin " -"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 -#, fuzzy +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" -msgstr "Background Theme:" +msgstr "" -#: actions/designadminpanel.php:491 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 -#, fuzzy -msgid "Content" -msgstr "Kết nối" - -#: actions/designadminpanel.php:526 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 -#, fuzzy -msgid "Links" -msgstr "Äăng nhập" +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: 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,84 +840,31 @@ msgstr "" msgid "Save" msgstr "LÆ°u" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -#, fuzzy +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" -msgstr "LÆ°u" - -#: actions/disfavor.php:81 -#, fuzzy -msgid "This notice 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/disfavor.php:94 -#, fuzzy -msgid "Add to favorites" -msgstr "Tìm kiếm các tin nhắn Æ°a thích của %s" - -#: actions/doc.php:158 -#, fuzzy, php-format -msgid "No such document \"%s\"" -msgstr "Không có tài liệu nào." - -#: actions/editapplication.php:54 -#, fuzzy -msgid "Edit Application" -msgstr "Tin nhắn không có hồ sÆ¡ cá nhân" - -#: actions/editapplication.php:66 -#, fuzzy -msgid "You must be logged in to edit an application." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 -#: actions/showapplication.php:87 -#, fuzzy -msgid "No such application." -msgstr "Không có tin nhắn nào." - -#: actions/editapplication.php:161 -msgid "Use this form to edit your application." msgstr "" -#: actions/editapplication.php:177 actions/newapplication.php:159 -#, fuzzy -msgid "Name is required." -msgstr "Cùng mật khẩu ở trên. Bắt buá»™c." +#: actions/disfavor.php:94 +msgid "Add to favorites" +msgstr "Ưa thích" -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "Tên đầy đủ quá dài (tối Ä‘a là 255 ký tá»±)." +#: actions/doc.php:158 +#, php-format +msgid "No such document \"%s\"" +msgstr "Không có tin nhắn nào." -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "Biệt hiệu này đã dùng rồi. Hãy nhập biệt hiệu khác." - -#: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy -msgid "Description is required." -msgstr "Mô tả" +#: actions/editapplication.php:54 +msgid "Edit Application" +msgstr "" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "Trang chủ không phải là URL" - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "" -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "Tên khu vá»±c quá dài (không quá 255 ký tá»±)." - #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." msgstr "" @@ -1344,61 +877,29 @@ msgstr "" msgid "Callback URL is not valid." msgstr "" -#: actions/editapplication.php:258 -#, fuzzy -msgid "Could not update application." -msgstr "Không thể cập nhật thành viên." - #: actions/editgroup.php:56 -#, fuzzy, php-format +#, php-format msgid "Edit %s group" -msgstr "%s và nhóm" - -#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -#, fuzzy -msgid "You must be logged in to create a group." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: 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 "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " +msgstr "Há»™p thÆ° Ä‘i của %s" #: actions/editgroup.php:158 msgid "Use this form to edit the group." msgstr "" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "Lý lịch quá dài (không quá 140 ký tá»±)" +msgstr "Tên khu vá»±c quá dài (không quá 255 ký tá»±)." #: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "Trang chủ '%s' không hợp lệ" - -#: actions/editgroup.php:258 -#, fuzzy -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 -#, fuzzy -msgid "Could not create aliases." -msgstr "Không thể tạo favorite." - -#: actions/editgroup.php:280 -#, fuzzy -msgid "Options saved." -msgstr "Äã lÆ°u các Ä‘iá»u chỉnh." +msgstr "Äịa chỉ email không đúng:%s" #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "Thiết lập địa chỉ email" +msgstr "Các thiết lập cho Hồ sÆ¡ cá nhân" #. TRANS: E-mail settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -1407,13 +908,6 @@ msgstr "Thiết lập địa chỉ email" msgid "Manage how you get email from %%site.name%%." msgstr "Bạn nhận email từ %%site.name%% nhÆ° thế nào." -#. 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 "Äịa chỉ email" - #. TRANS: Form note in e-mail settings form. #: actions/emailsettings.php:112 msgid "Current confirmed email address." @@ -1427,10 +921,9 @@ msgstr "Äã xác nhận địa chỉ này." #: 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 "Xóa" +msgstr "Khôi phục" #: actions/emailsettings.php:122 msgid "" @@ -1440,37 +933,18 @@ msgstr "" "Äang đợi xác nhận đến địa chỉ này. Hãy kiểm tra há»™p thÆ° đến (hoặc thÆ° rác) " "để nhận tin nhắn và lá»i hÆ°á»›ng dẫn." -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "Hủy" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 -#, fuzzy msgid "Email address, like \"UserName@example.org\"" -msgstr "Äịa chỉ email GTalk, Ví dụ: \"UserName@example.org\"" +msgstr "" #. 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 "Thêm" - -#. 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 "" #. TRANS: Form instructions for incoming e-mail form in e-mail settings. @@ -1488,16 +962,14 @@ msgstr "Tạo má»™t địa chỉ email má»›i để Ä‘Æ°a tin nhắn lên; và x #. 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 "MÆ¡Ìi" +msgstr "" #. TRANS: Form legend for e-mail preferences form. #: actions/emailsettings.php:174 -#, fuzzy msgid "Email preferences" -msgstr "Tính năng" +msgstr "Äịa chỉ email" #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:180 @@ -1516,12 +988,6 @@ msgstr "" msgid "Send me email when someone sends me a private message." msgstr "Gá»­i email báo cho tôi biết khi có ai đó gá»­i tin nhắn riêng cho tôi." -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:199 -#, fuzzy -msgid "Send me email when someone sends me an \"@-reply\"." -msgstr "Gá»­i email báo cho tôi biết khi có ai đó gá»­i tin nhắn riêng cho tôi." - #. TRANS: Checkbox label in e-mail preferences form. #: actions/emailsettings.php:205 msgid "Allow friends to nudge me and send me an email." @@ -1537,12 +1003,6 @@ msgstr "Tôi muốn Ä‘Æ°a tin nhắn lên bằng email." msgid "Publish a MicroID for my email address." msgstr "Xuất bản má»™t MicroID đến địa chỉ email của tôi." -#. TRANS: Confirmation message for successful e-mail preferences save. -#: actions/emailsettings.php:334 -#, fuzzy -msgid "Email preferences saved." -msgstr "Các tính năng đã được lÆ°u." - #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 msgid "No email address." @@ -1550,27 +1010,24 @@ msgstr "Không có địa chỉ email." #. TRANS: Message given saving e-mail address that cannot be normalised. #: actions/emailsettings.php:361 -#, fuzzy msgid "Cannot normalize that email address" -msgstr "Không thể bình thÆ°á»ng hóa địa chỉ GTalk này" +msgstr "Không thể bình thÆ°á»ng hóa Jabber ID" #. 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ệ." #. TRANS: Message given saving e-mail address that is already set. #: actions/emailsettings.php:370 -#, fuzzy msgid "That is already your email address." -msgstr "Bạn đã dùng địa chỉ email này rồi" +msgstr "Tài khoản đó đã là tên tài khoản Jabber của bạn rồi." #. 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 "Äịa chỉ email GTalk này đã có ngÆ°á»i khác sá»­ dụng rồi." +msgstr "Jabber ID này đã thuá»™c vá» ngÆ°á»i khác rồi." #. TRANS: Server error thrown on database error adding e-mail confirmation code. #. TRANS: Server error thrown on database error adding IM confirmation code. @@ -1597,80 +1054,42 @@ msgstr "" msgid "No pending confirmation to cancel." msgstr "Sá»± xác nhận chÆ°a được hủy bá»." -#. 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 "Sai IM." - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -msgstr "Sá»± xác nhận đã bị hủy bá»." - -#. 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 "Xin lá»—i, đó không phải là địa chỉ email mà bạn nhập vào." +msgstr "Sá»± xác nhận chÆ°a được hủy bá»." #. TRANS: Message given after successfully removing a registered e-mail address. #: actions/emailsettings.php:479 -#, fuzzy msgid "The email address was removed." -msgstr "Äã xóa địa chỉ." +msgstr "Không có địa chỉ email." #: actions/emailsettings.php:493 actions/smssettings.php:568 -#, fuzzy msgid "No incoming email address." -msgstr "Äịa chỉ email không hợp lệ." - -#. 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 "Không thể cập nhật thành viên." +msgstr "Không có địa chỉ email." #. 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 "Äịa chỉ email hoặc mật khẩu không đúng." +msgstr "Không có địa chỉ email." #. 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 "Äã xác nhận địa chỉ này." +msgstr "Không có địa chỉ email." #: actions/favor.php:79 msgid "This notice 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/favor.php:92 lib/disfavorform.php:140 -#, fuzzy -msgid "Disfavor favorite" -msgstr "Không thích" - #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 -#, fuzzy msgid "Popular notices" -msgstr "Các tin nhắn bị cảnh báo" - -#: actions/favorited.php:67 -#, fuzzy, php-format -msgid "Popular notices, page %d" -msgstr "Các tin nhắn bị cảnh báo" +msgstr "Không có tin nhắn nào." #: actions/favorited.php:79 -#, fuzzy msgid "The most popular notices on the site right now." -msgstr "Các từ khóa phổ biến." +msgstr "" #: actions/favorited.php:150 msgid "Favorite notices appear on this page but no one has favorited one yet." @@ -1700,11 +1119,6 @@ msgstr "Những tin nhắn Æ°a thích của %s" msgid "Updates favored by %1$s on %2$s!" msgstr "Dòng tin nhắn cho %s" -#: actions/featured.php:69 lib/featureduserssection.php:87 -#: lib/publicgroupnav.php:89 -msgid "Featured users" -msgstr "" - #: actions/featured.php:71 #, php-format msgid "Featured users, page %d" @@ -1716,33 +1130,20 @@ msgid "A selection of some great users on %s" msgstr "" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "Thông báo má»›i" +msgstr "Không có tin nhắn nào." #: actions/file.php:38 -#, fuzzy msgid "No notice." -msgstr "Thông báo má»›i" - -#: actions/file.php:42 -#, fuzzy -msgid "No attachments." -msgstr "Không có tài liệu nào." - -#: actions/file.php:51 -#, fuzzy -msgid "No uploaded attachments." -msgstr "Không có tài liệu nào." +msgstr "Không có tin nhắn nào." #: actions/finishremotesubscribe.php:69 msgid "Not expecting this response!" msgstr "Không mong đợi trả lá»i lại!" #: actions/finishremotesubscribe.php:80 -#, fuzzy msgid "User being listened to does not exist." -msgstr "NgÆ°á»i dùng Ä‘ang lắng nghe để không thoát khá»i." +msgstr "" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" @@ -1753,67 +1154,25 @@ msgid "That user has blocked you from subscribing." msgstr "" #: actions/finishremotesubscribe.php:110 -#, fuzzy msgid "You are not authorized." -msgstr "ChÆ°a được phép." +msgstr "Äăng nhận được phép" #: actions/finishremotesubscribe.php:113 -#, fuzzy msgid "Could not convert request token to access token." -msgstr "Không thể chuyển các token yêu cầu đến token truy cập." +msgstr "" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "Không biết phiên bản của giao thức OMB." - -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "Lá»—i xảy ra khi cập nhật hồ sÆ¡ cá nhân" - -#: actions/getfile.php:79 -#, fuzzy -msgid "No such file." -msgstr "Không có tin nhắn nào." +msgstr "" #: actions/getfile.php:83 -#, fuzzy msgid "Cannot read file." -msgstr "Không có tin nhắn nào." - -#: actions/grantrole.php:62 actions/revokerole.php:62 -#, fuzzy -msgid "Invalid role." -msgstr "Kích thÆ°á»›c không hợp lệ." +msgstr "Không thể tạo favorite." #: actions/grantrole.php:66 actions/revokerole.php:66 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 "Bạn đã theo những ngÆ°á»i này:" - -#: actions/grantrole.php:82 -#, fuzzy -msgid "User already has this role." -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 -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 -#, 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 đó." - #: actions/groupblock.php:81 actions/groupunblock.php:81 #: actions/makeadmin.php:81 msgid "No group specified." @@ -1824,19 +1183,12 @@ msgid "Only an admin can block group members." msgstr "" #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "NgÆ°á»i dùng không có thông tin." - -#: actions/groupblock.php:100 -#, fuzzy -msgid "User is not a member of group." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" +msgstr "" #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "Ban user" +msgstr "Chặn ngÆ°á»i dùng" #: actions/groupblock.php:160 #, php-format @@ -1846,36 +1198,9 @@ msgid "" "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 "Không thể theo bạn này: %s đã có trong danh sách bạn bè của bạn rồi." - -#. 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 "Ban user" - -#: actions/groupblock.php:206 -msgid "Database error blocking user from group." -msgstr "" - #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "Không có id." - -#: actions/groupdesignsettings.php:68 -#, fuzzy -msgid "You must be logged in to edit a group." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: actions/groupdesignsettings.php:144 -#, fuzzy -msgid "Group design" -msgstr "Nhóm" +msgstr "Không có Jabber ID." #: actions/groupdesignsettings.php:155 msgid "" @@ -1883,51 +1208,18 @@ msgid "" "palette of your choice." 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 "Không thể cập nhật thành viên." - -#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 -#, fuzzy -msgid "Design preferences saved." -msgstr "Các tính năng đã được lÆ°u." - #: actions/grouplogo.php:142 actions/grouplogo.php:195 -#, fuzzy msgid "Group logo" -msgstr "Mã nhóm" - -#: actions/grouplogo.php:153 -#, php-format -msgid "" -"You can upload a logo image for your group. The maximum file size is %s." -msgstr "" +msgstr "Nhóm" #: actions/grouplogo.php:365 msgid "Pick a square area of the image to be the logo." msgstr "" -#: actions/grouplogo.php:399 -#, fuzzy -msgid "Logo updated." -msgstr "Hình đại diện đã được cập nhật." - -#: actions/grouplogo.php:401 -#, fuzzy -msgid "Failed updating logo." -msgstr "Cập nhật hình đại diện không thành công." - -#: actions/groupmembers.php:100 lib/groupnav.php:92 -#, fuzzy, php-format -msgid "%s group members" -msgstr "Thành viên" - #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "Thành viên" +msgstr "" #: actions/groupmembers.php:118 msgid "A list of the users in this group." @@ -1937,49 +1229,31 @@ msgstr "" msgid "Admin" msgstr "" -#: actions/groupmembers.php:392 lib/blockform.php:69 -msgid "Block" -msgstr "" - #: actions/groupmembers.php:487 -#, fuzzy msgid "Make user an admin of the group" -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " +msgstr "" #: actions/groupmembers.php:519 msgid "Make Admin" msgstr "" #: actions/groupmembers.php:519 -#, fuzzy msgid "Make this user an admin" -msgstr "Kênh mà bạn tham gia" +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:62 lib/atomusernoticefeed.php:68 -#, fuzzy, php-format +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 +#, php-format msgid "%s timeline" -msgstr "Dòng tin nhắn của %s" - -#. 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 -msgid "Updates from members of %1$s on %2$s!" -msgstr "Dòng tin nhắn cho %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 -#, fuzzy -msgid "Groups" -msgstr "Nhóm" +msgstr "Dòng tin công cá»™ng" #: actions/groups.php:64 -#, fuzzy, php-format +#, php-format msgid "Groups, page %d" -msgstr "Tên nhóm" +msgstr "" #: actions/groups.php:90 #, php-format @@ -1992,29 +1266,13 @@ msgid "" msgstr "" #: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122 -#, fuzzy msgid "Create a new group" -msgstr "Tạo nhóm" - -#: actions/groupsearch.php:52 -#, 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 "" -"Tìm kiếm những ngÆ°á»i trên %%site.name%% bằng tên, vị trí, hoặc sở thích của " -"há». Chia các cụm từ bởi khoảng trắng; và phải là 3 ký tá»± trở lên." - -#: actions/groupsearch.php:58 -#, fuzzy -msgid "Group search" -msgstr "Tìm kiếm nhiá»u ngÆ°á»i" #: actions/groupsearch.php:79 actions/noticesearch.php:117 #: actions/peoplesearch.php:83 -#, fuzzy msgid "No results." -msgstr "Không có kết quả nào" +msgstr "" #: actions/groupsearch.php:82 #, php-format @@ -2034,21 +1292,10 @@ msgstr "" msgid "Only an admin can unblock group members." msgstr "" -#: actions/groupunblock.php:95 -#, fuzzy -msgid "User is not blocked from group." -msgstr "NgÆ°á»i dùng không có thông tin." - -#: actions/groupunblock.php:128 actions/unblock.php:86 -#, fuzzy -msgid "Error removing the block." -msgstr "Lá»—i xảy ra khi lÆ°u thành viên." - #. TRANS: Title for instance messaging settings. #: actions/imsettings.php:60 -#, fuzzy msgid "IM settings" -msgstr "Cấu hình IM" +msgstr "Thay đổi hình đại diện" #. TRANS: Instant messaging settings page instructions. #. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link. @@ -2064,16 +1311,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 "Trang này không phải là phÆ°Æ¡ng tiện truyá»n thông mà bạn chấp nhận." +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 "Äịa chỉ email" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2103,9 +1348,8 @@ msgstr "" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "Tính năng" +msgstr "Các tính năng đã được lÆ°u." #. TRANS: Checkbox label in IM preferences form. #: actions/imsettings.php:160 @@ -2175,17 +1419,10 @@ msgstr "" msgid "That is the wrong IM address." msgstr "Sai IM." -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "Không thể xóa email xác nhận." - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "Sá»± xác nhận đã bị hủy bá»." +msgstr "Không có mã số xác nhận." #. TRANS: Message given trying to remove an IM address that is not #. TRANS: registered for the active user. @@ -2193,17 +1430,6 @@ msgstr "Sá»± xác nhận đã bị hủy bá»." msgid "That is not your Jabber ID." msgstr "Äây không phải Jabber ID của bạn." -#. TRANS: Message given after successfully removing a registered IM address. -#: actions/imsettings.php:447 -#, fuzzy -msgid "The IM address was removed." -msgstr "Äã xóa địa chỉ." - -#: actions/inbox.php:59 -#, fuzzy, php-format -msgid "Inbox for %1$s - page %2$d" -msgstr "Há»™p thÆ° đến của %s" - #: actions/inbox.php:62 #, php-format msgid "Inbox for %s" @@ -2218,9 +1444,9 @@ 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 "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " +msgstr "Bạn đã không xóa trạng thái của những ngÆ°á»i khác." #: actions/invite.php:72 #, php-format @@ -2241,10 +1467,10 @@ msgstr "Bạn đã theo những ngÆ°á»i này:" #. 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 -#, fuzzy, php-format +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 +#, php-format msgid "%1$s (%2$s)" -msgstr "%s (%s)" +msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" @@ -2291,10 +1517,9 @@ msgstr "Không bắt buá»™c phải thêm thông Ä‘iệp vào thÆ° má»i." #. TRANS: Send button for inviting friends #: actions/invite.php:198 -#, fuzzy msgctxt "BUTTON" msgid "Send" -msgstr "Gá»­i" +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 @@ -2360,74 +1585,40 @@ msgstr "" "\n" "Thân, %2$s\n" -#: actions/joingroup.php:60 -#, fuzzy -msgid "You must be logged in to join a group." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: actions/joingroup.php:88 actions/leavegroup.php:88 -#, fuzzy -msgid "No nickname or ID." -msgstr "Không có biệt hiệu." - -#. 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 -msgid "%1$s joined group %2$s" -msgstr "%s và nhóm" - -#: actions/leavegroup.php:60 -#, fuzzy -msgid "You must be logged in to leave a group." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: actions/leavegroup.php:100 lib/command.php:373 -#, fuzzy -msgid "You are not a member of that group." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" - -#. 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 +#: actions/leavegroup.php:137 +#, php-format msgid "%1$s left group %2$s" -msgstr "%s và nhóm" +msgstr "Trạng thái của %1$s vào %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 "Äã đă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 -#, 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,49 +1626,29 @@ 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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" -"Hãy đăng nhập vá»›i tên đăng nhập và mật khẩu của bạn. Nếu bạn chÆ°a có tài " -"khoản, [hãy đăng ký](%%action.register%%) tài khoản má»›i, hoặc thá»­ đăng nhập " -"bằng [OpenID](%%action.openidlogin%%). " #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." msgstr "" -#: actions/makeadmin.php:96 -#, fuzzy, php-format -msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "NgÆ°á»i dùng không có thông tin." - #: actions/makeadmin.php:133 -#, fuzzy, php-format +#, php-format msgid "Can't get membership record for %1$s in group %2$s." -msgstr "Không thể theo bạn này: %s đã có trong danh sách bạn bè của bạn rồi." +msgstr "" #: actions/makeadmin.php:146 -#, fuzzy, php-format +#, php-format msgid "Can't make %1$s an admin for group %2$s." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " +msgstr "" #: actions/microsummary.php:69 -#, fuzzy msgid "No current status." -msgstr "Không có kết quả nào" - -#: actions/newapplication.php:52 -#, fuzzy -msgid "New Application" -msgstr "Không có tin nhắn nào." - -#: actions/newapplication.php:64 -#, fuzzy -msgid "You must be logged in to register an application." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " +msgstr "" #: actions/newapplication.php:143 msgid "Use this form to register a new application." @@ -2487,32 +1658,23 @@ msgstr "" msgid "Source URL is required." msgstr "" -#: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy -msgid "Could not create application." -msgstr "Không thể tạo favorite." - -#: actions/newgroup.php:53 -#, fuzzy -msgid "New group" -msgstr "Tạo nhóm" - #: actions/newgroup.php:110 msgid "Use this form to create a new group." msgstr "" #: actions/newmessage.php:71 actions/newmessage.php:231 -#, fuzzy msgid "New message" -msgstr "Tin má»›i nhất" +msgstr "Tin nhắn cá nhân" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 -#, fuzzy +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 msgid "You can't send a message to this user." -msgstr "Bạn đã theo những ngÆ°á»i này:" +msgstr "Bạn chÆ°a cập nhật thông tin riêng" -#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463 -#: lib/command.php:555 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "Không có ná»™i dung!" @@ -2520,34 +1682,27 @@ msgstr "Không có ná»™i dung!" msgid "No recipient specified." msgstr "" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "Tin má»›i nhất" +msgstr "" -#: actions/newmessage.php:185 -#, fuzzy, php-format -msgid "Direct message to %s sent." -msgstr "Tin nhắn riêng" - -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 -#, fuzzy +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" -msgstr "Lá»—i" +msgstr "" #: actions/newnotice.php:69 msgid "New notice" msgstr "Thông báo má»›i" -#: actions/newnotice.php:217 -#, fuzzy +#: actions/newnotice.php:227 msgid "Notice posted" -msgstr "Tin đã gá»­i" +msgstr "Tin nhắn" #: actions/noticesearch.php:68 #, php-format @@ -2563,9 +1718,9 @@ msgid "Text search" msgstr "Chuá»—i cần tìm" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr " Tìm dòng thông tin cho \"%s\"" +msgstr "%s chào mừng bạn " #: actions/noticesearch.php:121 #, php-format @@ -2582,37 +1737,18 @@ msgid "" msgstr "" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "Dòng tin nhắn cho %s" +msgstr "" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, php-format msgid "Updates matching search term \"%1$s\" on %2$s!" -msgstr "Các thay đổi phù hợp vá»›i từ \"%s\"" +msgstr "Dòng tin nhắn cho %s" #: actions/nudge.php:85 msgid "" -"This user doesn't allow nudges or hasn't confirmed or set his email yet." -msgstr "" - -#: actions/nudge.php:94 -#, fuzzy -msgid "Nudge sent" -msgstr "Tin đã gá»­i" - -#: actions/nudge.php:97 -#, fuzzy -msgid "Nudge sent!" -msgstr "Tin đã gá»­i" - -#: actions/oauthappssettings.php:59 -#, fuzzy -msgid "You must be logged in to list your applications." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: actions/oauthappssettings.php:74 -msgid "OAuth applications" +"This user doesn't allow nudges or hasn't confirmed or set their email yet." msgstr "" #: actions/oauthappssettings.php:85 @@ -2624,19 +1760,10 @@ msgstr "" msgid "You have not registered any applications yet." msgstr "" -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" -#: actions/oauthconnectionssettings.php:175 -#, fuzzy -msgid "You are not a user of that application." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" - #: actions/oauthconnectionssettings.php:186 #, php-format msgid "Unable to revoke access for app: %s." @@ -2650,47 +1777,40 @@ 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 "Tin nhắn không có hồ sÆ¡ cá nhân" +msgstr "NgÆ°á»i dùng không có thông tin." -#: 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 -#, fuzzy, php-format +#: actions/oembed.php:159 +#, php-format msgid "Content type %s not supported." -msgstr "Kết nối" +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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "Không há»— trợ định dạng dữ liệu này." -#: actions/opensearch.php:64 -#, fuzzy -msgid "People Search" -msgstr "Tìm kiếm nhiá»u ngÆ°á»i" - #: actions/opensearch.php:67 msgid "Notice Search" msgstr "Tìm kiếm thông báo" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Thiết lập tài khoản Twitter" +msgstr "Thay đổi hình đại diện" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2708,48 +1828,17 @@ msgstr "" msgid "Automatic shortening service to use." msgstr "" -#: actions/othersettings.php:122 -#, fuzzy -msgid "View profile designs" -msgstr "Các thiết lập cho Hồ sÆ¡ cá nhân" - #: 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 "Tên khu vá»±c quá dài (không quá 255 ký tá»±)." - #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "Thông báo má»›i" - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "Thông báo má»›i" - -#: actions/otp.php:90 -#, fuzzy -msgid "No login token requested." -msgstr "Không có URL cho hồ sÆ¡ để quay vá»." - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "Ná»™i dung tin nhắn không hợp lệ" - -#: actions/otp.php:104 -msgid "Login token expired." msgstr "" -#: actions/outbox.php:58 -#, fuzzy, php-format -msgid "Outbox for %1$s - page %2$d" -msgstr "Há»™p thÆ° Ä‘i của %s" +#: actions/otp.php:90 +msgid "No login token requested." +msgstr "Không có yêu cầu!" #: actions/outbox.php:61 #, php-format @@ -2766,16 +1855,6 @@ msgstr "" msgid "Change password" msgstr "Äổi mật khẩu" -#: actions/passwordsettings.php:69 -#, fuzzy -msgid "Change your password." -msgstr "Thay đổi mật khẩu của bạn" - -#: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy -msgid "Password change" -msgstr "Äã lÆ°u mật khẩu." - #: actions/passwordsettings.php:104 msgid "Old password" msgstr "Mật khẩu cÅ©" @@ -2789,7 +1868,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" @@ -2801,12 +1880,7 @@ msgstr "Cùng mật khẩu ở trên" msgid "Change" msgstr "Thay đổi" -#: actions/passwordsettings.php:154 actions/register.php:230 -#, 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." @@ -2827,7 +1901,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 "" @@ -2836,39 +1910,29 @@ 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 "Trang này không phải là phÆ°Æ¡ng tiện truyá»n thông mà bạn chấp nhận." +msgstr "" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %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." +msgstr "" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "Background Theme:" +msgstr "" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "Trang này không phải là phÆ°Æ¡ng tiện truyá»n thông mà bạn chấp nhận." +msgstr "" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." msgstr "" -#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 -#, fuzzy -msgid "Site" -msgstr "ThÆ° má»i" - -#: actions/pathsadminpanel.php:238 -#, fuzzy -msgid "Server" -msgstr "Khôi phục" - #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." msgstr "" @@ -2877,11 +1941,6 @@ msgstr "" msgid "Path" msgstr "" -#: actions/pathsadminpanel.php:242 -#, fuzzy -msgid "Site path" -msgstr "Thông báo má»›i" - #: actions/pathsadminpanel.php:246 msgid "Path to locales" msgstr "" @@ -2914,60 +1973,25 @@ msgstr "" msgid "Theme directory" msgstr "" -#: actions/pathsadminpanel.php:279 -#, fuzzy -msgid "Avatars" -msgstr "Hình đại diện" - -#: actions/pathsadminpanel.php:284 -#, fuzzy -msgid "Avatar server" -msgstr "Thay đổi hình đại diện" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "Hình đại diện đã được cập nhật." - #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "Hình đại diện đã được cập nhật." +msgstr "" #: actions/pathsadminpanel.php:301 -#, fuzzy msgid "Backgrounds" -msgstr "Background Theme:" +msgstr "" #: actions/pathsadminpanel.php:305 -#, fuzzy msgid "Background server" -msgstr "Background Theme:" +msgstr "" #: actions/pathsadminpanel.php:309 -#, fuzzy msgid "Background path" -msgstr "Background Theme:" +msgstr "" #: actions/pathsadminpanel.php:313 -#, fuzzy msgid "Background directory" -msgstr "Background Theme:" - -#: actions/pathsadminpanel.php:320 -#, fuzzy -msgid "SSL" -msgstr "SMS" - -#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202 -#, fuzzy -msgid "Never" -msgstr "Khôi phục" - -#: actions/pathsadminpanel.php:324 -#, fuzzy -msgid "Sometimes" -msgstr "Tin nhắn" +msgstr "" #: actions/pathsadminpanel.php:325 msgid "Always" @@ -2982,18 +2006,16 @@ msgid "When to use SSL" msgstr "" #: actions/pathsadminpanel.php:335 -#, fuzzy msgid "SSL server" -msgstr "Khôi phục" +msgstr "" #: actions/pathsadminpanel.php:336 msgid "Server to direct SSL requests to" msgstr "" #: actions/pathsadminpanel.php:352 -#, fuzzy msgid "Save paths" -msgstr "Thông báo má»›i" +msgstr "" #: actions/peoplesearch.php:52 #, php-format @@ -3008,20 +2030,9 @@ msgstr "" msgid "People search" msgstr "Tìm kiếm nhiá»u ngÆ°á»i" -#: actions/peopletag.php:68 -#, fuzzy, php-format -msgid "Not a valid people tag: %s." -msgstr "Äịa chỉ email không hợp lệ." - -#: actions/peopletag.php:142 -#, fuzzy, php-format -msgid "Users self-tagged with %1$s - page %2$d" -msgstr "Dòng tin nhắn cho %s" - #: actions/postnotice.php:95 -#, fuzzy msgid "Invalid notice content." -msgstr "Ná»™i dung tin nhắn không hợp lệ" +msgstr "Kích thÆ°á»›c không hợp lệ." #: actions/postnotice.php:101 #, php-format @@ -3040,52 +2051,50 @@ msgstr "" "vá» bạn." #: actions/profilesettings.php:99 -#, fuzzy msgid "Profile information" -msgstr "Hồ sÆ¡ này không biết" +msgstr "Các thiết lập cho Hồ sÆ¡ cá nhân" #: actions/profilesettings.php:108 lib/groupeditform.php:154 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 -#, fuzzy, php-format +#: actions/profilesettings.php:122 actions/register.php:468 +#, 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á»±" +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 "Nói vá» bạn và những sở thích của bạn khoảng 140 ký tá»±" +msgstr "" -#: 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\"" @@ -3125,44 +2134,28 @@ 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 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, php-format msgid "Bio is too long (max %d chars)." -msgstr "Lý lịch quá dài (không quá 140 ký tá»±)" +msgstr "Tên khu vá»±c quá dài (không quá %d ký tá»±)." #: 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 "Ngôn ngữ quaÌ daÌ€i (tối Ä‘a là 50 ký tá»±)." +msgstr "Tên khu vá»±c quá dài (không quá 50 ký tá»±)." #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "Trang chủ '%s' không hợp lệ" - -#: actions/profilesettings.php:306 -#, fuzzy -msgid "Couldn't update user for autosubscribe." -msgstr "Không thể cập nhật thành viên." - -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." +msgstr "Äịa chỉ email không đúng:%s" #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." -#: actions/profilesettings.php:383 -#, fuzzy -msgid "Couldn't save tags." -msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." - #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 msgid "Settings saved." @@ -3173,34 +2166,13 @@ msgstr "Äã lÆ°u các Ä‘iá»u chỉnh." msgid "Beyond the page limit (%s)." msgstr "" -#: actions/public.php:92 -#, fuzzy -msgid "Could not retrieve public stream." -msgstr "Không thể lấy lại các tin nhắn Æ°a thích" - -#: actions/public.php:130 -#, fuzzy, php-format -msgid "Public timeline, page %d" -msgstr "Dòng tin công cá»™ng" - #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" msgstr "Dòng tin công cá»™ng" -#: actions/public.php:160 -#, fuzzy -msgid "Public Stream Feed (RSS 1.0)" -msgstr "Dòng tin công cá»™ng" - -#: actions/public.php:164 -#, fuzzy -msgid "Public Stream Feed (RSS 2.0)" -msgstr "Dòng tin công cá»™ng" - #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "Dòng tin công cá»™ng" +msgstr "" #: actions/public.php:188 #, php-format @@ -3237,9 +2209,8 @@ msgid "" msgstr "" #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "Dòng tin công cá»™ng" +msgstr "" #: actions/publictagcloud.php:63 #, php-format @@ -3294,24 +2265,10 @@ msgstr "Mã xác nhận quá cÅ©. Hãy thá»­ lại cái khác." msgid "Could not update user with confirmed email address." msgstr "Không thể cập nhật thông tin user vá»›i địa chỉ email đã được xác nhận." -#: 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 "Biệt hiệu của bạn đã tồn tại hoặc bạn đã đăng ký bằng email này rồi." @@ -3381,7 +2338,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." @@ -3389,83 +2346,99 @@ 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 -#, 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:507 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 -#, fuzzy +#: actions/register.php:142 msgid "Registration not allowed." -msgstr "Biệt hiệu không được cho phép." +msgstr "Äăng ký" -#: 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:494 -#, fuzzy, php-format +#: 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 " ngoại trừ thông tin riêng: mật khẩu, email, địa chỉ IM, số Ä‘iện thoại" +msgstr "" -#: actions/register.php:542 -#, 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" @@ -3482,20 +2455,8 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"Chúc mừng, %s! Chào mừng bạn đến vá»›i %%%%site.name%%%%. Bây giá» bạn có " -"thể...\n" -"\n" -"* Vào trang [Hồ sÆ¡ cá nhân](%s) của bạn và gá»­i tin nhắn đầu tiên. \n" -"* Thêm [địa chỉ Jabber/GTalk](%%%%action.imsettings%%%%) để có thể gá»­i tin " -"nhắn nhanh.\n" -"* [Tìm kiếm ngÆ°á»i quen](%%%%action.peoplesearch%%%%) mà bạn nghÄ© là có thể " -"chia sẻ niá»m vui.\n" -"* Äá»c xuyên suốt [hÆ°á»›ng dẫn](%%%%doc.help%%%%) để hiểu thêm vá» dịch vụ của " -"chúng tôi.\n" -"\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:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3520,9 +2481,8 @@ msgid "Remote subscribe" msgstr "Äăng nhận từ xa" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "Theo nhóm này" +msgstr "Ngừng đăng ký từ ngÆ°á»i dùng này" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3550,47 +2510,24 @@ msgid "Invalid profile URL (bad format)" msgstr "URL hồ sÆ¡ cá nhân không đúng định dạng." #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "Không phải là URL vá» hồ sÆ¡ cá nhân hợp lệ (không phải là " +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 "Không thể lấy token yêu cầu." +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 "Thông báo má»›i" - -#: actions/repeat.php:76 -#, fuzzy -msgid "You can't repeat your own notice." -msgstr "Bạn không thể đăng ký nếu không đồng ý các Ä‘iá»u khoản." - -#: actions/repeat.php:90 -#, fuzzy -msgid "You already repeated that notice." -msgstr "Bạn đã theo những ngÆ°á»i này:" - -#: actions/repeat.php:114 lib/noticelist.php:675 -#, fuzzy +#: actions/repeat.php:114 lib/noticelist.php:676 msgid "Repeated" -msgstr "Tạo" - -#: actions/repeat.php:119 -#, fuzzy -msgid "Repeated!" -msgstr "Tạo" +msgstr "Khởi tạo" #: actions/replies.php:126 actions/repliesrss.php:68 #: lib/personalgroupnav.php:105 @@ -3598,31 +2535,26 @@ msgstr "Tạo" msgid "Replies to %s" msgstr "Trả lá»i cho %s" -#: actions/replies.php:128 -#, fuzzy, php-format -msgid "Replies to %1$s, page %2$d" -msgstr "%s chào mừng bạn " - #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: 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 @@ -3635,8 +2567,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 @@ -3644,34 +2576,17 @@ msgstr "" msgid "Replies to %1$s on %2$s!" msgstr "%s chào mừng bạn " -#: actions/revokerole.php:75 -#, fuzzy -msgid "You cannot revoke user roles on this site." -msgstr "Bạn đã theo những ngÆ°á»i này:" - -#: actions/revokerole.php:82 -#, fuzzy -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 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "Hình đại diện đã được cập nhật." - -#: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy -msgid "You cannot sandbox users on this site." -msgstr "Bạn đã theo những ngÆ°á»i này:" +msgstr "Số liệu thống kê" #: actions/sandbox.php:72 -#, fuzzy msgid "User is already sandboxed." -msgstr "NgÆ°á»i dùng không có thông tin." +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 "" @@ -3695,47 +2610,23 @@ msgstr "" 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 "Thay đổi hình đại diện" - -#: actions/showapplication.php:82 -#, fuzzy -msgid "You must be logged in to view an application." -msgstr "Bạn phải đăng nhập vào má»›i có thể gá»­i thÆ° má»i những " - -#: actions/showapplication.php:157 -#, fuzzy -msgid "Application profile" -msgstr "Tin nhắn không có hồ sÆ¡ cá nhân" - #. 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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -msgstr "Biệt danh" - #. TRANS: Form input field label. #: actions/showapplication.php:178 lib/applicationeditform.php:235 -#, fuzzy msgid "Organization" -msgstr "ThÆ° má»i đã gá»­i" +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 "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ê" @@ -3745,18 +2636,10 @@ msgstr "Số liệu thống kê" 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 "" @@ -3783,16 +2666,6 @@ msgid "" "signature method." msgstr "" -#: actions/showapplication.php:309 -#, fuzzy -msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "Bạn có chắc chắn là muốn xóa tin nhắn này không?" - -#: actions/showfavorites.php:79 -#, fuzzy, php-format -msgid "%1$s's favorite notices, page %2$d" -msgstr "Những tin nhắn Æ°a thích của %s" - #: actions/showfavorites.php:132 msgid "Could not retrieve favorite notices." msgstr "Không thể lấy lại các tin nhắn Æ°a thích" @@ -3821,16 +2694,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 @@ -3838,61 +2711,43 @@ msgid "This is a way to share what you like." msgstr "" #: actions/showgroup.php:82 lib/groupnav.php:86 -#, fuzzy, php-format +#, php-format msgid "%s group" -msgstr "%s và nhóm" - -#: actions/showgroup.php:84 -#, fuzzy, php-format -msgid "%1$s group, page %2$d" -msgstr "Thành viên" +msgstr "Há»™p thÆ° Ä‘i của %s" #: actions/showgroup.php:227 -#, fuzzy msgid "Group profile" -msgstr "Thông tin nhóm" +msgstr "NgÆ°á»i dùng không có thông tin." #: 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 -#, fuzzy -msgid "Note" -msgstr "Tin nhắn" - #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" msgstr "" #: actions/showgroup.php:302 -#, fuzzy msgid "Group actions" -msgstr "Mã nhóm" +msgstr "Không tìm thấy nhóm." #: actions/showgroup.php:338 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 1.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/showgroup.php:344 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s group (RSS 2.0)" -msgstr "Dòng tin nhắn cho %s" - -#: actions/showgroup.php:350 -#, fuzzy, php-format -msgid "Notice feed for %s group (Atom)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/showgroup.php:355 #, php-format 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" @@ -3902,17 +2757,7 @@ msgstr "Thành viên" msgid "(None)" msgstr "" -#: actions/showgroup.php:404 -#, fuzzy -msgid "All members" -msgstr "Thành viên" - -#: actions/showgroup.php:447 -#, 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." @@ -3922,7 +2767,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." @@ -3931,7 +2776,7 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: actions/showgroup.php:489 msgid "Admins" msgstr "" @@ -3940,59 +2785,32 @@ msgid "No such message." msgstr "Không có tin nhắn nào." #: actions/showmessage.php:98 -#, fuzzy msgid "Only the sender and recipient may read this message." -msgstr "Chỉ có ngÆ°á»i gá»­i hoặc ngÆ°á»i nhận má»›i có thể xem tin nhắn này" - -#: 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 -#, fuzzy msgid "Notice deleted." -msgstr "Tin đã gá»­i" - -#: actions/showstream.php:73 -#, fuzzy, php-format -msgid " tagged %s" -msgstr "Thông báo được gắn thẻ %s" - -#: actions/showstream.php:79 -#, fuzzy, php-format -msgid "%1$s, page %2$d" -msgstr "%s và bạn bè" +msgstr "Không có mã nào được nhập" #: actions/showstream.php:122 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "Dòng tin nhắn cho %s" - -#: actions/showstream.php:148 -#, fuzzy, php-format -msgid "FOAF for %s" -msgstr "Há»™p thÆ° Ä‘i của %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/showstream.php:200 #, php-format @@ -4008,8 +2826,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 @@ -4029,20 +2847,9 @@ msgid "" "[StatusNet](http://status.net/) tool. " msgstr "" -#: actions/showstream.php:305 -#, fuzzy, php-format -msgid "Repeat of %s" -msgstr "Trả lá»i cho %s" - -#: actions/silence.php:65 actions/unsilence.php:65 -#, fuzzy -msgid "You cannot silence users on this site." -msgstr "Bạn đã theo những ngÆ°á»i này:" - #: actions/silence.php:72 -#, fuzzy msgid "User is already silenced." -msgstr "NgÆ°á»i dùng không có thông tin." +msgstr "" #: actions/siteadminpanel.php:69 msgid "Basic settings for this StatusNet site" @@ -4052,11 +2859,6 @@ msgstr "" msgid "Site name must have non-zero length." msgstr "" -#: actions/siteadminpanel.php:141 -#, fuzzy -msgid "You must have a valid contact email address." -msgstr "Äịa chỉ email không hợp lệ." - #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." @@ -4074,11 +2876,6 @@ msgstr "" msgid "General" msgstr "" -#: actions/siteadminpanel.php:224 -#, fuzzy -msgid "Site name" -msgstr "Thông báo má»›i" - #: actions/siteadminpanel.php:225 msgid "The name of your site, like \"Yourcompany Microblog\"" msgstr "" @@ -4099,16 +2896,6 @@ msgstr "" 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 "Dia chi email moi de gui tin nhan den %s" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "Thành phố" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -4117,11 +2904,6 @@ msgstr "" msgid "Default timezone for the site; usually UTC." msgstr "" -#: actions/siteadminpanel.php:262 -#, fuzzy -msgid "Default language" -msgstr "Ngôn ngữ bạn thích" - #: actions/siteadminpanel.php:263 msgid "Site language when autodetection from browser settings is not available" msgstr "" @@ -4147,43 +2929,29 @@ msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" #: actions/sitenoticeadminpanel.php:56 -#, fuzzy msgid "Site Notice" -msgstr "Thông báo má»›i" - -#: actions/sitenoticeadminpanel.php:67 -#, fuzzy -msgid "Edit site-wide message" -msgstr "Tin má»›i nhất" - -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -msgid "Unable to save site notice." -msgstr "Không thể lÆ°u thông tin Twitter của bạn!" +msgstr "Tin nhắn" #: 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 "Thông báo má»›i" +msgstr "Xóa tin nhắn" #: 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 "Thông báo má»›i" +msgstr "Xóa tin nhắn" #. TRANS: Title for SMS settings. #: actions/smssettings.php:59 -#, fuzzy msgid "SMS settings" -msgstr "Thiết lập SMS" +msgstr "Thay đổi hình đại diện" #. TRANS: SMS settings page instructions. #. TRANS: %%site.name%% is the name of the site. @@ -4194,50 +2962,28 @@ msgstr "Bạn có thể nhận tin nhắn SMS qua email từ %%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 "Trang này không phải là phÆ°Æ¡ng tiện truyá»n thông mà bạn chấp nhận." +msgstr "" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM" +msgstr "Äịa chỉ email" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 msgid "Current confirmed SMS-enabled phone number." msgstr "SMS xác nhận ngay - đã cho phép gá»­i qua Ä‘iện thoại. " -#. TRANS: Form guide in IM settings form. -#: actions/smssettings.php:133 -#, fuzzy -msgid "Awaiting confirmation on this phone number." -msgstr "Äó không phải là số Ä‘iện thoại của bạn." - -#. TRANS: Field label for SMS address input in SMS settings form. -#: actions/smssettings.php:142 -#, fuzzy -msgid "Confirmation code" -msgstr "Không có mã số xác nhận." - #. TRANS: Form field instructions in SMS settings form. #: actions/smssettings.php:144 msgid "Enter the code you received on your phone." msgstr "Nhập mã mà bạn nhận được trên Ä‘iện thoại của bạn." -#. TRANS: Button label to confirm SMS confirmation code in SMS settings. -#: actions/smssettings.php:148 -#, fuzzy -msgctxt "BUTTON" -msgid "Confirm" -msgstr "Xác nhận" - #. TRANS: Field label for SMS phone number input in SMS settings form. #: actions/smssettings.php:153 -#, fuzzy msgid "SMS phone number" -msgstr "Số Ä‘iện thoại để nhắn SMS " +msgstr "Không có số Ä‘iện thoại." #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4246,9 +2992,8 @@ msgstr "Số Ä‘iện thoại, không cho phép nhập dấu chấm và ký tá»± #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "Tính năng" +msgstr "Các tính năng đã được lÆ°u." #. TRANS: Checkbox label in SMS preferences form. #: actions/smssettings.php:201 @@ -4259,56 +3004,20 @@ msgstr "" "Hãy gá»­i thông báo đến tôi qua SMS; Tôi biết là bạn Ä‘ang phải trả giá cao " "cho dịch vụ của chúng tôi. " -#. TRANS: Confirmation message for successful SMS preferences save. -#: actions/smssettings.php:315 -#, fuzzy -msgid "SMS preferences saved." -msgstr "Các tính năng đã được lÆ°u." - #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 msgid "No phone number." msgstr "Không có số Ä‘iện thoại." -#. TRANS: Message given saving SMS phone number without having selected a carrier. -#: actions/smssettings.php:344 -#, fuzzy -msgid "No carrier selected." -msgstr "Bạn chÆ°a chá»n hình để Ä‘Æ°a lên." - -#. TRANS: Message given saving SMS phone number that is already set. -#: actions/smssettings.php:352 -#, fuzzy -msgid "That is already your phone number." -msgstr "Äó không phải là số Ä‘iện thoại của bạn." - #. 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 "Äịa chỉ email Yahoo này đã có ngÆ°á»i khác sá»­ dụng rồi." - -#. 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 "" -"Mã xác nhận đã được gá»­i tá»›i địa chỉ email của bạn. Hãy kiểm tra há»™p thÆ° và " -"làm theo hÆ°á»›ng dẫn." - -#. 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 "Äó không phải là số Ä‘iện thoại của bạn." +msgstr "Jabber ID này đã thuá»™c vá» ngÆ°á»i khác rồi." #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: actions/smssettings.php:427 -#, fuzzy msgid "SMS confirmation cancelled." -msgstr "Sá»± xác nhận đã bị hủy bá»." +msgstr "Xác nhận SMS" #. TRANS: Message given trying to remove an SMS phone number that is not #. TRANS: registered for the active user. @@ -4316,18 +3025,6 @@ msgstr "Sá»± xác nhận đã bị hủy bá»." msgid "That is not your phone number." msgstr "Äó không phải là số Ä‘iện thoại của bạn." -#. TRANS: Message given after successfully removing a registered SMS phone number. -#: actions/smssettings.php:470 -#, fuzzy -msgid "The SMS phone number was removed." -msgstr "Số Ä‘iện thoại để nhắn SMS " - -#. TRANS: Label for mobile carrier dropdown menu in SMS settings. -#: actions/smssettings.php:511 -#, fuzzy -msgid "Mobile carrier" -msgstr "Chá»n nhà cung cấp Mobile" - #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 msgid "Select a carrier" @@ -4352,18 +3049,13 @@ 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 "" #: actions/snapshotadminpanel.php:65 -#, fuzzy msgid "Manage snapshot configuration" -msgstr "Tôi theo" - -#: actions/snapshotadminpanel.php:127 -msgid "Invalid snapshot run value." -msgstr "" +msgstr "Xac nhan dia chi email" #: actions/snapshotadminpanel.php:133 msgid "Snapshot frequency must be a number." @@ -4405,49 +3097,23 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "Thay đổi hình đại diện" - #: actions/subedit.php:70 -#, fuzzy msgid "You are not subscribed to that profile." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" +msgstr "Bạn đã theo những ngÆ°á»i này:" -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "Không thể tạo đăng nhận." +msgstr "Không thể chèn thêm vào đăng nhận." #: actions/subscribe.php:77 msgid "This action only accepts POST requests." msgstr "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "Không có tin nhắn nào." - -#: actions/subscribe.php:117 -#, fuzzy -msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" - -#: actions/subscribe.php:145 -#, fuzzy -msgid "Subscribed" -msgstr "Theo bạn này" - -#: actions/subscribers.php:50 -#, fuzzy, php-format -msgid "%s subscribers" -msgstr "Bạn này theo tôi" - #: actions/subscribers.php:52 -#, fuzzy, php-format +#, php-format msgid "%1$s subscribers, page %2$d" -msgstr "Theo tôi" +msgstr "" #: actions/subscribers.php:63 msgid "These are the people who listen to your notices." @@ -4476,16 +3142,6 @@ msgid "" "%) and be the first?" msgstr "" -#: actions/subscriptions.php:52 -#, fuzzy, php-format -msgid "%s subscriptions" -msgstr "Tất cả đăng nhận" - -#: actions/subscriptions.php:54 -#, fuzzy, php-format -msgid "%1$s subscriptions, page %2$d" -msgstr "Tất cả đăng nhận" - #: actions/subscriptions.php:65 msgid "These are the people whose notices you listen to." msgstr "Có nhiá»u ngÆ°á»i gá»­i lá»i nhắn để bạn nghe theo." @@ -4506,64 +3162,47 @@ msgid "" msgstr "" #: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format +#, php-format msgid "%s is not listening to anyone." -msgstr "%1$s dang theo doi tin nhan cua ban tren %2$s." - -#: actions/subscriptions.php:208 -#, fuzzy -msgid "Jabber" -msgstr "Không có Jabber ID." +msgstr "%1$s Ä‘ang theo dõi lÆ°u ý của bạn trên %2$s." #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 msgid "SMS" msgstr "SMS" #: actions/tag.php:69 -#, fuzzy, php-format +#, php-format msgid "Notices tagged with %1$s, page %2$d" -msgstr "Dòng tin nhắn cho %s" +msgstr "Thông báo được gắn thẻ %s" #: actions/tag.php:87 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 1.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/tag.php:93 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (RSS 2.0)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/tag.php:99 -#, fuzzy, php-format +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "Dòng tin nhắn cho %s" +msgstr "Chá»n những ngÆ°á»i bạn của %s" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "Không có tài liệu nào." - -#: actions/tagother.php:65 -#, fuzzy, php-format -msgid "Tag %s" -msgstr "Từ khóa" +msgstr "" #: actions/tagother.php:77 lib/userprofile.php:76 -#, fuzzy msgid "User profile" -msgstr "Hồ sÆ¡" +msgstr "NgÆ°á»i dùng không có thông tin." #: actions/tagother.php:81 actions/userauthorization.php:132 #: lib/userprofile.php:103 msgid "Photo" msgstr "" -#: actions/tagother.php:141 -#, fuzzy -msgid "Tag user" -msgstr "Từ khóa" - #: actions/tagother.php:151 msgid "" "Tags for this user (letters, numbers, -, ., and _), comma- or space- " @@ -4575,48 +3214,13 @@ 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 "Không thể lÆ°u hồ sÆ¡ cá nhân." - #: actions/tagother.php:236 msgid "Use this form to add tags to your subscribers or subscriptions." msgstr "" -#: actions/tagrss.php:35 -#, fuzzy -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." -msgstr "Bạn đã theo những ngÆ°á»i này:" - -#: actions/unsandbox.php:72 -#, fuzzy -msgid "User is not sandboxed." -msgstr "NgÆ°á»i dùng không có thông tin." - -#: actions/unsilence.php:72 -#, fuzzy -msgid "User is not silenced." -msgstr "NgÆ°á»i dùng không có thông tin." - #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "Không có URL cho hồ sÆ¡ để quay vá»." - -#: actions/unsubscribe.php:98 -#, fuzzy -msgid "Unsubscribed" -msgstr "Hết theo" +msgstr "Không có yêu cầu!" #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format @@ -4624,12 +3228,6 @@ 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 "" @@ -4661,11 +3259,6 @@ msgstr "" msgid "Maximum length of a profile bio in characters." msgstr "" -#: actions/useradminpanel.php:231 -#, fuzzy -msgid "New users" -msgstr "Gá»­i thÆ° má»i đến những ngÆ°á»i chÆ°a có tài khoản" - #: actions/useradminpanel.php:235 msgid "New user welcome" msgstr "" @@ -4674,26 +3267,6 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "Tất cả đăng nhận" - -#: actions/useradminpanel.php:242 -#, fuzzy -msgid "Automatically subscribe new users to this user." -msgstr "Tá»± Ä‘á»™ng theo những ngÆ°á»i nào đăng ký theo tôi" - -#: actions/useradminpanel.php:251 -#, fuzzy -msgid "Invitations" -msgstr "ThÆ° má»i đã gá»­i" - -#: actions/useradminpanel.php:256 -#, fuzzy -msgid "Invitations enabled" -msgstr "ThÆ° má»i đã gá»­i" - #: actions/useradminpanel.php:258 msgid "Whether to allow users to invite new users." msgstr "" @@ -4703,17 +3276,13 @@ msgid "Authorize subscription" msgstr "Äăng nhận cho phép" #: 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 "" -"Vui lòng kiểm tra các chi tiết để chắc chắn rằng bạn muốn đăng nhận xem tin " -"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 "" @@ -4723,18 +3292,16 @@ msgstr "Chấp nhận" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 -#, fuzzy msgid "Subscribe to this user" -msgstr "Theo nhóm này" +msgstr "Ngừng đăng ký từ ngÆ°á»i dùng này" #: actions/userauthorization.php:219 msgid "Reject" msgstr "Từ chối" #: actions/userauthorization.php:220 -#, fuzzy msgid "Reject this subscription" -msgstr "Tất cả đăng nhận" +msgstr "Äăng nhận cho phép" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4745,29 +3312,22 @@ msgid "Subscription authorized" msgstr "Äăng nhận được phép" #: 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 "" -"Äăng nhận được phép, nhÆ°ng URL trả lại không được gởi trả. Hãy kiểm tra các " -"hÆ°á»›ng dẫn chi tiết trên site để biết cách cho phép đăng ký. Äăng nhận token " -"của bạn là:" #: actions/userauthorization.php:266 msgid "Subscription rejected" msgstr "Äăng nhận từ chối" #: 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 "" -"Äăng nhận này đã bị từ chối, nhÆ°ng không có URL nào để quay vá». Hãy kiểm tra " -"các hÆ°á»›ng dẫn chi tiết trên site để " #: actions/userauthorization.php:303 #, php-format @@ -4795,19 +3355,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 "Không thể Ä‘á»c URL cho hình đại diện '%s'" +msgstr "" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "Kiểu file ảnh không phù hợp vá»›i '%s'" - -#: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy -msgid "Profile design" -msgstr "Các thiết lập cho Hồ sÆ¡ cá nhân" +msgstr "" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" @@ -4819,54 +3374,27 @@ msgstr "" 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 "Thành viên" - #: 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 "Bạn chÆ°a cập nhật thông tin riêng" - #: 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:69 -#: lib/atomusernoticefeed.php:75 -#, php-format -msgid "Updates from %1$s on %2$s!" -msgstr "" - -#: actions/version.php:73 -#, 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 " @@ -4874,7 +3402,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 " @@ -4882,199 +3410,173 @@ 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 -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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy +#. TRANS: Exception thrown when joining a group fails. +#: classes/Group_member.php:42 msgid "Group join failed." -msgstr "Thông tin nhóm" +msgstr "Không tìm thấy nhóm." -#: classes/Group_member.php:53 -#, fuzzy -msgid "Not part of group." -msgstr "Không thể cập nhật thành viên." +#. 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/Group_member.php:60 -#, fuzzy -msgid "Group leave failed." -msgstr "Thông tin nhóm" - -#: classes/Local_group.php:41 -#, fuzzy -msgid "Could not update local group." -msgstr "Không thể cập nhật thành viên." - -#: classes/Login_token.php:76 -#, fuzzy, php-format -msgid "Could not create login token for %s" -msgstr "Không thể tạo favorite." - -#: classes/Message.php:45 -#, fuzzy +#. 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 "ThÆ° bạn đã gá»­i" +msgstr "ThÆ° đến của bạn" -#: classes/Message.php:61 -#, fuzzy -msgid "Could not insert message." -msgstr "Không thể chèn thêm vào đăng nhận." - -#: classes/Message.php:71 -#, fuzzy +#. 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 "Không thể cập nhật thông tin user vá»›i địa chỉ email đã được xác nhận." +msgstr "Không thể cập nhật thành viê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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "Lá»—i cÆ¡ sở dữ liệu khi chèn trả lá»i: %s" +msgstr "Lá»—i xảy ra khi thêm má»›i hình đại diện" -#: classes/Notice.php:245 -#, fuzzy -msgid "Problem saving notice. Too long." -msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." - -#: classes/Notice.php:249 -#, 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:276 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:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." msgstr "" -#: classes/Notice.php:266 -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:358 classes/Notice.php:385 msgid "Problem saving notice." msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." -#: classes/Notice.php:965 -#, fuzzy -msgid "Problem saving group inbox." -msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%s (%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 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 -msgid "Already subscribed!" -msgstr "" +#. TRANS: Exception thrown when trying to unsubscribe a user from themselves. +#: classes/Subscription.php:178 +msgid "Could not delete self-subscription." +msgstr "Không thể chèn thêm vào đăng nhận." -#: classes/Subscription.php:82 -#, fuzzy -msgid "User has blocked you." -msgstr "NgÆ°á»i dùng không có thông tin." +#. 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 "Không thể chèn thêm vào đăng nhận." -#: classes/Subscription.php:167 -#, fuzzy -msgid "Not subscribed!" -msgstr "ChÆ°a đăng nhận!" +#. TRANS: Exception thrown when a subscription could not be deleted on the server. +#: classes/Subscription.php:218 +msgid "Could not delete subscription." +msgstr "Không thể chèn thêm vào đăng nhận." -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't delete self-subscription." -msgstr "Không thể xóa đăng nhận." - -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -msgstr "Không thể xóa đăng nhận." - -#: classes/Subscription.php:211 -msgid "Couldn't delete subscription." -msgstr "Không thể xóa đăng nhận." - -#: classes/User.php:363 -#, fuzzy, php-format -msgid "Welcome to %1$s, @%2$s!" -msgstr "%s chào mừng bạn " - -#: classes/User_group.php:480 -#, fuzzy -msgid "Could not create group." -msgstr "Không thể tạo favorite." - -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "Không thể tạo đăng nhận." +msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." -#: classes/User_group.php:510 -#, fuzzy +#. TRANS: Server exception thrown when setting group membership failed. +#: classes/User_group.php:529 msgid "Could not set group membership." -msgstr "Không thể tạo đăng nhận." +msgstr "Không thể cập nhật thành viên." -#: 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 "Không thể tạo đăng nhận." +msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:109 msgid "Change your profile settings" msgstr "Thay đổi các thiết lập trong hồ sÆ¡ cá nhân của bạn" -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:116 -#, fuzzy -msgid "Upload an avatar" -msgstr "Cập nhật hình đại diện không thành công." - #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:123 msgid "Change your password" @@ -5087,311 +3589,193 @@ msgstr "Äang thá»±c hiện việc thay đổi email" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 -#, fuzzy msgid "Design your profile" -msgstr "Hồ sÆ¡" - -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:144 -msgid "Other options" -msgstr "" +msgstr "NgÆ°á»i dùng không có thông tin." #. TRANS: Link description in user account settings menu. #: lib/accountsettingsaction.php:146 -#, fuzzy msgid "Other" -msgstr "Sau" +msgstr "" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%s (%s)" +msgstr "Trạng thái của %1$s vào %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" msgstr "" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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 -msgctxt "MENU" -msgid "Personal" -msgstr "Cá nhân" - -#. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, 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 -#, fuzzy +#: lib/action.php:465 msgctxt "TOOLTIP" msgid "Connect to services" -msgstr "Không thể chuyển đến máy chủ: %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:468 msgid "Connect" msgstr "Kết nối" -#. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, 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:474 msgctxt "MENU" msgid "Admin" msgstr "" -#. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format -msgctxt "TOOLTIP" -msgid "Invite friends and colleagues to join you on %s" -msgstr "" -"Äiá»n địa chỉ email và ná»™i dung tin nhắn để gá»­i thÆ° má»i bạn bè và đồng nghiệp " -"của bạn tham gia vào dịch vụ này." - -#. TRANS: Main menu option when logged in and invitations are allowed for inviting new users -#: lib/action.php:458 -#, fuzzy -msgctxt "MENU" -msgid "Invite" -msgstr "ThÆ° má»i" - #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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 -msgctxt "MENU" -msgid "Logout" -msgstr "Thoát" - #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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 -#, fuzzy -msgctxt "MENU" -msgid "Register" -msgstr "Äăng ký" +msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "Äăng nhập" - -#. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Help me!" -msgstr "HÆ°á»›ng dẫn" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" -msgstr "HÆ°á»›ng dẫn" - #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 -#, fuzzy -msgctxt "MENU" -msgid "Search" -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 -#, 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:605 msgid "Local views" msgstr "" -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, 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 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "Tôi theo" +msgstr "" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 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:787 msgid "About" msgstr "Giá»›i thiệu" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "Riêng tÆ°" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 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:808 msgid "Contact" msgstr "Liên hệ" -#: lib/action.php:784 -#, fuzzy +#: lib/action.php:810 msgid "Badge" -msgstr "Tin đã gá»­i" +msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** là dịch vụ gá»­i tin nhắn được cung cấp từ [%%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:846 #, 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 -#, fuzzy, php-format +#: lib/action.php:850 +#, 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 "" -"Äang duÌ€ng [StatusNet](http://status.net/), phiên bản %s phát hành theo bản " -"quyá»n [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 -#, 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:873 #, 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:880 #, 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:884 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:897 #, 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 -msgid "Pagination" +#. TRANS: Pagination message to go to a page displaying information more in the +#. TRANS: present than the currently displayed information. +#: lib/action.php:1247 +msgid "After" 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 -#, 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 -#, fuzzy +#: lib/action.php:1257 msgid "Before" -msgstr "TrÆ°á»›c" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5399,26 +3783,14 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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 "Bạn đã theo những ngÆ°á»i này:" - -#. 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 "Biệt hiệu không được cho phép." - #. TRANS: Client error message. #: lib/adminpanelaction.php:229 msgid "showForm() not implemented." @@ -5429,118 +3801,31 @@ msgstr "" 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 "Không thể lÆ°u thông tin Twitter của bạn!" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy -msgid "Basic site configuration" -msgstr "Xac nhan dia chi email" - #. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy -msgctxt "MENU" -msgid "Site" -msgstr "ThÆ° má»i" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy -msgid "Design configuration" -msgstr "Xác nhận SMS" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:359 -#, fuzzy +#: lib/adminpanelaction.php:360 msgctxt "MENU" msgid "Design" -msgstr "Cá nhân" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:365 -#, fuzzy -msgid "User configuration" -msgstr "Xác nhận SMS" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:367 lib/personalgroupnav.php:115 -msgid "User" msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:373 -#, fuzzy -msgid "Access configuration" -msgstr "Xác nhận SMS" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy -msgid "Paths configuration" -msgstr "Xác nhận SMS" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy -msgid "Sessions configuration" -msgstr "Xác nhận SMS" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:397 -#, fuzzy +#: lib/adminpanelaction.php:398 msgid "Edit site notice" -msgstr "Thông báo má»›i" - -#. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:405 -#, fuzzy -msgid "Snapshots configuration" -msgstr "Xác nhận SMS" +msgstr "Xóa tin nhắn" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: 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 -#, fuzzy, php-format -msgid "Describe your application in %d characters" -msgstr "Nói vá» những sở thích của nhóm trong vòng 140 ký tá»±" - #. TRANS: Form input field instructions. #: lib/applicationeditform.php:213 -#, fuzzy msgid "Describe your application" -msgstr "Nói vá» những sở thích của nhóm trong vòng 140 ký tá»±" +msgstr "Mô tả" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:224 -#, fuzzy msgid "URL of the homepage of this application" -msgstr "URL vá» Trang chính, Blog, hoặc hồ sÆ¡ cá nhân của bạn trên " - -#. TRANS: Form input field label. -#: lib/applicationeditform.php:226 -#, fuzzy -msgid "Source URL" -msgstr "Nguồn" +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:233 @@ -5549,9 +3834,8 @@ msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:242 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "URL vá» Trang chính, Blog, hoặc hồ sÆ¡ cá nhân của bạn trên " +msgstr "" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 @@ -5611,15 +3895,9 @@ msgstr "" #. TRANS: Button label #: lib/applicationlist.php:159 -#, fuzzy msgctxt "BUTTON" msgid "Revoke" -msgstr "Xóa" - -#. TRANS: DT element label in attachment list. -#: lib/attachmentlist.php:88 -msgid "Attachments" -msgstr "" +msgstr "Khôi phục" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:265 @@ -5628,82 +3906,43 @@ msgstr "" #. TRANS: DT element label in attachment list item. #: lib/attachmentlist.php:279 -#, fuzzy msgid "Provider" -msgstr "Hồ sÆ¡ " +msgstr "Xem trÆ°á»›c" #: lib/attachmentnoticesection.php:67 msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -msgid "Tags for this attachment" -msgstr "" - -#: lib/authenticationplugin.php:220 lib/authenticationplugin.php:225 -#, fuzzy -msgid "Password changing failed" -msgstr "Äã lÆ°u mật khẩu." - -#: lib/authenticationplugin.php:235 -#, fuzzy +#: lib/authenticationplugin.php:236 msgid "Password changing is not allowed" -msgstr "Äã lÆ°u mật khẩu." - -#: lib/channel.php:157 lib/channel.php:177 -#, fuzzy -msgid "Command results" -msgstr "Không có kết quả nào" - -#: lib/channel.php:229 lib/mailhandler.php:142 -msgid "Command complete" msgstr "" #: lib/channel.php:240 -#, fuzzy msgid "Command failed" -msgstr " và bạn bè" +msgstr "Bạn và bạn bè" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "Không tìm thấy trạng thái nào tÆ°Æ¡ng ứng vá»›i ID đó." - -#: lib/command.php:99 lib/command.php:596 -#, fuzzy -msgid "User has no last notice" -msgstr "NgÆ°á»i dùng không có thông tin." - -#. 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 "Không thể cập nhật thông tin user vá»›i địa chỉ email đã được xác nhận." - -#. 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 -msgid "Could not find a local user with nickname %s" -msgstr "Không thể cập nhật thông tin user vá»›i địa chỉ email đã được xác nhận." - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 "Tin đã gá»­i" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5711,57 +3950,22 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 -#, fuzzy -msgid "Notice marked as fave." -msgstr "Tin nhắn này đã có trong danh sách tin nhắn Æ°a thích của bạn rồi!" - -#: lib/command.php:323 -#, fuzzy -msgid "You are already a member of that group" -msgstr "Bạn đã theo những ngÆ°á»i này:" - -#. 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 "Không thể theo bạn này: %s đã có trong danh sách bạn bè của bạn rồi." - -#. 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 "Không thể theo bạn này: %s đã có trong danh sách bạn bè của bạn rồi." - -#. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 -#, fuzzy, php-format -msgid "Fullname: %s" -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 -#, fuzzy, php-format +#: lib/command.php:438 lib/mail.php:268 +#, php-format msgid "Location: %s" -msgstr "Thành phố: %s" +msgstr "Thành phố" #. 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 -#, fuzzy, php-format +#: lib/command.php:442 lib/mail.php:271 +#, php-format msgid "Homepage: %s" -msgstr "Trang chủ hoặc Blog: %s" +msgstr "Trang chủ hoặc Blog" -#. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 -#, fuzzy, php-format -msgid "About: %s" -msgstr "Giá»›i thiệu" - -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5770,150 +3974,87 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 "Tin nhắn riêng" - -#: lib/command.php:494 -#, fuzzy -msgid "Error sending direct message." -msgstr "ThÆ° bạn đã gá»­i" - -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "Bạn không thể đăng ký nếu không đồng ý các Ä‘iá»u khoản." - -#: lib/command.php:519 -#, fuzzy -msgid "Already repeated that notice" -msgstr "Xóa tin nhắn" - -#. 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 "Tin đã gá»­i" - -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." +msgstr "Lá»—i xảy ra khi tạo thành viên." -#: lib/command.php:562 +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." msgstr "" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "Trả lá»i tin nhắn này" - -#: lib/command.php:573 -#, fuzzy -msgid "Error saving notice." -msgstr "Có lá»—i xảy ra khi lÆ°u tin nhắn." - -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +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 "Bạn chÆ°a cập nhật thông tin riêng" - -#: lib/command.php:634 -#, fuzzy, php-format -msgid "Subscribed to %s" -msgstr "Theo nhóm này" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "" -#: lib/command.php:664 -#, fuzzy, php-format -msgid "Unsubscribed from %s" -msgstr "Hết theo" - -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "" -#: lib/command.php:685 -#, fuzzy -msgid "Notification off." -msgstr "Không có mã số xác nhận." - -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -#, fuzzy -msgid "Notification on." -msgstr "Không có mã số xác nhận." - -#: lib/command.php:710 -msgid "Can't turn on notification." +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" - -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "Hết theo" - -#: lib/command.php:778 -#, fuzzy +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" +msgstr "Bạn đã theo những ngÆ°á»i này:" -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "Bạn đã theo những ngÆ°á»i này:" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "Không thể tạo favorite." - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "Không thể tạo favorite." -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "Bạn chÆ°a cập nhật thông tin riêng" - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "Bạn chÆ°a cập nhật thông tin riêng" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5955,11 +4096,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "Không có mã số xác nhận." - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5984,11 +4120,6 @@ msgstr "Thay đổi bởi tin nhắn nhanh (IM)" msgid "Updates by SMS" msgstr "Thay đổi bởi SMS" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "Kết nối" - #: lib/connectsettingsaction.php:121 msgid "Authorized connected applications" msgstr "" @@ -5997,37 +4128,17 @@ msgstr "" msgid "Database error" msgstr "" -#: lib/designsettings.php:105 -#, fuzzy -msgid "Upload file" -msgstr "Tải file" - -#: lib/designsettings.php:109 -#, fuzzy -msgid "" -"You can upload your personal background image. The maximum file size is 2MB." -msgstr "" -"Bạn có thể cập nhật hồ sÆ¡ cá nhân tại đây để má»i ngÆ°á»i có thể biết thông tin " -"vá» bạn." - #: lib/designsettings.php:418 msgid "Design defaults restored." msgstr "" #: lib/disfavorform.php:114 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor this notice" -msgstr "cảnh báo tin nhắn" +msgstr "Những tin nhắn Æ°a thích của %s" #: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy msgid "Favor this notice" -msgstr "Bạn muốn cảnh báo tin nhắn này?" - -#: lib/favorform.php:140 -#, fuzzy -msgid "Favor" -msgstr "Ưa thích" +msgstr "Những tin nhắn Æ°a thích của %s" #: lib/feed.php:85 msgid "RSS 1.0" @@ -6057,16 +4168,6 @@ msgstr "" msgid "All" msgstr "" -#: lib/galleryaction.php:139 -#, fuzzy -msgid "Select tag to filter" -msgstr "Chá»n nhà cung cấp Mobile" - -#: lib/galleryaction.php:140 -#, fuzzy -msgid "Tag" -msgstr "Từ khóa" - #: lib/galleryaction.php:141 msgid "Choose a tag to narrow list" msgstr "" @@ -6080,26 +4181,10 @@ msgstr "" 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 vá» Trang chính, Blog, hoặc hồ sÆ¡ cá nhân của bạn trên " - -#: lib/groupeditform.php:168 -#, fuzzy -msgid "Describe the group or topic" -msgstr "Nói vá» những sở thích của nhóm trong vòng 140 ký tá»±" - #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "Nói vá» những sở thích của nhóm trong vòng 140 ký tá»±" - -#: lib/groupeditform.php:179 -#, fuzzy -msgid "" -"Location for the group, if any, like \"City, State (or Region), Country\"" -msgstr "Bạn ở đâu, \"Thành phố, Tỉnh thành, Quốc gia\"" +msgstr "" #: lib/groupeditform.php:187 #, php-format @@ -6111,24 +4196,17 @@ msgid "Group" msgstr "Nhóm" #: lib/groupnav.php:101 -#, fuzzy msgid "Blocked" -msgstr "Ban user" +msgstr "Chặn ngÆ°á»i dùng" #: lib/groupnav.php:102 -#, fuzzy, php-format -msgid "%s blocked users" -msgstr "Ban user" - -#: lib/groupnav.php:108 #, php-format -msgid "Edit %s group properties" -msgstr "" +msgid "%s blocked users" +msgstr "Chặn ngÆ°á»i dùng" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "Thoát" +msgstr "Äăng nhập" #: lib/groupnav.php:114 #, php-format @@ -6141,9 +4219,8 @@ msgid "Add or edit %s design" msgstr "" #: lib/groupsbymemberssection.php:71 -#, fuzzy msgid "Groups with most members" -msgstr "Thành viên" +msgstr "" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" @@ -6163,13 +4240,6 @@ msgstr "Trang này không phải là phÆ°Æ¡ng tiện truyá»n thông mà bạn c msgid "Unsupported image file format." msgstr "Không há»— trợ kiểu file ảnh này." -#: lib/imagefile.php:88 -#, fuzzy, php-format -msgid "That file is too big. The maximum file size is %s." -msgstr "" -"Bạn có thể cập nhật hồ sÆ¡ cá nhân tại đây để má»i ngÆ°á»i có thể biết thông tin " -"vá» bạn." - #: lib/imagefile.php:93 msgid "Partial upload." msgstr "Upload từng phần." @@ -6182,15 +4252,9 @@ msgstr "Hệ thống xảy ra lá»—i trong khi tải file." msgid "Not an image or corrupt file." msgstr "File há»ng hoặc không phải là file ảnh." -#: lib/imagefile.php:122 -#, fuzzy -msgid "Lost our file." -msgstr "Không có tin nhắn nào." - #: lib/imagefile.php:163 lib/imagefile.php:224 -#, fuzzy msgid "Unknown file type" -msgstr "Không há»— trợ kiểu file ảnh này." +msgstr "" #: lib/imagefile.php:244 msgid "MB" @@ -6210,25 +4274,13 @@ msgstr "" msgid "Unknown inbox source %d." msgstr "" -#: lib/joinform.php:114 -#, fuzzy -msgid "Join" -msgstr "Äăng nhập" - -#: lib/leaveform.php:114 -#, fuzzy -msgid "Leave" -msgstr "LÆ°u" - #: lib/logingroupnav.php:80 -#, fuzzy msgid "Login with a username and password" -msgstr "Sai tên đăng nhập hoặc mật khẩu." +msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ." #: lib/logingroupnav.php:86 -#, fuzzy msgid "Sign up for a new account" -msgstr "Tạo tài khoản má»›i" +msgstr "" #. TRANS: Subject for address confirmation email #: lib/mail.php:174 @@ -6237,7 +4289,7 @@ msgstr "Xac nhan dia chi email" #. TRANS: Body for address confirmation email. #: lib/mail.php:177 -#, fuzzy, php-format +#, php-format msgid "" "Hey, %s.\n" "\n" @@ -6252,21 +4304,6 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" -"Chào, %1$s .\n" -"\n" -"Không biết có phải bạn là ngÆ°á»i vừa nhập địa chỉ email này trên %2$s.\n" -"\n" -"Nếu bạn là ngÆ°á»i nhập, và bạn muốn xác nhận lại, hãy nhấn chuá»™t vào Ä‘Æ°á»ng " -"dẫn dÆ°á»›i đây: \n" -"\n" -"\t%3$s\n" -"\n" -"Nếu không phải bạn, hãy bá» qua tin nhắn này.\n" -"\n" -"Cảm Æ¡n bạn đã bá» thá»i gian để Ä‘á»c thÆ°,\n" -"\n" -"%4$s\n" -"\n" #. TRANS: Subject of new-subscriber notification e-mail #: lib/mail.php:243 @@ -6274,9 +4311,16 @@ 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 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6289,27 +4333,21 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s Ä‘ang theo dõi các tin nhắn của bạn trên %2$s.\n" -"\n" -"\t%3$s\n" -"\n" -"NgÆ°á»i bạn trung thành của bạn,\n" -"%4$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 "Thành phố: %s" +msgstr "Lý lịch" #. 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" @@ -6330,31 +4368,25 @@ msgstr "" "Chúc sức khá»e,\n" "%4$s" -#. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 -#, 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 -#, fuzzy, php-format +#: lib/mail.php:463 +#, 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." +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 " @@ -6371,13 +4403,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" @@ -6411,14 +4443,16 @@ msgstr "" "%5$s\n" #. 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 "%s da them tin nhan cua ban vao danh sach tin nhan ua thich" +msgstr "" +"Gá»­i email thông báo tôi khi có ai đó lÆ°u tin nhắn của tôi vào danh sách Æ°a " +"thích của há»." #. TRANS: Body for favorite notification email -#: lib/mail.php:586 -#, fuzzy, php-format +#: 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" @@ -6437,22 +4471,9 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" -"%1$s vừa thêm tin nhắn của bạn trên %2$s vào danh sách tin nhắn Æ°a thích của " -"mình.\n" -"\n" -"Bạn có thể xem lại ná»™i dung tin nhắn của bạn tại đây:\n" -"\n" -"%3$s\n" -"\n" -"Bạn có thể xem danh sách tin nhắn Æ°a thích của %1$s tại đây: \n" -"\n" -"%4$s\n" -"\n" -"Chúc sức khá»e,\n" -"%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" @@ -6460,13 +4481,8 @@ msgid "" "\t%s" msgstr "" -#: lib/mail.php:651 -#, 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" @@ -6503,15 +4519,9 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " từ " - -#: lib/mailhandler.php:37 -#, fuzzy -msgid "Could not parse message." -msgstr "Không thể cập nhật thành viên." +msgstr "" #: lib/mailhandler.php:42 msgid "Not a registered user." @@ -6525,11 +4535,6 @@ msgstr "Xin lá»—i, đó không phải là địa chỉ email mà bạn nhập v msgid "Sorry, no incoming email allowed." msgstr "Xin lá»—i, không có địa chỉ email cho phép." -#: lib/mailhandler.php:228 -#, fuzzy, php-format -msgid "Unsupported message type: %s" -msgstr "Không há»— trợ kiểu file ảnh này." - #: lib/mediafile.php:98 lib/mediafile.php:123 msgid "There was a database error while saving your file. Please try again." msgstr "" @@ -6560,151 +4565,112 @@ 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 -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 "" -#: lib/messageform.php:120 -#, fuzzy -msgid "Send a direct notice" -msgstr "Xóa tin nhắn" - #: lib/messageform.php:146 msgid "To" msgstr "" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy -msgid "Available characters" -msgstr "Nhiá»u hÆ¡n 6 ký tá»±" - -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" -msgstr "Gá»­i" +msgstr "" -#: lib/noticeform.php:160 -#, fuzzy -msgid "Send a notice" -msgstr "Thông báo má»›i" - -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "Bạn Ä‘ang làm gì thế, %s?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "Không thể lÆ°u hồ sÆ¡ cá nhân." +msgstr "" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "" + +#: lib/noticeform.php:217 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 -#, fuzzy +#: lib/noticelist.php:436 msgid "N" -msgstr "Không" +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:567 -#, fuzzy -msgid "in context" -msgstr "Không có ná»™i dung!" - -#: lib/noticelist.php:602 -#, fuzzy -msgid "Repeated by" -msgstr "Tạo" - -#: lib/noticelist.php:629 -#, fuzzy -msgid "Reply to this notice" -msgstr "Trả lá»i tin nhắn này" +#: lib/noticelist.php:502 +msgid "web" +msgstr "" #: lib/noticelist.php:630 +msgid "Reply to this notice" +msgstr "Không thể xóa tin nhắn này." + +#: lib/noticelist.php:631 msgid "Reply" msgstr "Trả lá»i" -#: lib/noticelist.php:674 -#, fuzzy +#: lib/noticelist.php:675 msgid "Notice repeated" -msgstr "Tin đã gá»­i" +msgstr "Tìm kiếm thông báo" #: lib/nudgeform.php:116 -#, fuzzy msgid "Nudge this user" -msgstr "Tin đã gá»­i" +msgstr "Bá» chặn ngÆ°á»i dùng này" #: lib/nudgeform.php:128 -#, fuzzy msgid "Nudge" -msgstr "Tin đã gá»­i" - -#: lib/nudgeform.php:128 -#, fuzzy -msgid "Send a nudge to this user" -msgstr "Bạn đã theo những ngÆ°á»i này:" +msgstr "" #: lib/oauthstore.php:283 msgid "Error inserting new profile" @@ -6722,11 +4688,6 @@ msgstr "Lá»—i xảy ra khi cập nhật hồ sÆ¡ cá nhân" msgid "Error inserting remote profile" msgstr "Lá»—i xảy ra khi thêm má»›i hồ sÆ¡ cá nhân" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "Xóa tin nhắn" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "Không thể chèn thêm vào đăng nhận." @@ -6760,14 +4721,9 @@ msgid "Your sent messages" msgstr "ThÆ° bạn đã gá»­i" #: lib/personaltagcloudsection.php:56 -#, fuzzy, php-format +#, php-format msgid "Tags in %s's notices" -msgstr "cảnh báo tin nhắn" - -#: lib/plugin.php:114 -#, fuzzy -msgid "Unknown" -msgstr "Không tìm thấy action" +msgstr "" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" @@ -6781,15 +4737,6 @@ msgstr "Tất cả đăng nhận" msgid "Subscribers" msgstr "Bạn này theo tôi" -#: lib/profileaction.php:161 -#, fuzzy -msgid "All subscribers" -msgstr "Bạn này theo tôi" - -#: lib/profileaction.php:191 -msgid "User ID" -msgstr "" - #: lib/profileaction.php:196 msgid "Member since" msgstr "Gia nhập từ" @@ -6799,12 +4746,7 @@ msgstr "Gia nhập từ" msgid "Daily average" msgstr "" -#: lib/profileaction.php:264 -#, fuzzy -msgid "All groups" -msgstr "Nhóm" - -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6812,67 +4754,34 @@ msgstr "" msgid "Public" msgstr "Công cá»™ng" -#: lib/publicgroupnav.php:82 -#, fuzzy -msgid "User groups" -msgstr "Hồ sÆ¡" - #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 -#, fuzzy msgid "Recent tags" -msgstr "Các từ khóa hiện tại" - -#: lib/publicgroupnav.php:88 -msgid "Featured" msgstr "" -#: lib/publicgroupnav.php:92 -#, fuzzy -msgid "Popular" -msgstr "Tên tài khoản" - -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "Không có tài liệu nào." +msgstr "" #: lib/repeatform.php:107 -#, fuzzy msgid "Repeat this notice?" -msgstr "Trả lá»i tin nhắn này" +msgstr "Không thể xóa tin nhắn này." #: lib/repeatform.php:132 msgid "Yes" msgstr "Có" #: lib/repeatform.php:132 -#, fuzzy msgid "Repeat this notice" -msgstr "Trả lá»i tin nhắn này" +msgstr "Không thể xóa tin nhắn này." #: lib/revokeroleform.php:91 -#, fuzzy, php-format +#, php-format msgid "Revoke the \"%s\" role from this user" -msgstr "Ban user" - -#: lib/router.php:704 -msgid "No single user defined for single-user mode." msgstr "" -#: lib/sandboxform.php:67 -#, fuzzy -msgid "Sandbox" -msgstr "Há»™p thÆ° đến" - -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "Bá» chặn ngÆ°á»i dùng này" - -#: lib/searchaction.php:120 -#, fuzzy -msgid "Search site" -msgstr "Tìm kiếm" +#: lib/router.php:709 +msgid "No single user defined for single-user mode." +msgstr "" #: lib/searchaction.php:126 msgid "Keyword(s)" @@ -6882,11 +4791,6 @@ msgstr "" msgid "Search" msgstr "Tìm kiếm" -#: lib/searchaction.php:162 -#, fuzzy -msgid "Search help" -msgstr "Tìm kiếm" - #: lib/searchgroupnav.php:80 msgid "People" msgstr "Tên tài khoản" @@ -6899,11 +4803,6 @@ msgstr "Tìm kiếm má»i ngÆ°á»i trên trang web này" msgid "Find content of notices" msgstr "Tìm theo ná»™i dung của tin nhắn" -#: lib/searchgroupnav.php:85 -#, fuzzy -msgid "Find groups on this site" -msgstr "Tìm kiếm má»i ngÆ°á»i trên trang web này" - #: lib/section.php:89 msgid "Untitled section" msgstr "" @@ -6913,24 +4812,17 @@ msgid "More..." msgstr "" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "Thông báo má»›i" +msgstr "" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "Ban user" - -#: lib/subgroupnav.php:83 -#, fuzzy, php-format -msgid "People %s subscribes to" -msgstr "Äăng nhận từ xa" +msgstr "Bá» chặn ngÆ°á»i dùng này" #: lib/subgroupnav.php:91 -#, fuzzy, php-format +#, php-format msgid "People subscribed to %s" -msgstr "Theo nhóm này" +msgstr "Äăng nhận từ xa" #: lib/subgroupnav.php:99 #, php-format @@ -6941,13 +4833,6 @@ msgstr "" msgid "Invite" msgstr "ThÆ° má»i" -#: lib/subgroupnav.php:106 -#, fuzzy, php-format -msgid "Invite friends and colleagues to join you on %s" -msgstr "" -"Äiá»n địa chỉ email và ná»™i dung tin nhắn để gá»­i thÆ° má»i bạn bè và đồng nghiệp " -"của bạn tham gia vào dịch vụ này." - #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" @@ -6959,33 +4844,57 @@ msgid "People Tagcloud as tagged" msgstr "" #: lib/tagcloudsection.php:56 -#, fuzzy msgid "None" -msgstr "Không" +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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" #: lib/topposterssection.php:74 -#, fuzzy msgid "Top posters" -msgstr "Top posters" +msgstr "" #: lib/unsandboxform.php:69 msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "Bá» chặn ngÆ°á»i dùng này" - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -msgid "Unsilence this user" -msgstr "Bá» chặn ngÆ°á»i dùng này" - #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 msgid "Unsubscribe from this user" msgstr "Ngừng đăng ký từ ngÆ°á»i dùng này" @@ -6994,52 +4903,21 @@ msgstr "Ngừng đăng ký từ ngÆ°á»i dùng này" msgid "Unsubscribe" msgstr "Hết theo" -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "NgÆ°á»i dùng không có thông tin." - -#: lib/userprofile.php:117 -#, fuzzy -msgid "Edit Avatar" -msgstr "Hình đại diện" - -#: lib/userprofile.php:234 lib/userprofile.php:248 -#, fuzzy -msgid "User actions" -msgstr "Không tìm thấy action" - #: lib/userprofile.php:237 msgid "User deletion in progress..." msgstr "" -#: lib/userprofile.php:263 -#, fuzzy -msgid "Edit profile settings" -msgstr "Các thiết lập cho Hồ sÆ¡ cá nhân" - #: lib/userprofile.php:264 msgid "Edit" msgstr "" -#: lib/userprofile.php:287 -#, fuzzy -msgid "Send a direct message to this user" -msgstr "Bạn đã theo những ngÆ°á»i này:" - -#: lib/userprofile.php:288 -#, fuzzy -msgid "Message" -msgstr "Tin má»›i nhất" - #: lib/userprofile.php:326 msgid "Moderate" msgstr "" #: lib/userprofile.php:364 -#, fuzzy msgid "User role" -msgstr "Hồ sÆ¡" +msgstr "NgÆ°á»i dùng không có thông tin." #: lib/userprofile.php:366 msgctxt "role" @@ -7052,70 +4930,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 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:1057 +#: lib/util.php:1105 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:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 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:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 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:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 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:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "1 năm trÆ°á»›c" -#: lib/webcolor.php:82 -#, fuzzy, php-format -msgid "%s is not a valid color!" -msgstr "Trang chủ không phải là 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/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po index cd34a34998..12a240ef68 100644 --- a/locale/zh_CN/LC_MESSAGES/statusnet.po +++ b/locale/zh_CN/LC_MESSAGES/statusnet.po @@ -1,6 +1,10 @@ # Translation of StatusNet to Simplified Chinese # +# Author@translatewiki.net: Chenxiaoqino # Author@translatewiki.net: Shizhao +# Author@translatewiki.net: Sweeite012f +# Author@translatewiki.net: Tommyang +# Author@translatewiki.net: ZhengYiFeng # -- # Messages of identi.ca # Copyright (C) 2008 Gouki <gouki@goukihq.org> @@ -10,12 +14,12 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:50:08+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-09 17:38:22+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hans\n" "X-Message-Group: out-statusnet\n" @@ -23,62 +27,55 @@ 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 "接å—" +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 "注册" #. 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 -#, fuzzy msgctxt "LABEL" msgid "Private" -msgstr "éšç§" +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 -#, fuzzy 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 -#, 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,167 +84,168 @@ msgstr "头åƒè®¾ç½®" #: 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 "ä¿å­˜" #. 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 åŠå¥½å‹" +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:114 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 åŠå¥½å‹" +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 " "something yourself." 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)。" -#: 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 -#, fuzzy +#: actions/all.php:182 msgid "You and friends" -msgstr "%s åŠå¥½å‹" +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:120 -#: 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 和好å‹çš„æ›´æ–°ï¼" +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:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 +#: 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 -#, fuzzy +#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161 +#: actions/apitimelineuser.php:163 actions/apiusershow.php:101 msgid "API method not found." -msgstr "API 方法未实现ï¼" +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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy +#: actions/apiaccountupdatedeliverydevice.php:133 msgid "Could not update user." msgstr "无法更新用户。" @@ -262,13 +260,12 @@ msgid "User has no profile." msgstr "用户没有个人信æ¯ã€‚" #: actions/apiaccountupdateprofile.php:147 -#, fuzzy msgid "Could not save profile." msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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,7 +273,7 @@ msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" msgid "" "The server was unable to handle that much POST data (%s bytes) due to its " "current configuration." -msgstr "" +msgstr "æœåŠ¡å™¨å½“å‰çš„设置无法处ç†è¿™ä¹ˆå¤šçš„ POST æ•°æ®ï¼ˆ%s bytes)。" #: actions/apiaccountupdateprofilebackgroundimage.php:136 #: actions/apiaccountupdateprofilebackgroundimage.php:146 @@ -285,295 +282,291 @@ msgstr "" #: actions/groupdesignsettings.php:290 actions/groupdesignsettings.php:300 #: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220 #: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273 -#, fuzzy msgid "Unable to save your design settings." -msgstr "无法ä¿å­˜ Twitter 设置ï¼" +msgstr "无法ä¿å­˜ä½ çš„外观设置。" #: actions/apiaccountupdateprofilebackgroundimage.php:187 #: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy msgid "Could not update your design." -msgstr "无法更新用户。" +msgstr "无法更新你的外观。" #: actions/apiblockcreate.php:105 -#, fuzzy msgid "You cannot block yourself!" -msgstr "无法更新用户。" +msgstr "ä½ ä¸èƒ½å±è”½è‡ªå·±ï¼" #: actions/apiblockcreate.php:126 msgid "Block user failed." -msgstr "阻止用户失败。" +msgstr "å±è”½ç”¨æˆ·å¤±è´¥ã€‚" #: actions/apiblockdestroy.php:114 msgid "Unblock user failed." -msgstr "å–消阻止用户失败。" +msgstr "å–消å±è”½ç”¨æˆ·å¤±è´¥ã€‚" #: actions/apidirectmessage.php:89 -#, fuzzy, php-format +#, php-format msgid "Direct messages from %s" -msgstr "å‘ç»™ %s 的直接消æ¯" +msgstr "%så‘æ¥çš„ç§ä¿¡" #: actions/apidirectmessage.php:93 #, php-format msgid "All the direct messages sent from %s" -msgstr "%s å‘é€çš„直接消æ¯" +msgstr "所有æ¥è‡ª%sçš„ç§ä¿¡" #: actions/apidirectmessage.php:101 #, php-format msgid "Direct messages to %s" -msgstr "å‘ç»™ %s 的直接消æ¯" +msgstr "å‘ç»™%sçš„ç§ä¿¡" #: actions/apidirectmessage.php:105 #, php-format msgid "All the direct messages sent to %s" -msgstr "å‘ç»™ %s 的直接消æ¯" +msgstr "所有å‘ç»™%sçš„ç§ä¿¡" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "消æ¯æ²¡æœ‰æ­£æ–‡ï¼" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 -#, fuzzy, php-format +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 +#, php-format msgid "That's too long. Max message size is %d chars." -msgstr "超出长度é™åˆ¶ã€‚ä¸èƒ½è¶…过 140 个字符。" +msgstr "太长了。最长的信æ¯é•¿åº¦æ˜¯%d个字符。" -#: actions/apidirectmessagenew.php:146 +#: actions/apidirectmessagenew.php:138 msgid "Recipient user not found." msgstr "未找到收件人。" -#: actions/apidirectmessagenew.php:150 +#: actions/apidirectmessagenew.php:142 msgid "Can't send direct messages to users who aren't your friend." -msgstr "无法å‘并éžå¥½å‹çš„用户å‘é€ç›´æŽ¥æ¶ˆæ¯ã€‚" +msgstr "ä¸èƒ½ç»™æœªæˆä¸ºå¥½å‹çš„用户å‘é€ç§ä¿¡ã€‚" -#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109 -#: actions/apistatusesdestroy.php:113 +#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110 +#: actions/apistatusesdestroy.php:121 msgid "No status found with that ID." -msgstr "没有找到此IDçš„ä¿¡æ¯ã€‚" +msgstr "没有找到此 ID 的消æ¯ã€‚" -#: actions/apifavoritecreate.php:119 -#, fuzzy +#: 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." msgstr "无法创建收è—。" -#: actions/apifavoritedestroy.php:122 -#, fuzzy +#: 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 "无法删除收è—。" #: 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 -#, fuzzy msgid "Could not unfollow user: User not found." -msgstr "无法订阅用户:未找到。" +msgstr "无法å–消关注用户:未找到用户。" #: actions/apifriendshipsdestroy.php:120 -#, fuzzy msgid "You cannot unfollow yourself." -msgstr "无法更新用户。" +msgstr "ä½ ä¸èƒ½å–消关注自己。" -#: actions/apifriendshipsexists.php:94 -msgid "Two user ids or screen_names must be supplied." -msgstr "å¿…é¡»æ供两个用户å¸å·æˆ–昵称。" +#: actions/apifriendshipsexists.php:91 +msgid "Two valid IDs or screen_names must be supplied." +msgstr "å¿…é¡»æ供两个有效的 ID 或用户昵称。" #: 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 "昵称åªèƒ½ä½¿ç”¨å°å†™å­—æ¯å’Œæ•°å­—,ä¸åŒ…å«ç©ºæ ¼ã€‚" +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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "æ述过长(ä¸èƒ½è¶…过140字符)。" +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 "" +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 -#, fuzzy, php-format +#, php-format msgid "Alias \"%s\" already in use. Try another one." -msgstr "昵称已被使用,æ¢ä¸€ä¸ªå§ã€‚" +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 "" +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 -#, fuzzy +#. TRANS: Error text shown a user tries to join a group they already are a member of. +#: actions/apigroupjoin.php:111 actions/joingroup.php:100 lib/command.php:336 msgid "You are already a member of that group." -msgstr "您已ç»æ˜¯è¯¥ç»„æˆå‘˜" +msgstr "ä½ å·²ç»æ˜¯è¯¥å°ç»„æˆå‘˜ã€‚" -#: actions/apigroupjoin.php:119 actions/joingroup.php:105 lib/command.php:327 +#. TRANS: Error text shown when a user tries to join a group they are blocked from joining. +#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:341 msgid "You have been blocked from that group by the admin." -msgstr "" +msgstr "ä½ å·²ç»è¢«ç®¡ç†å‘˜ä»Žè¯¥å°ç»„中å±è”½ã€‚" -#: actions/apigroupjoin.php:138 actions/joingroup.php:134 -#, fuzzy, php-format +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, 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 -#, fuzzy +#: actions/apigroupleave.php:115 msgid "You are not a member of this group." -msgstr "您未告知此个人信æ¯" +msgstr "ä½ ä¸æ˜¯è¯¥å°ç»„æˆå‘˜ã€‚" -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, php-format msgid "Could not remove user %1$s from group %2$s." -msgstr "无法订阅用户:未找到。" +msgstr "无法把用户%1$s从%2$så°ç»„删除" #. TRANS: %s is a user name -#: actions/apigrouplist.php:97 -#, fuzzy, php-format +#: 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 群组" +msgstr "%s çš„å°ç»„" -#: actions/apigrouplistall.php:95 -#, fuzzy, php-format +#: actions/apigrouplistall.php:96 +#, php-format msgid "groups on %s" -msgstr "组动作" +msgstr "在%s上的å°ç»„" + +#: actions/apimediaupload.php:99 +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 "无效的 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 #: lib/designsettings.php:294 msgid "There was a problem with your session token. Try again, please." -msgstr "会è¯æ ‡è¯†æœ‰é—®é¢˜ï¼Œè¯·é‡è¯•ã€‚" +msgstr "ä½ çš„ session 出现了一个问题,请é‡è¯•ã€‚" #: actions/apioauthauthorize.php:135 -#, fuzzy msgid "Invalid nickname / password!" msgstr "用户å或密ç ä¸æ­£ç¡®ã€‚" #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "ä¿å­˜ç”¨æˆ·è®¾ç½®æ—¶å‡ºé”™ã€‚" +msgstr "删除 OAuth 应用用户时数æ®åº“出错。" #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "添加标签时数æ®åº“出错:%s" +msgstr "æ’å…¥ OAuth 应用用户时数æ®åº“出错。" #: actions/apioauthauthorize.php:214 #, php-format msgid "" "The request token %s has been authorized. Please exchange it for an access " "token." -msgstr "" +msgstr "Request token 已被批准。请为它æ¢ä¸€ä¸ª access token。" #: actions/apioauthauthorize.php:227 #, php-format msgid "The request token %s has been denied and revoked." -msgstr "" +msgstr "%sçš„ request token 被拒ç»å¹¶è¢«å–消。" #. 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. @@ -589,11 +582,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 @@ -602,14 +595,16 @@ 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>%2$s</strong>çš„<strong>%1$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:463 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 @@ -617,131 +612,134 @@ 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 "" +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 "您ä¸èƒ½åˆ é™¤å…¶ä»–用户的状æ€ã€‚" +msgstr "ä½ ä¸èƒ½åˆ é™¤å…¶ä»–用户的消æ¯ã€‚" #: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72 #: actions/deletenotice.php:52 actions/shownotice.php:92 msgid "No such notice." -msgstr "没有这份通告。" +msgstr "没有这æ¡æ¶ˆæ¯ã€‚" -#: actions/apistatusesretweet.php:83 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." -msgstr "无法开å¯é€šå‘Šã€‚" +msgstr "ä¸èƒ½è½¬å‘你自己的消æ¯ã€‚" -#: actions/apistatusesretweet.php:91 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an notice that was already repeated by the user. +#: actions/apistatusesretweet.php:91 lib/command.php:544 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çš„ä¿¡æ¯ã€‚" +msgstr "没有找到此 ID 的消æ¯ã€‚" -#: actions/apistatusesupdate.php:161 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:157 #: lib/mailhandler.php:60 -#, fuzzy, php-format +#, php-format msgid "That's too long. Max notice size is %d chars." -msgstr "超出长度é™åˆ¶ã€‚ä¸èƒ½è¶…过 140 个字符。" +msgstr "太长了。最长的消æ¯é•¿åº¦æ˜¯%d个字符。" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 -#, fuzzy +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." -msgstr "未找到" +msgstr "未找到。" -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, php-format msgid "Max notice size is %d chars, including attachment URL." -msgstr "" +msgstr "æ¯æ¡æ¶ˆæ¯æœ€é•¿%d字符,包括附件的链接 URL。" -#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261 -#, fuzzy +#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262 msgid "Unsupported format." -msgstr "ä¸æ”¯æŒè¿™ç§å›¾åƒæ ¼å¼ã€‚" +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 -#, fuzzy, php-format +#: actions/apitimelinementions.php:118 +#, 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 更新。" +msgstr " %1$s æ¡æ¶ˆæ¯å›žå¤ç»™æ¥è‡ª %2$s çš„æ¶ˆæ¯ / %3$s。" -#: actions/apitimelinepublic.php:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" -msgstr "%s 公众时间表" +msgstr "%s 公共时间线" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" -msgstr "æ¥è‡ªæ‰€æœ‰äººçš„ %s 消æ¯ï¼" +msgstr "%sæ¡æ¥è‡ªæ‰€æœ‰äººçš„消æ¯ï¼" #: actions/apitimelineretweetedtome.php:111 -#, fuzzy, php-format +#, php-format msgid "Repeated to %s" -msgstr "%s 的回å¤" +msgstr "转å‘ç»™%s" #: actions/apitimelineretweetsofme.php:114 -#, fuzzy, php-format +#, php-format msgid "Repeats of %s" -msgstr "%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 标签的通告" +msgstr "带 %s 标签的消æ¯" -#: 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 "%2$s 上 %1$s çš„æ›´æ–°ï¼" +msgstr "" + +#: 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 @@ -765,16 +763,15 @@ msgid "Avatar" msgstr "头åƒ" #: actions/avatarsettings.php:78 -#, fuzzy, php-format +#, php-format msgid "You can upload your personal avatar. The maximum file size is %s." -msgstr "您å¯ä»¥åœ¨è¿™é‡Œä¸Šä¼ ä¸ªäººå¤´åƒã€‚" +msgstr "ä½ å¯ä»¥ä¸Šä¼ ä½ çš„个人头åƒã€‚文件大å°é™åˆ¶åœ¨%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 -#, fuzzy msgid "User without matching profile." -msgstr "找ä¸åˆ°åŒ¹é…的用户。" +msgstr "用户没有相应个人信æ¯ã€‚" #: actions/avatarsettings.php:119 actions/avatarsettings.php:197 #: actions/grouplogo.php:254 @@ -784,7 +781,7 @@ msgstr "头åƒè®¾ç½®" #: actions/avatarsettings.php:127 actions/avatarsettings.php:205 #: actions/grouplogo.php:202 actions/grouplogo.php:262 msgid "Original" -msgstr "原æ¥çš„" +msgstr "原始" #: actions/avatarsettings.php:142 actions/avatarsettings.php:217 #: actions/grouplogo.php:213 actions/grouplogo.php:274 @@ -792,8 +789,7 @@ msgid "Preview" msgstr "预览" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 -#, fuzzy +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "删除" @@ -806,9 +802,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" @@ -827,70 +822,67 @@ msgid "Failed updating avatar." msgstr "更新头åƒå¤±è´¥ã€‚" #: actions/avatarsettings.php:397 -#, fuzzy msgid "Avatar deleted." -msgstr "头åƒå·²æ›´æ–°ã€‚" +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 -#, fuzzy +#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158 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 " "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 -#, 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 -#, 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 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 -#, 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 "ä¿å­˜é˜»æ­¢ä¿¡æ¯å¤±è´¥ã€‚" +msgstr "ä¿å­˜å±è”½ä¿¡æ¯å¤±è´¥ã€‚" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -900,49 +892,46 @@ msgstr "ä¿å­˜é˜»æ­¢ä¿¡æ¯å¤±è´¥ã€‚" #: 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 +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." msgstr "没有这个组。" #: actions/blockedfromgroup.php:97 -#, fuzzy, php-format +#, php-format msgid "%s blocked profiles" -msgstr "用户没有个人信æ¯ã€‚" +msgstr "%så±è”½çš„用户" #: actions/blockedfromgroup.php:100 -#, fuzzy, php-format +#, php-format msgid "%1$s blocked profiles, page %2$d" -msgstr "%s åŠå¥½å‹" +msgstr "%1$så±è”½çš„用户,第%2$d页" #: actions/blockedfromgroup.php:115 -#, fuzzy msgid "A list of the users blocked from joining this group." -msgstr "该组æˆå‘˜åˆ—表。" +msgstr "被å±è”½åŠ å…¥æ­¤å°ç»„的用户列表。" #: actions/blockedfromgroup.php:288 -#, fuzzy msgid "Unblock user from group" -msgstr "å–消阻止用户失败。" +msgstr "å–消å°ç»„对用户的å±è”½ã€‚" #: actions/blockedfromgroup.php:320 lib/unblockform.php:69 msgid "Unblock" -msgstr "å–消阻止" +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 +#, php-format msgid "Post to %s" -msgstr "相片" +msgstr "å‘布到 %s" #: actions/confirmaddress.php:75 msgid "No confirmation code." -msgstr "没有验è¯ç " +msgstr "没有确认ç " #: actions/confirmaddress.php:80 msgid "Confirmation code not found." @@ -950,18 +939,18 @@ msgstr "未找到确认ç ã€‚" #: actions/confirmaddress.php:85 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 -#, 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 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. @@ -985,52 +974,45 @@ msgid "Couldn't delete email confirmation." msgstr "无法删除电å­é‚®ä»¶ç¡®è®¤ã€‚" #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" 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 -#, 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 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 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 -#, fuzzy +#: lib/action.php:1307 msgid "There was a problem with your session token." -msgstr "会è¯æ ‡è¯†æœ‰é—®é¢˜ï¼Œè¯·é‡è¯•ã€‚" +msgstr "ä½ çš„ session token 出现了问题。" #: actions/deleteapplication.php:123 actions/deleteapplication.php:147 -#, fuzzy msgid "Delete application" -msgstr "没有这份通告。" +msgstr "删除应用" #: actions/deleteapplication.php:149 msgid "" @@ -1038,18 +1020,18 @@ msgid "" "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 @@ -1057,187 +1039,187 @@ 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 "未登录。" #: actions/deletenotice.php:71 msgid "Can't delete this notice." -msgstr "无法删除通告。" +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" -msgstr "删除通告" +msgstr "删除消æ¯" #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" -msgstr "确定è¦åˆ é™¤è¿™æ¡æ¶ˆæ¯å—?" +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:656 -#, fuzzy +#: actions/deletenotice.php:158 lib/noticelist.php:657 msgid "Delete this notice" -msgstr "删除通告" +msgstr "删除" #: actions/deleteuser.php:67 -#, fuzzy msgid "You cannot delete users." -msgstr "无法更新用户。" +msgstr "ä½ ä¸èƒ½åˆ é™¤ç”¨æˆ·ã€‚" #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "您ä¸èƒ½åˆ é™¤å…¶ä»–用户的状æ€ã€‚" +msgstr "ä½ åªèƒ½åˆ é™¤æœ¬åœ°ç”¨æˆ·ã€‚" #: actions/deleteuser.php:110 actions/deleteuser.php:133 -#, fuzzy msgid "Delete user" -msgstr "删除" +msgstr "删除用户" #: 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 "" +"你确定è¦åˆ é™¤è¿™ä¸ªç”¨æˆ·å—?这将从数æ®åº“中清除有关这个用户的所有数æ®ï¼Œæ²¡æœ‰å¤‡ä»½ã€‚" #. 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 "" +msgstr "这个 StatusNet 网站的外观设置" -#: actions/designadminpanel.php:276 -#, fuzzy +#: actions/designadminpanel.php:318 msgid "Invalid logo URL." -msgstr "大å°ä¸æ­£ç¡®ã€‚" +msgstr "无效的 logo URL。" -#: actions/designadminpanel.php:280 -#, fuzzy, php-format +#: actions/designadminpanel.php:322 +#, php-format msgid "Theme not available: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "主题ä¸å¯ç”¨ï¼š%s。" -#: actions/designadminpanel.php:376 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "修改密ç " +msgstr "æ›´æ¢ logo" -#: actions/designadminpanel.php:381 -#, fuzzy +#: actions/designadminpanel.php:431 msgid "Site logo" -msgstr "邀请" +msgstr "网站 logo" -#: actions/designadminpanel.php:388 -#, fuzzy +#: actions/designadminpanel.php:443 msgid "Change theme" -msgstr "修改" +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: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 "ä½ å¯ä»¥ä¸Šä¼ ä¸€ä¸ª .ZIP 压缩文件作为一个自定义的 StatusNet 主题" + +#: actions/designadminpanel.php:486 lib/designsettings.php:101 msgid "Change background image" -msgstr "" +msgstr "æ›´æ¢èƒŒæ™¯å›¾åƒ" -#: actions/designadminpanel.php:423 actions/designadminpanel.php:500 +#: actions/designadminpanel.php:491 actions/designadminpanel.php:574 #: lib/designsettings.php:178 msgid "Background" -msgstr "" +msgstr "背景" -#: actions/designadminpanel.php:428 -#, fuzzy, php-format +#: actions/designadminpanel.php:496 +#, php-format msgid "" "You can upload a background image for the site. The maximum file size is %1" "$s." -msgstr "ä½ å¯ä»¥ç»™ä½ çš„组上载一个logo图。" +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 "" +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 "" +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 "" +msgstr "打开或关闭背景图片" -#: actions/designadminpanel.php:482 lib/designsettings.php:161 +#: actions/designadminpanel.php:550 lib/designsettings.php:161 msgid "Tile background image" -msgstr "" +msgstr "平铺背景图片" -#: actions/designadminpanel.php:491 lib/designsettings.php:170 -#, fuzzy +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" -msgstr "修改密ç " +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 -#, fuzzy +#: actions/designadminpanel.php:600 lib/designsettings.php:204 msgid "Sidebar" -msgstr "æœç´¢" +msgstr "è¾¹æ " -#: actions/designadminpanel.php:539 lib/designsettings.php:217 +#: actions/designadminpanel.php:613 lib/designsettings.php:217 msgid "Text" -msgstr "文本" +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: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 "" +msgstr "使用默认值" -#: actions/designadminpanel.php:581 lib/designsettings.php:248 +#: actions/designadminpanel.php:677 lib/designsettings.php:248 msgid "Restore default designs" -msgstr "" +msgstr "æ¢å¤é»˜è®¤å¤–观" -#: actions/designadminpanel.php:587 lib/designsettings.php:254 +#: actions/designadminpanel.php:683 lib/designsettings.php:254 msgid "Reset back to default" -msgstr "" +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 @@ -1247,136 +1229,124 @@ msgstr "" msgid "Save" msgstr "ä¿å­˜" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 +#: actions/designadminpanel.php:686 lib/designsettings.php:257 msgid "Save design" -msgstr "" +msgstr "ä¿å­˜å¤–观" #: actions/disfavor.php:81 msgid "This notice is not a favorite!" -msgstr "此通告未被收è—ï¼" +msgstr "此消æ¯æœªè¢«æ”¶è—ï¼" #: actions/disfavor.php:94 msgid "Add to favorites" msgstr "加入收è—" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "没有这份文档。" +msgstr "没有这个文件“%sâ€ã€‚" #: 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 -#, fuzzy msgid "Name is required." -msgstr "相åŒçš„密ç ã€‚此项必填。" +msgstr "å字为必填项。" #: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy msgid "Name is too long (max 255 chars)." -msgstr "å…¨å过长(ä¸èƒ½è¶…过 255 个字符)。" +msgstr "å称过长(ä¸èƒ½è¶…过255个字符)。" #: 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 -#, fuzzy msgid "Description is required." -msgstr "æè¿°" +msgstr "必须填写æ述。" #: actions/editapplication.php:194 msgid "Source URL is too long." -msgstr "" +msgstr "æ¥æº URL 太长。" #: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy msgid "Source URL is not valid." -msgstr "主页的URLä¸æ­£ç¡®ã€‚" +msgstr "æ¥æº URL 无效。" #: 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 "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个字符)。" +msgstr "组织å称过长(ä¸èƒ½è¶…过255个字符)。" #: 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." -msgstr "" +msgstr "调回地å€ï¼ˆcallback)过长。" #: actions/editapplication.php:225 actions/newapplication.php:215 msgid "Callback URL is not valid." -msgstr "" +msgstr "调回地å€ï¼ˆCallback URL)无效。" #: actions/editapplication.php:258 -#, fuzzy msgid "Could not update application." -msgstr "无法更新组" +msgstr "无法更新应用。" #: actions/editgroup.php:56 #, php-format msgid "Edit %s group" -msgstr "编辑 %s 组" +msgstr "编辑 %s å°ç»„" #: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 msgid "You must be logged in to create a group." -msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" +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 "åªæœ‰adminæ‰èƒ½ç¼–辑这个组" +msgstr "管ç†å‘˜æ‰å¯ä»¥ç¼–辑å°ç»„。" #: actions/editgroup.php:158 msgid "Use this form to edit the group." -msgstr "使用这个表å•æ¥ç¼–辑组" +msgstr "通过这个表å•æ¥ç¼–辑å°ç»„" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, php-format msgid "description is too long (max %d chars)." -msgstr "æ述过长(ä¸èƒ½è¶…过140字符)。" +msgstr "æ述过长(ä¸èƒ½è¶…过%d个字符)。" #: actions/editgroup.php:228 actions/newgroup.php:168 -#, fuzzy, php-format +#, php-format msgid "Invalid alias: \"%s\"" -msgstr "主页'%s'ä¸æ­£ç¡®" +msgstr "无效的别å:“%sâ€ã€‚" #: actions/editgroup.php:258 msgid "Could not update group." -msgstr "无法更新组" +msgstr "无法更新å°ç»„" -#: actions/editgroup.php:264 classes/User_group.php:496 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." -msgstr "无法创建收è—。" +msgstr "无法创建别å。" #: actions/editgroup.php:280 msgid "Options saved." @@ -1384,28 +1354,26 @@ msgstr "选项已ä¿å­˜ã€‚" #. TRANS: Title for e-mail settings. #: actions/emailsettings.php:61 -#, fuzzy msgid "Email settings" -msgstr "电å­é‚®ä»¶è®¾ç½®" +msgstr "Email 设置" #. 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 -#, fuzzy 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. @@ -1415,7 +1383,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 "移除" @@ -1425,8 +1392,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. @@ -1434,7 +1401,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 "å–消" @@ -1449,7 +1415,6 @@ 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 "添加" @@ -1458,59 +1423,56 @@ msgstr "添加" #. TRANS: Form legend for incoming SMS settings form. #: actions/emailsettings.php:147 actions/smssettings.php:171 msgid "Incoming email" -msgstr "å‘布用的电å­é‚®ä»¶" +msgstr "接收用 email" #. 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. #: 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 "Email å好" #. 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 @@ -1524,9 +1486,8 @@ msgstr "公开电å­é‚®ä»¶çš„ MicroID。" #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 -#, fuzzy msgid "Email preferences saved." -msgstr "åŒæ­¥é€‰é¡¹å·²ä¿å­˜ã€‚" +msgstr "Email å好已ä¿å­˜ã€‚" #. TRANS: Message given saving e-mail address without having provided one. #: actions/emailsettings.php:353 @@ -1539,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 "ä¸æ˜¯æœ‰æ•ˆçš„电å­é‚®ä»¶ã€‚" @@ -1547,7 +1508,7 @@ 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 @@ -1560,7 +1521,7 @@ msgstr "此电å­é‚®ä»¶å±žäºŽå…¶ä»–用户。" #: actions/emailsettings.php:391 actions/imsettings.php:348 #: actions/smssettings.php:373 msgid "Couldn't insert confirmation code." -msgstr "无法æ’入验è¯ç ã€‚" +msgstr "无法æ’入确认ç ã€‚" #. TRANS: Message given saving valid e-mail address that is to be confirmed. #: actions/emailsettings.php:398 @@ -1568,8 +1529,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. @@ -1581,27 +1542,24 @@ 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 "Email 确认已å–消。" #. 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." @@ -1617,7 +1575,7 @@ 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 @@ -1626,56 +1584,53 @@ msgstr "已添加新的å‘布用的电å­é‚®ä»¶åœ°å€ã€‚" #: actions/favor.php:79 msgid "This notice is already a favorite!" -msgstr "已收è—此通告ï¼" +msgstr "已收è—过此消æ¯ï¼" #: actions/favor.php:92 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor favorite" msgstr "å–消收è—" #: actions/favorited.php:65 lib/popularnoticesection.php:91 #: lib/publicgroupnav.php:93 -#, fuzzy msgid "Popular notices" -msgstr "没有这份通告。" +msgstr "收è—最多的消æ¯" #: actions/favorited.php:67 -#, fuzzy, php-format +#, 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." -msgstr "" +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 "" +msgstr "通过点击任æ„消æ¯ä¸‹çš„收è—图标æˆä¸ºç¬¬ä¸€ä¸ªç»™è‡ªå·±çš„收è—添加消æ¯çš„人。" #: 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 "" +msgstr "现在就[注册一个账户](%%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 -#, fuzzy, php-format +#, php-format msgid "Updates favored by %1$s on %2$s!" -msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼" +msgstr "" #: actions/featured.php:69 lib/featureduserssection.php:87 #: lib/publicgroupnav.php:89 @@ -1688,134 +1643,114 @@ 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 "%s上的优秀用户摘选" #: actions/file.php:34 -#, fuzzy msgid "No notice ID." -msgstr "新通告" +msgstr "æ²¡æœ‰æ¶ˆæ¯ ID。" #: 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 "è¦æŸ¥çœ‹çš„用户ä¸å­˜åœ¨ã€‚" #: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 msgid "You can use the local subscription!" -msgstr "您å¯ä»¥åœ¨è¿™é‡Œè®¢é˜…ï¼" +msgstr "ä½ å¯ä»¥ä½¿ç”¨æœ¬åœ°å…³æ³¨ï¼" #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." -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 "无法将 request token 转æ¢ä¸º access token。" #: actions/finishremotesubscribe.php:118 -#, fuzzy msgid "Remote service uses unknown version of OMB protocol." -msgstr "æ­¤OMBå议版本无效。" +msgstr "远程æœåŠ¡ä½¿ç”¨äº†æœªçŸ¥ç‰ˆæœ¬çš„ OMB å议。" #: actions/finishremotesubscribe.php:138 -#, fuzzy msgid "Error updating remote profile." -msgstr "更新远程的个人信æ¯æ—¶å‡ºé”™" +msgstr "更新远程的个人信æ¯æ—¶å‡ºé”™ã€‚" #: actions/getfile.php:79 -#, fuzzy msgid "No such file." -msgstr "没有这份通告。" +msgstr "没有这个文件。" #: actions/getfile.php:83 -#, fuzzy msgid "Cannot read file." -msgstr "没有这份通告。" +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 -#, fuzzy +#: 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 -#, fuzzy +#: actions/unsubscribe.php:84 lib/profileformaction.php:86 msgid "No profile with that ID." -msgstr "没有找到此IDçš„ä¿¡æ¯ã€‚" +msgstr "æ­¤ ID 没有用户。" #: actions/groupblock.php:81 actions/groupunblock.php:81 #: actions/makeadmin.php:81 -#, fuzzy msgid "No group specified." -msgstr "没有收件人。" +msgstr "没有指定å°ç»„。" #: actions/groupblock.php:91 msgid "Only an admin can block group members." -msgstr "" +msgstr "åªæœ‰ç®¡ç†å‘˜å¯ä»¥å±è”½å°ç»„æˆå‘˜ã€‚" #: actions/groupblock.php:95 -#, fuzzy msgid "User is already blocked from group." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "用户已ç»è¢«å°ç»„å±è”½ã€‚" #: actions/groupblock.php:100 -#, fuzzy msgid "User is not a member of group." -msgstr "您未告知此个人信æ¯" +msgstr "用户ä¸æ˜¯å°ç»„æˆå‘˜ã€‚" #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "阻止用户" +msgstr "从å°ç»„中å±è”½ç”¨æˆ·" #: actions/groupblock.php:160 #, php-format @@ -1824,139 +1759,130 @@ msgid "" "will be removed from the group, unable to post, and unable to subscribe to " "the group in the future." msgstr "" +"你确定è¦åœ¨â€œ%2$sâ€å°ç»„中å±è”½ç”¨æˆ·â€œ%1$sâ€ä¹ˆï¼Ÿä»–们将被从å°ç»„中删除,并且ä¸èƒ½åœ¨å°ç»„" +"内å‘布消æ¯æˆ–关注该å°ç»„。" #. 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 msgid "Database error blocking user from group." -msgstr "" +msgstr "在å°ç»„中å±è”½ç”¨æˆ·æ—¶æ•°æ®åº“å‘生错误。" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "没有ID" +msgstr "没有 ID。" #: actions/groupdesignsettings.php:68 -#, fuzzy msgid "You must be logged in to edit a group." -msgstr "您必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" +msgstr "你必须登录æ‰èƒ½åˆ›å»ºå°ç»„。" #: actions/groupdesignsettings.php:144 -#, fuzzy msgid "Group design" -msgstr "组" +msgstr "å°ç»„页é¢å¤–观。" #: actions/groupdesignsettings.php:155 msgid "" "Customize the way your group looks with a background image and a colour " "palette of your choice." -msgstr "" +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 "无法更新你的外观。" #: 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" -msgstr "组logo" +msgstr "å°ç»„logo" #: actions/grouplogo.php:153 -#, fuzzy, php-format +#, php-format msgid "" "You can upload a logo image for your group. The maximum file size is %s." -msgstr "ä½ å¯ä»¥ç»™ä½ çš„组上载一个logo图。" +msgstr "ä½ å¯ä»¥ç»™ä½ çš„å°ç»„上传一个 logo。文件最大é™åˆ¶ä¸º%s。" #: actions/grouplogo.php:365 -#, fuzzy msgid "Pick a square area of the image to be the logo." -msgstr "请选择一å—方形区域作为你的头åƒ" +msgstr "请选择一å—方形区域作为 logo。" #: actions/grouplogo.php:399 msgid "Logo updated." msgstr "logo已更新。" #: actions/grouplogo.php:401 -#, fuzzy msgid "Failed updating logo." -msgstr "æ›´æ–°logo失败。" +msgstr "æ›´æ–° logo 失败。" #: actions/groupmembers.php:100 lib/groupnav.php:92 #, php-format msgid "%s group members" -msgstr "%s 组æˆå‘˜" +msgstr "%s çš„å°ç»„æˆå‘˜" #: actions/groupmembers.php:103 -#, fuzzy, php-format +#, php-format msgid "%1$s group members, page %2$d" -msgstr "%s 组æˆå‘˜, 第 %d 页" +msgstr "%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" -msgstr "admin管ç†å‘˜" +msgstr "管ç†" #: actions/groupmembers.php:392 lib/blockform.php:69 msgid "Block" -msgstr "阻止" +msgstr "å±è”½" #: actions/groupmembers.php:487 -#, fuzzy msgid "Make user an admin of the group" -msgstr "åªæœ‰adminæ‰èƒ½ç¼–辑这个组" +msgstr "使用户æˆä¸ºå°ç»„的管ç†å‘˜" #: actions/groupmembers.php:519 -#, fuzzy msgid "Make Admin" -msgstr "admin管ç†å‘˜" +msgstr "设置管ç†å‘˜" #: actions/groupmembers.php:519 msgid "Make this user an admin" -msgstr "" +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:62 lib/atomusernoticefeed.php:68 +#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69 #, php-format msgid "%s timeline" -msgstr "%s 时间表" +msgstr "%s的时间线" #. 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 "%2$s 上 %1$s çš„æ›´æ–°ï¼" +msgstr "在%2$s上%1$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 "组" +msgstr "å°ç»„" #: actions/groups.php:64 #, php-format msgid "Groups, page %d" -msgstr "组,第 %d 页" +msgstr "å°ç»„,第 %d 页" #: actions/groups.php:90 #, php-format @@ -1967,37 +1893,39 @@ msgid "" "for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup" "%%%%)" msgstr "" +"%%%%site.name%%%%çš„å°ç»„å¯ä»¥è®©ä½ æ‰¾åˆ°æœ‰ç›¸åŒå…´è¶£çš„朋å‹ä¸€èµ·äº¤æµã€‚当你加入到一个å°" +"组åŽå¯ä»¥å¯ä»¥é€šè¿‡ä½¿ç”¨â€œ!å°ç»„å称â€å‘布消æ¯ç»™æ‰€æœ‰å…¶ä»–çš„å°ç»„æˆå‘˜ã€‚找ä¸åˆ°æ„Ÿå…´è¶£çš„å°" +"组?试一下[æœç´¢å°ç»„](%%%%action.groupsearch%%%%)或[建立自己的å°ç»„](%%%%" +"action.newgroup%%%%)ï¼" #: 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 +#, 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 "" -"在 %%site.name%% 的用户信æ¯ä¸­æœç´¢ï¼Œå¯ä»¥æœç´¢å§“åã€æœªçŸ¥å’Œçˆ±å¥½ã€‚æœç´¢æ¡ä»¶è‡³å°‘包" -"å« 3 个字符,多个æœç´¢æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”。" +"在%%site.name%%通过å称ã€åœ°ç‚¹æˆ–者æè¿°æœç´¢å°ç»„。请用空格将关键è¯åˆ†å¼€ï¼Œæ¯ä¸ªå…³é”®" +"è¯è‡³å°‘3个字符。" #: actions/groupsearch.php:58 msgid "Group search" -msgstr "组检索" +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 msgid "" "If you can't find the group you're looking for, you can [create it](%%action." "newgroup%%) yourself." -msgstr "" +msgstr "如果你找ä¸åˆ°ä½ æƒ³è¦çš„å°ç»„,你å¯ä»¥è‡ªå·± [创建它](%%action.newgroup%%) 。" #: actions/groupsearch.php:85 #, php-format @@ -2005,24 +1933,23 @@ msgid "" "Why not [register an account](%%action.register%%) and [create the group](%%" "action.newgroup%%) yourself!" msgstr "" +"现在就 [注册一个å¸å·](%%action.register%%) 并 [创建该å°ç»„](%%action.newgroup%" +"%) ï¼" #: actions/groupunblock.php:91 msgid "Only an admin can unblock group members." -msgstr "" +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 设置" @@ -2035,21 +1962,19 @@ msgid "" "You can send and receive notices through Jabber/GTalk [instant messages](%%" "doc.im%%). Configure your address and settings below." msgstr "" -"您å¯ä»¥é€šè¿‡Jabber/GTalk [å³æ—¶é€šè®¯å·¥å…·](%%doc.im%%)å‘é€å’ŒæŽ¥å—通告。在这里é…置它" +"ä½ å¯ä»¥é€šè¿‡Jabber/GTalk [å³æ—¶é€šè®¯å·¥å…·](%%doc.im%%)å‘é€å’ŒæŽ¥æ”¶æ¶ˆæ¯ã€‚在这里é…置它" "们。" #. 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 "IM ä¸å¯ç”¨ã€‚" #. 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 "IM 地å€" #: actions/imsettings.php:113 msgid "Current confirmed Jabber/GTalk address." @@ -2063,8 +1988,8 @@ msgid "" "Awaiting confirmation on this address. Check your Jabber/GTalk account for a " "message with further instructions. (Did you add %s to your buddy list?)" msgstr "" -"正在等待这个地å€çš„确认。请查阅你Jabber/GTalkçš„å¸æˆ·çœ‹æœ‰æ²¡æœ‰æ”¶åˆ°è¿›ä¸€æ­¥çš„指示。" -"(你是å¦å·²ç»æ·»åŠ  %s为你的好å‹ï¼Ÿï¼‰" +"正在等待验è¯è¿™ä¸ªåœ°å€ã€‚请查阅你的 Jabber/GTalk å¸æˆ·çœ‹æœ‰æ²¡æœ‰æ”¶åˆ°ä¸‹ä¸€æ­¥çš„指示。" +"(你添加 %s 为到你的好å‹äº†å—?)" #. TRANS: IM address input field instructions in IM settings form. #. TRANS: %s is the IM address set for the site. @@ -2075,33 +2000,32 @@ msgid "" "add %s to your buddy list in your IM client or on GTalk." msgstr "" "Jabber 或 GTalk å¸å·ï¼Œç±»ä¼¼\"UserName@example.org\"。首先,必须在å³æ—¶èŠå¤©å·¥å…·" -"或GTalk中将 %s 加为好å‹ã€‚" +"或 GTalk 中将 %s 加为好å‹ã€‚" #. TRANS: Form legend for IM preferences form. #: actions/imsettings.php:155 -#, fuzzy msgid "IM preferences" -msgstr "首选项" +msgstr "IM 首选项已ä¿å­˜ã€‚" #. 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 msgid "Publish a MicroID for my Jabber/GTalk address." -msgstr "公开Jabber/GTalkå¸å·çš„ MicroID。" +msgstr "公开 Jabber/GTalk å¸å·çš„ MicroID。" #. TRANS: Confirmation message for successful IM preferences save. #: actions/imsettings.php:287 actions/othersettings.php:180 @@ -2116,7 +2040,7 @@ msgstr "没有 Jabber ID。" #. TRANS: Message given saving IM address that cannot be normalised. #: actions/imsettings.php:317 msgid "Cannot normalize that Jabber ID" -msgstr "无法识别此Jabber ID" +msgstr "无法识别此 Jabber ID" #. TRANS: Message given saving IM address that not valid. #: actions/imsettings.php:322 @@ -2126,7 +2050,7 @@ msgstr "ä¸æ˜¯æœ‰æ•ˆçš„ Jabber ID" #. TRANS: Message given saving IM address that is already set. #: actions/imsettings.php:326 msgid "That is already your Jabber ID." -msgstr "您已登记此Jabberå¸å·ã€‚" +msgstr "这个已ç»æ˜¯ä½ çš„ Jabber å¸å·äº†ã€‚" #. TRANS: Message given saving IM address that is already set for another user. #: actions/imsettings.php:330 @@ -2140,41 +2064,38 @@ msgstr "Jabber ID 属于å¦ä¸€ç”¨æˆ·ã€‚" msgid "" "A confirmation code was sent to the IM address you added. You must approve %" "s for sending messages to you." -msgstr "验è¯ç å·²è¢«å‘é€åˆ°æ‚¨æ–°å¢žçš„å³æ—¶é€šè®¯å¸å·ã€‚您必须å…许 %s å‘您å‘é€ä¿¡æ¯ã€‚" +msgstr "验è¯ç å·²è¢«å‘é€åˆ°ä½ æ–°å¢žçš„ IM 地å€ã€‚ä½ å¿…é¡»å…许 %s å‘ä½ å‘é€ä¿¡æ¯ã€‚" #. TRANS: Message given canceling IM address confirmation for the wrong IM address. #: actions/imsettings.php:388 msgid "That is the wrong IM address." -msgstr "å³æ—¶é€šè®¯å¸å·é”™è¯¯ã€‚" +msgstr "IM 地å€é”™è¯¯ã€‚" #. TRANS: Server error thrown on database error canceling IM address confirmation. #: actions/imsettings.php:397 -#, fuzzy msgid "Couldn't delete IM confirmation." -msgstr "无法删除电å­é‚®ä»¶ç¡®è®¤ã€‚" +msgstr "无法删除 IM 确认。" #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy msgid "IM confirmation cancelled." -msgstr "å·²å–消确认。" +msgstr "IM 确认已å–消。" #. 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 "è¿™ä¸æ˜¯æ‚¨çš„Jabberå¸å·ã€‚" +msgstr "è¿™ä¸æ˜¯ä½ çš„ Jabber ID。" #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 -#, fuzzy msgid "The IM address was removed." -msgstr "地å€è¢«ç§»é™¤ã€‚" +msgstr "IM 地å€å·²åˆ é™¤ã€‚" #: 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 @@ -2183,21 +2104,21 @@ msgstr "%s 的收件箱" #: actions/inbox.php:115 msgid "This is your inbox, which lists your incoming private messages." -msgstr "这是您的收件箱,包å«å‘给您的ç§äººæ¶ˆæ¯ã€‚" +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 msgid "Invalid email address: %s" -msgstr "电å­é‚®ä»¶åœ°å€ %s ä¸æ­£ç¡®" +msgstr "无效的电å­é‚®ä»¶åœ°å€ï¼š%s" #: actions/invite.php:110 msgid "Invitation(s) sent" @@ -2209,11 +2130,11 @@ 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "%1$s (%2$s)" @@ -2221,7 +2142,7 @@ msgstr "%1$s (%2$s)" #: actions/invite.php:136 msgid "" "These people are already users and you were automatically subscribed to them:" -msgstr "这些好å‹å·²æ³¨å†Œï¼Œæ‚¨å·²è‡ªåŠ¨è®¢é˜…这些用户。" +msgstr "这些好å‹å·²æ³¨å†Œï¼Œä½ å·²è‡ªåŠ¨å…³æ³¨äº†è¿™äº›ç”¨æˆ·ï¼š" #: actions/invite.php:144 msgid "Invitation(s) sent to the following people:" @@ -2231,7 +2152,7 @@ msgstr "å·²å‘é€é‚€è¯·ç»™è¿™äº›äººï¼š" msgid "" "You will be notified when your invitees accept the invitation and register " "on the site. Thanks for growing the community!" -msgstr "如果其他人接å—邀请并注册,您将得到通知。谢谢您推动了社区å‘展壮大ï¼" +msgstr "如果其他人接å—邀请并注册,你将得到通知。谢谢你推动了社区å‘展壮大ï¼" #: actions/invite.php:162 msgid "" @@ -2240,7 +2161,7 @@ msgstr "使用这个表å•æ¥é‚€è¯·å¥½å‹å’ŒåŒäº‹åŠ å…¥ã€‚" #: actions/invite.php:187 msgid "Email addresses" -msgstr "电å­é‚®ä»¶åœ°å€" +msgstr "电邮地å€" #: actions/invite.php:189 msgid "Addresses of friends to invite (one per line)" @@ -2256,16 +2177,15 @@ 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 #, php-format msgid "%1$s has invited you to join them on %2$s" -msgstr "%1$s 邀请您加入 %2$s" +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 @@ -2298,175 +2218,168 @@ msgid "" "\n" "Sincerely, %2$s\n" msgstr "" -"%1$s 邀请你加入 %2$s (%3$s).\n" +"%1$s 邀请你加入 %2$s (%3$s)。\n" +"\n" +"%2$s 是一个能让你和你认识的或感兴趣的人ä¿æŒè”系的微åšå®¢æœåŠ¡ã€‚ \n" "\n" -"%2$s 是一个能让你和你认识的ã€æ„Ÿå…´è¶£çš„人ä¿æŒè”系的微åšå®¢æœåŠ¡ã€‚ \n" "ä½ å¯ä»¥å’Œä½ è®¤è¯†çš„人分享你的近况ã€æƒ³æ³•æˆ–者你的网络生活。你也å¯ä»¥ç»“交有共åŒå…´è¶£" "的新朋å‹ã€‚\n" "\n" -"%1$s 说:\n" +"%1$s 说:\n" "\n" "%4$s\n" "\n" -"ä½ å¯ä»¥åœ¨è¿™é‡ŒæŸ¥é˜… %1$s's 的资料 %2$s :\n" +"ä½ å¯ä»¥åœ¨è¿™é‡ŒæŸ¥çœ‹%1$s在%2$s的资料页:\n" "\n" "%5$s\n" "\n" -"如果你想使用这个æœåŠ¡ï¼Œè¯·ç‚¹å‡»ä¸€ä¸‹é“¾æŽ¥æŽ¥å—邀请。\n" +"如果你想试试这个æœåŠ¡ï¼Œè¯·ç‚¹å‡»ä¸‹é¢çš„链接接å—邀请。\n" +"\n" "%6$s\n" "\n" -"如果你ä¸æ„¿æ„,请跳过这æ¡ä¿¡æ¯ã€‚感谢您的è€å¿ƒå’Œæ—¶é—´ã€‚\n" +"如果你目å‰ä¸æ„¿æ„,请跳过这æ¡ä¿¡æ¯ã€‚感谢你的è€å¿ƒå’Œæ—¶é—´ã€‚\n" "\n" "诚挚的感谢, %2$s\n" #: 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 msgid "No nickname or ID." -msgstr "没有昵称。" +msgstr "没有昵称或 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 -#, fuzzy, php-format +#: actions/joingroup.php:141 +#, php-format msgid "%1$s joined group %2$s" -msgstr "%s 加入 %s 组" +msgstr "%1$s加入了%2$så°ç»„" #: 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 +#. TRANS: Error text shown when trying to leave an existing group the user is not a member of. +#: actions/leavegroup.php:100 lib/command.php:389 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 +#: actions/leavegroup.php:137 +#, 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 "ä¿æŒè¿™å°æœºå™¨ä¸Šçš„登录状æ€ã€‚ä¸è¦åœ¨å…±ç”¨çš„机器上ä¿æŒç™»å½•ï¼" +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 -#, fuzzy, php-format +#: actions/login.php:292 +msgid "Login with your username and password." +msgstr "使用用户å和密ç ç™»å½•ã€‚" + +#: actions/login.php:295 +#, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." -msgstr "" -"请使用你的å¸å·å’Œå¯†ç ç™»å…¥ã€‚没有å¸å·ï¼Ÿ[注册](%%action.register%%) 一个新å¸å·, " -"或使用 [OpenID](%%action.openidlogin%%). " +"Don't have a username yet? [Register](%%action.register%%) a new account." +msgstr "没有å¸å·ï¼Ÿ[注册](%%action.register%%) 一个新å¸å·ã€‚" #: actions/makeadmin.php:92 msgid "Only an admin can make another user an admin." -msgstr "" +msgstr "åªæœ‰ç®¡ç†å‘˜å¯ä»¥è®©å¦ä¸€ä¸ªç”¨æˆ·æˆä¸ºç®¡ç†å‘˜ã€‚" #: actions/makeadmin.php:96 -#, fuzzy, php-format +#, php-format msgid "%1$s is already an admin for group \"%2$s\"." -msgstr "用户没有个人信æ¯ã€‚" +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 "无法订阅用户:未找到。" +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 "åªæœ‰adminæ‰èƒ½ç¼–辑这个组" +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 "Source URL 必填。" #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "无法创建收è—。" +msgstr "无法创建应用。" #: actions/newgroup.php:53 msgid "New group" -msgstr "新组" +msgstr "æ–°å°ç»„" #: actions/newgroup.php:110 msgid "Use this form to create a new group." -msgstr "使用此表格创建组。" +msgstr "通过此表å•åˆ›å»ºå°ç»„。" #: actions/newmessage.php:71 actions/newmessage.php:231 msgid "New message" msgstr "新消æ¯" -#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481 +#. TRANS: Error text shown when trying to send a direct message to a user without a mutual subscription (each user must be subscribed to the other). +#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:502 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "没有内容ï¼" @@ -2474,30 +2387,32 @@ msgstr "没有内容ï¼" msgid "No recipient specified." msgstr "没有收件人。" -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "ä¸è¦å‘自己å‘é€æ¶ˆæ¯ï¼›è·Ÿè‡ªå·±æ‚„悄说就得了。" #: actions/newmessage.php:181 -#, fuzzy msgid "Message sent" -msgstr "新消æ¯" +msgstr "消æ¯å·²å‘é€" -#: actions/newmessage.php:185 -#, fuzzy, php-format +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 +#, php-format msgid "Direct message to %s sent." -msgstr "å·²å‘ %s å‘é€æ¶ˆæ¯" +msgstr "å‘%så‘é€ç§ä¿¡æˆåŠŸã€‚" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "Ajax错误" #: actions/newnotice.php:69 msgid "New notice" -msgstr "新通告" +msgstr "新消æ¯" -#: actions/newnotice.php:217 +#: actions/newnotice.php:227 msgid "Notice posted" msgstr "消æ¯å·²å‘布。" @@ -2507,17 +2422,17 @@ msgid "" "Search for notices on %%site.name%% by their contents. Separate search terms " "by spaces; they must be 3 characters or more." msgstr "" -"在 %%site.name%% 的通告内容中æœç´¢ã€‚æœç´¢æ¡ä»¶è‡³å°‘åŒ…å« 3 个字符,多个æœç´¢æ¡ä»¶ç”¨" -"空格分隔。" +"在%%site.name%%的消æ¯å†…容中æœç´¢ã€‚æœç´¢æ¡ä»¶è‡³å°‘åŒ…å« 3 个字符,多个æœç´¢æ¡ä»¶ç”¨ç©º" +"格分隔。" #: actions/noticesearch.php:78 msgid "Text search" -msgstr "æœç´¢æ–‡æœ¬" +msgstr "æœç´¢æ¶ˆæ¯" #: actions/noticesearch.php:91 -#, fuzzy, php-format +#, php-format msgid "Search results for \"%1$s\" on %2$s" -msgstr "æœç´¢æœ‰å…³\"%s\"的消æ¯" +msgstr "在%2$s上æœç´¢\"%1$s\"的结果" #: actions/noticesearch.php:121 #, php-format @@ -2525,6 +2440,8 @@ msgid "" "Be the first to [post on this topic](%%%%action.newnotice%%%%?" "status_textarea=%s)!" msgstr "" +"æˆä¸ºç¬¬ä¸€ä¸ª[对该主题å‘布消æ¯]的人(%%%%action.newnotice%%%%?status_textarea=%" +"s) ï¼" #: actions/noticesearch.php:124 #, php-format @@ -2532,100 +2449,98 @@ msgid "" "Why not [register an account](%%%%action.register%%%%) and be the first to " "[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!" msgstr "" +"现在就 [注册账户](%%%%action.register%%%%) 并æˆä¸ºç¬¬ä¸€ä¸ª [对该主题å‘布消æ¯çš„" +"人](%%%%action.newnotice%%%%?status_textarea=%s) ï¼" #: actions/noticesearchrss.php:96 -#, fuzzy, php-format +#, php-format msgid "Updates with \"%s\"" -msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼" +msgstr "\"%s\"çš„æ›´æ–°" #: actions/noticesearchrss.php:98 -#, fuzzy, php-format +#, 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" -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 "" +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 状æ€" +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 "请åªç”¨HTTP明文的%sURLs的地å€ã€‚" #. TRANS: Client error on an API request with an unsupported data format. -#: actions/oembed.php:183 actions/oembed.php:202 lib/apiaction.php:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "ä¸æ”¯æŒçš„æ•°æ®æ ¼å¼ã€‚" @@ -2635,12 +2550,11 @@ msgstr "æœç´¢ç”¨æˆ·" #: actions/opensearch.php:67 msgid "Notice Search" -msgstr "æœç´¢é€šå‘Š" +msgstr "æœç´¢æ¶ˆæ¯" #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "Twitter 设置" +msgstr "其他设置" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2648,59 +2562,52 @@ msgstr "管ç†å…¶ä»–选项。" #: actions/othersettings.php:108 msgid " (free service)" -msgstr "" +msgstr "(å…è´¹æœåŠ¡ï¼‰" #: actions/othersettings.php:116 msgid "Shorten URLs with" -msgstr "" +msgstr "缩短 URL 使用" #: actions/othersettings.php:117 msgid "Automatic shortening service to use." -msgstr "è¦ä½¿ç”¨çš„自动缩短æœåŠ¡ã€‚" +msgstr "è¦ä½¿ç”¨çš„自动短网å€æœåŠ¡ã€‚" #: actions/othersettings.php:122 -#, fuzzy msgid "View profile designs" -msgstr "个人设置" +msgstr "查看个人页é¢å¤–观" #: actions/othersettings.php:123 msgid "Show or hide profile designs." -msgstr "" +msgstr "显示或éšè—个人页é¢å¤–观。" #: actions/othersettings.php:153 -#, fuzzy msgid "URL shortening service is too long (max 50 chars)." -msgstr "URL缩短æœåŠ¡è¶…é•¿(最多50个字符)。" +msgstr "短网å€æœåŠ¡è¿‡é•¿(ä¸èƒ½è¶…过50个字符)。" #: actions/otp.php:69 -#, fuzzy msgid "No user ID specified." -msgstr "没有收件人。" +msgstr "没用指定用户 ID。" #: actions/otp.php:83 -#, fuzzy msgid "No login token specified." -msgstr "没有收件人。" +msgstr "没有指定登录 token。" #: actions/otp.php:90 -#, fuzzy msgid "No login token requested." -msgstr "æœåŠ¡å™¨æ²¡æœ‰è¿”回个人信æ¯URL。" +msgstr "没有请求的登录 token。" #: actions/otp.php:95 -#, fuzzy msgid "Invalid login token specified." -msgstr "通告内容ä¸æ­£ç¡®" +msgstr "指定的登录 token 无效。" #: actions/otp.php:104 -#, fuzzy msgid "Login token expired." -msgstr "登录" +msgstr "登录 token 已过期。" #: 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 @@ -2709,21 +2616,19 @@ msgstr "%s çš„å‘件箱" #: actions/outbox.php:116 msgid "This is your outbox, which lists private messages you have sent." -msgstr "这是您的å‘件箱,包å«æ‚¨å‘é€çš„ç§äººæ¶ˆæ¯ã€‚" +msgstr "这是你的å‘件箱,包å«ä½ å‘é€çš„ç§ä¿¡ã€‚" #: actions/passwordsettings.php:58 msgid "Change password" msgstr "修改密ç " #: actions/passwordsettings.php:69 -#, fuzzy msgid "Change your password." -msgstr "修改密ç " +msgstr "修改你的密ç " #: actions/passwordsettings.php:96 actions/recoverpassword.php:231 -#, fuzzy msgid "Password change" -msgstr "密ç å·²ä¿å­˜ã€‚" +msgstr "修改密ç " #: actions/passwordsettings.php:104 msgid "Old password" @@ -2738,23 +2643,23 @@ 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 "确认" +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 "密ç å¿…é¡»åŒ…å« 6 个或更多字符。" -#: actions/passwordsettings.php:157 actions/register.php:233 +#: actions/passwordsettings.php:157 actions/register.php:240 msgid "Passwords don't match." msgstr "密ç ä¸åŒ¹é…。" @@ -2764,7 +2669,7 @@ 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." @@ -2775,169 +2680,157 @@ 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 "" +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 "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "主题目录无法读å–:%s。" #: actions/pathsadminpanel.php:163 -#, fuzzy, php-format +#, php-format msgid "Avatar directory not writable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "头åƒç›®å½•æ— æ³•å†™å…¥ï¼š%s。" #: actions/pathsadminpanel.php:169 -#, fuzzy, php-format +#, php-format msgid "Background directory not writable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "背景目录无法写入:%s。" #: actions/pathsadminpanel.php:177 -#, fuzzy, php-format +#, php-format msgid "Locales directory not readable: %s." -msgstr "这个页é¢ä¸æ供您想è¦çš„媒体类型" +msgstr "本地化目录无法读å–:%s。" #: actions/pathsadminpanel.php:183 msgid "Invalid SSL server. The maximum length is 255 characters." -msgstr "" +msgstr "无效的 SSL æœåŠ¡å™¨ã€‚最大长度255个字符。" #: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58 -#, fuzzy msgid "Site" -msgstr "邀请" +msgstr "网站" #: actions/pathsadminpanel.php:238 -#, fuzzy msgid "Server" -msgstr "æ¢å¤" +msgstr "æœåŠ¡å™¨" #: actions/pathsadminpanel.php:238 msgid "Site's server hostname." -msgstr "" +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" -msgstr "" +msgstr "本地化文件路径" #: actions/pathsadminpanel.php:246 msgid "Directory path to locales" -msgstr "" +msgstr "本地化文件的目录路径" #: actions/pathsadminpanel.php:250 msgid "Fancy URLs" -msgstr "" +msgstr "优化 URLs" #: actions/pathsadminpanel.php:252 msgid "Use fancy (more readable and memorable) URLs?" -msgstr "" +msgstr "使用优化的 URLs(更简æ´æ˜“记)?" #: actions/pathsadminpanel.php:259 msgid "Theme" -msgstr "" +msgstr "主题" #: actions/pathsadminpanel.php:264 msgid "Theme server" -msgstr "" +msgstr "主题æœåŠ¡å™¨" #: actions/pathsadminpanel.php:268 msgid "Theme path" -msgstr "" +msgstr "主题路径" #: actions/pathsadminpanel.php:272 msgid "Theme directory" -msgstr "" +msgstr "主题目录" #: actions/pathsadminpanel.php:279 -#, fuzzy msgid "Avatars" msgstr "头åƒ" #: actions/pathsadminpanel.php:284 -#, fuzzy msgid "Avatar server" -msgstr "头åƒè®¾ç½®" +msgstr "头åƒæœåŠ¡å™¨" #: actions/pathsadminpanel.php:288 -#, fuzzy msgid "Avatar path" -msgstr "头åƒå·²æ›´æ–°ã€‚" +msgstr "头åƒè·¯å¾„" #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "头åƒå·²æ›´æ–°ã€‚" +msgstr "头åƒç›®å½•" #: actions/pathsadminpanel.php:301 msgid "Backgrounds" -msgstr "" +msgstr "背景" #: actions/pathsadminpanel.php:305 msgid "Background server" -msgstr "" +msgstr "背景æœåŠ¡å™¨" #: actions/pathsadminpanel.php:309 msgid "Background path" -msgstr "" +msgstr "背景图路径" #: actions/pathsadminpanel.php:313 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 msgid "Never" -msgstr "æ¢å¤" +msgstr "从ä¸" #: actions/pathsadminpanel.php:324 -#, fuzzy msgid "Sometimes" -msgstr "通告" +msgstr "有时" #: actions/pathsadminpanel.php:325 msgid "Always" -msgstr "" +msgstr "总是" #: actions/pathsadminpanel.php:329 msgid "Use SSL" -msgstr "" +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 -#, fuzzy msgid "Save paths" -msgstr "新通告" +msgstr "ä¿å­˜è·¯å¾„" #: actions/peoplesearch.php:52 #, php-format @@ -2945,32 +2838,31 @@ msgid "" "Search for people on %%site.name%% by their name, location, or interests. " "Separate the terms by spaces; they must be 3 characters or more." msgstr "" -"在 %%site.name%% 的用户信æ¯ä¸­æœç´¢ï¼Œå¯ä»¥æœç´¢å§“åã€æœªçŸ¥å’Œçˆ±å¥½ã€‚æœç´¢æ¡ä»¶è‡³å°‘包" -"å« 3 个字符,多个æœç´¢æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”。" +"通过姓åã€ä½ç½®å’Œçˆ±å¥½æœç´¢åœ¨%%site.name%%的用户。æœç´¢æ¡ä»¶è‡³å°‘åŒ…å« 3 个字符,多" +"个æœç´¢æ¡ä»¶ç”¨ç©ºæ ¼åˆ†éš”。" #: actions/peoplesearch.php:58 msgid "People search" msgstr "æœç´¢ç”¨æˆ·" #: actions/peopletag.php:68 -#, fuzzy, php-format +#, php-format msgid "Not a valid people tag: %s." -msgstr "ä¸æ˜¯æœ‰æ•ˆçš„电å­é‚®ä»¶" +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 "用户自加标签%s - 第%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" @@ -2979,61 +2871,59 @@ msgstr "个人设置" #: actions/profilesettings.php:71 msgid "" "You can update your personal profile info here so people know more about you." -msgstr "在这里更新个人信æ¯ï¼Œè®©å¤§å®¶å¯¹æ‚¨äº†è§£å¾—更多。" +msgstr "在这里更新个人信æ¯ï¼Œè®©å¤§å®¶å¯¹ä½ äº†è§£å¾—更多。" #: actions/profilesettings.php:99 -#, 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" +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 "用ä¸è¶…过%d个字符æ述你自己和你的兴趣" -#: 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 "ä½ çš„ä½ç½®ï¼Œæ ¼å¼ç±»ä¼¼\"城市,çœä»½ï¼Œå›½å®¶\"" +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 @@ -3044,7 +2934,7 @@ msgstr "标签" #: actions/profilesettings.php:147 msgid "" "Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated" -msgstr "你的标签 (å­—æ¯letters, æ•°å­—numbers, -, ., å’Œ _), 以逗å·æˆ–空格分隔" +msgstr "你的标签 (å­—æ¯ã€æ•°å­—ã€â€œ-â€ã€â€œ. â€å’Œâ€œ _â€), 以逗å·æˆ–空格分隔" #: actions/profilesettings.php:151 msgid "Language" @@ -3060,17 +2950,17 @@ 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 "自动订阅任何订阅我的更新的人(这个选项最适åˆæœºå™¨äºº)" +msgstr "自动关注任何关注我的人 (这个选项适åˆæœºå™¨äºº)" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, 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." @@ -3081,27 +2971,25 @@ msgid "Language is too long (max 50 chars)." msgstr "语言过长(ä¸èƒ½è¶…过50个字符)。" #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "主页'%s'ä¸æ­£ç¡®" +msgstr "无效的标签:\"%s\"。" #: actions/profilesettings.php:306 msgid "Couldn't update user for autosubscribe." -msgstr "无法更新用户的自动订阅选项。" +msgstr "无法更新用户的自动关注。" #: actions/profilesettings.php:363 -#, fuzzy msgid "Couldn't save location prefs." -msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" +msgstr "无法ä¿å­˜æ ‡ç­¾ã€‚" #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" #: actions/profilesettings.php:383 -#, fuzzy msgid "Couldn't save tags." -msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" +msgstr "无法ä¿å­˜æ ‡ç­¾ã€‚" #. TRANS: Message after successful saving of administrative settings. #: actions/profilesettings.php:391 lib/adminpanelaction.php:141 @@ -3111,53 +2999,49 @@ msgstr "设置已ä¿å­˜ã€‚" #: actions/public.php:83 #, php-format msgid "Beyond the page limit (%s)." -msgstr "" +msgstr "超出页é¢é™åˆ¶(%s)。" #: actions/public.php:92 -#, fuzzy msgid "Could not retrieve public stream." -msgstr "无法获å–收è—的通告。" +msgstr "无法获å–到公共的时间线。" #: actions/public.php:130 -#, fuzzy, php-format +#, php-format msgid "Public timeline, page %d" -msgstr "公开的时间表" +msgstr "公共时间线,第%d页" #: actions/public.php:132 lib/publicgroupnav.php:79 msgid "Public timeline" -msgstr "公开的时间表" +msgstr "公共时间线" #: actions/public.php:160 -#, fuzzy msgid "Public Stream Feed (RSS 1.0)" -msgstr "公开的èšåˆ" +msgstr "公开的 RSS èšåˆ (RSS 1.0)" #: actions/public.php:164 -#, fuzzy msgid "Public Stream Feed (RSS 2.0)" -msgstr "公开的èšåˆ" +msgstr "公开的 RSS èšåˆ (RSS 2.0)" #: actions/public.php:168 -#, fuzzy msgid "Public Stream Feed (Atom)" -msgstr "公开的èšåˆ" +msgstr "公开的 RSS èšåˆ (Atom)" #: actions/public.php:188 #, php-format msgid "" "This is the public timeline for %%site.name%% but no one has posted anything " "yet." -msgstr "" +msgstr "这是%%site.name%%的公共时间线,但是还没有人å‘布任何内容。" #: actions/public.php:191 msgid "Be the first to post!" -msgstr "" +msgstr "æˆä¸ºç¬¬ä¸€ä¸ªå‘布消æ¯çš„人ï¼" #: actions/public.php:195 #, php-format msgid "" "Why not [register an account](%%action.register%%) and be the first to post!" -msgstr "" +msgstr "现在就 [注册](%%action.register%%) 并æˆä¸ºç¬¬ä¸€ä¸ªå‘布消æ¯çš„人ï¼" #: actions/public.php:242 #, php-format @@ -3167,50 +3051,53 @@ msgid "" "tool. [Join now](%%action.register%%) to share notices about yourself with " "friends, family, and colleagues! ([Read more](%%doc.help%%))" msgstr "" +"欢迎æ¥åˆ°%%site.name%%,一个基于å…费软件 [StatusNet](http://status.net/) 创建" +"çš„ [å¾®åšå®¢](http://zh.wikipedia.org/zh-hans/%E5%BE%AE%E5%8D%9A%E5%AE%A2) æœ" +"务。[现在加入](%%action.register%%) 并与你的朋å‹ã€å®¶äººå’ŒåŒäº‹ä»¬ä¸€èµ·åˆ†äº«ä½ çš„消" +"æ¯ã€‚([查看更多](%%doc.help%%))" #: 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) æœåŠ¡" +"这里是%%site.name%%,一个基于自由软件[StatusNet](http://status.net/)çš„[å¾®åš" +"客](http://zh.wikipedia.org/zh-hans/%E5%BE%AE%E5%8D%9A%E5%AE%A2) 。" #: actions/publictagcloud.php:57 -#, fuzzy msgid "Public tag cloud" -msgstr "公开的èšåˆ" +msgstr "公开的标签云" #: actions/publictagcloud.php:63 #, php-format msgid "These are most popular recent tags on %s " -msgstr "这些是最近的 %s æµè¡Œæ ‡ç­¾ " +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 msgid "" "Why not [register an account](%%action.register%%) and be the first to post " "one!" -msgstr "" +msgstr "现在就[注册](%%action.register%%)并å‘布第一个ï¼" #: actions/publictagcloud.php:134 msgid "Tag cloud" -msgstr "标签云èšé›†" +msgstr "标签云" #: actions/recoverpassword.php:36 msgid "You are already logged in!" -msgstr "已登录ï¼" +msgstr "ä½ å·²ç»ç™»å½•äº†ï¼" #: actions/recoverpassword.php:62 msgid "No such recovery code." @@ -3222,7 +3109,7 @@ msgstr "ä¸æ˜¯æ¢å¤ç ã€‚" #: actions/recoverpassword.php:73 msgid "Recovery code for unknown user." -msgstr "æ¢å¤ç æœªçŸ¥" +msgstr "未知用户的æ¢å¤ç " #: actions/recoverpassword.php:86 msgid "Error with confirmation code." @@ -3230,7 +3117,7 @@ msgstr "验è¯ç å‡ºé”™ã€‚" #: actions/recoverpassword.php:97 msgid "This confirmation code is too old. Please start again." -msgstr "验è¯ç è¶…时,请é‡æ¥ã€‚" +msgstr "验è¯ç å·²è¿‡æœŸï¼Œè¯·é‡æ¥ã€‚" #: actions/recoverpassword.php:111 msgid "Could not update user with confirmed email address." @@ -3240,23 +3127,23 @@ msgstr "无法更新已确认的电å­é‚®ä»¶ã€‚" 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 "" +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" @@ -3272,7 +3159,7 @@ msgstr "æ¢å¤å¯†ç " #: actions/recoverpassword.php:210 actions/recoverpassword.php:335 msgid "Password recovery requested" -msgstr "请求æ¢å¤å¯†ç " +msgstr "已请求密ç æ¢å¤" #: actions/recoverpassword.php:213 msgid "Unknown action" @@ -3280,7 +3167,7 @@ msgstr "未知动作" #: actions/recoverpassword.php:236 msgid "6 or more characters, and don't forget it!" -msgstr "6 个或更多字符,ä¸èƒ½å¿˜è®°ï¼" +msgstr "至少6个字符,还有,别忘记它ï¼" #: actions/recoverpassword.php:243 msgid "Reset" @@ -3296,7 +3183,7 @@ msgstr "没有拥有这个用户å或电å­é‚®ä»¶çš„用户。" #: actions/recoverpassword.php:299 msgid "No registered email address for that user." -msgstr "用户没有注册电å­é‚®ä»¶ã€‚" +msgstr "该用户没有登记电å­é‚®ä»¶ã€‚" #: actions/recoverpassword.php:313 msgid "Error saving address confirmation." @@ -3306,7 +3193,7 @@ msgstr "ä¿å­˜åœ°å€ç¡®è®¤æ—¶å‡ºé”™ã€‚" msgid "" "Instructions for recovering your password have been sent to the email " "address registered to your account." -msgstr "æ¢å¤å¯†ç çš„指示已被å‘é€åˆ°æ‚¨çš„注册邮箱。" +msgstr "æ¢å¤å¯†ç çš„说明已被å‘é€åˆ°ä½ ç™»è®°çš„电å­é‚®ç®±ä¸­ã€‚" #: actions/recoverpassword.php:357 msgid "Unexpected password reset." @@ -3318,90 +3205,115 @@ msgstr "密ç å¿…须是 6 个字符或更多。" #: 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 "ä¿å­˜ç”¨æˆ·è®¾ç½®æ—¶å‡ºé”™ã€‚" #: 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 "对ä¸èµ·ï¼Œè¯·é‚€è¯·é‚£äº›èƒ½æ³¨å†Œçš„人。" +msgstr "对ä¸èµ·ï¼Œåªæœ‰è¢«é‚€è¯·çš„用户æ‰èƒ½æ³¨å†Œã€‚" -#: actions/register.php:92 -#, fuzzy +#: actions/register.php:99 msgid "Sorry, invalid invitation code." -msgstr "验è¯ç å‡ºé”™ã€‚" +msgstr "对ä¸èµ·ï¼Œæ— æ•ˆçš„邀请ç ã€‚" -#: actions/register.php:112 +#: actions/register.php:119 msgid "Registration successful" -msgstr "注册æˆåŠŸã€‚" +msgstr "注册æˆåŠŸ" -#: actions/register.php:114 actions/register.php:507 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 "您必须åŒæ„此授æƒæ–¹å¯æ³¨å†Œã€‚" +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 个å°å†™å­—æ¯æˆ–数字,ä¸åŒ…å«æ ‡ç‚¹åŠç©ºç™½ã€‚此项必填。" +msgstr "1 到 64 ä½çš„å°å†™å­—æ¯æˆ–数字,ä¸èƒ½ä½¿ç”¨æ ‡ç‚¹å’Œç©ºæ ¼ã€‚此项必填。" -#: actions/register.php:430 +#: actions/register.php:437 msgid "6 or more characters. Required." -msgstr "6 个或更多字符。此项必填。" +msgstr "至少 6 ä½å­—符。此项必填。" -#: 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 "é•¿å字,最好是“实åâ€" +msgstr "æ›´é•¿çš„å字,最好是“真实姓åâ€" -#: actions/register.php:494 -#, 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çš„ä¿¡æ¯æ˜¯ç§äººä¸”ä¿å¯†çš„。" + +#: actions/register.php:528 +#, php-format +msgid "My text and files are copyright by %1$s." +msgstr "我的文字和文件的版æƒå½’%1$s所有。" + +#. 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 "除了éšç§å†…容:密ç ï¼Œç”µå­é‚®ä»¶ï¼Œå³æ—¶é€šè®¯å¸å·ï¼Œç”µè¯å·ç ã€‚" +msgstr "" +"我的文字和文件在%s下æ供,除了éšç§å†…容:密ç ã€ç”µå­é‚®ä»¶åœ°å€ã€IM 地å€å’Œç”µè¯å·" +"ç ã€‚" -#: actions/register.php:542 -#, 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" @@ -3418,24 +3330,23 @@ msgid "" "\n" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -"æ­å–œï¼Œ %s! 欢迎æ¥åˆ° %%%%site.name%%%%. 这里,你需è¦\n" +"æ­å–œï¼Œ%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" +"* 查看你的[资料页](%2$s) 并å‘布你的第一æ¡æ¶ˆæ¯.\n" +"* 添加 [Jabber/GTalk 地å€](%%%%action.imsettings%%%%) 然åŽé€šè¿‡ IM å‘布信" +"æ¯ã€‚\n" +"* [æœç´¢](%%%%action.peoplesearch%%%%) 你认识的或和你有共åŒå…´è¶£çš„朋å‹ã€‚ \n" +"* æ›´æ–°ä½ çš„ [资料页设置](%%%%action.profilesettings%%%%) 告诉大家更多关于你的" +"情况。 \n" +"* 阅读 [在线文档](%%%%doc.help%%%%) 有的功能也许你还ä¸ç†Ÿæ‚‰ã€‚\n" "\n" -"感谢您的注册,希望您喜欢这个æœåŠ¡ã€‚" +"感谢你的注册,希望你喜欢这个æœåŠ¡ã€‚" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" -msgstr "(您将收到一å°é‚®ä»¶ï¼ŒåŒ…å«äº†å¦‚何确认邮件地å€çš„说明。)" +msgstr "(你将收到一å°é‚®ä»¶ï¼ŒåŒ…å«äº†å¦‚何确认邮件地å€çš„说明。)" #: actions/remotesubscribe.php:98 #, php-format @@ -3444,18 +3355,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%%), 请填入你资料" -"的互è”网地å€URL." +"è¦å…³æ³¨ç”¨æˆ·æˆ–å°ç»„,你需è¦[登录](%%action.login%%),或[注册](%%action.register%" +"%) 一个新账户。如果你已ç»åœ¨å¦ä¸€ä¸ª[兼容的微åšå®¢](%%doc.openmublog%%)有账户,请" +"填入你的资料页 URL。" #: actions/remotesubscribe.php:112 msgid "Remote subscribe" -msgstr "远程订阅" +msgstr "远程关注" #: actions/remotesubscribe.php:124 -#, fuzzy msgid "Subscribe to a remote user" -msgstr "订阅 %s" +msgstr "关注一个远程用户" #: actions/remotesubscribe.php:129 msgid "User nickname" @@ -3463,102 +3373,93 @@ msgstr "昵称" #: actions/remotesubscribe.php:130 msgid "Nickname of the user you want to follow" -msgstr "希望订阅的用户的昵称" +msgstr "希望关注的用户昵称" #: actions/remotesubscribe.php:133 msgid "Profile URL" -msgstr "个人信æ¯URL" +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 msgid "Subscribe" -msgstr "订阅" +msgstr "关注" #: actions/remotesubscribe.php:159 msgid "Invalid profile URL (bad format)" -msgstr "个人信æ¯URLä¸æ­£ç¡®(æ ¼å¼é”™è¯¯)" +msgstr "无效的用户 URL (æ ¼å¼é”™è¯¯)" #: actions/remotesubscribe.php:168 -#, fuzzy msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)." -msgstr "ä¸æ˜¯æœ‰æ•ˆçš„个人信æ¯URL(没有YADISæ•°æ®)。" +msgstr "ä¸æ˜¯æœ‰æ•ˆçš„资料页 URL (没有YADIS 文档或定义了无效的 XRDS)。" #: 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 "无法获得一个 request token。" #: actions/repeat.php:57 -#, fuzzy msgid "Only logged-in users can repeat notices." -msgstr "åªæœ‰ç”¨æˆ·è‡ªå·±å¯ä»¥è®¿é—®é‚®ç®±ã€‚" +msgstr "åªæœ‰ç™»å½•çš„用户æ‰èƒ½é‡å¤å‘消æ¯ã€‚" #: actions/repeat.php:64 actions/repeat.php:71 -#, fuzzy msgid "No notice specified." -msgstr "没有收件人。" +msgstr "没有指定的消æ¯ã€‚" #: actions/repeat.php:76 -#, fuzzy msgid "You can't repeat your own notice." -msgstr "您必须åŒæ„此授æƒæ–¹å¯æ³¨å†Œã€‚" +msgstr "ä½ ä¸èƒ½é‡å¤è‡ªå·±çš„消æ¯ã€‚" #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "您已æˆåŠŸé˜»æ­¢è¯¥ç”¨æˆ·ï¼š" +msgstr "你已转å‘过了那个消æ¯ã€‚" -#: actions/repeat.php:114 lib/noticelist.php:675 -#, 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 #, php-format msgid "Replies to %s" -msgstr "%s 的回å¤" +msgstr "对 %s 的回å¤" #: actions/replies.php:128 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s, page %2$d" -msgstr "å‘é€ç»™ %1$s çš„ %2$s 消æ¯" +msgstr "对%s的回å¤ï¼Œç¬¬%2$d页" #: actions/replies.php:145 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 的回å¤èšåˆ (RSS 1.0)" #: actions/replies.php:152 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (RSS 2.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 的回å¤èšåˆ (RSS 2.0)" #: actions/replies.php:159 -#, fuzzy, php-format +#, php-format msgid "Replies feed for %s (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s 的回å¤èšåˆ (Atom)" #: actions/replies.php:199 -#, fuzzy, php-format +#, php-format msgid "" "This is the timeline showing replies to %1$s but %2$s hasn't received a " -"notice to his attention yet." -msgstr "这是 %s 和好å‹çš„时间线,但是没有任何人å‘布内容。" +"notice to them yet." +msgstr "这里显示了所有å‘é€@ç»™%sçš„ä¿¡æ¯ï¼Œä½†æ˜¯%2$s还没有收到任何人的消æ¯ã€‚" #: actions/replies.php:204 #, php-format @@ -3566,112 +3467,104 @@ 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 #, 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)。" #: actions/repliesrss.php:72 -#, fuzzy, php-format +#, php-format msgid "Replies to %1$s on %2$s!" -msgstr "å‘é€ç»™ %1$s çš„ %2$s 消æ¯" +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 -#, fuzzy +#: actions/rsd.php:146 actions/version.php:159 msgid "StatusNet" -msgstr "头åƒå·²æ›´æ–°ã€‚" +msgstr "StatusNet" #: actions/sandbox.php:65 actions/unsandbox.php:65 -#, fuzzy msgid "You cannot sandbox users on this site." -msgstr "无法å‘此用户å‘é€æ¶ˆæ¯ã€‚" +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 "" +msgstr "Sessions" #: actions/sessionsadminpanel.php:65 msgid "Session settings for this StatusNet site." -msgstr "" +msgstr "这个 StatusNet 网站的外观设置" #: actions/sessionsadminpanel.php:175 msgid "Handle sessions" -msgstr "" +msgstr "ç®¡ç† sessions" #: actions/sessionsadminpanel.php:177 msgid "Whether to handle sessions ourselves." -msgstr "" +msgstr "是å¦è‡ªå·±å¤„ç†sessions。" #: actions/sessionsadminpanel.php:181 msgid "Session debugging" -msgstr "" +msgstr "Session 调试" #: actions/sessionsadminpanel.php:183 msgid "Turn on debugging output for sessions." -msgstr "" +msgstr "打开 sessions 的调试输出。" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: 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 "您必须登录æ‰èƒ½é‚€è¯·å…¶ä»–人使用 %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 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 -#, 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 "统计" @@ -3679,59 +3572,58 @@ 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" -msgstr "" +msgstr "é‡ç½®keyå’Œsecret" #: actions/showapplication.php:261 msgid "Application info" -msgstr "" +msgstr "应用程åºä¿¡æ¯" #: actions/showapplication.php:263 msgid "Consumer key" -msgstr "" +msgstr "Consumer key" #: actions/showapplication.php:268 msgid "Consumer secret" -msgstr "" +msgstr "Consumer secret" #: actions/showapplication.php:273 msgid "Request token URL" -msgstr "" +msgstr "请求令牌URL" #: actions/showapplication.php:278 msgid "Access token URL" -msgstr "" +msgstr "访问令牌URL" #: actions/showapplication.php:283 msgid "Authorize URL" -msgstr "" +msgstr "授æƒURL" #: actions/showapplication.php:288 msgid "" "Note: We support HMAC-SHA1 signatures. We do not support the plaintext " "signature method." -msgstr "" +msgstr "æ示:我们支æŒHMAC-SHA1ç­¾å。我们ä¸æ”¯æŒæ˜Žæ–‡çš„ç­¾å方法。" #: actions/showapplication.php:309 -#, fuzzy msgid "Are you sure you want to reset your consumer key and secret?" -msgstr "确定è¦åˆ é™¤è¿™æ¡æ¶ˆæ¯å—?" +msgstr "你确定è¦é‡ç½®ä½ çš„consumer keyå’Œsecretå—?" #: 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 @@ -3753,40 +3645,43 @@ 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 notices to his favorites yet. Post something interesting " -"they would add to their favorites :)" -msgstr "" +"%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 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." -msgstr "" +msgstr "这是一ç§åˆ†äº«ä½ å–œæ¬¢çš„内容的方å¼ã€‚" #: actions/showgroup.php:82 lib/groupnav.php:86 #, php-format msgid "%s group" -msgstr "%s 组" +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 -#, fuzzy msgid "Group profile" -msgstr "组资料" +msgstr "å°ç»„资料" #: actions/showgroup.php:272 actions/tagother.php:118 #: actions/userauthorization.php:175 lib/userprofile.php:178 @@ -3795,59 +3690,56 @@ msgstr "URL 互è”网地å€" #: actions/showgroup.php:283 actions/tagother.php:128 #: actions/userauthorization.php:187 lib/userprofile.php:195 -#, fuzzy msgid "Note" -msgstr "通告" +msgstr "注释" #: actions/showgroup.php:293 lib/groupeditform.php:184 msgid "Aliases" -msgstr "" +msgstr "别å" #: actions/showgroup.php:302 msgid "Group actions" -msgstr "组动作" +msgstr "å°ç»„动作" #: actions/showgroup.php:338 -#, fuzzy, php-format +#, 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 +#, 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 +#, 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 -#, fuzzy +#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91 msgid "Members" -msgstr "注册于" +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 "(没有)" +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." @@ -3856,22 +3748,28 @@ 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%%%%上的一个用户å°ç»„,%%%%site.name%%%%是一个基于自由软" +"件[StatusNet](http://status.net/)çš„[å¾®åšå®¢](http://zh.wikipedia.org/zh-hans/%" +"E5%BE%AE%E5%8D%9A%E5%AE%A2)æœåŠ¡ã€‚用户通过短消æ¯åˆ†äº«ä»–们的生活和兴趣。现在[加" +"å…¥](%%%%action.register%%%%)æˆä¸ºè¯¥å°ç»„的一员并享å—更多的欢ä¹ï¼ï¼ˆ[阅读更多](%%" +"%%doc.help%%%%))" -#: 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)" +"**%s** 是%%%%site.name%%%%上的一个å°ç»„,%%%%site.name%%%%是一个基于自由软件 " +"[StatusNet](http://status.net/) çš„[å¾®åšå®¢](http://zh.wikipedia.org/zh-hans/%" +"E5%BE%AE%E5%8D%9A%E5%AE%A2)。%%%%site.name%%%%的用户分享关于他们生活和å„ç§å…´" +"趣的消æ¯ã€‚" -#: actions/showgroup.php:497 -#, fuzzy +#: actions/showgroup.php:489 msgid "Admins" -msgstr "admin管ç†å‘˜" +msgstr "管ç†å‘˜" #: actions/showmessage.php:81 msgid "No such message." @@ -3892,62 +3790,63 @@ msgid "Message from %1$s on %2$s" msgstr "æ¥è‡ª %1$s çš„ %2$s 消æ¯" #: actions/shownotice.php:90 -#, fuzzy msgid "Notice deleted." -msgstr "消æ¯å·²å‘布。" +msgstr "消æ¯å·²åˆ é™¤" #: actions/showstream.php:73 -#, fuzzy, php-format +#, php-format msgid " tagged %s" -msgstr "带 %s 标签的通告" +msgstr "带%s标签的" #: actions/showstream.php:79 -#, fuzzy, php-format +#, php-format msgid "%1$s, page %2$d" -msgstr "%s åŠå¥½å‹" +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 的通告èšåˆ" +msgstr "%1$s的有%2$s标签的消æ¯èšåˆ (RSS 1.0)" #: actions/showstream.php:129 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 1.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s的消æ¯èšåˆ (RSS 1.0)" #: actions/showstream.php:136 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (RSS 2.0)" -msgstr "%s 的通告èšåˆ" +msgstr "%s的消æ¯èšåˆ (RSS 2.0)" #: actions/showstream.php:143 -#, fuzzy, php-format +#, php-format msgid "Notice feed for %s (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s的消æ¯èšåˆ (Atom)" #: actions/showstream.php:148 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s" -msgstr "%s çš„å‘件箱" +msgstr "%sçš„FOAF" #: 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 "" +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)。" #: actions/showstream.php:243 #, php-format @@ -3957,191 +3856,181 @@ 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%%%%有一个账å·ï¼Œ%%%%site.name%%%%是一个基于自由软件" +"[StatusNet](http://status.net/)çš„[å¾®åšå®¢](http://zh.wikipedia.org/zh-hans/%" +"E5%BE%AE%E5%8D%9A%E5%AE%A2)æœåŠ¡ã€‚[现在加入](%%%%action.register%%%%)并关注**%" +"s**的消æ¯å’Œäº«å—更多ä¹è¶£! ([阅读更多](%%%%doc.help%%%%))" #: 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)" +"**%s**在%%%%site.name%%%%有一个账å·ï¼Œ%%%%site.name%%%%是一个基于自由软件" +"[StatusNet](http://status.net/)çš„[å¾®åšå®¢](http://zh.wikipedia.org/zh-hans/%" +"E5%BE%AE%E5%8D%9A%E5%AE%A2)。" #: actions/showstream.php:305 -#, fuzzy, php-format +#, php-format msgid "Repeat of %s" -msgstr "%s 的回å¤" +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 msgid "Basic settings for this StatusNet site" -msgstr "" +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 "你必须有一个有效的 email 地å€ã€‚" #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." -msgstr "" +msgstr "未知的语言“%sâ€" #: actions/siteadminpanel.php:165 msgid "Minimum text limit is 0 (unlimited)." -msgstr "" +msgstr "最短的文字é™åˆ¶ä¸º0(没有é™åˆ¶ï¼‰ã€‚" #: actions/siteadminpanel.php:171 msgid "Dupe limit must be one or more seconds." -msgstr "" +msgstr "防刷新é™åˆ¶è‡³å°‘è¦1秒或者更长。" #: actions/siteadminpanel.php:221 msgid "General" -msgstr "" +msgstr "一般" #: actions/siteadminpanel.php:224 -#, fuzzy 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" -msgstr "" +msgstr "æ供商" #: actions/siteadminpanel.php:230 msgid "Text used for credits link in footer of each page" -msgstr "" +msgstr "用于æ¯é¡µé¡µè„šçš„ credits 链接文字" #: actions/siteadminpanel.php:234 msgid "Brought by URL" -msgstr "" +msgstr "æ供商 URL" #: actions/siteadminpanel.php:235 msgid "URL used for credits link in footer of each page" -msgstr "" +msgstr "用于æ¯é¡µé¡µè„šçš„ credits URL" #: actions/siteadminpanel.php:239 -#, fuzzy msgid "Contact email address for your site" -msgstr "新的电å­é‚®ä»¶åœ°å€ï¼Œç”¨äºŽå‘布 %s ä¿¡æ¯" +msgstr "网站的è”系我们电å­é‚®ä»¶åœ°å€" #: actions/siteadminpanel.php:245 -#, fuzzy msgid "Local" -msgstr "本地显示" +msgstr "本地" #: actions/siteadminpanel.php:256 msgid "Default timezone" -msgstr "" +msgstr "默认时区" #: actions/siteadminpanel.php:257 msgid "Default timezone for the site; usually UTC." -msgstr "" +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" -msgstr "" +msgstr "é™åˆ¶" #: actions/siteadminpanel.php:274 msgid "Text limit" -msgstr "" +msgstr "文字é™åˆ¶" #: actions/siteadminpanel.php:274 msgid "Maximum number of characters for notices." -msgstr "" +msgstr "消æ¯æœ€é•¿çš„字符数。" #: actions/siteadminpanel.php:278 msgid "Dupe limit" -msgstr "" +msgstr "防刷新é™åˆ¶" #: actions/siteadminpanel.php:278 msgid "How long users must wait (in seconds) to post the same thing again." -msgstr "" +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 "无法ä¿å­˜ Twitter 设置ï¼" +msgstr "无法ä¿å­˜ç½‘站公告。" #: actions/sitenoticeadminpanel.php:113 msgid "Max length for the site-wide notice is 255 chars." -msgstr "" +msgstr "整个网站的公告最长é™åˆ¶ä¸º255字符。" #: 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 "整个网站的公告文字(最长255字符;å¯ä½¿ç”¨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 "SMS短信设置" +msgstr "SMS 设置" #. 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 "您å¯ä»¥é€šè¿‡ %%site.name%% 的电å­é‚®ä»¶æŽ¥æ”¶SMS短信。" +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 "SMS ä¸å¯ç”¨ã€‚" #. TRANS: Form legend for SMS settings form. #: actions/smssettings.php:111 -#, fuzzy msgid "SMS address" -msgstr "IM å¸å·" +msgstr "SMS 地å€" #. TRANS: Form guide in SMS settings form. #: actions/smssettings.php:120 @@ -4165,16 +4054,14 @@ 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 "SMS短信电è¯å·ç " +msgstr "SMS 电è¯å·ç " #. TRANS: SMS phone number input field instructions in SMS settings form. #: actions/smssettings.php:156 @@ -4183,22 +4070,20 @@ msgstr "电è¯å·ç ï¼Œä¸å¸¦æ ‡ç‚¹æˆ–空格,包å«åœ°åŒºä»£ç " #. TRANS: Form legend for SMS preferences form. #: actions/smssettings.php:195 -#, fuzzy msgid "SMS preferences" -msgstr "首选项" +msgstr "SMS å好" #. 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 "通过SMS短信将通告å‘给我;我了解这样也许会给我带æ¥ä¸è²çš„开支。" +msgstr "通过SMS短信将消æ¯å‘给我;我了解这样也许会给我带æ¥ä¸è²çš„开支。" #. TRANS: Confirmation message for successful SMS preferences save. #: actions/smssettings.php:315 -#, fuzzy msgid "SMS preferences saved." -msgstr "首选项已ä¿å­˜ã€‚" +msgstr "SMS设置已ä¿å­˜ã€‚" #. TRANS: Message given saving SMS phone number without having provided one. #: actions/smssettings.php:338 @@ -4213,7 +4098,7 @@ msgstr "未选择è¿è¥å•†ã€‚" #. TRANS: Message given saving SMS phone number that is already set. #: actions/smssettings.php:352 msgid "That is already your phone number." -msgstr "您已登记此电è¯å·ç ã€‚" +msgstr "你已登记此电è¯å·ç ã€‚" #. TRANS: Message given saving SMS phone number that is already set for another user. #: actions/smssettings.php:356 @@ -4222,13 +4107,11 @@ msgstr "这个电è¯å·ç å±žäºŽå¦ä¸€ä¸ªç”¨æˆ·ã€‚" #. 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 "" -"验è¯ç å·²è¢«å‘é€åˆ°æ‚¨æ–°å¢žçš„电è¯å·ç ã€‚请检查收件箱(和垃圾箱),找到验è¯ç å¹¶æŒ‰è¦æ±‚" -"使用它。" +"验è¯ç å·²è¢«å‘é€åˆ°ä½ æ–°å¢žçš„电è¯å·ç ã€‚请检查你的电è¯ï¼Œæ‰¾åˆ°éªŒè¯ç å¹¶æŒ‰è¦æ±‚使用它。" #. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number. #: actions/smssettings.php:413 @@ -4237,9 +4120,8 @@ msgstr "确认ç é”™è¯¯ã€‚" #. TRANS: Message given after successfully canceling SMS phone number confirmation. #: 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. @@ -4249,15 +4131,13 @@ 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 "SMS 电è¯å·ç å·²ç§»é™¤ã€‚" #. TRANS: Label for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:511 -#, fuzzy msgid "Mobile carrier" -msgstr "选择è¿è¥å•†" +msgstr "移动è¿è¥å•†" #. TRANS: Default option for mobile carrier dropdown menu in SMS settings. #: actions/smssettings.php:516 @@ -4272,7 +4152,7 @@ msgid "" "Mobile carrier for your phone. If you know a carrier that accepts SMS over " "email but isn't listed here, send email to let us know at %s." msgstr "" -"电è¯çš„æœåŠ¡å•†ã€‚如果您的æœåŠ¡å•†æ”¯æŒé€šè¿‡ç”µå­é‚®ä»¶å‘é€SMS短信,而这里尚未列出,请è”" +"电è¯çš„æœåŠ¡å•†ã€‚如果你的æœåŠ¡å•†æ”¯æŒé€šè¿‡ç”µå­é‚®ä»¶å‘é€SMS短信,而这里尚未列出,请è”" "ç³» %s 以告知。" #. TRANS: Message given saving SMS phone number confirmation code without having provided one. @@ -4282,122 +4162,116 @@ 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 "无效的快照报告 URL。" #: actions/snapshotadminpanel.php:200 msgid "Randomly during web hit" -msgstr "" +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" -msgstr "" +msgstr "æ¯ç¬¬N次访问是å‘é€å¿«ç…§" #: actions/snapshotadminpanel.php:226 msgid "Report URL" -msgstr "" +msgstr "报告 URL" #: actions/snapshotadminpanel.php:227 msgid "Snapshots will be sent to this URL" -msgstr "" +msgstr "快照将被å‘é€åˆ°è¿™ä¸ª URL" #: 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 -#, fuzzy +#. 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 -#, fuzzy msgid "Subscribed" -msgstr "订阅" +msgstr "已关注" #: actions/subscribers.php:50 -#, fuzzy, php-format +#, 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 "这些用户订阅了 %s 的通告。" +msgstr "这些用户关注了%s的消æ¯ã€‚" #: actions/subscribers.php:108 msgid "" "You have no subscribers. Try subscribing to people you know and they might " "return the favor" -msgstr "" +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 @@ -4405,25 +4279,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 -#, fuzzy, php-format +#, 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 "所有订阅" +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 "这是 %s 订阅的用户。" +msgstr "这是%s关注的用户。" #: actions/subscriptions.php:126 #, php-format @@ -4434,55 +4310,56 @@ msgid "" "featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can " "automatically subscribe to people you already follow there." msgstr "" +"你现在还看ä¸åˆ°å…¶ä»–人的消æ¯ï¼Œè¯•ç€åŽ»å…³æ³¨ä¸€äº›ä½ è®¤è¯†çš„人。试一下 [用户æœç´¢](%%" +"action.peoplesearch%%),在我们的 [推è用户](%%action.featured%%) 中找一些你感" +"兴趣的å°ç»„的用户。如果你是 [Twitter用户](%%action.twittersettings%%),你å¯ä»¥" +"自动关注你已ç»å…³æ³¨çš„用户。" #: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format +#, php-format msgid "%s is not listening to anyone." -msgstr "%1$s 开始关注您的 %2$s ä¿¡æ¯ã€‚" +msgstr "%s没有关注任何人。" #: actions/subscriptions.php:208 -#, fuzzy msgid "Jabber" -msgstr "没有 Jabber ID。" +msgstr "Jabber" #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 msgid "SMS" -msgstr "SMS短信" +msgstr "SMS" #: 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 -#, fuzzy, php-format +#, 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 +#, 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 +#, php-format msgid "Notice feed for tag %s (Atom)" -msgstr "%s 的通告èšåˆ" +msgstr "%s标签的消æ¯èšåˆ (Atom)" #: actions/tagother.php:39 -#, fuzzy msgid "No ID argument." -msgstr "没有这份文档。" +msgstr "没有 ID 冲çªã€‚" #: actions/tagother.php:65 -#, fuzzy, php-format +#, php-format msgid "Tag %s" -msgstr "标签" +msgstr "å°†%s加为标签" #: 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 @@ -4490,9 +4367,8 @@ msgid "Photo" msgstr "相片" #: actions/tagother.php:141 -#, fuzzy msgid "Tag user" -msgstr "标签" +msgstr "将用户加为标签" #: actions/tagother.php:151 msgid "" @@ -4504,80 +4380,68 @@ msgstr "" #: actions/tagother.php:193 msgid "" "You can only tag people you are subscribed to or who are subscribed to you." -msgstr "ä½ åªèƒ½ç»™ä½ è®¢é˜…的人或订阅你的人加标签。" +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." -msgstr "使用这个表格给你的关注者或你的订阅加注标签。" +msgstr "使用这个表å•ç»™ä½ çš„关注者或你关注的用户添加标签。" #: actions/tagrss.php:35 -#, fuzzy msgid "No such tag." -msgstr "未找到此消æ¯ã€‚" - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "API 方法尚未实现。" +msgstr "没有此标签。" #: actions/unblock.php:59 -#, fuzzy msgid "You haven't blocked that user." -msgstr "您已æˆåŠŸé˜»æ­¢è¯¥ç”¨æˆ·ï¼š" +msgstr "你未å±è”½è¯¥ç”¨æˆ·ã€‚" #: actions/unsandbox.php:72 -#, fuzzy msgid "User is not sandboxed." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "用户ä¸åœ¨æ²™ç›’中。" #: actions/unsilence.php:72 -#, fuzzy msgid "User is not silenced." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "用户未被ç¦è¨€ã€‚" #: actions/unsubscribe.php:77 -#, fuzzy msgid "No profile ID in request." -msgstr "æœåŠ¡å™¨æ²¡æœ‰è¿”回个人信æ¯URL。" +msgstr "请求ä¸å«èµ„料页 ID。" #: actions/unsubscribe.php:98 -#, fuzzy msgid "Unsubscribed" -msgstr "退订" +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 "" +msgstr "Listenee stream 许å¯è¯â€œâ€˜%1$s†与本网站的许å¯è¯ “%2$sâ€ä¸å…¼å®¹ã€‚" #. 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 "无效的欢迎文字。最大长度255个字符。" #: 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 @@ -4587,67 +4451,60 @@ msgstr "个人信æ¯" #: actions/useradminpanel.php:222 msgid "Bio Limit" -msgstr "" +msgstr "自述é™åˆ¶" #: actions/useradminpanel.php:223 msgid "Maximum length of a profile bio in characters." -msgstr "" +msgstr "个人资料自述最长的字符数。" #: actions/useradminpanel.php:231 -#, fuzzy msgid "New users" -msgstr "邀请新用户" +msgstr "新用户" #: actions/useradminpanel.php:235 msgid "New user welcome" -msgstr "" +msgstr "新用户欢迎" #: actions/useradminpanel.php:236 msgid "Welcome text for new users (Max 255 chars)." -msgstr "" +msgstr "给新用户的欢迎文字(ä¸èƒ½è¶…过255个字符)。" #: actions/useradminpanel.php:241 -#, fuzzy msgid "Default subscription" -msgstr "所有订阅" +msgstr "默认关注" #: actions/useradminpanel.php:242 -#, fuzzy msgid "Automatically subscribe new users to this user." -msgstr "自动订阅任何订阅我的更新的人(这个选项最适åˆæœºå™¨äºº)" +msgstr "自动关注所有关注我的人 (这个选项适åˆæœºå™¨äºº)" #: actions/useradminpanel.php:251 -#, fuzzy msgid "Invitations" -msgstr "å·²å‘é€é‚€è¯·" +msgstr "邀请" #: actions/useradminpanel.php:256 -#, fuzzy msgid "Invitations enabled" -msgstr "å·²å‘é€é‚€è¯·" +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 -#, 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" @@ -4655,352 +4512,428 @@ msgstr "接å—" #: actions/userauthorization.php:218 lib/subscribeform.php:115 #: lib/subscribeform.php:139 -#, fuzzy msgid "Subscribe to this user" -msgstr "订阅 %s" +msgstr "关注这个用户" #: actions/userauthorization.php:219 msgid "Reject" msgstr "æ‹’ç»" #: actions/userauthorization.php:220 -#, fuzzy 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 -#, 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。请到此网站查看如何确认订阅。您的订阅标识是:" +"已授æƒå…³æ³¨ï¼Œä½†æ˜¯æ²¡æœ‰å›žä¼  URL。请到网站查看如何授æƒå…³æ³¨ã€‚ä½ çš„ subscription " +"token 是:" #: actions/userauthorization.php:266 msgid "Subscription rejected" -msgstr "订阅被拒ç»" +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 "关注已拒ç»ï¼Œä½†æ˜¯æ²¡æœ‰å›žä¼  URL。请到网站查看如何完全拒ç»å…³æ³¨ã€‚" #: actions/userauthorization.php:303 #, php-format msgid "Listener URI ‘%s’ not found here." -msgstr "" +msgstr "Listener URI ‘%s’ 没有找到。" #: actions/userauthorization.php:308 #, php-format msgid "Listenee URI ‘%s’ is too long." -msgstr "" +msgstr "Listenee URI ‘%s’ 过长。" #: actions/userauthorization.php:314 #, php-format msgid "Listenee URI ‘%s’ is a local user." -msgstr "" +msgstr "Listenee URI ‘%s’ 是一个本地用户。" #: actions/userauthorization.php:329 #, php-format msgid "Profile URL ‘%s’ is for a local user." -msgstr "" +msgstr "ä¸ªäººä¿¡æ¯ URL “%s†是为本地用户的。" #: actions/userauthorization.php:345 #, php-format msgid "Avatar URL ‘%s’ is not valid." -msgstr "" +msgstr "头åƒåœ°å€â€˜%s’无效。" #: actions/userauthorization.php:350 -#, fuzzy, php-format +#, php-format msgid "Can’t read avatar URL ‘%s’." -msgstr "无法访问头åƒURL '%s'" +msgstr "无法读å–å¤´åƒ URL '%s'。" #: actions/userauthorization.php:355 -#, fuzzy, php-format +#, php-format msgid "Wrong image type for avatar URL ‘%s’." -msgstr "'%s' 图åƒæ ¼å¼é”™è¯¯" +msgstr "å¤´åƒ URL ‘%s’ 图åƒæ ¼å¼é”™è¯¯ã€‚" #: actions/userdesignsettings.php:76 lib/designsettings.php:65 -#, fuzzy msgid "Profile design" -msgstr "个人设置" +msgstr "个人页é¢å¤–观" #: actions/userdesignsettings.php:87 lib/designsettings.php:76 msgid "" "Customize the way your profile looks with a background image and a colour " "palette of your choice." -msgstr "" +msgstr "通过背景图片和调色æ¿è‡ªå®šä¹‰ä½ çš„页é¢å¤–观。" #: actions/userdesignsettings.php:282 msgid "Enjoy your hotdog!" -msgstr "" +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 -#, fuzzy msgid "Search for more groups" -msgstr "检索人或文字" +msgstr "æœç´¢æ›´å¤šå°ç»„" #: actions/usergroups.php:159 -#, fuzzy, php-format +#, 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 "" +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 "%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 "" +"此网站使用%1$s版本%2$s,2008-2010 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 GPL 或" +"第三版或以åŽçš„版本的情况下é‡æ–°éƒ¨ç½²æˆ–者修改它," -#: 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 GPL 了解更多信æ¯ã€‚" -#: 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 "" +msgstr "你应该在本程åºä¸­æ”¶åˆ°äº†ä¸€ä»½ GNU Affero GPL 的副本,如果没有收到请看%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:805 msgid "Version" -msgstr "个人" +msgstr "版本" -#: actions/version.php:197 +#: 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 "ä¸èƒ½å¤„ç† 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 "" +"ä¸èƒ½æœ‰æ–‡ä»¶å¤§äºŽ%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 "" +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 "" +msgstr "这么大的文件会超过你%d字节的æ¯æœˆé…é¢ã€‚" -#: classes/Group_member.php:41 -#, fuzzy +#. 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 "组资料" +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 -#, 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 "无法创建别å。" -#: classes/Message.php:45 -#, fuzzy +#. 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 "å‘é€æ¶ˆæ¯å‡ºé”™ã€‚" +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çš„ä¿¡æ¯ã€‚" +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 "没有对于 æ¶ˆæ¯ (%2$d) çš„ 个人信æ¯é¡µ (%1$d) 。" #. TRANS: Server exception. %s are the error details. -#: classes/Notice.php:176 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "添加标签时数æ®åº“出错:%s" +msgstr "æ’入标签时数æ®åº“出错:%s" -#: classes/Notice.php:245 -#, fuzzy +#. TRANS: Client exception thrown if a notice contains too many characters. +#: classes/Notice.php:265 msgid "Problem saving notice. Too long." -msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚" +msgstr "ä¿å­˜æ¶ˆæ¯æ—¶å‡ºé”™ã€‚太长。" -#: classes/Notice.php:249 -#, fuzzy +#. TRANS: Client exception thrown when trying to save a notice for an unknown user. +#: classes/Notice.php:270 msgid "Problem saving notice. Unknown user." -msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚" +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:276 msgid "" "Too many notices too fast; take a breather and post again in a few minutes." msgstr "你在短时间里å‘布了过多的消æ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ åˆ†é’Ÿå†å‘消æ¯ã€‚" -#: classes/Notice.php:260 -#, fuzzy +#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame. +#: classes/Notice.php:283 msgid "" "Too many duplicate messages too quickly; take a breather and post again in a " "few minutes." -msgstr "你在短时间里å‘布了过多的消æ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ åˆ†é’Ÿå†å‘消æ¯ã€‚" +msgstr "你在短时间里å‘布了过多的é‡å¤æ¶ˆæ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ åˆ†é’Ÿå†å‘消æ¯ã€‚" -#: classes/Notice.php:266 +#. TRANS: Client exception thrown when a user tries to post while being banned. +#: classes/Notice.php:291 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:358 classes/Notice.php:385 msgid "Problem saving notice." -msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚" +msgstr "ä¿å­˜æ¶ˆæ¯æ—¶å‡ºé”™ã€‚" -#: classes/Notice.php:965 -#, fuzzy +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" +msgstr "对 saveKnownGroups æ供的类型无效" + +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 -#, fuzzy, php-format +#: classes/Notice.php:1759 +#, php-format msgid "RT @%1$s %2$s" -msgstr "%1$s (%2$s)" +msgstr "RT @%1$s %2$s" -#: classes/Subscription.php:74 lib/oauthstore.php:465 -#, fuzzy +#. 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 "无法å–消用户#%2$dçš„\\\"%1$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 "无法å–消用户#%2$dçš„\\\"%1$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:339 +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 msgid "Already subscribed!" -msgstr "" +msgstr "å·²ç»å…³æ³¨äº†ï¼" -#: classes/Subscription.php:82 -#, fuzzy +#. 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 -#, fuzzy +#. TRANS: Exception thrown when trying to unsibscribe without a subscription. +#: classes/Subscription.php:171 msgid "Not subscribed!" -msgstr "未订阅ï¼" +msgstr "未关注ï¼" -#: classes/Subscription.php:173 -#, fuzzy -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 -#, fuzzy -msgid "Couldn't delete subscription OMB token." -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 "无法删除关注 OMB token。" -#: 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 -#, fuzzy, php-format +#. 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 "欢迎æ¥åˆ° %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 "无法创建å°ç»„。" -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "无法删除订阅。" +msgstr "无法设置å°ç»„ URI。" -#: classes/User_group.php:510 -#, fuzzy +#. 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 @@ -5014,9 +4947,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 @@ -5029,495 +4961,451 @@ msgid "Other" msgstr "其他" #. TRANS: Page title. %1$s is the title, %2$s is the site name. -#: lib/action.php:145 -#, fuzzy, php-format +#: lib/action.php:148 +#, php-format msgid "%1$s - %2$s" -msgstr "%1$s (%2$s)" +msgstr "%1$s - %2$s" #. TRANS: Page title for a page without a title set. -#: lib/action.php:161 +#: lib/action.php:164 msgid "Untitled page" msgstr "无标题页" #. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 +#: lib/action.php:449 msgid "Primary site navigation" msgstr "主站导航" #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 -#, fuzzy +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" msgstr "个人" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 msgctxt "TOOLTIP" msgid "Change your email, avatar, password, profile" -msgstr "修改资料" +msgstr "修改你的 email 地å€ã€å¤´åƒã€å¯†ç ã€èµ„æ–™" #. TRANS: Tooltip for main menu option "Services" -#: lib/action.php:442 -#, fuzzy +#: lib/action.php:465 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:468 msgid "Connect" -msgstr "连接" +msgstr "å…³è”" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" -msgstr "admin管ç†å‘˜" +msgstr "管ç†" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 -#, fuzzy, php-format +#: lib/action.php:478 +#, php-format msgctxt "TOOLTIP" msgid "Invite friends and colleagues to join you on %s" -msgstr "使用这个表å•æ¥é‚€è¯·å¥½å‹å’ŒåŒäº‹åŠ å…¥ã€‚" +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:481 msgctxt "MENU" msgid "Invite" msgstr "邀请" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 -#, fuzzy +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" msgstr "登出" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" msgstr "注册" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 -#, fuzzy +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" -msgstr "登入本站" +msgstr "登录这个网站" -#: lib/action.php:481 -#, fuzzy +#: lib/action.php:504 msgctxt "MENU" msgid "Login" msgstr "登录" #. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy +#: lib/action.php:507 msgctxt "TOOLTIP" msgid "Help me!" -msgstr "帮助" +msgstr "帮助我ï¼" -#: lib/action.php:487 -#, fuzzy +#: lib/action.php:510 msgctxt "MENU" msgid "Help" msgstr "帮助" #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 -#, fuzzy +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" -msgstr "检索人或文字" +msgstr "æœç´¢äººæˆ–文字" -#: lib/action.php:493 -#, fuzzy +#: lib/action.php:516 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 -#, fuzzy +#: lib/action.php:538 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:605 msgid "Local views" msgstr "本地显示" #. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, fuzzy +#: lib/action.php:675 msgid "Page notice" -msgstr "新通告" +msgstr "页é¢æ¶ˆæ¯" #. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -#, fuzzy +#: lib/action.php:778 msgid "Secondary site navigation" -msgstr "次项站导航" +msgstr "副站导航" #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "帮助" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "关于" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" -msgstr "常è§é—®é¢˜FAQ" +msgstr "FAQ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" -msgstr "" +msgstr "æ¡æ¬¾" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "éšç§" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" -msgstr "æ¥æº" +msgstr "æºç " #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" -msgstr "è”系人" +msgstr "è”ç³»" -#: lib/action.php:784 -#, fuzzy +#: lib/action.php:810 msgid "Badge" -msgstr "呼å«" +msgstr "挂件" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 msgid "StatusNet software license" -msgstr "StatusNet软件注册è¯" +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:843 +#, php-format msgid "" "**%%site.name%%** is a microblogging service brought to you by [%%site." "broughtby%%](%%site.broughtbyurl%%)." msgstr "" -"**%%site.name%%** 是一个微åšå®¢æœåŠ¡ï¼Œæ供者为 [%%site.broughtby%%](%%site." +"**%%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:846 #, 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:850 #, 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 GPL]" +"(http://www.fsf.org/licensing/licenses/agpl-3.0.html)授æƒã€‚" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, fuzzy +#: lib/action.php:866 msgid "Site content license" -msgstr "StatusNet软件注册è¯" +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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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 -#, fuzzy +#: lib/action.php:1247 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:1257 msgid "Before" -msgstr "ä¹‹å‰ Â»" +msgstr "之å‰" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." -msgstr "" +msgstr "åªæœŸå¾…一个 root feed 元素但收到了整个的 XML 文档。" #: lib/activityutils.php:208 msgid "Can't handle remote content yet." -msgstr "" +msgstr "还ä¸èƒ½å¤„ç†è¿œç¨‹å†…容。" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." -msgstr "" +msgstr "还ä¸èƒ½å¤„ç†åµŒå…¥å¼ XML 内容。" -#: lib/activityutils.php:240 +#: 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 -#, 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 -#, fuzzy msgid "Changes to that panel are not allowed." -msgstr "ä¸å…许注册。" +msgstr "ä¸å…许对该é¢æ¿è¿›è¡Œä¿®æ”¹ã€‚" #. TRANS: Client error message. #: lib/adminpanelaction.php:229 -#, fuzzy msgid "showForm() not implemented." -msgstr "命令尚未实现。" +msgstr "showForm() 尚未实现。" #. TRANS: Client error message #: lib/adminpanelaction.php:259 -#, fuzzy 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. #: lib/adminpanelaction.php:284 -#, fuzzy msgid "Unable to delete design setting." -msgstr "无法ä¿å­˜ Twitter 设置ï¼" +msgstr "无法删除外观设置。" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy +#: 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 -#, fuzzy +#: lib/adminpanelaction.php:358 msgid "Design configuration" -msgstr "SMS短信确认" +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 -#, fuzzy +#: lib/adminpanelaction.php:366 msgid "User configuration" -msgstr "SMS短信确认" +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 "SMS短信确认" +msgstr "访问é…ç½®" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:381 -#, fuzzy +#: lib/adminpanelaction.php:382 msgid "Paths configuration" -msgstr "SMS短信确认" +msgstr "路径é…ç½®" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:389 -#, fuzzy +#: lib/adminpanelaction.php:390 msgid "Sessions configuration" -msgstr "SMS短信确认" +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 "SMS短信确认" +msgstr "更改站点é…ç½®" #. TRANS: Client error 401. -#: lib/apiauth.php:95 +#: lib/apiauth.php:113 msgid "API resource requires read-write access, but you only have read access." -msgstr "" +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 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "用ä¸è¶…过140个字符æ述您自己和您的爱好" +msgstr "用ä¸è¶…过%d个字符æ述你的应用" #. 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 "这个应用的主页 URL" #. 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 -#, fuzzy msgid "URL for the homepage of the organization" -msgstr "您的主页ã€åšå®¢æˆ–在其他站点的URL" +msgstr "这个组织的主页 URL" #. TRANS: Form input field instructions. #: lib/applicationeditform.php:251 msgid "URL to redirect to after authentication" -msgstr "" +msgstr "通过授æƒåŽè½¬å‘çš„ URL" #. 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 @@ -5527,59 +5415,55 @@ 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 #, php-format msgid "Approved %1$s - \"%2$s\" access." -msgstr "" +msgstr "通过了%1$s - \"%2$s\"的访问æƒé™ã€‚" #. 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 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 "" +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" @@ -5593,250 +5477,276 @@ msgstr "执行完毕" msgid "Command failed" msgstr "执行失败" -#: lib/command.php:83 lib/command.php:105 -#, fuzzy -msgid "Notice with that id does not exist" -msgstr "没有找到此IDçš„ä¿¡æ¯ã€‚" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +msgid "Notice with that id does not exist." +msgstr "没有此 id 的消æ¯ã€‚" -#: lib/command.php:99 lib/command.php:596 -msgid "User has no last notice" -msgstr "用户没有通告。" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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 -#, fuzzy, php-format -msgid "Could not find a user with nickname %s" -msgstr "无法更新已确认的电å­é‚®ä»¶ã€‚" +#: lib/command.php:130 +#, php-format +msgid "Could not find a user with nickname %s." +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 -msgid "Could not find a local user with nickname %s" -msgstr "无法更新已确认的电å­é‚®ä»¶ã€‚" +#: lib/command.php:150 +#, php-format +msgid "Could not find a local user with nickname %s." +msgstr "无法在本地找到昵称为%s的用户。" -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "对ä¸èµ·ï¼Œè¿™ä¸ªå‘½ä»¤è¿˜æ²¡æœ‰å®žçŽ°ã€‚" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 -msgid "Nudge sent to %s" -msgstr "振铃呼å«å‘出。" +#: lib/command.php:240 +#, php-format +msgid "Nudge sent to %s." +msgstr "呼å«å·²å‘ç»™ %s。" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" "Subscribers: %2$s\n" "Notices: %3$s" msgstr "" +"关注数: %1$s\\n\n" +"关注者: %2$s\\n\n" +"消æ¯æ•°ï¼š %3$s" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." -msgstr "通告被标记为收è—。" +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: 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. -#: lib/command.php:339 -#, fuzzy, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "无法把 %s 用户添加到 %s 组" +#: lib/command.php:360 +#, php-format +msgid "%1$s joined group %2$s." +msgstr "%1$s加入了%2$så°ç»„。" -#. TRANS: Message given having failed to remove a user from a group. +#. 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. -#: lib/command.php:385 -#, fuzzy, php-format -msgid "Could not remove user %1$s from group %2$s" -msgstr "无法订阅用户:未找到。" +#: lib/command.php:408 +#, php-format +msgid "%1$s left group %2$s." +msgstr "%1$s离开了%2$så°ç»„。" #. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 +#: lib/command.php:434 #, php-format msgid "Fullname: %s" 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:438 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:442 lib/mail.php:271 #, php-format msgid "Homepage: %s" msgstr "主页:%s" #. TRANS: Whois output. %s is the bio information of the queried user. -#: lib/command.php:430 +#: lib/command.php:446 #, php-format msgid "About: %s" msgstr "关于:%s" -#: lib/command.php:457 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " "same server." -msgstr "" +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 -msgid "Message too long - maximum is %1$d characters, you sent %2$d" -msgstr "您的消æ¯åŒ…å« %d 个字符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过 140 个字符。" - -#. TRANS: Message given have sent a direct message to another user. -#. TRANS: %s is the name of the other user. -#: lib/command.php:492 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Direct message to %s sent" -msgstr "å·²å‘ %s å‘é€æ¶ˆæ¯" +msgid "Message too long - maximum is %1$d characters, you sent %2$d." +msgstr "消æ¯åŒ…å«%2$d个字符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过%1$d个字符。" -#: lib/command.php:494 +#. TRANS: Error text shown sending a direct message fails with an unknown reason. +#: lib/command.php:517 msgid "Error sending direct message." msgstr "å‘é€æ¶ˆæ¯å‡ºé”™ã€‚" -#: lib/command.php:514 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "无法开å¯é€šå‘Šã€‚" - -#: lib/command.php:519 -#, fuzzy -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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "消æ¯å·²å‘布。" +#: lib/command.php:554 +#, php-format +msgid "Notice from %s repeated." +msgstr "æ¥è‡ª %s 的消æ¯å·²è½¬å‘。" -#: lib/command.php:531 -#, fuzzy +#. TRANS: Error text shown when repeating a notice fails with an unknown reason. +#: lib/command.php:557 msgid "Error repeating notice." -msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚" +msgstr "转å‘消æ¯æ—¶å‡ºé”™ã€‚" -#: lib/command.php:562 -#, fuzzy, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" -msgstr "您的消æ¯åŒ…å« %d 个字符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过 140 个字符。" +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "消æ¯è¿‡é•¿ - 最长%1$d个字符,你å‘é€çš„是%2$d。" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "无法删除通告。" +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 +#, php-format +msgid "Reply to %s sent." +msgstr "ç»™ %s 的回å¤å·²å‘é€ã€‚" -#: lib/command.php:573 -#, fuzzy +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." -msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚" +msgstr "ä¿å­˜æ¶ˆæ¯æ—¶å‡ºé”™ã€‚" -#: lib/command.php:620 -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 "您未告知此个人信æ¯" - -#: lib/command.php:634 -#, php-format -msgid "Subscribed to %s" -msgstr "订阅 %s" - -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" -msgstr "指定è¦å–消订阅的用户å" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." +msgstr "指定è¦å…³æ³¨çš„用户å。" +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. #: lib/command.php:664 -#, php-format -msgid "Unsubscribed from %s" -msgstr "å–消订阅 %s" +msgid "Can't subscribe to OMB profiles by command." +msgstr "无法通过命令行关注 OMB 用户。" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 +#, php-format +msgid "Subscribed to %s." +msgstr "已关注%s。" + +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." +msgstr "指定è¦å–消关注的用户å。" + +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 +#, php-format +msgid "Unsubscribed from %s." +msgstr "å–消关注%s。" + +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "命令尚未实现。" -#: lib/command.php:685 +#. TRANS: Text shown when issuing the command "off" successfully. +#: lib/command.php:728 msgid "Notification off." -msgstr "通告关闭。" +msgstr "通知已关闭。" -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." -msgstr "无法关闭通告。" +msgstr "无法关闭通知。" -#: lib/command.php:708 +#. TRANS: Text shown when issuing the command "on" successfully. +#: lib/command.php:754 msgid "Notification on." -msgstr "通告开å¯ã€‚" +msgstr "通知已开å¯ã€‚" -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." -msgstr "无法开å¯é€šå‘Šã€‚" +msgstr "无法开å¯é€šçŸ¥ã€‚" -#: lib/command.php:723 -msgid "Login command is disabled" -msgstr "" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." +msgstr "登录命令被ç¦ç”¨ã€‚" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" -msgstr "" +msgid "This link is useable only once and is valid for only 2 minutes: %s." +msgstr "这个链接åªèƒ½ä½¿ç”¨ä¸€æ¬¡å¹¶ä¸”仅在2分钟内有效:%s。" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "å–消订阅 %s" +#. TRANS: Text shown after issuing the lose command successfully (stop another user from following the current user). +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:813 +#, php-format +msgid "Unsubscribed %s." +msgstr "å·²å–消关注%s。" -#: lib/command.php:778 -#, fuzzy +#. TRANS: Text shown after requesting other users a user is subscribed to without having any subscriptions. +#: lib/command.php:831 msgid "You are not subscribed to anyone." -msgstr "您未告知此个人信æ¯" +msgstr "你没有关注任何人。" -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" -msgstr[0] "您已订阅这些用户:" +msgstr[0] "你已关注了这个用户:" -#: lib/command.php:800 -#, fuzzy +#. TRANS: Text shown after requesting other users that are subscribed to a user +#. TRANS: (followers) without having any subscribers. +#: lib/command.php:858 msgid "No one is subscribed to you." -msgstr "无法订阅他人更新。" +msgstr "没有人关注你。" -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" -msgstr[0] "无法订阅他人更新。" +msgstr[0] "这个用户正在关注你:" -#: lib/command.php:822 -#, fuzzy +#. TRANS: Text shown after requesting groups a user is subscribed to without having +#. TRANS: any group subscriptions. +#: lib/command.php:885 msgid "You are not a member of any groups." -msgstr "您未告知此个人信æ¯" +msgstr "你还未æˆä¸ºä»»ä½•ä¸€ä¸ªå°ç»„çš„æˆå‘˜ã€‚" -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 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 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5877,24 +5787,60 @@ msgid "" "tracks - not yet implemented.\n" "tracking - not yet implemented.\n" msgstr "" +"命令:\n" +"on - 打开æ醒\n" +"off - 关闭æ醒\n" +"help - 显示此帮助\n" +"follow <昵称> - 关注该用户\n" +"groups - 列出你加入的å°ç»„\n" +"subscriptions - 列出你关注的用户\n" +"subscribers - 列出你的关注者\n" +"leave <昵称> - å–消关注该用户\n" +"d <昵称> <文字> - 给该用户å‘é€ç§ä¿¡\n" +"get <昵称> - 获å–该用户的最åŽä¸€æ¡æ¶ˆæ¯\n" +"whois <昵称> - 获å–该用户的个人信æ¯\n" +"lose <昵称> - 强行å–消该用户对你的关注\n" +"fav <昵称> - 将该用户最åŽä¸€æ¡æ¶ˆæ¯åŠ ä¸º'收è—'\n" +"fav #<消æ¯id> - 将该id的消æ¯åŠ ä¸º'收è—'\n" +"repeat #<消æ¯id> - 转å‘该id的消æ¯\n" +"repeat <昵称> - 转å‘该用户的最åŽä¸€æ¡æ¶ˆæ¯\n" +"reply #<notice_id> - 对该id消æ¯å›žå¤\n" +"reply <昵称> - 对该用户的最åŽä¸€æ¡å°å¿ƒå›žå¤\n" +"join <å°ç»„> - 加入å°ç»„\n" +"login - 获å–网页登录的地å€\n" +"drop <å°ç»„> - 离开å°ç»„\n" +"stats - 获å–你的统计\n" +"stop - å’Œ'off'相åŒ\n" +"quit - å’Œ'off'相åŒ\n" +"sub <昵称> - å’Œ'follow'相åŒ\n" +"unsub <昵称> - å’Œ'leave'相åŒ\n" +"last <昵称> - å’Œ'get'相åŒ\n" +"on <昵称> - 尚未实现。\n" +"off <昵称> - 尚未实现。\n" +"nudge <昵称> - æ醒该用户更新消æ¯ã€‚\n" +"invite <电è¯å·ç > - 尚未实现。\n" +"track <word> - 尚未实现。\n" +"untrack <word> - 尚未实现。\n" +"track off - 尚未实现。\n" +"untrack all - 尚未实现。\n" +"tracks - 尚未实现。\n" +"tracking - 尚未实现。\n" #: lib/common.php:135 -#, fuzzy msgid "No configuration file found. " -msgstr "没有验è¯ç " +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." -msgstr "" +msgstr "或许你想è¿è¡Œå®‰è£…程åºæ¥è§£å†³è¿™ä¸ªé—®é¢˜ã€‚" #: lib/common.php:139 -#, fuzzy msgid "Go to the installer." -msgstr "登入本站" +msgstr "去安装程åºã€‚" #: lib/connectsettingsaction.php:110 msgid "IM" @@ -5906,45 +5852,40 @@ msgstr "使用å³æ—¶é€šè®¯å·¥å…·(IM)æ›´æ–°" #: lib/connectsettingsaction.php:116 msgid "Updates by SMS" -msgstr "使用SMS短信更新" +msgstr "使用 SMS æ›´æ–°" #: 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" -msgstr "" +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 "ä½ å¯ä»¥ä¸Šä¼ ä½ çš„个人页é¢èƒŒæ™¯ã€‚文件最大 2MB。" #: lib/designsettings.php:418 msgid "Design defaults restored." -msgstr "" +msgstr "默认外观已æ¢å¤ã€‚" #: lib/disfavorform.php:114 lib/disfavorform.php:140 -#, fuzzy msgid "Disfavor this notice" -msgstr "%s 收è—的通告" +msgstr "å–消收è—这个消æ¯" #: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy msgid "Favor this notice" -msgstr "%s 收è—的通告" +msgstr "收è—" #: lib/favorform.php:140 msgid "Favor" @@ -5952,40 +5893,37 @@ 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" -msgstr "导出数æ®" +msgstr "RSS 订阅" #: lib/galleryaction.php:121 -#, fuzzy msgid "Filter tags" -msgstr "%s 标签的èšåˆ" +msgstr "过滤标签" #: lib/galleryaction.php:131 msgid "All" msgstr "全部" #: lib/galleryaction.php:139 -#, fuzzy msgid "Select tag to filter" -msgstr "选择è¿è¥å•†" +msgstr "选择è¦è¿‡æ»¤çš„标签" #: lib/galleryaction.php:140 -#, fuzzy msgid "Tag" msgstr "标签" @@ -6000,47 +5938,43 @@ msgstr "执行" #: lib/grantroleform.php:91 #, php-format msgid "Grant this user the \"%s\" role" -msgstr "" +msgstr "给这个用户添加\\\"%s\\\"æƒé™" #: lib/groupeditform.php:163 -#, fuzzy msgid "URL of the homepage or blog of the group or topic" -msgstr "您的主页ã€åšå®¢æˆ–在其他站点的URL" +msgstr "这个å°ç»„或主题的主页或åšå®¢ URL" #: lib/groupeditform.php:168 -#, fuzzy msgid "Describe the group or topic" -msgstr "用ä¸è¶…过140个字符æ述您自己和您的爱好" +msgstr "å°ç»„或主题的æè¿°" #: lib/groupeditform.php:170 -#, fuzzy, php-format +#, php-format msgid "Describe the group or topic in %d characters" -msgstr "用ä¸è¶…过140个字符æ述您自己和您的爱好" +msgstr "å°ç»„或主题的æ述,ä¸èƒ½è¶…过%d个字符" #: lib/groupeditform.php:179 -#, fuzzy 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" -msgstr "组" +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 "%så±è”½çš„用户" #: lib/groupnav.php:108 #, php-format @@ -6048,9 +5982,8 @@ msgid "Edit %s group properties" msgstr "编辑 %s群选项" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "Logo图标" +msgstr "Logo" #: lib/groupnav.php:114 #, php-format @@ -6058,17 +5991,17 @@ msgid "Add or edit %s logo" msgstr "添加或编辑 %s 图标" #: lib/groupnav.php:120 -#, fuzzy, php-format +#, php-format msgid "Add or edit %s design" -msgstr "添加或编辑 %s 图标" +msgstr "添加或编辑%s外观" #: lib/groupsbymemberssection.php:71 msgid "Groups with most members" -msgstr "人气最旺的群" +msgstr "人气最旺的å°ç»„" #: lib/groupsbypostssection.php:71 msgid "Groups with most posts" -msgstr "消æ¯æœ€å¤šçš„群" +msgstr "å‘布消æ¯æœ€å¤šçš„å°ç»„" #: lib/grouptagcloudsection.php:56 #, php-format @@ -6078,16 +6011,16 @@ msgstr "这个组所å‘布的消æ¯çš„标签" #. 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." msgstr "ä¸æ”¯æŒè¿™ç§å›¾åƒæ ¼å¼ã€‚" #: lib/imagefile.php:88 -#, fuzzy, php-format +#, php-format msgid "That file is too big. The maximum file size is %s." -msgstr "ä½ å¯ä»¥ç»™ä½ çš„组上载一个logo图。" +msgstr "文件太大。文件大å°é™åˆ¶åœ¨%s以下。" #: lib/imagefile.php:93 msgid "Partial upload." @@ -6102,9 +6035,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" @@ -6112,41 +6044,37 @@ msgstr "未知文件类型" #: lib/imagefile.php:244 msgid "MB" -msgstr "" +msgstr "MB" #: lib/imagefile.php:246 msgid "kB" -msgstr "" +msgstr "kB" #: lib/jabber.php:387 #, php-format msgid "[%s]" -msgstr "" +msgstr "[%s]" #: lib/jabber.php:567 #, php-format msgid "Unknown inbox source %d." -msgstr "" +msgstr "未知的收件箱æ¥æº%d。" #: lib/joinform.php:114 -#, fuzzy msgid "Join" msgstr "加入" #: lib/leaveform.php:114 -#, fuzzy msgid "Leave" -msgstr "ä¿å­˜" +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 @@ -6170,16 +6098,37 @@ msgid "" "Thanks for your time, \n" "%s\n" msgstr "" +"嗨, %s。\n" +"\n" +"刚刚有人在%s填写了你的电å­é‚®ä»¶åœ°å€ã€‚\n" +"\n" +"如果是你的æ“作并且你想完æˆä½ çš„确认,请使用下é¢çš„URL:\n" +"\n" +"%s\n" +"\n" +"如果你ä¸çŸ¥é“è¿™å°é‚®ä»¶æ˜¯æ€Žä¹ˆå›žäº‹ï¼Œå¿½ç•¥æŽ‰è¿™å°é‚®ä»¶å°±å¥½ã€‚\n" +"\n" +"谢谢你的å®è´µæ—¶é—´ï¼Œ\n" +"%s\n" #. 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 "%1$s 开始关注您的 %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 -#, fuzzy, php-format +#: lib/mail.php:254 +#, php-format msgid "" "%1$s is now listening to your notices on %2$s.\n" "\n" @@ -6192,28 +6141,31 @@ msgid "" "----\n" "Change your email address or notification options at %8$s\n" msgstr "" -"%1$s 开始关注您的 %2$s ä¿¡æ¯ã€‚\n" +"%1$s开始关注你在%2$s的消æ¯ã€‚\n" "\n" "\t%3$s\n" "\n" -"为您效力的 %4$s\n" +"%4$s%5$s%6$s\n" +"真诚的问候,\n" +"%7$s.\n" +"\n" +"----\n" +"在%8$s更改你的 email 地å€æˆ–通知选项\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 "" -"自传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" @@ -6225,39 +6177,41 @@ msgid "" "Faithfully yours,\n" "%4$s" msgstr "" -"您的 %1$s å‘布用地å€å·²æ›´æ–°ã€‚\n" +"ä½ çš„ %1$s å‘布用地å€å·²æ›´æ–°ã€‚\n" "\n" "å‘é€é‚®ä»¶åˆ° %2$s æ¥å‘布新消æ¯ã€‚\n" "\n" "更多电å­é‚®ä»¶çš„å¸®åŠ©è¯·è§ %3$s。\n" "\n" -"为您效力的 %4$s" +"真诚的问候,\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 "SMS短信确认" +msgstr "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 "等待确认此电è¯å·ç ã€‚" +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 振铃呼å«ä½ " +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 " @@ -6272,15 +6226,25 @@ msgid "" "With kind regards,\n" "%4$s\n" msgstr "" +"%1$s (%2$s) 想知é“你这几天在åšä»€ä¹ˆå¹¶é‚€è¯·ä½ æ¥å‘布一些消æ¯ã€‚\n" +"\n" +"那就让他/她知é“你的动æ€å§ :)\n" +"\n" +"%3$s\n" +"\n" +"请勿回å¤æ­¤é‚®ä»¶ï¼Œä»–/她ä¸ä¼šæ”¶åˆ°æ­¤é‚®ä»¶çš„内容。\n" +"\n" +"亲切的问候,\n" +"%4$s\n" #. 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 å‘é€äº†æ–°çš„ç§äººä¿¡æ¯" +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" @@ -6298,15 +6262,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 -#, fuzzy, php-format +#: lib/mail.php:589 +#, php-format msgid "%s (@%s) added your notice as a favorite" -msgstr "%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" @@ -6326,23 +6304,42 @@ msgid "" "Faithfully yours,\n" "%6$s\n" msgstr "" +"%1$s (@%7$s) 刚刚在 %2$s 收è—了一æ¡ä½ çš„消æ¯ã€‚\n" +"\n" +"ä½ çš„è¿™æ¡æ¶ˆæ¯çš„URL:\n" +"\n" +"%3$s\n" +"\n" +"ä½ çš„è¿™æ¡æ¶ˆæ¯çš„内容是:\n" +"\n" +"%4$s\n" +"\n" +"ä½ å¯ä»¥åˆ°è¿™é‡ŒæŸ¥çœ‹æ‰€æœ‰ %1$s 收è—的消æ¯ï¼š\n" +"\n" +"%5$s\n" +"\n" +"真诚的问候,\n" +"%6$s\n" #. 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%s" -#: lib/mail.php:651 +#: lib/mail.php:657 #, php-format msgid "%s (@%s) sent a notice to your attention" -msgstr "" +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" @@ -6368,21 +6365,44 @@ 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" +"P.S. ä½ å¯ä»¥åˆ°è¿™é‡Œå…³æŽ‰è¿™äº›é‚®ä»¶æ醒:%8$s\n" #: lib/mailbox.php:89 msgid "Only the user can read their own mailboxes." -msgstr "åªæœ‰ç”¨æˆ·è‡ªå·±å¯ä»¥è®¿é—®é‚®ç®±ã€‚" +msgstr "åªæœ‰è¯¥ç”¨æˆ·æ‰èƒ½æŸ¥çœ‹è‡ªå·±çš„ç§ä¿¡ã€‚" #: lib/mailbox.php:139 msgid "" "You have no private messages. You can send private message to engage other " "users in conversation. People can send you messages for your eyes only." msgstr "" +"你没有任何ç§ä¿¡ã€‚ä½ å¯ä»¥è¯•ç€å‘é€ç§ä¿¡ç»™å…¶ä»–用户鼓励他们用ç§ä¿¡å’Œä½ äº¤æµã€‚其他用户" +"å‘给你你ç§ä¿¡åªæœ‰ä½ çœ‹å¾—到。" -#: lib/mailbox.php:227 lib/noticelist.php:494 -#, fuzzy +#: lib/mailbox.php:228 lib/noticelist.php:506 msgid "from" -msgstr " 从 " +msgstr "æ¥è‡ª" #: lib/mailhandler.php:37 msgid "Could not parse message." @@ -6394,189 +6414,179 @@ msgstr "ä¸æ˜¯å·²æ³¨å†Œç”¨æˆ·ã€‚" #: lib/mailhandler.php:46 msgid "Sorry, that is not your incoming email address." -msgstr "对ä¸èµ·ï¼Œè¿™ä¸ªå‘布用的电å­é‚®ä»¶å±žäºŽå…¶ä»–用户。" +msgstr "抱歉,这个ä¸æ˜¯ä½ çš„收信电å­é‚®ä»¶åœ°å€ã€‚" #: lib/mailhandler.php:50 msgid "Sorry, no incoming email allowed." -msgstr "对ä¸èµ·ï¼Œå‘布用的电å­é‚®ä»¶æ— æ³•ä½¿ç”¨ã€‚" +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." -msgstr "" +msgstr "ä¿å­˜ä½ çš„文件时数æ®åº“出现了一个错误。请é‡è¯•ã€‚" #: lib/mediafile.php:142 msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini." -msgstr "" +msgstr "上传文件大å°è¶…过了 php.ini 中 upload_max_filesize 的设置é™åˆ¶ã€‚" #: lib/mediafile.php:147 msgid "" "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " "the HTML form." -msgstr "" +msgstr "上传文件大å°è¶…过了 HTML 表å•ä¸­ MAX_FILE_SIZE 的设置é™åˆ¶ã€‚" #: lib/mediafile.php:152 msgid "The uploaded file was only partially uploaded." -msgstr "" +msgstr "上传的文件åªæœ‰éƒ¨åˆ†è¢«ä¸Šä¼ ã€‚" #: lib/mediafile.php:159 msgid "Missing a temporary folder." -msgstr "" +msgstr "缺少一个临时文件夹。" #: lib/mediafile.php:162 msgid "Failed to write file to disk." -msgstr "" +msgstr "写入ç£ç›˜å¤±è´¥ã€‚" #: lib/mediafile.php:165 msgid "File upload stopped by extension." -msgstr "" +msgstr "文件上传被扩展åœæ­¢äº†ã€‚" -#: lib/mediafile.php:179 lib/mediafile.php:216 +#: 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 "" +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 "无法判断文件的 MIME 类型。" -#: lib/mediafile.php:270 +#: lib/mediafile.php:318 #, php-format msgid " Try using another %s format." -msgstr "" +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 -#, fuzzy msgid "Send a direct notice" -msgstr "删除通告" +msgstr "å‘é€ä¸€æ¡ç§ä¿¡" #: lib/messageform.php:146 msgid "To" msgstr "到" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy +#: lib/messageform.php:159 lib/noticeform.php:186 msgid "Available characters" -msgstr "6 个或更多字符" +msgstr "å¯ç”¨çš„字符" -#: lib/messageform.php:178 lib/noticeform.php:236 -#, fuzzy +#: lib/messageform.php:178 lib/noticeform.php:237 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 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" -msgstr "怎么样,%s?" +msgstr "%s,最近怎么样?" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" -msgstr "" +msgstr "附件" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" -msgstr "" +msgstr "添加一个文件附件" -#: lib/noticeform.php:212 -#, fuzzy +#: lib/noticeform.php:213 msgid "Share my location" -msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚" +msgstr "分享我的地ç†ä½ç½®ã€‚" #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "ä¸è¦åˆ†äº«æˆ‘的地ç†ä½ç½®ã€‚" + +#: lib/noticeform.php:217 msgid "" "Sorry, retrieving your geo location is taking longer than expected, please " "try again later" -msgstr "" +msgstr "抱歉,获å–你的地ç†ä½ç½®æ—¶é—´è¿‡é•¿ï¼Œè¯·ç¨å€™é‡è¯•" #. TRANS: Used in coordinates as abbreviation of north -#: lib/noticelist.php:430 -#, fuzzy +#: lib/noticelist.php:436 msgid "N" -msgstr "å¦" +msgstr "N" #. TRANS: Used in coordinates as abbreviation of south -#: lib/noticelist.php:432 +#: lib/noticelist.php:438 msgid "S" -msgstr "" +msgstr "S" #. TRANS: Used in coordinates as abbreviation of east -#: lib/noticelist.php:434 +#: lib/noticelist.php:440 msgid "E" -msgstr "" +msgstr "E" #. TRANS: Used in coordinates as abbreviation of west -#: lib/noticelist.php:436 +#: lib/noticelist.php:442 msgid "W" -msgstr "" +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 "" +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:567 -#, fuzzy +#: lib/noticelist.php:502 +msgid "web" +msgstr "网页" + +#: lib/noticelist.php:568 msgid "in context" -msgstr "没有内容ï¼" +msgstr "查看对è¯" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "创建" - -#: lib/noticelist.php:629 -#, fuzzy -msgid "Reply to this notice" -msgstr "无法删除通告。" +msgstr "转å‘æ¥è‡ª" #: lib/noticelist.php:630 -#, fuzzy +msgid "Reply to this notice" +msgstr "回å¤" + +#: lib/noticelist.php:631 msgid "Reply" msgstr "回å¤" -#: lib/noticelist.php:674 -#, fuzzy +#: lib/noticelist.php:675 msgid "Notice repeated" -msgstr "消æ¯å·²å‘布。" +msgstr "消æ¯å·²è½¬å‘" #: lib/nudgeform.php:116 msgid "Nudge this user" -msgstr "呼å«è¿™ä¸ªç”¨æˆ·" +msgstr "呼å«ç”¨æˆ·" #: lib/nudgeform.php:128 msgid "Nudge" msgstr "呼å«" #: lib/nudgeform.php:128 -#, fuzzy msgid "Send a nudge to this user" msgstr "呼å«è¿™ä¸ªç”¨æˆ·" @@ -6597,17 +6607,16 @@ msgid "Error inserting remote profile" msgstr "添加远程的个人信æ¯å‡ºé”™" #: lib/oauthstore.php:345 -#, fuzzy msgid "Duplicate notice" -msgstr "删除通告" +msgstr "转å‘消æ¯" #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." -msgstr "无法添加新的订阅。" +msgstr "无法添加新的关注。" #: lib/personalgroupnav.php:99 msgid "Personal" -msgstr "个人" +msgstr "我的主页" #: lib/personalgroupnav.php:104 msgid "Replies" @@ -6623,7 +6632,7 @@ msgstr "收件箱" #: lib/personalgroupnav.php:126 msgid "Your incoming messages" -msgstr "您接收的消æ¯" +msgstr "你收到的ç§ä¿¡" #: lib/personalgroupnav.php:130 msgid "Outbox" @@ -6631,134 +6640,122 @@ msgstr "å‘件箱" #: lib/personalgroupnav.php:131 msgid "Your sent messages" -msgstr "您å‘é€çš„消æ¯" +msgstr "ä½ å‘é€çš„ç§ä¿¡" #: lib/personaltagcloudsection.php:56 -#, fuzzy, php-format +#, php-format msgid "Tags in %s's notices" -msgstr "%s's 的消æ¯çš„标签" +msgstr "%s的消æ¯ä¸­çš„标签" -#: lib/plugin.php:114 -#, fuzzy +#: lib/plugin.php:115 msgid "Unknown" -msgstr "未知动作" +msgstr "未知的" #: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82 msgid "Subscriptions" -msgstr "订阅" +msgstr "关注的" #: lib/profileaction.php:126 msgid "All subscriptions" -msgstr "所有订阅" +msgstr "所有关注的" #: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90 msgid "Subscribers" -msgstr "订阅者" +msgstr "关注者" #: lib/profileaction.php:161 -#, fuzzy msgid "All subscribers" -msgstr "订阅者" +msgstr "所有关注者" #: lib/profileaction.php:191 -#, fuzzy msgid "User ID" -msgstr "用户" +msgstr "用户 ID" #: 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 "所有组" +msgstr "所有å°ç»„" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." -msgstr "" +msgstr "未使用的方法。" #: lib/publicgroupnav.php:78 msgid "Public" -msgstr "公告" +msgstr "公共" #: lib/publicgroupnav.php:82 msgid "User groups" -msgstr "用户组" +msgstr "用户å°ç»„" #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 -#, fuzzy msgid "Recent tags" -msgstr "最近的标签" +msgstr "最近标签" #: lib/publicgroupnav.php:88 msgid "Featured" -msgstr "特å¾" +msgstr "推è用户" #: lib/publicgroupnav.php:92 -#, fuzzy msgid "Popular" -msgstr "用户" +msgstr "热门收è—" -#: lib/redirectingaction.php:94 -#, fuzzy +#: lib/redirectingaction.php:95 msgid "No return-to arguments." -msgstr "没有这份文档。" +msgstr "没有 return-to 冲çªã€‚" #: 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 "å–消这个用户的\"%s\"æƒé™" -#: lib/router.php:704 +#: lib/router.php:709 msgid "No single user defined for single-user mode." -msgstr "" +msgstr "没有å•ç‹¬çš„用户被定义为å•ç”¨æˆ·æ¨¡å¼ã€‚" #: lib/sandboxform.php:67 -#, fuzzy msgid "Sandbox" -msgstr "收件箱" +msgstr "沙盒" #: lib/sandboxform.php:78 -#, fuzzy msgid "Sandbox this user" -msgstr "å–消阻止次用户" +msgstr "将这个用户放入沙盒。" #: lib/searchaction.php:120 -#, fuzzy msgid "Search site" -msgstr "æœç´¢" +msgstr "æœç´¢å¸®åŠ©" #: lib/searchaction.php:126 msgid "Keyword(s)" -msgstr "" +msgstr "关键è¯" #: lib/searchaction.php:127 msgid "Search" msgstr "æœç´¢" #: lib/searchaction.php:162 -#, fuzzy msgid "Search help" -msgstr "æœç´¢" +msgstr "æœç´¢å¸®åŠ©" #: lib/searchgroupnav.php:80 msgid "People" @@ -6766,16 +6763,15 @@ 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 -#, fuzzy msgid "Find groups on this site" -msgstr "æœç´¢ç”¨æˆ·ä¿¡æ¯" +msgstr "æœç´¢æœ¬ç«™å°ç»„" #: lib/section.php:89 msgid "Untitled section" @@ -6783,27 +6779,25 @@ msgstr "无标题章节" #: lib/section.php:106 msgid "More..." -msgstr "" +msgstr "更多..." #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "新通告" +msgstr "ç¦è¨€" #: lib/silenceform.php:78 -#, fuzzy msgid "Silence this user" -msgstr "阻止该用户" +msgstr "将此用户ç¦è¨€" #: lib/subgroupnav.php:83 -#, fuzzy, php-format +#, php-format msgid "People %s subscribes to" -msgstr "%s 订阅的人" +msgstr "%s关注的用户" #: lib/subgroupnav.php:91 -#, fuzzy, php-format +#, php-format msgid "People subscribed to %s" -msgstr "订阅 %s" +msgstr "关注了%s的用户" #: lib/subgroupnav.php:99 #, php-format @@ -6815,180 +6809,205 @@ msgid "Invite" msgstr "邀请" #: lib/subgroupnav.php:106 -#, fuzzy, php-format +#, php-format msgid "Invite friends and colleagues to join you on %s" -msgstr "使用这个表å•æ¥é‚€è¯·å¥½å‹å’ŒåŒäº‹åŠ å…¥ã€‚" +msgstr "邀请朋å‹å’ŒåŒäº‹æ¥%s一起和你交æµ" #: lib/subscriberspeopleselftagcloudsection.php:48 #: lib/subscriptionspeopleselftagcloudsection.php:48 msgid "People Tagcloud as self-tagged" -msgstr "" +msgstr "自己添加标签的用户标签云" #: lib/subscriberspeopletagcloudsection.php:48 #: lib/subscriptionspeopletagcloudsection.php:48 msgid "People Tagcloud as tagged" -msgstr "" +msgstr "被添加标签的用户标签云" #: lib/tagcloudsection.php:56 -#, fuzzy msgid "None" -msgstr "å¦" +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:278 lib/themeuploader.php:282 +#: lib/themeuploader.php:290 lib/themeuploader.php:297 +msgid "Failed saving theme." +msgstr "ä¿å­˜ä¸»é¢˜å¤±è´¥" + +#: lib/themeuploader.php:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" +"主题包å«æ— æ•ˆçš„文件或文件夹的å称。请åªä½¿ç”¨ ASCII å­—æ¯ï¼Œæ•°å­—,下划线和å‡å·ã€‚" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "主题包å«ä¸å®‰å…¨çš„文件扩展å,å¯èƒ½æœ‰å±é™©ã€‚" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "主题包å«ä¸å…许的â€.%s“格å¼æ–‡ä»¶ã€‚" + +#: lib/themeuploader.php:259 +msgid "Error opening theme archive." +msgstr "打开主题文件时出错。" #: lib/topposterssection.php:74 -#, fuzzy msgid "Top posters" msgstr "çŒæ°´ç²¾è‹±" #: lib/unsandboxform.php:69 msgid "Unsandbox" -msgstr "" +msgstr "移出沙盒" #: lib/unsandboxform.php:80 -#, fuzzy msgid "Unsandbox this user" -msgstr "å–消阻止次用户" +msgstr "将这个用户从沙盒中移出" #: lib/unsilenceform.php:67 msgid "Unsilence" -msgstr "" +msgstr "å–消ç¦è¨€" #: lib/unsilenceform.php:78 -#, fuzzy msgid "Unsilence this user" -msgstr "å–消阻止次用户" +msgstr "å–消对这个用户的ç¦è¨€" #: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137 -#, fuzzy msgid "Unsubscribe from this user" -msgstr "å–消订阅 %s" +msgstr "å–消关注这个用户" #: lib/unsubscribeform.php:137 msgid "Unsubscribe" -msgstr "退订" - -#: lib/usernoprofileexception.php:58 -#, fuzzy, php-format -msgid "User %s (%d) has no profile record." -msgstr "用户没有个人信æ¯ã€‚" +msgstr "å–消关注" #: lib/userprofile.php:117 -#, fuzzy msgid "Edit Avatar" -msgstr "头åƒ" +msgstr "编辑头åƒ" #: lib/userprofile.php:234 lib/userprofile.php:248 -#, fuzzy msgid "User actions" -msgstr "未知动作" +msgstr "用户动作" #: lib/userprofile.php:237 msgid "User deletion in progress..." -msgstr "" +msgstr "用户删除处ç†ä¸­â€¦â€¦" #: lib/userprofile.php:263 -#, fuzzy msgid "Edit profile settings" -msgstr "个人设置" +msgstr "编辑个人信æ¯è®¾ç½®" #: lib/userprofile.php:264 msgid "Edit" -msgstr "" +msgstr "编辑" #: lib/userprofile.php:287 -#, fuzzy msgid "Send a direct message to this user" -msgstr "无法å‘此用户å‘é€æ¶ˆæ¯ã€‚" +msgstr "给该用户å‘é€ç§ä¿¡" #: lib/userprofile.php:288 -#, fuzzy msgid "Message" -msgstr "新消æ¯" +msgstr "ç§ä¿¡" #: lib/userprofile.php:326 msgid "Moderate" -msgstr "" +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" msgid "Moderator" -msgstr "" +msgstr "审核员" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "几秒å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" -msgstr "一分钟å‰" +msgstr "约1分钟å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, php-format msgid "about %d minutes ago" -msgstr "%d 分钟å‰" +msgstr "约%d分钟å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1064 +#: lib/util.php:1112 msgid "about an hour ago" -msgstr "一å°æ—¶å‰" +msgstr "约1å°æ—¶å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, php-format msgid "about %d hours ago" -msgstr "%d å°æ—¶å‰" +msgstr "约%då°æ—¶å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1071 +#: lib/util.php:1119 msgid "about a day ago" -msgstr "一天å‰" +msgstr "约1天å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" -msgstr "一个月å‰" +msgstr "约1个月å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, php-format msgid "about %d months ago" -msgstr "%d 个月å‰" +msgstr "约%d个月å‰" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1085 +#: lib/util.php:1133 msgid "about a year ago" -msgstr "一年å‰" +msgstr "约1å¹´å‰" #: lib/webcolor.php:82 -#, fuzzy, php-format +#, php-format msgid "%s is not a valid color!" -msgstr "主页的URLä¸æ­£ç¡®ã€‚" +msgstr "%sä¸æ˜¯æœ‰æ•ˆçš„颜色ï¼" #: lib/webcolor.php:123 #, php-format msgid "%s is not a valid color! Use 3 or 6 hex chars." -msgstr "" - -#: lib/xmppmanager.php:403 -#, fuzzy, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d." -msgstr "您的消æ¯åŒ…å« %d 个字符,超出长度é™åˆ¶ - ä¸èƒ½è¶…过 140 个字符。" +msgstr "%sä¸æ˜¯æœ‰æ•ˆçš„颜色ï¼åº”使用3或6个å六进制字符。" diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po index 5d8a1c3810..8e8217901e 100644 --- a/locale/zh_TW/LC_MESSAGES/statusnet.po +++ b/locale/zh_TW/LC_MESSAGES/statusnet.po @@ -7,35 +7,26 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-12 21:47+0000\n" -"PO-Revision-Date: 2010-04-12 21:50:12+0000\n" +"POT-Creation-Date: 2010-09-08 22:33+0000\n" +"PO-Revision-Date: 2010-09-08 22:35:48+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 (r64984); Translate extension (2010-01-16)\n" +"X-Generator: MediaWiki 1.17alpha (r72348); Translate extension (2010-08-20)\n" "X-Translation-Project: translatewiki.net at http://translatewiki.net\n" "X-Language-Code: zh-hant\n" "X-Message-Group: out-statusnet\n" "Plural-Forms: nplurals=1; plural=0;\n" -#. TRANS: Page title -#. TRANS: Menu item for site administration -#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:375 -#, 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 +56,8 @@ msgstr "" #. TRANS: Checkbox label for disabling new user registrations. #: actions/accessadminpanel.php:185 -#, fuzzy msgid "Closed" -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,78 +71,72 @@ 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 +#. TRANS: Error text shown when trying to send a direct message to a user that does not exist. +#: 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:75 actions/apigroupcreate.php:112 -#: actions/apigroupismember.php:90 actions/apigroupjoin.php:99 -#: actions/apigroupleave.php:99 actions/apigrouplist.php:72 -#: actions/apistatusesupdate.php:148 actions/apisubscriptions.php:87 -#: actions/apitimelinefavorites.php:71 actions/apitimelinefriends.php:78 -#: 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 #: 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 +#: actions/xrds.php:71 lib/command.php:498 lib/galleryaction.php:59 #: lib/mailbox.php:82 lib/profileaction.php:77 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 -msgid "%1$s and friends, page %2$d" -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:114 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,103 +144,51 @@ 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 -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:120 -#: 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/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/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/apistatusnetversion.php:93 actions/apisubscriptions.php:111 -#: actions/apitimelinefavorites.php:173 actions/apitimelinefriends.php:175 -#: actions/apitimelinegroup.php:151 actions/apitimelinehome.php:174 -#: actions/apitimelinementions.php:173 actions/apitimelinepublic.php:151 -#: actions/apitimelineretweetedtome.php:121 -#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:160 -#: actions/apitimelineuser.php:162 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:117 -#: actions/apifavoritecreate.php:90 actions/apifavoritedestroy.php:91 +#: 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:104 actions/apigroupjoin.php:91 -#: actions/apigroupleave.php:91 actions/apimediaupload.php:67 -#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:118 +#: 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 -#, fuzzy -msgid "Could not update user." -msgstr "無法更新使用者" - -#: 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 "" - -#: actions/apiaccountupdateprofile.php:147 -#, fuzzy -msgid "Could not save profile." -msgstr "無法儲存個人資料" - #: actions/apiaccountupdateprofilebackgroundimage.php:108 #: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80 -#: actions/apistatusesupdate.php:131 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 @@ -272,31 +198,6 @@ msgid "" "current configuration." msgstr "" -#: 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 "" - -#: actions/apiaccountupdateprofilebackgroundimage.php:187 -#: actions/apiaccountupdateprofilecolors.php:142 -#, fuzzy -msgid "Could not update your design." -msgstr "無法更新使用者" - -#: actions/apiblockcreate.php:105 -#, fuzzy -msgid "You cannot block yourself!" -msgstr "無法更新使用者" - -#: actions/apiblockcreate.php:126 -msgid "Block user failed." -msgstr "" - #: actions/apiblockdestroy.php:114 msgid "Unblock user failed." msgstr "" @@ -321,192 +222,131 @@ msgstr "" msgid "All the direct messages sent to %s" msgstr "" -#: actions/apidirectmessagenew.php:126 +#: actions/apidirectmessagenew.php:118 msgid "No message text!" msgstr "" -#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150 +#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150 #, php-format msgid "That's too long. Max message size is %d chars." msgstr "" -#: actions/apidirectmessagenew.php:146 -msgid "Recipient user not found." -msgstr "" - -#: actions/apidirectmessagenew.php:150 +#: 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 +#. TRANS: Error message text shown when a favorite could not be set. +#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:296 msgid "Could not create favorite." -msgstr "" +msgstr "無法更新使用者" -#: actions/apifavoritedestroy.php:122 -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 "" +msgstr "無法新增訂閱" #: actions/apifriendshipscreate.php:109 -msgid "Could not follow user: User not found." -msgstr "" - -#: actions/apifriendshipscreate.php:118 -#, php-format -msgid "Could not follow user: %s is already on your list." -msgstr "" +msgid "Could not follow user: profile not found." +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 "無法更新使用者" - -#: 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 "無法更新使用者" - -#: actions/apifriendshipsshow.php:142 -#, fuzzy -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/newgroup.php:133 actions/profilesettings.php:218 -#: actions/register.php:210 -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 +#, php-format msgid "Description is too long (max %d chars)." -msgstr "自我介紹éŽé•·(å…±140個字元)" +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 -msgid "Invalid alias: \"%s\"." -msgstr "個人首é é€£çµ%s無效" - -#: actions/apigroupcreate.php:275 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 -#, 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 -msgid "You are already a member of that group." -msgstr "" - -#: actions/apigroupjoin.php:119 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 +#. 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. +#: actions/apigroupjoin.php:139 actions/joingroup.php:134 lib/command.php:353 +#, php-format msgid "Could not join user %1$s to group %2$s." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "無法更新使用者" -#: actions/apigroupleave.php:114 -#, fuzzy -msgid "You are not a member of this group." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" - -#: actions/apigroupleave.php:124 actions/leavegroup.php:129 -#, fuzzy, php-format +#. 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. +#: actions/apigroupleave.php:125 actions/leavegroup.php:129 +#: lib/command.php:401 +#, 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 -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 -#, 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/apigrouplist.php:98 #, php-format -msgid "%s groups" +msgid "%s's groups" msgstr "" -#: actions/apigrouplistall.php:95 +#. 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 "" + +#: actions/apigrouplistall.php:96 #, php-format msgid "groups on %s" msgstr "" @@ -515,22 +355,17 @@ msgstr "" msgid "No oauth_token parameter provided." msgstr "" -#: actions/apioauthauthorize.php:106 -#, fuzzy -msgid "Invalid token." -msgstr "尺寸錯誤" - #: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268 #: actions/deletenotice.php: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 @@ -538,20 +373,13 @@ msgstr "尺寸錯誤" msgid "There was a problem with your session token. Try again, please." msgstr "" -#: actions/apioauthauthorize.php:135 -#, fuzzy -msgid "Invalid nickname / password!" -msgstr "使用者å稱或密碼無效" - #: actions/apioauthauthorize.php:159 -#, fuzzy msgid "Database error deleting OAuth application user." -msgstr "使用者設定發生錯誤" +msgstr "個人圖åƒæ’入錯誤" #: actions/apioauthauthorize.php:185 -#, fuzzy msgid "Database error inserting OAuth application user." -msgstr "增加回覆時,資料庫發生錯誤: %s" +msgstr "個人圖åƒæ’入錯誤" #: actions/apioauthauthorize.php:214 #, php-format @@ -593,26 +421,14 @@ msgid "" "give access to your %4$s account to third parties you trust." msgstr "" -#. TRANS: Main menu option when logged in for access to user settings -#: actions/apioauthauthorize.php:310 lib/action.php:440 -#, 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 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 -msgid "Password" -msgstr "" - #: actions/apioauthauthorize.php:328 msgid "Deny" msgstr "" @@ -625,11 +441,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 "" @@ -638,71 +454,52 @@ msgstr "" msgid "No such notice." msgstr "無此通知" -#: actions/apistatusesretweet.php:83 -#, fuzzy +#. TRANS: Error text shown when trying to repeat an own notice. +#: actions/apistatusesretweet.php:83 lib/command.php:538 msgid "Cannot repeat your own notice." -msgstr "儲存使用者發生錯誤" +msgstr "" -#: actions/apistatusesretweet.php:91 -#, fuzzy -msgid "Already repeated that notice." -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:161 actions/newnotice.php:155 -#: lib/mailhandler.php:60 -#, php-format -msgid "That's too long. Max notice size is %d chars." +#: actions/apistatusesupdate.php:221 +msgid "Client must provide a 'status' parameter with a value." msgstr "" -#: actions/apistatusesupdate.php:202 actions/apiusershow.php:96 -#, fuzzy +#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96 msgid "Not found." -msgstr "ç›®å‰ç„¡è«‹æ±‚" +msgstr "確èªç¢¼éºå¤±" -#: actions/apistatusesupdate.php:225 actions/newnotice.php:178 +#: actions/apistatusesupdate.php:306 actions/newnotice.php:181 #, 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 -#, 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 -#, 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:107 actions/publicrss.php:103 +#: actions/apitimelinepublic.php:197 actions/publicrss.php:103 #, php-format msgid "%s public timeline" msgstr "" -#: actions/apitimelinepublic.php:112 actions/publicrss.php:105 +#: actions/apitimelinepublic.php:202 actions/publicrss.php:105 #, php-format msgid "%s updates from everyone!" msgstr "" @@ -717,20 +514,19 @@ 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/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 +562,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 +576,7 @@ msgid "Preview" msgstr "" #: actions/avatarsettings.php:149 actions/showapplication.php:252 -#: lib/deleteuserform.php:66 lib/noticelist.php:656 +#: lib/deleteuserform.php:66 lib/noticelist.php:657 msgid "Delete" msgstr "" @@ -801,10 +596,6 @@ msgstr "" msgid "Pick a square area of the image to be your avatar" msgstr "" -#: actions/avatarsettings.php:347 actions/grouplogo.php:380 -msgid "Lost our file data." -msgstr "" - #: actions/avatarsettings.php:370 msgid "Avatar updated." msgstr "更新個人圖åƒ" @@ -813,22 +604,11 @@ msgstr "更新個人圖åƒ" msgid "Failed updating avatar." msgstr "無法上傳個人圖åƒ" -#: actions/avatarsettings.php:397 -#, fuzzy -msgid "Avatar deleted." -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 -#, 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 +620,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,33 +629,28 @@ 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 "æ­¤Jabber ID已有人使用" #. 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" 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 -msgid "Block this user" -msgstr "無此使用者" - -#: actions/block.php:179 +#: actions/block.php:187 msgid "Failed to save block information." msgstr "" +#. TRANS: Command exception text shown when a group is requested that does not exist. +#. TRANS: Error text shown when trying to leave a group that does not exist. #: 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 @@ -885,40 +660,28 @@ msgstr "" #: 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 -#, fuzzy +#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:170 +#: lib/command.php:383 msgid "No such group." -msgstr "無此通知" - -#: actions/blockedfromgroup.php:97 -#, fuzzy, 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 "無此使用者" - #. TRANS: Title for mini-posting window loaded from bookmarklet. #: actions/bookmarklet.php:51 #, php-format @@ -933,21 +696,12 @@ msgstr "無確èªç¢¼" msgid "Confirmation code not found." msgstr "確èªç¢¼éºå¤±" -#: actions/confirmaddress.php:85 -msgid "That confirmation code is not for you!" -msgstr "" - #. 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 "" -#. TRANS: Client error for an already confirmed email/jabbel/sms address. -#: actions/confirmaddress.php:96 -msgid "That address has already been confirmed." -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. #. TRANS: Server error thrown on database error updating IM preferences. @@ -970,51 +724,37 @@ msgid "Couldn't delete email confirmation." msgstr "無法å–消信箱確èª" #: actions/confirmaddress.php:146 -#, fuzzy msgid "Confirm address" -msgstr "確èªä¿¡ç®±" +msgstr "確èª" #: actions/confirmaddress.php:161 #, php-format msgid "The address \"%s\" has been confirmed for your account." msgstr "" -#: actions/conversation.php:99 -#, fuzzy -msgid "Conversation" -msgstr "地點" - #: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87 #: lib/profileaction.php:229 lib/searchgroupnav.php:82 msgid "Notices" -msgstr "" +msgstr "無此通知" #: actions/deleteapplication.php:63 -#, fuzzy msgid "You must be logged in to delete an application." -msgstr "無法更新使用者" - -#: actions/deleteapplication.php:71 -#, fuzzy -msgid "Application not found." -msgstr "確èªç¢¼éºå¤±" +msgstr "無法å–消信箱確èª" #: actions/deleteapplication.php:78 actions/editapplication.php:77 #: actions/showapplication.php:94 -#, fuzzy msgid "You are not the owner of this application." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "無法å–消信箱確èª" #: actions/deleteapplication.php:102 actions/editapplication.php:127 #: actions/newapplication.php:110 actions/showapplication.php:118 -#: lib/action.php:1253 +#: lib/action.php:1307 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,30 +765,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個字以內æ述你自己與你的興趣" - -#. 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:63 -#: lib/settingsaction.php:72 -msgid "Not logged in." -msgstr "" - -#: actions/deletenotice.php:71 -msgid "Can't delete this notice." -msgstr "" +msgstr "無法å–消信箱確èª" #: actions/deletenotice.php:103 msgid "" @@ -1056,37 +779,12 @@ msgid "" "be undone." msgstr "" -#: actions/deletenotice.php:109 actions/deletenotice.php:141 -msgid "Delete notice" -msgstr "" - #: actions/deletenotice.php:144 msgid "Are you sure you want to delete this notice?" msgstr "" -#. TRANS: Submit button title for 'No' when deleting a notice. -#: actions/deletenotice.php:151 -#, fuzzy -msgid "Do not delete this notice" -msgstr "無此通知" - -#. TRANS: Submit button title for 'Yes' when deleting a notice. -#: actions/deletenotice.php:158 lib/noticelist.php:656 -msgid "Delete this notice" -msgstr "" - -#: actions/deleteuser.php:67 -#, fuzzy -msgid "You cannot delete users." -msgstr "無法更新使用者" - #: actions/deleteuser.php:74 -#, fuzzy msgid "You can only delete local users." -msgstr "無此使用者" - -#: actions/deleteuser.php:110 actions/deleteuser.php:133 -msgid "Delete user" msgstr "" #: actions/deleteuser.php:136 @@ -1097,9 +795,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 +809,45 @@ msgstr "" msgid "Design settings for this StatusNet site." msgstr "" -#: actions/designadminpanel.php:276 -#, 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 -#, fuzzy +#: actions/designadminpanel.php:426 msgid "Change logo" -msgstr "更改密碼" - -#: actions/designadminpanel.php:381 -#, fuzzy -msgid "Site logo" -msgstr "新訊æ¯" - -#: actions/designadminpanel.php:388 -#, fuzzy -msgid "Change theme" msgstr "更改" -#: actions/designadminpanel.php:405 -#, fuzzy -msgid "Site theme" -msgstr "新訊æ¯" +#: actions/designadminpanel.php:431 +msgid "Site logo" +msgstr "更改" -#: actions/designadminpanel.php:406 +#: actions/designadminpanel.php:460 +msgid "Site theme" +msgstr "" + +#: 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 +855,57 @@ 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 -#, fuzzy +#: actions/designadminpanel.php:564 lib/designsettings.php:170 msgid "Change colours" -msgstr "更改密碼" +msgstr "更改" -#: actions/designadminpanel.php:513 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 -#, fuzzy -msgid "Links" -msgstr "登入" +#: actions/designadminpanel.php:651 +msgid "Advanced" +msgstr "" -#: actions/designadminpanel.php:580 lib/designsettings.php:247 +#: 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,10 +915,6 @@ msgstr "" msgid "Save" msgstr "" -#: actions/designadminpanel.php:590 lib/designsettings.php:257 -msgid "Save design" -msgstr "" - #: actions/disfavor.php:81 msgid "This notice is not a favorite!" msgstr "" @@ -1239,24 +924,14 @@ msgid "Add to favorites" msgstr "" #: actions/doc.php:158 -#, fuzzy, php-format +#, php-format msgid "No such document \"%s\"" -msgstr "無此文件" - -#: actions/editapplication.php:54 -#, fuzzy -msgid "Edit Application" msgstr "無此通知" -#: actions/editapplication.php:66 -msgid "You must be logged in to edit an application." -msgstr "" - #: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166 #: actions/showapplication.php:87 -#, fuzzy msgid "No such application." -msgstr "無此通知" +msgstr "無此使用者" #: actions/editapplication.php:161 msgid "Use this form to edit your application." @@ -1266,39 +941,18 @@ msgstr "" msgid "Name is required." msgstr "" -#: actions/editapplication.php:180 actions/newapplication.php:165 -#, fuzzy -msgid "Name is too long (max 255 chars)." -msgstr "å…¨åéŽé•·ï¼ˆæœ€å¤š255字元)" - -#: actions/editapplication.php:183 actions/newapplication.php:162 -#, fuzzy -msgid "Name already in use. Try another one." -msgstr "此暱稱已有人使用。å†è©¦è©¦çœ‹åˆ¥çš„å§ã€‚" - #: actions/editapplication.php:186 actions/newapplication.php:168 -#, fuzzy msgid "Description is required." -msgstr "所有訂閱" +msgstr "" #: actions/editapplication.php:194 msgid "Source URL is too long." msgstr "" -#: actions/editapplication.php:200 actions/newapplication.php:185 -#, fuzzy -msgid "Source URL is not valid." -msgstr "個人首é ä½å€éŒ¯èª¤" - #: actions/editapplication.php:203 actions/newapplication.php:188 msgid "Organization is required." msgstr "" -#: actions/editapplication.php:206 actions/newapplication.php:191 -#, fuzzy -msgid "Organization is too long (max 255 chars)." -msgstr "地點éŽé•·ï¼ˆå…±255個字)" - #: actions/editapplication.php:209 actions/newapplication.php:194 msgid "Organization homepage is required." msgstr "" @@ -1312,19 +966,14 @@ 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 msgid "Edit %s group" msgstr "" -#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65 -msgid "You must be logged in to create a group." -msgstr "" - #: 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." @@ -1335,24 +984,19 @@ msgid "Use this form to edit the group." msgstr "" #: actions/editgroup.php:205 actions/newgroup.php:145 -#, fuzzy, php-format +#, 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 -#, fuzzy +#. TRANS: Server exception thrown when creating group aliases failed. +#: actions/editgroup.php:264 classes/User_group.php:514 msgid "Could not create aliases." -msgstr "無法存å–個人圖åƒè³‡æ–™" +msgstr "無法更新使用者" #: actions/editgroup.php:280 msgid "Options saved." @@ -1360,9 +1004,8 @@ msgstr "" #. TRANS: Title for e-mail settings. #: 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. @@ -1371,18 +1014,6 @@ msgstr "線上å³æ™‚通設定" msgid "Manage how you get email from %%site.name%%." msgstr "" -#. 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 "確èªä¿¡ç®±" - -#. TRANS: Form note in e-mail settings form. -#: actions/emailsettings.php:112 -msgid "Current confirmed email address." -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. #. TRANS: Button label to remove a confirmed IM address. @@ -1395,23 +1026,6 @@ msgctxt "BUTTON" msgid "Remove" msgstr "" -#: actions/emailsettings.php:122 -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. -#. 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 -#, fuzzy -msgctxt "BUTTON" -msgid "Cancel" -msgstr "å–消" - #. TRANS: Instructions for e-mail address input form. #: actions/emailsettings.php:135 msgid "Email address, like \"UserName@example.org\"" @@ -1422,10 +1036,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 +1067,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 @@ -1488,42 +1100,17 @@ msgstr "" msgid "I want to post notices by email." msgstr "" -#. TRANS: Checkbox label in e-mail preferences form. -#: actions/emailsettings.php:219 -msgid "Publish a MicroID for my email address." -msgstr "" - #. TRANS: Confirmation message for successful e-mail preferences save. #: actions/emailsettings.php:334 msgid "Email preferences saved." msgstr "" -#. TRANS: Message given saving e-mail address without having provided one. -#: actions/emailsettings.php:353 -msgid "No email address." -msgstr "" - -#. TRANS: Message given saving e-mail address that cannot be normalised. -#: actions/emailsettings.php:361 -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 "此信箱無效" -#. TRANS: Message given saving e-mail address that is already set. -#: actions/emailsettings.php:370 -msgid "That is already your email address." -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 "" - #. 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. @@ -1532,66 +1119,16 @@ msgstr "" msgid "Couldn't insert confirmation code." msgstr "無法輸入確èªç¢¼" -#. 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 "" - -#. 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 "" - -#. 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 "請輸入暱稱或電å­ä¿¡ç®±" - #. TRANS: Message given after successfully canceling e-mail address confirmation. #: actions/emailsettings.php:438 -#, fuzzy msgid "Email confirmation cancelled." -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 "" - -#. TRANS: Message given after successfully removing a registered e-mail address. -#: actions/emailsettings.php:479 -#, fuzzy -msgid "The email address was removed." -msgstr "此電å­ä¿¡ç®±å·²è¨»å†ŠéŽäº†" - -#: actions/emailsettings.php:493 actions/smssettings.php:568 -msgid "No incoming email address." -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 -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 msgid "Incoming email address removed." 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 "" - #: actions/favor.php:79 msgid "This notice is already a favorite!" msgstr "" @@ -1600,16 +1137,10 @@ msgstr "" msgid "Disfavor favorite" msgstr "" -#: actions/favorited.php:65 lib/popularnoticesection.php:91 -#: lib/publicgroupnav.php:93 -#, fuzzy -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 +1170,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 @@ -1659,24 +1190,20 @@ msgid "A selection of some great users on %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!" @@ -1686,10 +1213,6 @@ msgstr "" msgid "User being listened to does not exist." msgstr "" -#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59 -msgid "You can use the local subscription!" -msgstr "" - #: actions/finishremotesubscribe.php:99 msgid "That user has blocked you from subscribing." msgstr "" @@ -1699,80 +1222,38 @@ 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." msgstr "" -#: actions/finishremotesubscribe.php:138 -#, fuzzy -msgid "Error updating remote profile." -msgstr "æ›´æ–°é ç«¯å€‹äººè³‡æ–™ç™¼ç”ŸéŒ¯èª¤" - -#: actions/getfile.php:79 -#, fuzzy -msgid "No such file." -msgstr "無此通知" - #: actions/getfile.php:83 -#, fuzzy 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 "" -#: actions/grantrole.php:75 -#, fuzzy -msgid "You cannot grant user roles on this site." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" - #: actions/grantrole.php:82 msgid "User already has this role." msgstr "" -#: actions/groupblock.php:71 actions/groupunblock.php:71 -#: actions/makeadmin.php:71 actions/subedit.php:46 -#: lib/profileformaction.php:70 -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 "" -#: actions/groupblock.php:81 actions/groupunblock.php:81 -#: actions/makeadmin.php:81 -msgid "No group specified." -msgstr "" - #: actions/groupblock.php:91 msgid "Only an admin can block group members." msgstr "" -#: actions/groupblock.php:95 -msgid "User is already blocked from group." -msgstr "" - -#: actions/groupblock.php:100 -msgid "User is not a member of group." -msgstr "" - #: actions/groupblock.php:134 actions/groupmembers.php:360 -#, fuzzy msgid "Block user from group" -msgstr "無此使用者" +msgstr "" #: actions/groupblock.php:160 #, php-format @@ -1782,30 +1263,18 @@ msgid "" "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 "無法連çµåˆ°ä¼ºæœå™¨:%s" - #. 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." msgstr "" #: actions/groupbyid.php:74 actions/userbyid.php:70 -#, fuzzy msgid "No ID." -msgstr "查無此Jabber ID" - -#: actions/groupdesignsettings.php:68 -msgid "You must be logged in to edit a group." -msgstr "" +msgstr "無此通知" #: actions/groupdesignsettings.php:144 msgid "Group design" @@ -1817,20 +1286,10 @@ msgid "" "palette of your choice." 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 "無法更新使用者" - #: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231 msgid "Design preferences saved." msgstr "" -#: actions/grouplogo.php:142 actions/grouplogo.php:195 -msgid "Group logo" -msgstr "" - #: actions/grouplogo.php:153 #, php-format msgid "" @@ -1841,21 +1300,6 @@ msgstr "" msgid "Pick a square area of the image to be the logo." msgstr "" -#: actions/grouplogo.php:399 -#, fuzzy -msgid "Logo updated." -msgstr "更新個人圖åƒ" - -#: actions/grouplogo.php:401 -#, fuzzy -msgid "Failed updating logo." -msgstr "無法上傳個人圖åƒ" - -#: actions/groupmembers.php:100 lib/groupnav.php:92 -#, php-format -msgid "%s group members" -msgstr "" - #: actions/groupmembers.php:103 #, php-format msgid "%1$s group members, page %2$d" @@ -1889,16 +1333,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 +1365,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 @@ -1936,12 +1379,6 @@ msgstr "" msgid "Group search" msgstr "" -#: actions/groupsearch.php:79 actions/noticesearch.php:117 -#: actions/peoplesearch.php:83 -#, fuzzy -msgid "No results." -msgstr "ç„¡çµæžœ" - #: actions/groupsearch.php:82 #, php-format msgid "" @@ -1964,16 +1401,10 @@ msgstr "" msgid "User is not blocked from group." msgstr "" -#: actions/groupunblock.php:128 actions/unblock.php:86 -#, fuzzy -msgid "Error removing the block." -msgstr "儲存使用者發生錯誤" - #. TRANS: Title for instance messaging settings. #: 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 +1418,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." @@ -2042,11 +1471,6 @@ msgstr "" 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." @@ -2067,11 +1491,6 @@ msgstr "æ­¤JabberID錯誤" msgid "Not a valid Jabber ID" msgstr "æ­¤JabberID無效" -#. 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." @@ -2091,23 +1510,10 @@ msgstr "確èªä¿¡å·²å¯„到你的線上å³æ™‚通信箱。%sé€çµ¦ä½ å¾—訊æ¯è¦ msgid "That is the wrong IM address." msgstr "" -#. TRANS: Server error thrown on database error canceling IM address confirmation. -#: actions/imsettings.php:397 -#, fuzzy -msgid "Couldn't delete IM confirmation." -msgstr "無法å–消信箱確èª" - #. TRANS: Message given after successfully canceling IM address confirmation. #: actions/imsettings.php:402 -#, fuzzy 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 "" +msgstr "無確èªç¢¼" #. TRANS: Message given after successfully removing a registered IM address. #: actions/imsettings.php:447 @@ -2132,16 +1538,6 @@ msgstr "" msgid "Invites have been disabled." msgstr "" -#: actions/invite.php:41 -#, fuzzy, 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 "" @@ -2150,13 +1546,9 @@ msgstr "" 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 +#: actions/invite.php:131 actions/invite.php:139 lib/command.php:430 #, php-format msgid "%1$s (%2$s)" msgstr "" @@ -2181,10 +1573,6 @@ 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 "" @@ -2203,12 +1591,6 @@ 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 @@ -2241,80 +1623,53 @@ msgid "" "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 -#, fuzzy -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 +#: actions/joingroup.php:141 #, 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 -#, fuzzy, php-format -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 -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:295 #, php-format msgid "" -"Login with your username and password. Don't have a username yet? [Register]" -"(%%action.register%%) a new account." +"Don't have a username yet? [Register](%%action.register%%) a new account." msgstr "" #: actions/makeadmin.php:92 @@ -2327,27 +1682,12 @@ 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" - -#: actions/makeadmin.php:146 -#, fuzzy, 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 "ç„¡çµæžœ" - -#: actions/newapplication.php:52 -#, fuzzy -msgid "New Application" -msgstr "無此通知" - -#: actions/newapplication.php:64 -msgid "You must be logged in to register an application." msgstr "" #: actions/newapplication.php:143 @@ -2359,13 +1699,8 @@ msgid "Source URL is required." msgstr "" #: actions/newapplication.php:258 actions/newapplication.php:267 -#, fuzzy msgid "Could not create application." -msgstr "無法存å–個人圖åƒè³‡æ–™" - -#: actions/newgroup.php:53 -msgid "New group" -msgstr "" +msgstr "無法å–消信箱確èª" #: actions/newgroup.php:110 msgid "Use this form to create a new group." @@ -2375,20 +1710,15 @@ msgstr "" 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 +#. TRANS: Command exception text shown when trying to send a direct message to another user without content. +#. TRANS: Command exception text shown when trying to reply to a notice without providing content for the reply. +#: actions/newmessage.php:144 actions/newnotice.php:138 lib/command.php:481 +#: lib/command.php:582 msgid "No content!" msgstr "無內容" -#: actions/newmessage.php:158 -msgid "No recipient specified." -msgstr "" - -#: actions/newmessage.php:164 lib/command.php:484 +#. TRANS: Error text shown when trying to send a direct message to self. +#: actions/newmessage.php:164 lib/command.php:506 msgid "" "Don't send a message to yourself; just say it to yourself quietly instead." msgstr "" @@ -2397,12 +1727,14 @@ msgstr "" msgid "Message sent" msgstr "" -#: actions/newmessage.php:185 +#. TRANS: Message given have sent a direct message to another user. +#. TRANS: %s is the name of the other user. +#: actions/newmessage.php:185 lib/command.php:514 #, php-format msgid "Direct message to %s sent." msgstr "" -#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189 +#: actions/newmessage.php:210 actions/newnotice.php:261 lib/channel.php:189 msgid "Ajax Error" msgstr "" @@ -2410,10 +1742,6 @@ msgstr "" msgid "New notice" msgstr "新訊æ¯" -#: actions/newnotice.php:217 -msgid "Notice posted" -msgstr "" - #: actions/noticesearch.php:68 #, php-format msgid "" @@ -2426,9 +1754,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 @@ -2445,18 +1773,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 @@ -2467,35 +1795,17 @@ msgstr "" msgid "Nudge sent!" msgstr "" -#: actions/oauthappssettings.php:59 -msgid "You must be logged in to list your applications." -msgstr "" - -#: actions/oauthappssettings.php:74 -msgid "OAuth applications" -msgstr "" - #: actions/oauthappssettings.php:85 msgid "Applications you have registered" msgstr "" -#: actions/oauthappssettings.php:135 -#, php-format -msgid "You have not registered any applications yet." -msgstr "" - -#: actions/oauthconnectionssettings.php:72 -msgid "Connected applications" -msgstr "" - #: actions/oauthconnectionssettings.php:83 msgid "You have allowed the following applications to access you account." msgstr "" #: actions/oauthconnectionssettings.php:175 -#, fuzzy msgid "You are not a user of that application." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" +msgstr "無法å–消信箱確èª" #: actions/oauthconnectionssettings.php:186 #, php-format @@ -2510,31 +1820,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:1069 -#: lib/apiaction.php:1098 lib/apiaction.php:1215 +#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1215 +#: lib/apiaction.php:1243 lib/apiaction.php:1366 msgid "Not a supported data format." msgstr "" @@ -2542,14 +1851,9 @@ msgstr "" msgid "People Search" msgstr "" -#: actions/opensearch.php:67 -msgid "Notice Search" -msgstr "" - #: actions/othersettings.php:60 -#, fuzzy msgid "Other settings" -msgstr "線上å³æ™‚通設定" +msgstr "使用者設定發生錯誤" #: actions/othersettings.php:71 msgid "Manage various other options." @@ -2567,39 +1871,10 @@ msgstr "" 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 -#, fuzzy -msgid "URL shortening service is too long (max 50 chars)." -msgstr "地點éŽé•·ï¼ˆå…±255個字)" - -#: actions/otp.php:69 -#, fuzzy -msgid "No user ID specified." -msgstr "新訊æ¯" - -#: actions/otp.php:83 -#, fuzzy -msgid "No login token specified." -msgstr "新訊æ¯" - -#: actions/otp.php:90 -#, fuzzy -msgid "No login token requested." -msgstr "無確èªè«‹æ±‚" - -#: actions/otp.php:95 -#, fuzzy -msgid "Invalid login token specified." -msgstr "新訊æ¯" - #: actions/otp.php:104 msgid "Login token expired." msgstr "" @@ -2622,19 +1897,10 @@ msgstr "" msgid "Change password" msgstr "更改密碼" -#: actions/passwordsettings.php:69 -#, fuzzy -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 "新密碼" @@ -2644,7 +1910,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 "確èª" @@ -2656,11 +1922,7 @@ msgstr "" msgid "Change" msgstr "更改" -#: actions/passwordsettings.php:154 actions/register.php:230 -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 "" @@ -2681,7 +1943,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 "" @@ -2690,37 +1952,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 "個人首é ä½å€éŒ¯èª¤" - -#: actions/pathsadminpanel.php:163 -#, fuzzy, 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." 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 "" @@ -2730,9 +1979,8 @@ msgid "Path" msgstr "" #: actions/pathsadminpanel.php:242 -#, fuzzy msgid "Site path" -msgstr "新訊æ¯" +msgstr "" #: actions/pathsadminpanel.php:246 msgid "Path to locales" @@ -2754,54 +2002,26 @@ msgstr "" 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 -#, fuzzy -msgid "Avatars" +#: actions/pathsadminpanel.php:284 +msgid "Avatar server" msgstr "個人圖åƒ" -#: actions/pathsadminpanel.php:284 -#, fuzzy -msgid "Avatar server" -msgstr "線上å³æ™‚通設定" - -#: actions/pathsadminpanel.php:288 -#, fuzzy -msgid "Avatar path" -msgstr "更新個人圖åƒ" - #: actions/pathsadminpanel.php:292 -#, fuzzy msgid "Avatar directory" -msgstr "更新個人圖åƒ" +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 "" @@ -2810,10 +2030,6 @@ msgstr "" msgid "Never" msgstr "" -#: actions/pathsadminpanel.php:324 -msgid "Sometimes" -msgstr "" - #: actions/pathsadminpanel.php:325 msgid "Always" msgstr "" @@ -2827,18 +2043,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 @@ -2851,30 +2065,16 @@ msgstr "" msgid "People search" msgstr "" -#: actions/peopletag.php:68 -#, fuzzy, php-format -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的微型部è½æ ¼" - -#: 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 "" -#: 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." @@ -2888,44 +2088,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 "" @@ -2965,42 +2164,24 @@ msgid "" "Automatically subscribe to whoever subscribes to me (best for non-humans)" msgstr "" -#: actions/profilesettings.php:228 actions/register.php:223 -#, fuzzy, php-format +#: actions/profilesettings.php:228 actions/register.php:230 +#, 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." msgstr "" -#: actions/profilesettings.php:241 -msgid "Language is too long (max 50 chars)." -msgstr "" - #: actions/profilesettings.php:253 actions/tagother.php:178 -#, fuzzy, php-format +#, php-format msgid "Invalid tag: \"%s\"" -msgstr "個人首é é€£çµ%s無效" - -#: actions/profilesettings.php:306 -msgid "Couldn't update user for autosubscribe." -msgstr "" - -#: actions/profilesettings.php:363 -#, fuzzy -msgid "Couldn't save location prefs." -msgstr "無法儲存個人資料" +msgstr "尺寸錯誤" #: actions/profilesettings.php:375 msgid "Couldn't save profile." msgstr "無法儲存個人資料" -#: actions/profilesettings.php:383 -#, fuzzy -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." @@ -3011,10 +2192,6 @@ msgstr "" 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" @@ -3033,9 +2210,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 @@ -3096,14 +2272,6 @@ msgid "" "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 "ç„¡æ­¤æ¢å¾©ç¢¼" @@ -3124,16 +2292,6 @@ msgstr "確èªç¢¼ç™¼ç”ŸéŒ¯èª¤" 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 "" @@ -3142,10 +2300,6 @@ msgstr "" 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 "" @@ -3154,14 +2308,6 @@ msgstr "" 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 "" @@ -3182,10 +2328,6 @@ msgstr "" 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 "查無此使用者所註冊的信箱" @@ -3212,7 +2354,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 "使用者設定發生錯誤" @@ -3220,79 +2362,88 @@ 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 -#, 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:507 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 -msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required." -msgstr "" - -#: actions/register.php:430 -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:494 -#, fuzzy, php-format +#: 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 "ä¸åŒ…å«é€™äº›å€‹äººè³‡æ–™ï¼šå¯†ç¢¼ã€é›»å­ä¿¡ç®±ã€ç·šä¸Šå³æ™‚通信箱ã€é›»è©±è™Ÿç¢¼" +msgstr "" -#: actions/register.php:542 +#: actions/register.php:583 #, php-format msgid "" "Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may " @@ -3311,7 +2462,7 @@ msgid "" "Thanks for signing up and we hope you enjoy using this service." msgstr "" -#: actions/register.php:566 +#: actions/register.php:607 msgid "" "(You should receive a message by email momentarily, with instructions on how " "to confirm your email address.)" @@ -3325,18 +2476,10 @@ msgid "" "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 "你想æˆç‚ºèª°çš„粉絲呢?請輸入他/她的暱稱。" @@ -3349,11 +2492,6 @@ msgstr "" 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 "個人資料連çµç„¡æ•ˆ(æ ¼å¼éŒ¯èª¤)" @@ -3367,37 +2505,28 @@ 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 "新訊æ¯" - -#: actions/repeat.php:76 -msgid "You can't repeat your own notice." -msgstr "" +msgstr "無此通知" #: actions/repeat.php:90 -#, fuzzy msgid "You already repeated that notice." -msgstr "無此使用者" +msgstr "æ­¤Jabber ID已有人使用" -#: actions/repeat.php:114 lib/noticelist.php:675 -#, 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 @@ -3406,30 +2535,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 @@ -3442,33 +2571,26 @@ 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 "更新個人圖åƒ" - -#: 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." @@ -3476,7 +2598,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 "" @@ -3502,44 +2624,20 @@ msgstr "" #: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292 #: actions/useradminpanel.php:294 -#, fuzzy msgid "Save site settings" -msgstr "線上å³æ™‚通設定" - -#: actions/showapplication.php:82 -msgid "You must be logged in to view an application." -msgstr "" - -#: actions/showapplication.php:157 -msgid "Application profile" -msgstr "" +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:195 -#: lib/applicationeditform.php:199 -#, fuzzy -msgid "Name" -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 -#: 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 "" @@ -3592,28 +2690,28 @@ 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 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 "" @@ -3624,55 +2722,36 @@ 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 "" -#: actions/showgroup.php:82 lib/groupnav.php:86 -#, php-format -msgid "%s group" -msgstr "" - #: actions/showgroup.php:84 -#, fuzzy, php-format +#, php-format msgid "%1$s group, page %2$d" -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 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)" @@ -3689,14 +2768,9 @@ msgid "Notice feed for %s group (Atom)" msgstr "" #: actions/showgroup.php:355 -#, fuzzy, php-format +#, php-format msgid "FOAF for %s group" -msgstr "無此通知" - -#: actions/showgroup.php:393 actions/showgroup.php:453 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 @@ -3708,12 +2782,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." @@ -3723,7 +2796,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." @@ -3732,14 +2805,10 @@ msgid "" "their life and interests. " msgstr "" -#: actions/showgroup.php:497 +#: 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 "" @@ -3754,25 +2823,20 @@ msgstr "" msgid "Message from %1$s on %2$s" msgstr "" -#: actions/shownotice.php:90 -#, fuzzy -msgid "Notice deleted." -msgstr "更新個人圖åƒ" - #: actions/showstream.php:73 #, php-format 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 @@ -3808,8 +2872,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 @@ -3834,10 +2898,6 @@ msgstr "" 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 "" @@ -3850,11 +2910,6 @@ msgstr "" msgid "Site name must have non-zero length." msgstr "" -#: actions/siteadminpanel.php:141 -#, fuzzy -msgid "You must have a valid contact email address." -msgstr "此信箱無效" - #: actions/siteadminpanel.php:159 #, php-format msgid "Unknown language \"%s\"." @@ -3873,9 +2928,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\"" @@ -3897,16 +2951,6 @@ msgstr "" 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 "查無此使用者所註冊的信箱" - -#: actions/siteadminpanel.php:245 -#, fuzzy -msgid "Local" -msgstr "地點" - #: actions/siteadminpanel.php:256 msgid "Default timezone" msgstr "" @@ -3943,43 +2987,22 @@ msgstr "" msgid "How long users must wait (in seconds) to post the same thing again." msgstr "" -#: actions/sitenoticeadminpanel.php:56 -#, fuzzy -msgid "Site Notice" -msgstr "新訊æ¯" - #: actions/sitenoticeadminpanel.php:67 msgid "Edit site-wide message" msgstr "" -#: actions/sitenoticeadminpanel.php:103 -#, fuzzy -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 -#, fuzzy -msgid "Site notice text" -msgstr "新訊æ¯" - #: 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 "新訊æ¯" - #. 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. @@ -3990,15 +3013,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 @@ -4010,33 +3031,16 @@ msgstr "" 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 -#, fuzzy -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" @@ -4054,44 +3058,15 @@ msgstr "" 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 -#, 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 "確èªä¿¡å·²å¯„到你的線上å³æ™‚通信箱。%sé€çµ¦ä½ å¾—訊æ¯è¦å…ˆç¶“éŽä½ çš„èªå¯ã€‚" - -#. 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 -#, 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. @@ -4123,21 +3098,15 @@ msgid "" "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: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." @@ -4183,50 +3152,22 @@ msgstr "" msgid "Snapshots will be sent to this URL" msgstr "" -#: actions/snapshotadminpanel.php:248 -#, fuzzy -msgid "Save snapshot settings" -msgstr "線上å³æ™‚通設定" - -#: actions/subedit.php:70 -msgid "You are not subscribed to that profile." -msgstr "" - -#: actions/subedit.php:83 classes/Subscription.php:132 -#, fuzzy +#. 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 "" -#: actions/subscribe.php:107 -#, fuzzy -msgid "No such profile." -msgstr "無此通知" - #: actions/subscribe.php:117 msgid "You cannot subscribe to an OMB 0.1 remote profile with this action." msgstr "" -#: actions/subscribe.php:145 -#, fuzzy -msgid "Subscribed" -msgstr "此帳號已註冊" - -#: actions/subscribers.php:50 -#, fuzzy, php-format -msgid "%s subscribers" -msgstr "此帳號已註冊" - #: actions/subscribers.php:52 -#, fuzzy, php-format +#, 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 @@ -4252,16 +3193,6 @@ msgid "" "%) and be the first?" msgstr "" -#: actions/subscriptions.php:52 -#, fuzzy, php-format -msgid "%s subscriptions" -msgstr "所有訂閱" - -#: actions/subscriptions.php:54 -#, fuzzy, 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 "" @@ -4281,24 +3212,14 @@ msgid "" "automatically subscribe to people you already follow there." msgstr "" -#: actions/subscriptions.php:128 actions/subscriptions.php:132 -#, fuzzy, php-format -msgid "%s is not listening to anyone." -msgstr "ç¾åœ¨%1$s在%2$sæˆç‚ºä½ çš„粉絲囉" - -#: actions/subscriptions.php:208 -#, fuzzy -msgid "Jabber" -msgstr "查無此Jabber ID" - #: actions/subscriptions.php:222 lib/connectsettingsaction.php:115 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 @@ -4306,29 +3227,23 @@ 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 msgid "Notice feed for tag %s (Atom)" msgstr "" -#: actions/tagother.php:39 -#, fuzzy -msgid "No ID argument." -msgstr "無此文件" - #: actions/tagother.php:65 #, php-format 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 @@ -4351,27 +3266,20 @@ msgid "" 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." msgstr "" #: actions/tagrss.php:35 -#, fuzzy msgid "No such tag." -msgstr "無此通知" - -#: actions/twitapitrends.php:85 -msgid "API method under construction." -msgstr "" +msgstr "無此使用者" #: actions/unblock.php:59 -#, fuzzy msgid "You haven't blocked that user." -msgstr "無此使用者" +msgstr "æ­¤Jabber ID已有人使用" #: actions/unsandbox.php:72 msgid "User is not sandboxed." @@ -4381,16 +3289,6 @@ msgstr "" msgid "User is not silenced." msgstr "" -#: actions/unsubscribe.php:77 -#, fuzzy -msgid "No profile ID in request." -msgstr "無確èªè«‹æ±‚" - -#: actions/unsubscribe.php:98 -#, fuzzy -msgid "Unsubscribed" -msgstr "此帳號已註冊" - #: actions/updateprofile.php:64 actions/userauthorization.php:337 #, php-format msgid "" @@ -4420,12 +3318,6 @@ msgstr "" 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 "" @@ -4446,19 +3338,13 @@ msgstr "" msgid "Welcome text for new users (Max 255 chars)." msgstr "" -#: actions/useradminpanel.php:241 -#, fuzzy -msgid "Default subscription" -msgstr "所有訂閱" - #: actions/useradminpanel.php:242 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" @@ -4479,7 +3365,7 @@ msgid "" "click “Rejectâ€." msgstr "" -#: actions/userauthorization.php:196 actions/version.php:165 +#: actions/userauthorization.php:196 actions/version.php:167 msgid "License" msgstr "" @@ -4487,19 +3373,13 @@ msgstr "" 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 -#, fuzzy msgid "Reject this subscription" -msgstr "所有訂閱" +msgstr "註冊確èª" #: actions/userauthorization.php:232 msgid "No authorization request!" @@ -4553,9 +3433,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 @@ -4578,19 +3458,14 @@ 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 -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." @@ -4601,29 +3476,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 " @@ -4631,7 +3506,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 " @@ -4639,199 +3514,220 @@ 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:805 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 "" -"No file may be larger than %d bytes and the file you sent was %d bytes. Try " -"to upload a smaller version." +msgid "Cannot process URL '%s'" msgstr "" -#: classes/File.php:179 +#. 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 "" -#: 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 -#, fuzzy +#. 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 -msgid "Group leave failed." -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 "無法儲存個人資料" + +#. 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/Login_token.php:76 -#, fuzzy, 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 "" -#: 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 "" +msgstr "無法儲存個人資料" -#: classes/Message.php:71 -msgid "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 -#, fuzzy, php-format +#: classes/Notice.php:193 +#, php-format msgid "Database error inserting hashtag: %s" -msgstr "增加回覆時,資料庫發生錯誤: %s" +msgstr "個人圖åƒæ’入錯誤" -#: classes/Notice.php:245 -#, fuzzy -msgid "Problem saving notice. Too long." -msgstr "儲存使用者發生錯誤" - -#: classes/Notice.php:249 -#, 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:276 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:283 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:291 msgid "You are banned from posting notices on this site." msgstr "" -#: classes/Notice.php:332 classes/Notice.php:358 -msgid "Problem saving notice." +#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups(). +#: classes/Notice.php:899 +msgid "Bad type provided to saveKnownGroups" msgstr "" -#: classes/Notice.php:965 -#, fuzzy +#. TRANS: Server exception thrown when an update for a group inbox fails. +#: classes/Notice.php:998 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:1513 +#: classes/Notice.php:1759 #, 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:339 +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 -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 -#, fuzzy -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 "無法新增訂閱" -#: classes/Subscription.php:173 -#, fuzzy -msgid "Couldn't 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 "無法新增訂閱" -#: classes/Subscription.php:200 -#, fuzzy -msgid "Couldn't 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 "無法新增訂閱" -#: classes/Subscription.php:211 -msgid "Couldn't 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 -#, fuzzy +#. TRANS: Server exception thrown when creating a group failed. +#: classes/User_group.php:496 msgid "Could not create group." -msgstr "無法存å–個人圖åƒè³‡æ–™" +msgstr "無法更新使用者" -#: classes/User_group.php:489 -#, fuzzy +#. TRANS: Server exception thrown when updating a group URI failed. +#: classes/User_group.php:506 msgid "Could not set group URI." -msgstr "註冊失敗" +msgstr "無法儲存個人資料" -#: classes/User_group.php:510 -#, fuzzy +#. 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 "註冊失敗" - -#. 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 -#, fuzzy -msgid "Upload an avatar" -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 @@ -4840,243 +3736,179 @@ msgstr "" #. TRANS: Link title attribute in user account settings menu. #: lib/accountsettingsaction.php:137 -#, fuzzy msgid "Design your profile" -msgstr "無此通知" - -#. TRANS: Link title attribute in user account settings menu. -#: lib/accountsettingsaction.php:144 -msgid "Other options" -msgstr "" +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 -#, fuzzy, 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 +#: lib/action.php:164 msgid "Untitled page" msgstr "" -#. TRANS: DT element for primary navigation menu. String is hidden in default CSS. -#: lib/action.php:426 -msgid "Primary site navigation" -msgstr "" - #. TRANS: Tooltip for main menu option "Personal" -#: lib/action.php:432 +#: lib/action.php:455 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:458 msgctxt "MENU" msgid "Personal" -msgstr "地點" +msgstr "" #. TRANS: Tooltip for main menu option "Account" -#: lib/action.php:437 -#, fuzzy +#: lib/action.php:460 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:465 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:468 msgid "Connect" msgstr "連çµ" #. TRANS: Tooltip for menu option "Admin" -#: lib/action.php:448 -#, fuzzy +#: lib/action.php:471 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:474 msgctxt "MENU" msgid "Admin" msgstr "" #. TRANS: Tooltip for main menu option "Invite" -#: lib/action.php:455 +#: lib/action.php:478 #, 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:481 msgctxt "MENU" msgid "Invite" -msgstr "尺寸錯誤" +msgstr "" #. TRANS: Tooltip for main menu option "Logout" -#: lib/action.php:464 +#: lib/action.php:487 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:490 msgctxt "MENU" msgid "Logout" -msgstr "登出" +msgstr "登入" #. TRANS: Tooltip for main menu option "Register" -#: lib/action.php:472 -#, fuzzy +#: lib/action.php:495 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:498 msgctxt "MENU" msgid "Register" -msgstr "所有訂閱" +msgstr "" #. TRANS: Tooltip for main menu option "Login" -#: lib/action.php:478 +#: lib/action.php:501 msgctxt "TOOLTIP" msgid "Login to the site" msgstr "" -#: lib/action.php:481 -#, fuzzy -msgctxt "MENU" -msgid "Login" -msgstr "登入" - -#. TRANS: Tooltip for main menu option "Help" -#: lib/action.php:484 -#, fuzzy -msgctxt "TOOLTIP" -msgid "Help me!" -msgstr "求救" - -#: lib/action.php:487 -#, fuzzy -msgctxt "MENU" -msgid "Help" -msgstr "求救" - #. TRANS: Tooltip for main menu option "Search" -#: lib/action.php:490 +#: lib/action.php:513 msgctxt "TOOLTIP" msgid "Search for people or text" msgstr "" -#: lib/action.php:493 +#: lib/action.php:516 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 -#, 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:605 msgid "Local views" msgstr "" -#. TRANS: DT element for page notice. String is hidden in default CSS. -#: lib/action.php:649 -#, fuzzy -msgid "Page notice" -msgstr "新訊æ¯" - -#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS. -#: lib/action.php:752 -msgid "Secondary site navigation" -msgstr "" - #. TRANS: Secondary navigation menu option leading to help on StatusNet. -#: lib/action.php:758 +#: lib/action.php:784 msgid "Help" msgstr "求救" #. TRANS: Secondary navigation menu option leading to text about StatusNet site. -#: lib/action.php:761 +#: lib/action.php:787 msgid "About" msgstr "關於" #. TRANS: Secondary navigation menu option leading to Frequently Asked Questions. -#: lib/action.php:764 +#: lib/action.php:790 msgid "FAQ" msgstr "常見å•é¡Œ" #. TRANS: Secondary navigation menu option leading to Terms of Service. -#: lib/action.php:769 +#: lib/action.php:795 msgid "TOS" msgstr "" #. TRANS: Secondary navigation menu option leading to privacy policy. -#: lib/action.php:773 +#: lib/action.php:799 msgid "Privacy" msgstr "" #. TRANS: Secondary navigation menu option. -#: lib/action.php:776 +#: lib/action.php:802 msgid "Source" msgstr "" #. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site. -#: lib/action.php:782 +#: lib/action.php:808 msgid "Contact" msgstr "好å‹åå–®" -#: lib/action.php:784 +#: lib/action.php:810 msgid "Badge" msgstr "" #. TRANS: DT element for StatusNet software license. -#: lib/action.php:813 +#: lib/action.php:839 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:843 +#, 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:846 #, 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:850 #, php-format msgid "" "It runs the [StatusNet](http://status.net/) microblogging software, version %" @@ -5085,56 +3917,54 @@ msgid "" msgstr "" #. TRANS: DT element for StatusNet site content license. -#: lib/action.php:840 -#, fuzzy +#: lib/action.php:866 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:873 #, 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:880 #, 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:884 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:897 #, 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:1236 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:1247 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:1257 msgid "Before" -msgstr "之å‰çš„內容»" +msgstr "" #. TRANS: Client exception thrown when a feed instance is a DOMDocument. -#: lib/activity.php:121 +#: lib/activity.php:122 msgid "Expecting a root feed element but got a whole XML document." msgstr "" @@ -5142,19 +3972,14 @@ msgstr "" msgid "Can't handle remote content yet." msgstr "" -#: lib/activityutils.php:236 +#: lib/activityutils.php:244 msgid "Can't handle embedded XML content yet." msgstr "" -#: lib/activityutils.php:240 +#: 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." @@ -5177,102 +4002,60 @@ msgid "Unable to delete design setting." msgstr "" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:349 -#, fuzzy +#: lib/adminpanelaction.php:350 msgid "Basic site configuration" -msgstr "確èªä¿¡ç®±" - -#. TRANS: Menu item for site administration -#: lib/adminpanelaction.php:351 -#, fuzzy -msgctxt "MENU" -msgid "Site" -msgstr "新訊æ¯" +msgstr "無確èªç¢¼" #. TRANS: Menu item title/tooltip -#: lib/adminpanelaction.php:357 -#, fuzzy +#: 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 "地點" +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 -#, fuzzy +#: 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 -msgid "Edit site notice" -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:95 +#: 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 -#, fuzzy, php-format +#, php-format msgid "Describe your application in %d characters" -msgstr "請在140個字以內æ述你自己與你的興趣" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:213 -#, fuzzy -msgid "Describe your application" -msgstr "請在140個字以內æ述你自己與你的興趣" - -#. TRANS: Form input field instructions. -#: lib/applicationeditform.php:224 -msgid "URL of the homepage of this application" msgstr "" #. TRANS: Form input field label. @@ -5280,11 +4063,6 @@ msgstr "" 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" @@ -5352,11 +4130,6 @@ 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" @@ -5371,22 +4144,14 @@ msgstr "" msgid "Notices where this attachment appears" msgstr "" -#: lib/attachmenttagcloudsection.php:48 -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 "" -#: lib/channel.php:157 lib/channel.php:177 -msgid "Command results" -msgstr "" - #: lib/channel.php:229 lib/mailhandler.php:142 msgid "Command complete" msgstr "" @@ -5395,45 +4160,39 @@ msgstr "" msgid "Command failed" msgstr "" -#: lib/command.php:83 lib/command.php:105 -msgid "Notice with that id does not exist" +#. TRANS: Command exception text shown when a notice ID is requested that does not exist. +#: lib/command.php:84 lib/command.php:108 +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 "新訊æ¯" +#. TRANS: Command exception text shown when a last user notice is requested and it does not exist. +#. TRANS: Error text shown when a last user notice is requested and it does not exist. +#: lib/command.php:101 lib/command.php:630 +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 -#, fuzzy, php-format -msgid "Could not find a local user with nickname %s" -msgstr "無法更新使用者" - -#: lib/command.php:180 +#. TRANS: Error text shown when an unimplemented command is given. +#: lib/command.php:185 msgid "Sorry, this command is not yet implemented." msgstr "" -#: lib/command.php:225 +#. TRANS: Command exception text shown when a user tries to nudge themselves. +#: lib/command.php:231 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 +#: lib/command.php:240 #, php-format -msgid "Nudge sent to %s" +msgid "Nudge sent to %s." msgstr "" -#: lib/command.php:260 +#. TRANS: User statistics text. +#. TRANS: %1$s is the number of other user the user is subscribed to. +#. TRANS: %2$s is the number of users that are subscribed to the user. +#. TRANS: %3$s is the number of notices the user has sent. +#: lib/command.php:270 #, php-format msgid "" "Subscriptions: %1$s\n" @@ -5441,56 +4200,20 @@ msgid "" "Notices: %3$s" msgstr "" -#: lib/command.php:302 +#. TRANS: Text shown when a notice has been marked as favourite successfully. +#: lib/command.php:314 msgid "Notice marked as fave." msgstr "" -#: lib/command.php:323 -#, fuzzy -msgid "You are already a member of that group" -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" - -#. TRANS: Message given having failed to add a user to a group. +#. 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. -#: lib/command.php:339 -#, fuzzy, php-format -msgid "Could not join user %1$s to group %2$s" -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%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 "無法從 %s 建立OpenID" - -#. TRANS: Whois output. %s is the full name of the queried user. -#: lib/command.php:418 -#, fuzzy, 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:263 +#: lib/command.php:360 #, php-format -msgid "Location: %s" +msgid "%1$s joined group %2$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 -#, 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 +#. TRANS: Command exception text shown when trying to send a direct message to a remote user (a user not registered at the current server). +#: lib/command.php:474 #, php-format msgid "" "%s is a remote profile; you can only send direct messages to users on the " @@ -5499,145 +4222,120 @@ 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 +#: lib/command.php:491 lib/xmppmanager.php:403 #, php-format -msgid "Message too long - maximum is %1$d characters, you sent %2$d" +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 -#, fuzzy -msgid "Cannot repeat your own notice" -msgstr "儲存使用者發生錯誤" - -#: lib/command.php:519 -#, fuzzy -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 -#, fuzzy, php-format -msgid "Notice from %s repeated" -msgstr "更新個人圖åƒ" - -#: lib/command.php:531 -#, fuzzy -msgid "Error repeating notice." -msgstr "儲存使用者發生錯誤" - -#: lib/command.php:562 +#: lib/command.php:554 #, php-format -msgid "Notice too long - maximum is %d characters, you sent %d" +msgid "Notice from %s repeated." msgstr "" -#: lib/command.php:571 -#, fuzzy, php-format -msgid "Reply to %s sent" -msgstr "&s的微型部è½æ ¼" +#. TRANS: Message given if content of a notice for a reply is too long. +#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters. +#: lib/command.php:592 +#, php-format +msgid "Notice too long - maximum is %1$d characters, you sent %2$d." +msgstr "" -#: lib/command.php:573 +#. TRANS: Text shown having sent a reply to a notice successfully. +#. TRANS: %s is the nickname of the user of the notice the reply was sent to. +#: lib/command.php:603 +#, php-format +msgid "Reply to %s sent." +msgstr "" + +#. TRANS: Error text shown when a reply to a notice fails with an unknown reason. +#: lib/command.php:606 msgid "Error saving notice." msgstr "儲存使用者發生錯誤" -#: lib/command.php:620 -msgid "Specify the name of the user to subscribe to" +#. TRANS: Error text shown when no username was provided when issuing a subscribe command. +#: lib/command.php:655 +msgid "Specify the name of the user to subscribe to." msgstr "" -#: lib/command.php:628 +#. TRANS: Command exception text shown when trying to subscribe to an OMB profile using the subscribe command. +#: lib/command.php:664 msgid "Can't subscribe to OMB profiles by command." msgstr "" -#: lib/command.php:634 +#. TRANS: Text shown after having subscribed to another user successfully. +#. TRANS: %s is the name of the user the subscription was requested for. +#: lib/command.php:672 #, php-format -msgid "Subscribed to %s" +msgid "Subscribed to %s." msgstr "" -#: lib/command.php:655 lib/command.php:754 -msgid "Specify the name of the user to unsubscribe from" +#. TRANS: Error text shown when no username was provided when issuing an unsubscribe command. +#. TRANS: Error text shown when no username was provided when issuing the command. +#: lib/command.php:694 lib/command.php:804 +msgid "Specify the name of the user to unsubscribe from." msgstr "" -#: lib/command.php:664 +#. TRANS: Text shown after having unsubscribed from another user successfully. +#. TRANS: %s is the name of the user the unsubscription was requested for. +#: lib/command.php:705 #, php-format -msgid "Unsubscribed from %s" +msgid "Unsubscribed from %s." msgstr "" -#: lib/command.php:682 lib/command.php:705 +#. TRANS: Error text shown when issuing the command "off" with a setting which has not yet been implemented. +#. TRANS: Error text shown when issuing the command "on" with a setting which has not yet been implemented. +#: lib/command.php:724 lib/command.php:750 msgid "Command not yet implemented." msgstr "" -#: lib/command.php:685 -msgid "Notification off." -msgstr "" - -#: lib/command.php:687 +#. TRANS: Error text shown when the command "off" fails for an unknown reason. +#: lib/command.php:731 msgid "Can't turn off notification." msgstr "" -#: lib/command.php:708 -msgid "Notification on." -msgstr "" - -#: lib/command.php:710 +#. TRANS: Error text shown when the command "on" fails for an unknown reason. +#: lib/command.php:757 msgid "Can't turn on notification." msgstr "" -#: lib/command.php:723 -msgid "Login command is disabled" +#. TRANS: Error text shown when issuing the login command while login is disabled. +#: lib/command.php:771 +msgid "Login command is disabled." msgstr "" -#: lib/command.php:734 +#. TRANS: Text shown after issuing the login command successfully. +#. TRANS: %s is a logon link.. +#: lib/command.php:784 #, php-format -msgid "This link is useable only once, and is good for only 2 minutes: %s" +msgid "This link is useable only once and is valid for only 2 minutes: %s." msgstr "" -#: lib/command.php:761 -#, fuzzy, php-format -msgid "Unsubscribed %s" -msgstr "此帳號已註冊" - -#: lib/command.php:778 -#, fuzzy -msgid "You are not subscribed to anyone." -msgstr "此帳號已註冊" - -#: lib/command.php:780 +#. TRANS: Text shown after requesting other users a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed users. +#: lib/command.php:836 msgid "You are subscribed to this person:" msgid_plural "You are subscribed to these people:" msgstr[0] "此帳號已註冊" -#: lib/command.php:800 -#, fuzzy -msgid "No one is subscribed to you." -msgstr "無此訂閱" - -#: lib/command.php:802 +#. TRANS: Text shown after requesting other users that are subscribed to a user (followers). +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribing users. +#: lib/command.php:863 msgid "This person is subscribed to you:" msgid_plural "These people are subscribed to you:" msgstr[0] "無此訂閱" -#: lib/command.php:822 -#, fuzzy -msgid "You are not a member of any groups." -msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s" - -#: lib/command.php:824 +#. TRANS: Text shown after requesting groups a user is subscribed to. +#. TRANS: This message support plural forms. This message is followed by a +#. TRANS: hard coded space and a comma separated list of subscribed groups. +#: lib/command.php:890 msgid "You are a member of this group:" msgid_plural "You are a member of these groups:" msgstr[0] "無法連çµåˆ°ä¼ºæœå™¨:%s" -#: lib/command.php:838 +#: lib/command.php:905 msgid "" "Commands:\n" "on - turn on notifications\n" @@ -5679,11 +4377,6 @@ msgid "" "tracking - not yet implemented.\n" msgstr "" -#: lib/common.php:135 -#, fuzzy -msgid "No configuration file found. " -msgstr "無確èªç¢¼" - #: lib/common.php:136 msgid "I looked for configuration files in the following places: " msgstr "" @@ -5708,24 +4401,10 @@ msgstr "" msgid "Updates by SMS" msgstr "" -#: lib/connectsettingsaction.php:120 -#, fuzzy -msgid "Connections" -msgstr "連çµ" - -#: lib/connectsettingsaction.php:121 -msgid "Authorized connected applications" -msgstr "" - #: lib/dberroraction.php:60 msgid "Database error" msgstr "" -#: lib/designsettings.php:105 -#, fuzzy -msgid "Upload file" -msgstr "無此通知" - #: lib/designsettings.php:109 msgid "" "You can upload your personal background image. The maximum file size is 2MB." @@ -5739,11 +4418,6 @@ msgstr "" msgid "Disfavor this notice" msgstr "" -#: lib/favorform.php:114 lib/favorform.php:140 -#, fuzzy -msgid "Favor this notice" -msgstr "無此通知" - #: lib/favorform.php:140 msgid "Favor" msgstr "" @@ -5802,14 +4476,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 "" @@ -5826,14 +4499,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 @@ -5841,9 +4513,8 @@ msgid "Edit %s group properties" msgstr "" #: lib/groupnav.php:113 -#, fuzzy msgid "Logo" -msgstr "登出" +msgstr "登入" #: lib/groupnav.php:114 #, php-format @@ -5882,10 +4553,6 @@ msgstr "" 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 "" @@ -5895,9 +4562,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" @@ -5921,24 +4587,17 @@ msgstr "" msgid "Unknown inbox source %d." msgstr "" -#: lib/joinform.php:114 -#, fuzzy -msgid "Join" -msgstr "登入" - #: lib/leaveform.php:114 msgid "Leave" 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 @@ -5969,9 +4628,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" @@ -5984,28 +4650,9 @@ 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 -#, fuzzy, php-format -msgid "Bio: %s" -msgstr "自我介紹" - -#. TRANS: Subject of notification mail for new posting email address -#: lib/mail.php:298 -#, 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" @@ -6018,31 +4665,20 @@ msgid "" "%4$s" msgstr "" -#. TRANS: Subject line for SMS-by-email notification messages -#: lib/mail.php:427 -#, php-format -msgid "%s status" -msgstr "" - -#. TRANS: Subject line for SMS-by-email address confirmation message -#: lib/mail.php:454 -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 " @@ -6059,13 +4695,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" @@ -6085,13 +4721,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" @@ -6113,7 +4749,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" @@ -6121,13 +4757,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" @@ -6164,18 +4800,10 @@ msgid "" "users in conversation. People can send you messages for your eyes only." msgstr "" -#: lib/mailbox.php:227 lib/noticelist.php:494 +#: lib/mailbox.php:228 lib/noticelist.php:506 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 "" @@ -6207,10 +4835,6 @@ msgstr "" 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 "" @@ -6219,25 +4843,20 @@ 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 -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 "" @@ -6250,114 +4869,83 @@ msgstr "" msgid "To" msgstr "" -#: lib/messageform.php:159 lib/noticeform.php:185 -#, fuzzy -msgid "Available characters" -msgstr "6個以上字元" - -#: lib/messageform.php:178 lib/noticeform.php:236 +#: lib/messageform.php:178 lib/noticeform.php:237 msgctxt "Send button for sending notice" msgid "Send" msgstr "" -#: lib/noticeform.php:160 -#, fuzzy -msgid "Send a notice" -msgstr "新訊æ¯" - -#: lib/noticeform.php:173 +#: lib/noticeform.php:174 #, php-format msgid "What's up, %s?" msgstr "" -#: lib/noticeform.php:192 +#: lib/noticeform.php:193 msgid "Attach" msgstr "" -#: lib/noticeform.php:196 +#: lib/noticeform.php:197 msgid "Attach a file" msgstr "" -#: lib/noticeform.php:212 -#, fuzzy -msgid "Share my location" -msgstr "無法儲存個人資料" - -#: lib/noticeform.php:215 -#, fuzzy -msgid "Do not share my location" -msgstr "無法儲存個人資料" - #: lib/noticeform.php:216 +msgid "Do not share my location" +msgstr "無法å–消信箱確èª" + +#: lib/noticeform.php:217 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:567 -#, fuzzy -msgid "in context" -msgstr "無內容" +#: lib/noticelist.php:502 +msgid "web" +msgstr "" -#: lib/noticelist.php:602 -#, fuzzy +#: lib/noticelist.php:603 msgid "Repeated by" -msgstr "新增" - -#: lib/noticelist.php:629 -msgid "Reply to this notice" msgstr "" #: lib/noticelist.php:630 -msgid "Reply" +msgid "Reply to this notice" msgstr "" -#: lib/noticelist.php:674 -#, fuzzy -msgid "Notice repeated" -msgstr "更新個人圖åƒ" - -#: lib/nudgeform.php:116 -msgid "Nudge this user" +#: lib/noticelist.php:631 +msgid "Reply" 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 "新的更人資料輸入錯誤" @@ -6374,11 +4962,6 @@ msgstr "æ›´æ–°é ç«¯å€‹äººè³‡æ–™ç™¼ç”ŸéŒ¯èª¤" msgid "Error inserting remote profile" msgstr "新增外部個人資料發生錯誤(Error inserting remote profile)" -#: lib/oauthstore.php:345 -#, fuzzy -msgid "Duplicate notice" -msgstr "新訊æ¯" - #: lib/oauthstore.php:490 msgid "Couldn't insert new subscription." msgstr "無法新增訂閱" @@ -6399,44 +4982,23 @@ msgstr "" 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:114 +#: 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 -#, fuzzy -msgid "All subscribers" -msgstr "所有訂閱" - #: lib/profileaction.php:191 msgid "User ID" msgstr "" @@ -6454,7 +5016,7 @@ msgstr "" msgid "All groups" msgstr "" -#: lib/profileformaction.php:114 +#: lib/profileformaction.php:123 msgid "Unimplemented method." msgstr "" @@ -6462,10 +5024,6 @@ msgstr "" msgid "Public" msgstr "" -#: lib/publicgroupnav.php:82 -msgid "User groups" -msgstr "" - #: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85 msgid "Recent tags" msgstr "" @@ -6478,31 +5036,24 @@ msgstr "" msgid "Popular" msgstr "" -#: lib/redirectingaction.php:94 -#, fuzzy -msgid "No return-to arguments." -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 "" @@ -6510,11 +5061,6 @@ msgstr "" msgid "Sandbox" msgstr "" -#: lib/sandboxform.php:78 -#, fuzzy -msgid "Sandbox this user" -msgstr "無此使用者" - #: lib/searchaction.php:120 msgid "Search site" msgstr "" @@ -6556,24 +5102,8 @@ msgid "More..." msgstr "" #: lib/silenceform.php:67 -#, fuzzy msgid "Silence" -msgstr "新訊æ¯" - -#: lib/silenceform.php:78 -#, fuzzy -msgid "Silence this user" -msgstr "無此使用者" - -#: lib/subgroupnav.php:83 -#, fuzzy, php-format -msgid "People %s subscribes to" -msgstr "無此訂閱" - -#: lib/subgroupnav.php:91 -#, fuzzy, php-format -msgid "People subscribed to %s" -msgstr "此帳號已註冊" +msgstr "" #: lib/subgroupnav.php:99 #, php-format @@ -6603,6 +5133,42 @@ 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:147 +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:218 +msgid "" +"Theme contains invalid file or folder name. Stick with ASCII letters, " +"digits, underscore, and minus sign." +msgstr "" + +#: lib/themeuploader.php:224 +msgid "Theme contains unsafe file extension names; may be unsafe." +msgstr "" + +#: lib/themeuploader.php:241 +#, php-format +msgid "Theme contains file of type '.%s', which is not allowed." +msgstr "" + #: lib/topposterssection.php:74 msgid "Top posters" msgstr "" @@ -6611,50 +5177,17 @@ msgstr "" msgid "Unsandbox" msgstr "" -#: lib/unsandboxform.php:80 -#, fuzzy -msgid "Unsandbox this user" -msgstr "無此使用者" - #: lib/unsilenceform.php:67 msgid "Unsilence" msgstr "" -#: lib/unsilenceform.php:78 -#, fuzzy -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 -#, fuzzy -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 -#, fuzzy msgid "Edit profile settings" -msgstr "線上å³æ™‚通設定" +msgstr "使用者設定發生錯誤" #: lib/userprofile.php:264 msgid "Edit" @@ -6672,11 +5205,6 @@ msgstr "" msgid "Moderate" msgstr "" -#: lib/userprofile.php:364 -#, fuzzy -msgid "User role" -msgstr "無此通知" - #: lib/userprofile.php:366 msgctxt "role" msgid "Administrator" @@ -6688,70 +5216,60 @@ msgid "Moderator" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1054 +#: lib/util.php:1102 msgid "a few seconds ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1057 +#: lib/util.php:1105 msgid "about a minute ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1061 +#: lib/util.php:1109 #, 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:1064 +#: lib/util.php:1112 msgid "about an hour ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1068 +#: lib/util.php:1116 #, 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:1071 +#: lib/util.php:1119 msgid "about a day ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1075 +#: lib/util.php:1123 #, 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:1078 +#: lib/util.php:1126 msgid "about a month ago" msgstr "" #. TRANS: Used in notices to indicate when the notice was made compared to now. -#: lib/util.php:1082 +#: lib/util.php:1130 #, 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:1085 +#: lib/util.php:1133 msgid "about a year ago" msgstr "" -#: lib/webcolor.php:82 -#, fuzzy, 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/plugins/AccountManager/AccountManagementControlDocumentAction.php b/plugins/AccountManager/AccountManagementControlDocumentAction.php new file mode 100644 index 0000000000..3fcea5af42 --- /dev/null +++ b/plugins/AccountManager/AccountManagementControlDocumentAction.php @@ -0,0 +1,98 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Implements the JSON Account Management endpoint + * + * 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 AccountManager + * @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/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Implements the JSON Account Management endpoint + * + * @category AccountManager + * @package StatusNet + * @author ECraig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class AccountManagementControlDocumentAction extends Action +{ + /** + * handle the action + * + * @param array $args unused. + * + * @return void + */ + + function handle($args) + { + parent::handle($args); + + header('Content-Type: application/json; charset=utf-8'); + + $amcd = array(); + + if(Event::handle('StartAccountManagementControlDocument', array(&$amcd))) { + + $amcd['version'] = 1; + $amcd['sessionstatus'] = array( + 'method' => 'GET', + 'path' => common_local_url('AccountManagementSessionStatus') + ); + $amcd['auth-methods'] = array( + 'username-password-form' => array( + 'connect' => array( + 'method' => 'POST', + 'path' => common_local_url('login'), + 'params' => array( + 'username' => 'nickname', + 'password' => 'password' + ) + ), + 'disconnect' => array( + 'method' => 'GET', + 'path' => common_local_url('logout') + ) + ) + ); + + Event::handle('EndAccountManagementControlDocument', array(&$amcd)); + } + + print json_encode($amcd); + + return true; + } + + function isReadOnly() + { + return true; + } +} diff --git a/plugins/AccountManager/AccountManagementSessionStatusAction.php b/plugins/AccountManager/AccountManagementSessionStatusAction.php new file mode 100644 index 0000000000..48b6034ff6 --- /dev/null +++ b/plugins/AccountManager/AccountManagementSessionStatusAction.php @@ -0,0 +1,73 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Implements the session status Account Management endpoint + * + * 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 AccountManager + * @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/ + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +/** + * Implements the session status Account Management endpoint + * + * @category AccountManager + * @package StatusNet + * @author ECraig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class AccountManagementSessionStatusAction extends Action +{ + /** + * handle the action + * + * @param array $args unused. + * + * @return void + */ + + function handle($args) + { + parent::handle($args); + + $cur = common_current_user(); + if(empty($cur)) { + print 'none'; + } else { + //TODO it seems " should be escaped in the name and id, but the spec doesn't seem to indicate how to do that + print 'active; name="' . $cur->nickname . '"; id="' . $cur->nickname . '"'; + } + + return true; + } + + function isReadOnly() + { + return true; + } +} diff --git a/plugins/AccountManager/AccountManagerPlugin.php b/plugins/AccountManager/AccountManagerPlugin.php new file mode 100644 index 0000000000..52dd64a24b --- /dev/null +++ b/plugins/AccountManager/AccountManagerPlugin.php @@ -0,0 +1,115 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugin to implement the Account Manager specification + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @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); +} + +class AccountManagerPlugin extends Plugin +{ + + const AM_REL = 'acct-mgmt'; + + function __construct() + { + parent::__construct(); + } + + function onAutoload($cls) + { + switch ($cls) + { + case 'AccountManagementControlDocumentAction': + require_once(INSTALLDIR.'/plugins/AccountManager/AccountManagementControlDocumentAction.php'); + return false; + case 'AccountManagementSessionStatusAction': + require_once(INSTALLDIR.'/plugins/AccountManager/AccountManagementSessionStatusAction.php'); + return false; + } + } + + /** + * Hook for RouterInitialized event. + * + * @param Net_URL_Mapper $m path-to-action mapper + * @return boolean hook return + */ + function onRouterInitialized($m) + { + // Discovery actions + $m->connect('main/amcd.json', + array('action' => 'AccountManagementControlDocument')); + $m->connect('main/amsessionstatus', + array('action' => 'AccountManagementSessionStatus')); + return true; + } + + function onStartHostMetaLinks(&$links) { + $links[] = array('rel' => AccountManagerPlugin::AM_REL, + 'href' => common_local_url('AccountManagementControlDocument')); + } + + function onStartShowHTML($action) + { + //Account management discovery link + header('Link: <'.common_local_url('AccountManagementControlDocument').'>; rel="'. AccountManagerPlugin::AM_REL.'"; type="application/json"'); + + //Account management login status + $cur = common_current_user(); + if(empty($cur)) { + header('X-Account-Management-Status: none'); + } else { + //TODO it seems " should be escaped in the name and id, but the spec doesn't seem to indicate how to do that + header('X-Account-Management-Status: active; name="' . $cur->nickname . '"; id="' . $cur->nickname . '"'); + } + } + + function onLoginAction($action, &$login) { + switch ($action) + { + case 'AccountManagementControlDocument': + $login = true; + return false; + default: + return true; + } + + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'AccountManager', + 'version' => STATUSNET_VERSION, + 'author' => 'Craig Andrews', + 'homepage' => 'http://status.net/wiki/Plugin:AccountManager', + 'rawdescription' => + _m('The Account Manager plugin implements the Account Manager specification.')); + return true; + } +} diff --git a/plugins/AccountManager/README b/plugins/AccountManager/README new file mode 100644 index 0000000000..a0715927b3 --- /dev/null +++ b/plugins/AccountManager/README @@ -0,0 +1,16 @@ +The Account Manager plugin implements the Account Manager specification to "allow a server to describe an account-based user identification process in terms that a user-agent can understand." + +See https://wiki.mozilla.org/Labs/Weave/Identity/Account_Manager/Spec/Latest + +Installation +============ +add "addPlugin('accountManager');" +to the bottom of your config.php + +Settings +======== +none + +Example +======= +addPlugin('accountManager'); diff --git a/plugins/Adsense/AdsensePlugin.php b/plugins/Adsense/AdsensePlugin.php index ab2b9a6fb3..cd6fc3503c 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 0000000000..7b99cf8051 --- /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/Aim/AimPlugin.php b/plugins/Aim/AimPlugin.php index 3855d1fb05..3a1799a2d8 100644 --- a/plugins/Aim/AimPlugin.php +++ b/plugins/Aim/AimPlugin.php @@ -66,7 +66,7 @@ class AimPlugin extends ImPlugin return strtolower($screenname); } - function daemon_screenname() + function daemonScreenname() { return $this->user; } @@ -119,21 +119,28 @@ class AimPlugin extends ImPlugin return 'aim:' . $screenname; } - function send_message($screenname, $body) + function sendMessage($screenname, $body) { $this->fake_aim->sendIm($screenname, $body); - $this->enqueue_outgoing_raw($this->fake_aim->would_be_sent); + $this->enqueueOutgoingRaw($this->fake_aim->would_be_sent); return true; } - function receive_raw_message($message) + /** + * Accept a queued input message. + * + * @return true if processing completed, false if message should be reprocessed + */ + function receiveRawMessage($message) { $info=Aim::getMessageInfo($message); $from = $info['from']; - $user = $this->get_user($from); + $user = $this->getUser($from); $notice_text = $info['message']; - return $this->handle_incoming($from, $notice_text); + $this->handleIncoming($from, $notice_text); + + return true; } function initialize(){ diff --git a/plugins/Aim/README b/plugins/Aim/README index 0465917383..7d486a0366 100644 --- a/plugins/Aim/README +++ b/plugins/Aim/README @@ -6,7 +6,7 @@ add "addPlugin('aim', array('setting'=>'value', 'setting2'=>'value2', ...);" to the bottom of your config.php -The daemon included with this plugin must be running. It will be started by +scripts/imdaemon.php included with StatusNet must be running. It will be started by the plugin along with their other daemons when you run scripts/startdaemons.sh. See the StatusNet README for more about queuing and daemons. diff --git a/plugins/Aim/aimmanager.php b/plugins/Aim/aimmanager.php index d9b7421fb2..8ff7ab7e70 100644 --- a/plugins/Aim/aimmanager.php +++ b/plugins/Aim/aimmanager.php @@ -84,7 +84,7 @@ class AimManager extends ImManager function handle_aim_message($data) { - $this->plugin->enqueue_incoming_raw($data); + $this->plugin->enqueueIncomingRaw($data); return true; } diff --git a/plugins/AutoSandbox/locale/AutoSandbox.pot b/plugins/AutoSandbox/locale/AutoSandbox.pot new file mode 100644 index 0000000000..b01f9dc893 --- /dev/null +++ b/plugins/AutoSandbox/locale/AutoSandbox.pot @@ -0,0 +1,21 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: AutoSandboxPlugin.php:66 +msgid "Automatically sandboxes newly registered members." +msgstr "" diff --git a/plugins/Autocomplete/AutocompletePlugin.php b/plugins/Autocomplete/AutocompletePlugin.php index d586631a4a..b2be365dd6 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/ */ @@ -31,8 +32,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } -require_once(INSTALLDIR.'/plugins/Autocomplete/autocomplete.php'); - class AutocompletePlugin extends Plugin { function __construct() @@ -40,6 +39,16 @@ class AutocompletePlugin extends Plugin parent::__construct(); } + function onAutoload($cls) + { + switch ($cls) + { + case 'AutocompleteAction': + require_once(INSTALLDIR.'/plugins/Autocomplete/autocomplete.php'); + return false; + } + } + function onEndShowScripts($action){ if (common_logged_in()) { $action->script('plugins/Autocomplete/jquery-autocomplete/jquery.autocomplete.pack.js'); diff --git a/plugins/Autocomplete/autocomplete.php b/plugins/Autocomplete/autocomplete.php index 379390ffdf..9a30ba01d9 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/Autocomplete/locale/Autocomplete.pot b/plugins/Autocomplete/locale/Autocomplete.pot new file mode 100644 index 0000000000..c0274af85a --- /dev/null +++ b/plugins/Autocomplete/locale/Autocomplete.pot @@ -0,0 +1,24 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: AutocompletePlugin.php:79 +msgid "" +"The autocomplete plugin allows users to autocomplete screen names in @ " +"replies. When an \"@\" is typed into the notice text area, an autocomplete " +"box is displayed populated with the user's friend' screen names." +msgstr "" diff --git a/plugins/BitlyUrl/BitlyUrlPlugin.php b/plugins/BitlyUrl/BitlyUrlPlugin.php index b649d3d0b2..38c8216361 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/BitlyUrl/locale/BitlyUrl.pot b/plugins/BitlyUrl/locale/BitlyUrl.pot new file mode 100644 index 0000000000..28023759aa --- /dev/null +++ b/plugins/BitlyUrl/locale/BitlyUrl.pot @@ -0,0 +1,22 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: BitlyUrlPlugin.php:60 +#, php-format +msgid "Uses <a href=\"http://%1$s/\">%1$s</a> URL-shortener service." +msgstr "" diff --git a/plugins/Blacklist/BlacklistPlugin.php b/plugins/Blacklist/BlacklistPlugin.php index adc4d9d7e2..63bffe2c6f 100644 --- a/plugins/Blacklist/BlacklistPlugin.php +++ b/plugins/Blacklist/BlacklistPlugin.php @@ -262,7 +262,7 @@ class BlacklistPlugin extends Plugin $patterns = $this->_getUrlPatterns(); foreach ($patterns as $pattern) { - if (preg_match("/$pattern/", $url)) { + if ($pattern != '' && preg_match("/$pattern/", $url)) { return false; } } @@ -285,7 +285,7 @@ class BlacklistPlugin extends Plugin $patterns = $this->_getNicknamePatterns(); foreach ($patterns as $pattern) { - if (preg_match("/$pattern/", $nickname)) { + if ($pattern != '' && preg_match("/$pattern/", $nickname)) { return false; } } diff --git a/plugins/Blacklist/Homepage_blacklist.php b/plugins/Blacklist/Homepage_blacklist.php index 32080667e1..ec89ee4bd8 100644 --- a/plugins/Blacklist/Homepage_blacklist.php +++ b/plugins/Blacklist/Homepage_blacklist.php @@ -94,7 +94,7 @@ class Homepage_blacklist extends Memcached_DataObject function keys() { - return array('pattern' => 'K'); + return array_keys($this->keyTypes()); } /** @@ -108,7 +108,7 @@ class Homepage_blacklist extends Memcached_DataObject function keyTypes() { - return $this->keys(); + return array('pattern' => 'K'); } /** diff --git a/plugins/Blacklist/Nickname_blacklist.php b/plugins/Blacklist/Nickname_blacklist.php index 9810631444..e8545292d1 100644 --- a/plugins/Blacklist/Nickname_blacklist.php +++ b/plugins/Blacklist/Nickname_blacklist.php @@ -88,7 +88,7 @@ class Nickname_blacklist extends Memcached_DataObject function keys() { - return array('pattern' => 'K'); + return array_keys($this->keyTypes()); } /** @@ -99,7 +99,7 @@ class Nickname_blacklist extends Memcached_DataObject function keyTypes() { - return $this->keys(); + return array('pattern' => 'K'); } /** diff --git a/plugins/Blacklist/blacklistadminpanel.php b/plugins/Blacklist/blacklistadminpanel.php index b996aba8dc..4289dec1ba 100644 --- a/plugins/Blacklist/blacklistadminpanel.php +++ b/plugins/Blacklist/blacklistadminpanel.php @@ -88,28 +88,27 @@ class BlacklistadminpanelAction extends AdminPanelAction function saveSettings() { - $nickPatterns = array(); - - $rawNickPatterns = explode("\n", $this->trimmed('blacklist-nicknames')); - - foreach ($rawNickPatterns as $raw) { - $nickPatterns[] = trim($raw); - } - + $nickPatterns = $this->splitPatterns($this->trimmed('blacklist-nicknames')); Nickname_blacklist::saveNew($nickPatterns); - $rawUrlPatterns = explode("\n", $this->trimmed('blacklist-urls')); - $urlPatterns = array(); - - foreach ($rawUrlPatterns as $raw) { - $urlPatterns[] = trim($raw); - } - + $urlPatterns = $this->splitPatterns($this->trimmed('blacklist-urls')); Homepage_blacklist::saveNew($urlPatterns); return; } + protected function splitPatterns($text) + { + $patterns = array(); + foreach (explode("\n", $text) as $raw) { + $trimmed = trim($raw); + if ($trimmed != '') { + $patterns[] = $trimmed; + } + } + return $patterns; + } + /** * Validate the values * diff --git a/plugins/Blacklist/locale/Blacklist.pot b/plugins/Blacklist/locale/Blacklist.pot new file mode 100644 index 0000000000..90eda0941d --- /dev/null +++ b/plugins/Blacklist/locale/Blacklist.pot @@ -0,0 +1,54 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: BlacklistPlugin.php:153 +#, php-format +msgid "You may not register with homepage '%s'" +msgstr "" + +#: BlacklistPlugin.php:163 +#, php-format +msgid "You may not register with nickname '%s'" +msgstr "" + +#: BlacklistPlugin.php:188 +#, php-format +msgid "You may not use homepage '%s'" +msgstr "" + +#: BlacklistPlugin.php:198 +#, php-format +msgid "You may not use nickname '%s'" +msgstr "" + +#: BlacklistPlugin.php:242 +#, php-format +msgid "You may not use url '%s' in notices" +msgstr "" + +#: BlacklistPlugin.php:351 +msgid "Keep a blacklist of forbidden nickname and URL patterns." +msgstr "" + +#: blacklistadminpanel.php:185 +msgid "Nicknames" +msgstr "" + +#: blacklistadminpanel.php:193 +msgid "URLs" +msgstr "" diff --git a/plugins/CasAuthentication/CasAuthenticationPlugin.php b/plugins/CasAuthentication/CasAuthenticationPlugin.php index 203e5fe420..1662db3eba 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/CasAuthentication/caslogin.php b/plugins/CasAuthentication/caslogin.php index a66774dc17..be69673810 100644 --- a/plugins/CasAuthentication/caslogin.php +++ b/plugins/CasAuthentication/caslogin.php @@ -28,7 +28,7 @@ class CasloginAction extends Action $this->clientError(_m('Already logged in.')); } else { global $casSettings; - phpCAS::client(CAS_VERSION_2_0,$casSettings['server'],$casSettings['port'],$casSettings['path']); + phpCAS::client(CAS_VERSION_2_0,$casSettings['server'],$casSettings['port'],$casSettings['path'],false); phpCAS::setNoCasServerValidation(); phpCAS::handleLogoutRequests(); phpCAS::forceAuthentication(); diff --git a/plugins/CasAuthentication/extlib/CAS.php b/plugins/CasAuthentication/extlib/CAS.php index e754374198..62a6175794 100644 --- a/plugins/CasAuthentication/extlib/CAS.php +++ b/plugins/CasAuthentication/extlib/CAS.php @@ -1,20 +1,46 @@ <?php -// commented in 0.4.22-RC2 for Sylvain Derosiaux -// error_reporting(E_ALL ^ E_NOTICE); +/* + * Copyright © 2003-2010, The ESUP-Portail consortium & the JA-SIG Collaborative. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of the ESUP-Portail consortium & the JA-SIG + * Collaborative 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. + */ // // hack by Vangelis Haniotakis to handle the absence of $_SERVER['REQUEST_URI'] in IIS // if (!$_SERVER['REQUEST_URI']) { - $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'].'?'.$_SERVER['QUERY_STRING']; + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING']; } // // another one by Vangelis Haniotakis also to make phpCAS work with PHP5 // -if (version_compare(PHP_VERSION,'5','>=')) { - require_once(dirname(__FILE__).'/CAS/domxml-php4-to-php5.php'); +if (version_compare(PHP_VERSION, '5', '>=') && !(function_exists('domxml_new_doc'))) { + require_once (dirname(__FILE__) . '/CAS/domxml-php4-to-php5.php'); } /** @@ -35,24 +61,24 @@ if (version_compare(PHP_VERSION,'5','>=')) { /** * phpCAS version. accessible for the user by phpCAS::getVersion(). */ -define('PHPCAS_VERSION','1.1.0RC6'); +define('PHPCAS_VERSION', '1.1.2'); // ------------------------------------------------------------------------ // CAS VERSIONS // ------------------------------------------------------------------------ - /** - * @addtogroup public - * @{ - */ +/** + * @addtogroup public + * @{ + */ /** * CAS version 1.0 */ -define("CAS_VERSION_1_0",'1.0'); +define("CAS_VERSION_1_0", '1.0'); /*! * CAS version 2.0 */ -define("CAS_VERSION_2_0",'2.0'); +define("CAS_VERSION_2_0", '2.0'); // ------------------------------------------------------------------------ // SAML defines @@ -71,143 +97,141 @@ define("SAML_XML_HEADER", '<?xml version="1.0" encoding="UTF-8"?>'); /** * SOAP envelope for SAML POST */ -define ("SAML_SOAP_ENV", '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/>'); +define("SAML_SOAP_ENV", '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/>'); /** * SOAP body for SAML POST */ -define ("SAML_SOAP_BODY", '<SOAP-ENV:Body>'); +define("SAML_SOAP_BODY", '<SOAP-ENV:Body>'); /** * SAMLP request */ -define ("SAMLP_REQUEST", '<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" RequestID="_192.168.16.51.1024506224022" IssueInstant="2002-06-19T17:03:44.022Z">'); -define ("SAMLP_REQUEST_CLOSE", '</samlp:Request>'); +define("SAMLP_REQUEST", '<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1" RequestID="_192.168.16.51.1024506224022" IssueInstant="2002-06-19T17:03:44.022Z">'); +define("SAMLP_REQUEST_CLOSE", '</samlp:Request>'); /** * SAMLP artifact tag (for the ticket) */ -define ("SAML_ASSERTION_ARTIFACT", '<samlp:AssertionArtifact>'); +define("SAML_ASSERTION_ARTIFACT", '<samlp:AssertionArtifact>'); /** * SAMLP close */ -define ("SAML_ASSERTION_ARTIFACT_CLOSE", '</samlp:AssertionArtifact>'); +define("SAML_ASSERTION_ARTIFACT_CLOSE", '</samlp:AssertionArtifact>'); /** * SOAP body close */ -define ("SAML_SOAP_BODY_CLOSE", '</SOAP-ENV:Body>'); +define("SAML_SOAP_BODY_CLOSE", '</SOAP-ENV:Body>'); /** * SOAP envelope close */ -define ("SAML_SOAP_ENV_CLOSE", '</SOAP-ENV:Envelope>'); +define("SAML_SOAP_ENV_CLOSE", '</SOAP-ENV:Envelope>'); /** * SAML Attributes */ define("SAML_ATTRIBUTES", 'SAMLATTRIBS'); - - /** @} */ - /** - * @addtogroup publicPGTStorage - * @{ - */ +/** + * @addtogroup publicPGTStorage + * @{ + */ // ------------------------------------------------------------------------ // FILE PGT STORAGE // ------------------------------------------------------------------------ - /** - * Default path used when storing PGT's to file - */ -define("CAS_PGT_STORAGE_FILE_DEFAULT_PATH",'/tmp'); +/** + * Default path used when storing PGT's to file + */ +define("CAS_PGT_STORAGE_FILE_DEFAULT_PATH", '/tmp'); /** * phpCAS::setPGTStorageFile()'s 2nd parameter to write plain text files */ -define("CAS_PGT_STORAGE_FILE_FORMAT_PLAIN",'plain'); +define("CAS_PGT_STORAGE_FILE_FORMAT_PLAIN", 'plain'); /** * phpCAS::setPGTStorageFile()'s 2nd parameter to write xml files */ -define("CAS_PGT_STORAGE_FILE_FORMAT_XML",'xml'); +define("CAS_PGT_STORAGE_FILE_FORMAT_XML", 'xml'); /** * Default format used when storing PGT's to file */ -define("CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT",CAS_PGT_STORAGE_FILE_FORMAT_PLAIN); +define("CAS_PGT_STORAGE_FILE_DEFAULT_FORMAT", CAS_PGT_STORAGE_FILE_FORMAT_PLAIN); // ------------------------------------------------------------------------ // DATABASE PGT STORAGE // ------------------------------------------------------------------------ - /** - * default database type when storing PGT's to database - */ -define("CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE",'mysql'); +/** + * default database type when storing PGT's to database + */ +define("CAS_PGT_STORAGE_DB_DEFAULT_DATABASE_TYPE", 'mysql'); /** * default host when storing PGT's to database */ -define("CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME",'localhost'); +define("CAS_PGT_STORAGE_DB_DEFAULT_HOSTNAME", 'localhost'); /** * default port when storing PGT's to database */ -define("CAS_PGT_STORAGE_DB_DEFAULT_PORT",''); +define("CAS_PGT_STORAGE_DB_DEFAULT_PORT", ''); /** * default database when storing PGT's to database */ -define("CAS_PGT_STORAGE_DB_DEFAULT_DATABASE",'phpCAS'); +define("CAS_PGT_STORAGE_DB_DEFAULT_DATABASE", 'phpCAS'); /** * default table when storing PGT's to database */ -define("CAS_PGT_STORAGE_DB_DEFAULT_TABLE",'pgt'); +define("CAS_PGT_STORAGE_DB_DEFAULT_TABLE", 'pgt'); /** @} */ // ------------------------------------------------------------------------ // SERVICE ACCESS ERRORS // ------------------------------------------------------------------------ - /** - * @addtogroup publicServices - * @{ - */ +/** + * @addtogroup publicServices + * @{ + */ /** * phpCAS::service() error code on success */ -define("PHPCAS_SERVICE_OK",0); +define("PHPCAS_SERVICE_OK", 0); /** * phpCAS::service() error code when the PT could not retrieve because * the CAS server did not respond. */ -define("PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE",1); +define("PHPCAS_SERVICE_PT_NO_SERVER_RESPONSE", 1); /** * phpCAS::service() error code when the PT could not retrieve because * the response of the CAS server was ill-formed. */ -define("PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE",2); +define("PHPCAS_SERVICE_PT_BAD_SERVER_RESPONSE", 2); /** * phpCAS::service() error code when the PT could not retrieve because * the CAS server did not want to. */ -define("PHPCAS_SERVICE_PT_FAILURE",3); +define("PHPCAS_SERVICE_PT_FAILURE", 3); /** * phpCAS::service() error code when the service was not available. */ -define("PHPCAS_SERVICE_NOT AVAILABLE",4); +define("PHPCAS_SERVICE_NOT AVAILABLE", 4); /** @} */ // ------------------------------------------------------------------------ // LANGUAGES // ------------------------------------------------------------------------ - /** - * @addtogroup publicLang - * @{ - */ +/** + * @addtogroup publicLang + * @{ + */ -define("PHPCAS_LANG_ENGLISH", 'english'); -define("PHPCAS_LANG_FRENCH", 'french'); -define("PHPCAS_LANG_GREEK", 'greek'); -define("PHPCAS_LANG_GERMAN", 'german'); -define("PHPCAS_LANG_JAPANESE", 'japanese'); -define("PHPCAS_LANG_SPANISH", 'spanish'); -define("PHPCAS_LANG_CATALAN", 'catalan'); +define("PHPCAS_LANG_ENGLISH", 'english'); +define("PHPCAS_LANG_FRENCH", 'french'); +define("PHPCAS_LANG_GREEK", 'greek'); +define("PHPCAS_LANG_GERMAN", 'german'); +define("PHPCAS_LANG_JAPANESE", 'japanese'); +define("PHPCAS_LANG_SPANISH", 'spanish'); +define("PHPCAS_LANG_CATALAN", 'catalan'); /** @} */ @@ -225,31 +249,31 @@ define("PHPCAS_LANG_DEFAULT", PHPCAS_LANG_ENGLISH); // ------------------------------------------------------------------------ // DEBUG // ------------------------------------------------------------------------ - /** - * @addtogroup publicDebug - * @{ - */ +/** + * @addtogroup publicDebug + * @{ + */ /** * The default directory for the debug file under Unix. */ -define('DEFAULT_DEBUG_DIR','/tmp/'); +define('DEFAULT_DEBUG_DIR', '/tmp/'); /** @} */ // ------------------------------------------------------------------------ // MISC // ------------------------------------------------------------------------ - /** - * @addtogroup internalMisc - * @{ - */ +/** + * @addtogroup internalMisc + * @{ + */ /** * This global variable is used by the interface class phpCAS. * * @hideinitializer */ -$GLOBALS['PHPCAS_CLIENT'] = null; +$GLOBALS['PHPCAS_CLIENT'] = null; /** * This global variable is used to store where the initializer is called from @@ -257,10 +281,12 @@ $GLOBALS['PHPCAS_CLIENT'] = null; * * @hideinitializer */ -$GLOBALS['PHPCAS_INIT_CALL'] = array('done' => FALSE, +$GLOBALS['PHPCAS_INIT_CALL'] = array ( + 'done' => FALSE, 'file' => '?', 'line' => -1, - 'method' => '?'); + 'method' => '?' +); /** * This global variable is used to store where the method checking @@ -268,20 +294,24 @@ $GLOBALS['PHPCAS_INIT_CALL'] = array('done' => FALSE, * * @hideinitializer */ -$GLOBALS['PHPCAS_AUTH_CHECK_CALL'] = array('done' => FALSE, +$GLOBALS['PHPCAS_AUTH_CHECK_CALL'] = array ( + 'done' => FALSE, 'file' => '?', 'line' => -1, 'method' => '?', - 'result' => FALSE); + 'result' => FALSE +); /** * This global variable is used to store phpCAS debug mode. * * @hideinitializer */ -$GLOBALS['PHPCAS_DEBUG'] = array('filename' => FALSE, +$GLOBALS['PHPCAS_DEBUG'] = array ( + 'filename' => FALSE, 'indent' => 0, - 'unique_id' => ''); + 'unique_id' => '' +); /** @} */ @@ -290,7 +320,7 @@ $GLOBALS['PHPCAS_DEBUG'] = array('filename' => FALSE, // ######################################################################## // include client class -include_once(dirname(__FILE__).'/CAS/client.php'); +include_once (dirname(__FILE__) . '/CAS/client.php'); // ######################################################################## // INTERFACE CLASS @@ -308,20 +338,17 @@ include_once(dirname(__FILE__).'/CAS/client.php'); * at the end of CAS/client.php). */ +class phpCAS { - -class phpCAS -{ - // ######################################################################## // INITIALIZATION // ######################################################################## - + /** * @addtogroup publicInit * @{ */ - + /** * phpCAS client initializer. * @note Only one of the phpCAS::client() and phpCAS::proxy functions should be @@ -336,43 +363,41 @@ class phpCAS * * @return a newly created CASClient object */ - function client($server_version, - $server_hostname, - $server_port, - $server_uri, - $start_session = true) - { + function client($server_version, $server_hostname, $server_port, $server_uri, $start_session = true) { global $PHPCAS_CLIENT, $PHPCAS_INIT_CALL; - - phpCAS::traceBegin(); - if ( is_object($PHPCAS_CLIENT) ) { - phpCAS::error($PHPCAS_INIT_CALL['method'].'() has already been called (at '.$PHPCAS_INIT_CALL['file'].':'.$PHPCAS_INIT_CALL['line'].')'); + + phpCAS :: traceBegin(); + if (is_object($PHPCAS_CLIENT)) { + phpCAS :: error($PHPCAS_INIT_CALL['method'] . '() has already been called (at ' . $PHPCAS_INIT_CALL['file'] . ':' . $PHPCAS_INIT_CALL['line'] . ')'); } - if ( gettype($server_version) != 'string' ) { - phpCAS::error('type mismatched for parameter $server_version (should be `string\')'); + if (gettype($server_version) != 'string') { + phpCAS :: error('type mismatched for parameter $server_version (should be `string\')'); } - if ( gettype($server_hostname) != 'string' ) { - phpCAS::error('type mismatched for parameter $server_hostname (should be `string\')'); + if (gettype($server_hostname) != 'string') { + phpCAS :: error('type mismatched for parameter $server_hostname (should be `string\')'); } - if ( gettype($server_port) != 'integer' ) { - phpCAS::error('type mismatched for parameter $server_port (should be `integer\')'); + if (gettype($server_port) != 'integer') { + phpCAS :: error('type mismatched for parameter $server_port (should be `integer\')'); } - if ( gettype($server_uri) != 'string' ) { - phpCAS::error('type mismatched for parameter $server_uri (should be `string\')'); + if (gettype($server_uri) != 'string') { + phpCAS :: error('type mismatched for parameter $server_uri (should be `string\')'); } - + // store where the initializer is called from - $dbg = phpCAS::backtrace(); - $PHPCAS_INIT_CALL = array('done' => TRUE, + $dbg = phpCAS :: backtrace(); + $PHPCAS_INIT_CALL = array ( + 'done' => TRUE, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], - 'method' => __CLASS__.'::'.__FUNCTION__); - + 'method' => __CLASS__ . '::' . __FUNCTION__ + ); + // initialize the global object $PHPCAS_CLIENT - $PHPCAS_CLIENT = new CASClient($server_version,FALSE/*proxy*/,$server_hostname,$server_port,$server_uri,$start_session); - phpCAS::traceEnd(); - } - + $PHPCAS_CLIENT = new CASClient($server_version, FALSE /*proxy*/ + , $server_hostname, $server_port, $server_uri, $start_session); + phpCAS :: traceEnd(); + } + /** * phpCAS proxy initializer. * @note Only one of the phpCAS::client() and phpCAS::proxy functions should be @@ -387,110 +412,107 @@ class phpCAS * * @return a newly created CASClient object */ - function proxy($server_version, - $server_hostname, - $server_port, - $server_uri, - $start_session = true) - { + function proxy($server_version, $server_hostname, $server_port, $server_uri, $start_session = true) { global $PHPCAS_CLIENT, $PHPCAS_INIT_CALL; - - phpCAS::traceBegin(); - if ( is_object($PHPCAS_CLIENT) ) { - phpCAS::error($PHPCAS_INIT_CALL['method'].'() has already been called (at '.$PHPCAS_INIT_CALL['file'].':'.$PHPCAS_INIT_CALL['line'].')'); + + phpCAS :: traceBegin(); + if (is_object($PHPCAS_CLIENT)) { + phpCAS :: error($PHPCAS_INIT_CALL['method'] . '() has already been called (at ' . $PHPCAS_INIT_CALL['file'] . ':' . $PHPCAS_INIT_CALL['line'] . ')'); } - if ( gettype($server_version) != 'string' ) { - phpCAS::error('type mismatched for parameter $server_version (should be `string\')'); + if (gettype($server_version) != 'string') { + phpCAS :: error('type mismatched for parameter $server_version (should be `string\')'); } - if ( gettype($server_hostname) != 'string' ) { - phpCAS::error('type mismatched for parameter $server_hostname (should be `string\')'); + if (gettype($server_hostname) != 'string') { + phpCAS :: error('type mismatched for parameter $server_hostname (should be `string\')'); } - if ( gettype($server_port) != 'integer' ) { - phpCAS::error('type mismatched for parameter $server_port (should be `integer\')'); + if (gettype($server_port) != 'integer') { + phpCAS :: error('type mismatched for parameter $server_port (should be `integer\')'); } - if ( gettype($server_uri) != 'string' ) { - phpCAS::error('type mismatched for parameter $server_uri (should be `string\')'); + if (gettype($server_uri) != 'string') { + phpCAS :: error('type mismatched for parameter $server_uri (should be `string\')'); } - + // store where the initialzer is called from - $dbg = phpCAS::backtrace(); - $PHPCAS_INIT_CALL = array('done' => TRUE, + $dbg = phpCAS :: backtrace(); + $PHPCAS_INIT_CALL = array ( + 'done' => TRUE, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], - 'method' => __CLASS__.'::'.__FUNCTION__); - + 'method' => __CLASS__ . '::' . __FUNCTION__ + ); + // initialize the global object $PHPCAS_CLIENT - $PHPCAS_CLIENT = new CASClient($server_version,TRUE/*proxy*/,$server_hostname,$server_port,$server_uri,$start_session); - phpCAS::traceEnd(); - } - + $PHPCAS_CLIENT = new CASClient($server_version, TRUE /*proxy*/ + , $server_hostname, $server_port, $server_uri, $start_session); + phpCAS :: traceEnd(); + } + /** @} */ // ######################################################################## // DEBUGGING // ######################################################################## - + /** * @addtogroup publicDebug * @{ */ - + /** * Set/unset debug mode * * @param $filename the name of the file used for logging, or FALSE to stop debugging. */ - function setDebug($filename='') - { + function setDebug($filename = '') { global $PHPCAS_DEBUG; - - if ( $filename != FALSE && gettype($filename) != 'string' ) { - phpCAS::error('type mismatched for parameter $dbg (should be FALSE or the name of the log file)'); + + if ($filename != FALSE && gettype($filename) != 'string') { + phpCAS :: error('type mismatched for parameter $dbg (should be FALSE or the name of the log file)'); } - - if ( empty($filename) ) { - if ( preg_match('/^Win.*/',getenv('OS')) ) { - if ( isset($_ENV['TMP']) ) { - $debugDir = $_ENV['TMP'].'/'; - } else if ( isset($_ENV['TEMP']) ) { - $debugDir = $_ENV['TEMP'].'/'; - } else { - $debugDir = ''; - } + + if (empty ($filename)) { + if (preg_match('/^Win.*/', getenv('OS'))) { + if (isset ($_ENV['TMP'])) { + $debugDir = $_ENV['TMP'] . '/'; + } else + if (isset ($_ENV['TEMP'])) { + $debugDir = $_ENV['TEMP'] . '/'; + } else { + $debugDir = ''; + } } else { $debugDir = DEFAULT_DEBUG_DIR; } $filename = $debugDir . 'phpCAS.log'; } - - if ( empty($PHPCAS_DEBUG['unique_id']) ) { - $PHPCAS_DEBUG['unique_id'] = substr(strtoupper(md5(uniqid(''))),0,4); + + if (empty ($PHPCAS_DEBUG['unique_id'])) { + $PHPCAS_DEBUG['unique_id'] = substr(strtoupper(md5(uniqid(''))), 0, 4); } - + $PHPCAS_DEBUG['filename'] = $filename; - - phpCAS::trace('START ******************'); - } - + + phpCAS :: trace('START phpCAS-' . PHPCAS_VERSION . ' ******************'); + } + /** @} */ /** * @addtogroup internalDebug * @{ */ - + /** * This method is a wrapper for debug_backtrace() that is not available * in all PHP versions (>= 4.3.0 only) */ - function backtrace() - { - if ( function_exists('debug_backtrace') ) { + function backtrace() { + if (function_exists('debug_backtrace')) { return debug_backtrace(); } else { // poor man's hack ... but it does work ... - return array(); + return array (); } - } - + } + /** * Logs a string in debug mode. * @@ -498,20 +520,19 @@ class phpCAS * * @private */ - function log($str) - { + function log($str) { $indent_str = "."; global $PHPCAS_DEBUG; - - if ( $PHPCAS_DEBUG['filename'] ) { - for ($i=0;$i<$PHPCAS_DEBUG['indent'];$i++) { + + if ($PHPCAS_DEBUG['filename']) { + for ($i = 0; $i < $PHPCAS_DEBUG['indent']; $i++) { $indent_str .= '| '; } - error_log($PHPCAS_DEBUG['unique_id'].' '.$indent_str.$str."\n",3,$PHPCAS_DEBUG['filename']); + error_log($PHPCAS_DEBUG['unique_id'] . ' ' . $indent_str . $str . "\n", 3, $PHPCAS_DEBUG['filename']); } - - } - + + } + /** * This method is used by interface methods to print an error and where the function * was originally called from. @@ -520,16 +541,15 @@ class phpCAS * * @private */ - function error($msg) - { - $dbg = phpCAS::backtrace(); + function error($msg) { + $dbg = phpCAS :: backtrace(); $function = '?'; $file = '?'; $line = '?'; - if ( is_array($dbg) ) { - for ( $i=1; $i<sizeof($dbg); $i++) { - if ( is_array($dbg[$i]) ) { - if ( $dbg[$i]['class'] == __CLASS__ ) { + if (is_array($dbg)) { + for ($i = 1; $i < sizeof($dbg); $i++) { + if (is_array($dbg[$i])) { + if ($dbg[$i]['class'] == __CLASS__) { $function = $dbg[$i]['function']; $file = $dbg[$i]['file']; $line = $dbg[$i]['line']; @@ -537,77 +557,73 @@ class phpCAS } } } - echo "<br />\n<b>phpCAS error</b>: <font color=\"FF0000\"><b>".__CLASS__."::".$function.'(): '.htmlentities($msg)."</b></font> in <b>".$file."</b> on line <b>".$line."</b><br />\n"; - phpCAS::trace($msg); - phpCAS::traceExit(); - exit(); - } - + echo "<br />\n<b>phpCAS error</b>: <font color=\"FF0000\"><b>" . __CLASS__ . "::" . $function . '(): ' . htmlentities($msg) . "</b></font> in <b>" . $file . "</b> on line <b>" . $line . "</b><br />\n"; + phpCAS :: trace($msg); + phpCAS :: traceExit(); + exit (); + } + /** * This method is used to log something in debug mode. */ - function trace($str) - { - $dbg = phpCAS::backtrace(); - phpCAS::log($str.' ['.basename($dbg[1]['file']).':'.$dbg[1]['line'].']'); - } - + function trace($str) { + $dbg = phpCAS :: backtrace(); + phpCAS :: log($str . ' [' . basename($dbg[1]['file']) . ':' . $dbg[1]['line'] . ']'); + } + /** * This method is used to indicate the start of the execution of a function in debug mode. */ - function traceBegin() - { + function traceBegin() { global $PHPCAS_DEBUG; - - $dbg = phpCAS::backtrace(); + + $dbg = phpCAS :: backtrace(); $str = '=> '; - if ( !empty($dbg[2]['class']) ) { - $str .= $dbg[2]['class'].'::'; + if (!empty ($dbg[2]['class'])) { + $str .= $dbg[2]['class'] . '::'; } - $str .= $dbg[2]['function'].'('; - if ( is_array($dbg[2]['args']) ) { + $str .= $dbg[2]['function'] . '('; + if (is_array($dbg[2]['args'])) { foreach ($dbg[2]['args'] as $index => $arg) { - if ( $index != 0 ) { + if ($index != 0) { $str .= ', '; } - $str .= str_replace("\n","",var_export($arg,TRUE)); + $str .= str_replace("\n", "", var_export($arg, TRUE)); } } - $str .= ') ['.basename($dbg[2]['file']).':'.$dbg[2]['line'].']'; - phpCAS::log($str); - $PHPCAS_DEBUG['indent'] ++; - } - + $str .= ') [' . basename($dbg[2]['file']) . ':' . $dbg[2]['line'] . ']'; + phpCAS :: log($str); + $PHPCAS_DEBUG['indent']++; + } + /** * This method is used to indicate the end of the execution of a function in debug mode. * * @param $res the result of the function */ - function traceEnd($res='') - { + function traceEnd($res = '') { global $PHPCAS_DEBUG; - - $PHPCAS_DEBUG['indent'] --; - $dbg = phpCAS::backtrace(); + + $PHPCAS_DEBUG['indent']--; + $dbg = phpCAS :: backtrace(); $str = ''; - $str .= '<= '.str_replace("\n","",var_export($res,TRUE)); - phpCAS::log($str); - } - + $str .= '<= ' . str_replace("\n", "", var_export($res, TRUE)); + phpCAS :: log($str); + } + /** * This method is used to indicate the end of the execution of the program */ - function traceExit() - { + function traceExit() { global $PHPCAS_DEBUG; - - phpCAS::log('exit()'); - while ( $PHPCAS_DEBUG['indent'] > 0 ) { - phpCAS::log('-'); - $PHPCAS_DEBUG['indent'] --; + + phpCAS :: log('exit()'); + while ($PHPCAS_DEBUG['indent'] > 0) { + phpCAS :: log('-'); + $PHPCAS_DEBUG['indent']--; } - } - + } + /** @} */ // ######################################################################## // INTERNATIONALIZATION @@ -616,7 +632,7 @@ class phpCAS * @addtogroup publicLang * @{ */ - + /** * This method is used to set the language used by phpCAS. * @note Can be called only once. @@ -625,18 +641,17 @@ class phpCAS * * @sa PHPCAS_LANG_FRENCH, PHPCAS_LANG_ENGLISH */ - function setLang($lang) - { + function setLang($lang) { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - if ( gettype($lang) != 'string' ) { - phpCAS::error('type mismatched for parameter $lang (should be `string\')'); + if (gettype($lang) != 'string') { + phpCAS :: error('type mismatched for parameter $lang (should be `string\')'); } $PHPCAS_CLIENT->setLang($lang); - } - + } + /** @} */ // ######################################################################## // VERSION @@ -645,17 +660,16 @@ class phpCAS * @addtogroup public * @{ */ - + /** * This method returns the phpCAS version. * * @return the phpCAS version. */ - function getVersion() - { + function getVersion() { return PHPCAS_VERSION; - } - + } + /** @} */ // ######################################################################## // HTML OUTPUT @@ -664,41 +678,39 @@ class phpCAS * @addtogroup publicOutput * @{ */ - + /** * This method sets the HTML header used for all outputs. * * @param $header the HTML header. */ - function setHTMLHeader($header) - { + function setHTMLHeader($header) { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - if ( gettype($header) != 'string' ) { - phpCAS::error('type mismatched for parameter $header (should be `string\')'); + if (gettype($header) != 'string') { + phpCAS :: error('type mismatched for parameter $header (should be `string\')'); } $PHPCAS_CLIENT->setHTMLHeader($header); - } - + } + /** * This method sets the HTML footer used for all outputs. * * @param $footer the HTML footer. */ - function setHTMLFooter($footer) - { + function setHTMLFooter($footer) { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - if ( gettype($footer) != 'string' ) { - phpCAS::error('type mismatched for parameter $footer (should be `string\')'); + if (gettype($footer) != 'string') { + phpCAS :: error('type mismatched for parameter $footer (should be `string\')'); } $PHPCAS_CLIENT->setHTMLFooter($footer); - } - + } + /** @} */ // ######################################################################## // PGT STORAGE @@ -707,7 +719,7 @@ class phpCAS * @addtogroup publicPGTStorage * @{ */ - + /** * This method is used to tell phpCAS to store the response of the * CAS server to PGT requests onto the filesystem. @@ -715,31 +727,29 @@ class phpCAS * @param $format the format used to store the PGT's (`plain' and `xml' allowed) * @param $path the path where the PGT's should be stored */ - function setPGTStorageFile($format='', - $path='') - { - global $PHPCAS_CLIENT,$PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + function setPGTStorageFile($format = '', $path = '') { + global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_CLIENT->isProxy() ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + if (!$PHPCAS_CLIENT->isProxy()) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( $PHPCAS_AUTH_CHECK_CALL['done'] ) { - phpCAS::error('this method should only be called before '.$PHPCAS_AUTH_CHECK_CALL['method'].'() (called at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].')'); + if ($PHPCAS_AUTH_CHECK_CALL['done']) { + phpCAS :: error('this method should only be called before ' . $PHPCAS_AUTH_CHECK_CALL['method'] . '() (called at ' . $PHPCAS_AUTH_CHECK_CALL['file'] . ':' . $PHPCAS_AUTH_CHECK_CALL['line'] . ')'); } - if ( gettype($format) != 'string' ) { - phpCAS::error('type mismatched for parameter $format (should be `string\')'); + if (gettype($format) != 'string') { + phpCAS :: error('type mismatched for parameter $format (should be `string\')'); } - if ( gettype($path) != 'string' ) { - phpCAS::error('type mismatched for parameter $format (should be `string\')'); + if (gettype($path) != 'string') { + phpCAS :: error('type mismatched for parameter $format (should be `string\')'); } - $PHPCAS_CLIENT->setPGTStorageFile($format,$path); - phpCAS::traceEnd(); - } - + $PHPCAS_CLIENT->setPGTStorageFile($format, $path); + phpCAS :: traceEnd(); + } + /** * This method is used to tell phpCAS to store the response of the * CAS server to PGT requests into a database. @@ -755,51 +765,44 @@ class phpCAS * @param $database the name of the database * @param $table the name of the table storing the data */ - function setPGTStorageDB($user, - $password, - $database_type='', - $hostname='', - $port=0, - $database='', - $table='') - { - global $PHPCAS_CLIENT,$PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + function setPGTStorageDB($user, $password, $database_type = '', $hostname = '', $port = 0, $database = '', $table = '') { + global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_CLIENT->isProxy() ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + if (!$PHPCAS_CLIENT->isProxy()) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( $PHPCAS_AUTH_CHECK_CALL['done'] ) { - phpCAS::error('this method should only be called before '.$PHPCAS_AUTH_CHECK_CALL['method'].'() (called at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].')'); + if ($PHPCAS_AUTH_CHECK_CALL['done']) { + phpCAS :: error('this method should only be called before ' . $PHPCAS_AUTH_CHECK_CALL['method'] . '() (called at ' . $PHPCAS_AUTH_CHECK_CALL['file'] . ':' . $PHPCAS_AUTH_CHECK_CALL['line'] . ')'); } - if ( gettype($user) != 'string' ) { - phpCAS::error('type mismatched for parameter $user (should be `string\')'); + if (gettype($user) != 'string') { + phpCAS :: error('type mismatched for parameter $user (should be `string\')'); } - if ( gettype($password) != 'string' ) { - phpCAS::error('type mismatched for parameter $password (should be `string\')'); + if (gettype($password) != 'string') { + phpCAS :: error('type mismatched for parameter $password (should be `string\')'); } - if ( gettype($database_type) != 'string' ) { - phpCAS::error('type mismatched for parameter $database_type (should be `string\')'); + if (gettype($database_type) != 'string') { + phpCAS :: error('type mismatched for parameter $database_type (should be `string\')'); } - if ( gettype($hostname) != 'string' ) { - phpCAS::error('type mismatched for parameter $hostname (should be `string\')'); + if (gettype($hostname) != 'string') { + phpCAS :: error('type mismatched for parameter $hostname (should be `string\')'); } - if ( gettype($port) != 'integer' ) { - phpCAS::error('type mismatched for parameter $port (should be `integer\')'); + if (gettype($port) != 'integer') { + phpCAS :: error('type mismatched for parameter $port (should be `integer\')'); } - if ( gettype($database) != 'string' ) { - phpCAS::error('type mismatched for parameter $database (should be `string\')'); + if (gettype($database) != 'string') { + phpCAS :: error('type mismatched for parameter $database (should be `string\')'); } - if ( gettype($table) != 'string' ) { - phpCAS::error('type mismatched for parameter $table (should be `string\')'); + if (gettype($table) != 'string') { + phpCAS :: error('type mismatched for parameter $table (should be `string\')'); } - $PHPCAS_CLIENT->setPGTStorageDB($user,$password,$database_type,$hostname,$port,$database,$table); - phpCAS::traceEnd(); - } - + $PHPCAS_CLIENT->setPGTStorageDB($user, $password, $database_type, $hostname, $port, $database, $table); + phpCAS :: traceEnd(); + } + /** @} */ // ######################################################################## // ACCESS TO EXTERNAL SERVICES @@ -808,7 +811,7 @@ class phpCAS * @addtogroup publicServices * @{ */ - + /** * This method is used to access an HTTP[S] service. * @@ -822,33 +825,32 @@ class phpCAS * @return TRUE on success, FALSE otherwise (in this later case, $err_code * gives the reason why it failed and $output contains an error message). */ - function serviceWeb($url,&$err_code,&$output) - { + function serviceWeb($url, & $err_code, & $output) { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_CLIENT->isProxy() ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + if (!$PHPCAS_CLIENT->isProxy()) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['done'] ) { - phpCAS::error('this method should only be called after the programmer is sure the user has been authenticated (by calling '.__CLASS__.'::checkAuthentication() or '.__CLASS__.'::forceAuthentication()'); + if (!$PHPCAS_AUTH_CHECK_CALL['done']) { + phpCAS :: error('this method should only be called after the programmer is sure the user has been authenticated (by calling ' . __CLASS__ . '::checkAuthentication() or ' . __CLASS__ . '::forceAuthentication()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['result'] ) { - phpCAS::error('authentication was checked (by '.$PHPCAS_AUTH_CHECK_CALL['method'].'() at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].') but the method returned FALSE'); + if (!$PHPCAS_AUTH_CHECK_CALL['result']) { + phpCAS :: error('authentication was checked (by ' . $PHPCAS_AUTH_CHECK_CALL['method'] . '() at ' . $PHPCAS_AUTH_CHECK_CALL['file'] . ':' . $PHPCAS_AUTH_CHECK_CALL['line'] . ') but the method returned FALSE'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be `string\')'); } - - $res = $PHPCAS_CLIENT->serviceWeb($url,$err_code,$output); - - phpCAS::traceEnd($res); + + $res = $PHPCAS_CLIENT->serviceWeb($url, $err_code, $output); + + phpCAS :: traceEnd($res); return $res; - } - + } + /** * This method is used to access an IMAP/POP3/NNTP service. * @@ -866,37 +868,36 @@ class phpCAS * @return an IMAP stream on success, FALSE otherwise (in this later case, $err_code * gives the reason why it failed and $err_msg contains an error message). */ - function serviceMail($url,$service,$flags,&$err_code,&$err_msg,&$pt) - { + function serviceMail($url, $service, $flags, & $err_code, & $err_msg, & $pt) { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_CLIENT->isProxy() ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + if (!$PHPCAS_CLIENT->isProxy()) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['done'] ) { - phpCAS::error('this method should only be called after the programmer is sure the user has been authenticated (by calling '.__CLASS__.'::checkAuthentication() or '.__CLASS__.'::forceAuthentication()'); + if (!$PHPCAS_AUTH_CHECK_CALL['done']) { + phpCAS :: error('this method should only be called after the programmer is sure the user has been authenticated (by calling ' . __CLASS__ . '::checkAuthentication() or ' . __CLASS__ . '::forceAuthentication()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['result'] ) { - phpCAS::error('authentication was checked (by '.$PHPCAS_AUTH_CHECK_CALL['method'].'() at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].') but the method returned FALSE'); + if (!$PHPCAS_AUTH_CHECK_CALL['result']) { + phpCAS :: error('authentication was checked (by ' . $PHPCAS_AUTH_CHECK_CALL['method'] . '() at ' . $PHPCAS_AUTH_CHECK_CALL['file'] . ':' . $PHPCAS_AUTH_CHECK_CALL['line'] . ') but the method returned FALSE'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be `string\')'); } - - if ( gettype($flags) != 'integer' ) { - phpCAS::error('type mismatched for parameter $flags (should be `integer\')'); + + if (gettype($flags) != 'integer') { + phpCAS :: error('type mismatched for parameter $flags (should be `integer\')'); } - - $res = $PHPCAS_CLIENT->serviceMail($url,$service,$flags,$err_code,$err_msg,$pt); - - phpCAS::traceEnd($res); + + $res = $PHPCAS_CLIENT->serviceMail($url, $service, $flags, $err_code, $err_msg, $pt); + + phpCAS :: traceEnd($res); return $res; - } - + } + /** @} */ // ######################################################################## // AUTHENTICATION @@ -905,7 +906,7 @@ class phpCAS * @addtogroup publicAuth * @{ */ - + /** * Set the times authentication will be cached before really accessing the CAS server in gateway mode: * - -1: check only once, and then never again (until you pree login) @@ -914,150 +915,156 @@ class phpCAS * * @param $n an integer. */ - function setCacheTimesForAuthRecheck($n) - { + function setCacheTimesForAuthRecheck($n) { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - if ( gettype($n) != 'integer' ) { - phpCAS::error('type mismatched for parameter $header (should be `string\')'); + if (gettype($n) != 'integer') { + phpCAS :: error('type mismatched for parameter $header (should be `string\')'); } $PHPCAS_CLIENT->setCacheTimesForAuthRecheck($n); - } - + } + /** * This method is called to check if the user is authenticated (use the gateway feature). * @return TRUE when the user is authenticated; otherwise FALSE. */ - function checkAuthentication() - { + function checkAuthentication() { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - + $auth = $PHPCAS_CLIENT->checkAuthentication(); - + // store where the authentication has been checked and the result - $dbg = phpCAS::backtrace(); - $PHPCAS_AUTH_CHECK_CALL = array('done' => TRUE, + $dbg = phpCAS :: backtrace(); + $PHPCAS_AUTH_CHECK_CALL = array ( + 'done' => TRUE, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], - 'method' => __CLASS__.'::'.__FUNCTION__, - 'result' => $auth ); - phpCAS::traceEnd($auth); - return $auth; - } + 'method' => __CLASS__ . '::' . __FUNCTION__, + 'result' => $auth + ); + phpCAS :: traceEnd($auth); + return $auth; + } /** * This method is called to force authentication if the user was not already * authenticated. If the user is not authenticated, halt by redirecting to * the CAS server. */ - function forceAuthentication() - { + function forceAuthentication() { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - + $auth = $PHPCAS_CLIENT->forceAuthentication(); - + // store where the authentication has been checked and the result - $dbg = phpCAS::backtrace(); - $PHPCAS_AUTH_CHECK_CALL = array('done' => TRUE, + $dbg = phpCAS :: backtrace(); + $PHPCAS_AUTH_CHECK_CALL = array ( + 'done' => TRUE, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], - 'method' => __CLASS__.'::'.__FUNCTION__, - 'result' => $auth ); - - if ( !$auth ) { - phpCAS::trace('user is not authenticated, redirecting to the CAS server'); + 'method' => __CLASS__ . '::' . __FUNCTION__, + 'result' => $auth + ); + + if (!$auth) { + phpCAS :: trace('user is not authenticated, redirecting to the CAS server'); $PHPCAS_CLIENT->forceAuthentication(); } else { - phpCAS::trace('no need to authenticate (user `'.phpCAS::getUser().'\' is already authenticated)'); + phpCAS :: trace('no need to authenticate (user `' . phpCAS :: getUser() . '\' is already authenticated)'); } - - phpCAS::traceEnd(); - return $auth; - } - + + phpCAS :: traceEnd(); + return $auth; + } + /** * This method is called to renew the authentication. **/ function renewAuthentication() { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before'.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - + // store where the authentication has been checked and the result - $dbg = phpCAS::backtrace(); - $PHPCAS_AUTH_CHECK_CALL = array('done' => TRUE, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], 'method' => __CLASS__.'::'.__FUNCTION__, 'result' => $auth ); - + $dbg = phpCAS :: backtrace(); + $PHPCAS_AUTH_CHECK_CALL = array ( + 'done' => TRUE, + 'file' => $dbg[0]['file'], + 'line' => $dbg[0]['line'], + 'method' => __CLASS__ . '::' . __FUNCTION__, + 'result' => $auth + ); + $PHPCAS_CLIENT->renewAuthentication(); - phpCAS::traceEnd(); + phpCAS :: traceEnd(); } /** * This method has been left from version 0.4.1 for compatibility reasons. */ - function authenticate() - { - phpCAS::error('this method is deprecated. You should use '.__CLASS__.'::forceAuthentication() instead'); - } - + function authenticate() { + phpCAS :: error('this method is deprecated. You should use ' . __CLASS__ . '::forceAuthentication() instead'); + } + /** * This method is called to check if the user is authenticated (previously or by * tickets given in the URL). * * @return TRUE when the user is authenticated. */ - function isAuthenticated() - { + function isAuthenticated() { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - + // call the isAuthenticated method of the global $PHPCAS_CLIENT object $auth = $PHPCAS_CLIENT->isAuthenticated(); - + // store where the authentication has been checked and the result - $dbg = phpCAS::backtrace(); - $PHPCAS_AUTH_CHECK_CALL = array('done' => TRUE, + $dbg = phpCAS :: backtrace(); + $PHPCAS_AUTH_CHECK_CALL = array ( + 'done' => TRUE, 'file' => $dbg[0]['file'], 'line' => $dbg[0]['line'], - 'method' => __CLASS__.'::'.__FUNCTION__, - 'result' => $auth ); - phpCAS::traceEnd($auth); + 'method' => __CLASS__ . '::' . __FUNCTION__, + 'result' => $auth + ); + phpCAS :: traceEnd($auth); return $auth; - } - + } + /** * Checks whether authenticated based on $_SESSION. Useful to avoid * server calls. * @return true if authenticated, false otherwise. * @since 0.4.22 by Brendan Arnold */ - function isSessionAuthenticated () - { + function isSessionAuthenticated() { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - return($PHPCAS_CLIENT->isSessionAuthenticated()); - } - + return ($PHPCAS_CLIENT->isSessionAuthenticated()); + } + /** * This method returns the CAS user's login name. * @warning should not be called only after phpCAS::forceAuthentication() @@ -1065,21 +1072,20 @@ class phpCAS * * @return the login name of the authenticated user */ - function getUser() - { + function getUser() { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['done'] ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::forceAuthentication() or '.__CLASS__.'::isAuthenticated()'); + if (!$PHPCAS_AUTH_CHECK_CALL['done']) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::forceAuthentication() or ' . __CLASS__ . '::isAuthenticated()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['result'] ) { - phpCAS::error('authentication was checked (by '.$PHPCAS_AUTH_CHECK_CALL['method'].'() at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].') but the method returned FALSE'); + if (!$PHPCAS_AUTH_CHECK_CALL['result']) { + phpCAS :: error('authentication was checked (by ' . $PHPCAS_AUTH_CHECK_CALL['method'] . '() at ' . $PHPCAS_AUTH_CHECK_CALL['file'] . ':' . $PHPCAS_AUTH_CHECK_CALL['line'] . ') but the method returned FALSE'); } return $PHPCAS_CLIENT->getUser(); - } - + } + /** * This method returns the CAS user's login name. * @warning should not be called only after phpCAS::forceAuthentication() @@ -1087,169 +1093,160 @@ class phpCAS * * @return the login name of the authenticated user */ - function getAttributes() - { + function getAttributes() { global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['done'] ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::forceAuthentication() or '.__CLASS__.'::isAuthenticated()'); + if (!$PHPCAS_AUTH_CHECK_CALL['done']) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::forceAuthentication() or ' . __CLASS__ . '::isAuthenticated()'); } - if ( !$PHPCAS_AUTH_CHECK_CALL['result'] ) { - phpCAS::error('authentication was checked (by '.$PHPCAS_AUTH_CHECK_CALL['method'].'() at '.$PHPCAS_AUTH_CHECK_CALL['file'].':'.$PHPCAS_AUTH_CHECK_CALL['line'].') but the method returned FALSE'); + if (!$PHPCAS_AUTH_CHECK_CALL['result']) { + phpCAS :: error('authentication was checked (by ' . $PHPCAS_AUTH_CHECK_CALL['method'] . '() at ' . $PHPCAS_AUTH_CHECK_CALL['file'] . ':' . $PHPCAS_AUTH_CHECK_CALL['line'] . ') but the method returned FALSE'); } return $PHPCAS_CLIENT->getAttributes(); + } + /** + * Handle logout requests. + */ + function handleLogoutRequests($check_client = true, $allowed_clients = false) { + global $PHPCAS_CLIENT; + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } - /** - * Handle logout requests. - */ - function handleLogoutRequests($check_client=true, $allowed_clients=false) - { - global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); - } - return($PHPCAS_CLIENT->handleLogoutRequests($check_client, $allowed_clients)); - } - + return ($PHPCAS_CLIENT->handleLogoutRequests($check_client, $allowed_clients)); + } + /** * This method returns the URL to be used to login. * or phpCAS::isAuthenticated(). * * @return the login name of the authenticated user */ - function getServerLoginURL() - { + function getServerLoginURL() { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } return $PHPCAS_CLIENT->getServerLoginURL(); - } - + } + /** * Set the login URL of the CAS server. * @param $url the login URL * @since 0.4.21 by Wyman Chan */ - function setServerLoginURL($url='') - { + function setServerLoginURL($url = '') { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after - '.__CLASS__.'::client()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after + ' . __CLASS__ . '::client()'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be - `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be + `string\')'); } $PHPCAS_CLIENT->setServerLoginURL($url); - phpCAS::traceEnd(); - } - - + phpCAS :: traceEnd(); + } + /** * Set the serviceValidate URL of the CAS server. + * Used only in CAS 1.0 validations * @param $url the serviceValidate URL * @since 1.1.0 by Joachim Fritschi */ - function setServerServiceValidateURL($url='') - { + function setServerServiceValidateURL($url = '') { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after - '.__CLASS__.'::client()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after + ' . __CLASS__ . '::client()'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be - `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be + `string\')'); } $PHPCAS_CLIENT->setServerServiceValidateURL($url); - phpCAS::traceEnd(); - } - - - /** + phpCAS :: traceEnd(); + } + + /** * Set the proxyValidate URL of the CAS server. + * Used for all CAS 2.0 validations * @param $url the proxyValidate URL * @since 1.1.0 by Joachim Fritschi */ - function setServerProxyValidateURL($url='') - { + function setServerProxyValidateURL($url = '') { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after - '.__CLASS__.'::client()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after + ' . __CLASS__ . '::client()'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be - `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be + `string\')'); } $PHPCAS_CLIENT->setServerProxyValidateURL($url); - phpCAS::traceEnd(); - } - - /** + phpCAS :: traceEnd(); + } + + /** * Set the samlValidate URL of the CAS server. * @param $url the samlValidate URL * @since 1.1.0 by Joachim Fritschi */ - function setServerSamlValidateURL($url='') - { + function setServerSamlValidateURL($url = '') { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after - '.__CLASS__.'::client()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after + ' . __CLASS__ . '::client()'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be - `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be + `string\')'); } $PHPCAS_CLIENT->setServerSamlValidateURL($url); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** * This method returns the URL to be used to login. * or phpCAS::isAuthenticated(). * * @return the login name of the authenticated user */ - function getServerLogoutURL() - { + function getServerLogoutURL() { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should not be called before ' . __CLASS__ . '::client() or ' . __CLASS__ . '::proxy()'); } return $PHPCAS_CLIENT->getServerLogoutURL(); - } - + } + /** * Set the logout URL of the CAS server. * @param $url the logout URL * @since 0.4.21 by Wyman Chan */ - function setServerLogoutURL($url='') - { + function setServerLogoutURL($url = '') { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after - '.__CLASS__.'::client()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after + ' . __CLASS__ . '::client()'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be - `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be + `string\')'); } $PHPCAS_CLIENT->setServerLogoutURL($url); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** * This method is used to logout from CAS. * @params $params an array that contains the optional url and service parameters that will be passed to the CAS server @@ -1257,66 +1254,70 @@ class phpCAS */ function logout($params = "") { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); + phpCAS :: traceBegin(); if (!is_object($PHPCAS_CLIENT)) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); } - $parsedParams = array(); + $parsedParams = array (); if ($params != "") { if (is_string($params)) { - phpCAS::error('method `phpCAS::logout($url)\' is now deprecated, use `phpCAS::logoutWithUrl($url)\' instead'); + phpCAS :: error('method `phpCAS::logout($url)\' is now deprecated, use `phpCAS::logoutWithUrl($url)\' instead'); } if (!is_array($params)) { - phpCAS::error('type mismatched for parameter $params (should be `array\')'); + phpCAS :: error('type mismatched for parameter $params (should be `array\')'); } foreach ($params as $key => $value) { if ($key != "service" && $key != "url") { - phpCAS::error('only `url\' and `service\' parameters are allowed for method `phpCAS::logout($params)\''); + phpCAS :: error('only `url\' and `service\' parameters are allowed for method `phpCAS::logout($params)\''); } $parsedParams[$key] = $value; } } $PHPCAS_CLIENT->logout($parsedParams); // never reached - phpCAS::traceEnd(); + phpCAS :: traceEnd(); } - + /** * This method is used to logout from CAS. Halts by redirecting to the CAS server. * @param $service a URL that will be transmitted to the CAS server */ function logoutWithRedirectService($service) { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); } if (!is_string($service)) { - phpCAS::error('type mismatched for parameter $service (should be `string\')'); + phpCAS :: error('type mismatched for parameter $service (should be `string\')'); } - $PHPCAS_CLIENT->logout(array("service" => $service)); + $PHPCAS_CLIENT->logout(array ( + "service" => $service + )); // never reached - phpCAS::traceEnd(); + phpCAS :: traceEnd(); } - + /** * This method is used to logout from CAS. Halts by redirecting to the CAS server. * @param $url a URL that will be transmitted to the CAS server */ function logoutWithUrl($url) { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); } if (!is_string($url)) { - phpCAS::error('type mismatched for parameter $url (should be `string\')'); + phpCAS :: error('type mismatched for parameter $url (should be `string\')'); } - $PHPCAS_CLIENT->logout(array("url" => $url)); + $PHPCAS_CLIENT->logout(array ( + "url" => $url + )); // never reached - phpCAS::traceEnd(); + phpCAS :: traceEnd(); } - + /** * This method is used to logout from CAS. Halts by redirecting to the CAS server. * @param $service a URL that will be transmitted to the CAS server @@ -1324,161 +1325,156 @@ class phpCAS */ function logoutWithRedirectServiceAndUrl($service, $url) { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); } if (!is_string($service)) { - phpCAS::error('type mismatched for parameter $service (should be `string\')'); + phpCAS :: error('type mismatched for parameter $service (should be `string\')'); } if (!is_string($url)) { - phpCAS::error('type mismatched for parameter $url (should be `string\')'); + phpCAS :: error('type mismatched for parameter $url (should be `string\')'); } - $PHPCAS_CLIENT->logout(array("service" => $service, "url" => $url)); + $PHPCAS_CLIENT->logout(array ( + "service" => $service, + "url" => $url + )); // never reached - phpCAS::traceEnd(); + phpCAS :: traceEnd(); } - + /** * Set the fixed URL that will be used by the CAS server to transmit the PGT. * When this method is not called, a phpCAS script uses its own URL for the callback. * * @param $url the URL */ - function setFixedCallbackURL($url='') - { + function setFixedCallbackURL($url = '') { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( !$PHPCAS_CLIENT->isProxy() ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); + if (!$PHPCAS_CLIENT->isProxy()) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be `string\')'); + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be `string\')'); } $PHPCAS_CLIENT->setCallbackURL($url); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** * Set the fixed URL that will be set as the CAS service parameter. When this * method is not called, a phpCAS script uses its own URL. * * @param $url the URL */ - function setFixedServiceURL($url) - { + function setFixedServiceURL($url) { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); - } - if ( gettype($url) != 'string' ) { - phpCAS::error('type mismatched for parameter $url (should be `string\')'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); + } + if (gettype($url) != 'string') { + phpCAS :: error('type mismatched for parameter $url (should be `string\')'); } $PHPCAS_CLIENT->setURL($url); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** * Get the URL that is set as the CAS service parameter. */ - function getServiceURL() - { + function getServiceURL() { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); - } - return($PHPCAS_CLIENT->getURL()); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - + return ($PHPCAS_CLIENT->getURL()); + } + /** * Retrieve a Proxy Ticket from the CAS server. */ - function retrievePT($target_service,&$err_code,&$err_msg) - { + function retrievePT($target_service, & $err_code, & $err_msg) { global $PHPCAS_CLIENT; - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::proxy()'); - } - if ( gettype($target_service) != 'string' ) { - phpCAS::error('type mismatched for parameter $target_service(should be `string\')'); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::proxy()'); } - return($PHPCAS_CLIENT->retrievePT($target_service,$err_code,$err_msg)); + if (gettype($target_service) != 'string') { + phpCAS :: error('type mismatched for parameter $target_service(should be `string\')'); } - + return ($PHPCAS_CLIENT->retrievePT($target_service, $err_code, $err_msg)); + } + /** * Set the certificate of the CAS server. * * @param $cert the PEM certificate */ - function setCasServerCert($cert) - { + function setCasServerCert($cert) { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); - } - if ( gettype($cert) != 'string' ) { - phpCAS::error('type mismatched for parameter $cert (should be `string\')'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); + } + if (gettype($cert) != 'string') { + phpCAS :: error('type mismatched for parameter $cert (should be `string\')'); } $PHPCAS_CLIENT->setCasServerCert($cert); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** * Set the certificate of the CAS server CA. * * @param $cert the CA certificate */ - function setCasServerCACert($cert) - { + function setCasServerCACert($cert) { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); - } - if ( gettype($cert) != 'string' ) { - phpCAS::error('type mismatched for parameter $cert (should be `string\')'); + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); + } + if (gettype($cert) != 'string') { + phpCAS :: error('type mismatched for parameter $cert (should be `string\')'); } $PHPCAS_CLIENT->setCasServerCACert($cert); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** * Set no SSL validation for the CAS server. */ - function setNoCasServerValidation() - { + function setNoCasServerValidation() { global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); - } + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); + } $PHPCAS_CLIENT->setNoCasServerValidation(); - phpCAS::traceEnd(); - } - + phpCAS :: traceEnd(); + } + /** @} */ - - /** - * Change CURL options. - * CURL is used to connect through HTTPS to CAS server - * @param $key the option key - * @param $value the value to set - */ - function setExtraCurlOption($key, $value) - { - global $PHPCAS_CLIENT; - phpCAS::traceBegin(); - if ( !is_object($PHPCAS_CLIENT) ) { - phpCAS::error('this method should only be called after '.__CLASS__.'::client() or'.__CLASS__.'::proxy()'); - } - $PHPCAS_CLIENT->setExtraCurlOption($key, $value); - phpCAS::traceEnd(); + + /** + * Change CURL options. + * CURL is used to connect through HTTPS to CAS server + * @param $key the option key + * @param $value the value to set + */ + function setExtraCurlOption($key, $value) { + global $PHPCAS_CLIENT; + phpCAS :: traceBegin(); + if (!is_object($PHPCAS_CLIENT)) { + phpCAS :: error('this method should only be called after ' . __CLASS__ . '::client() or' . __CLASS__ . '::proxy()'); } + $PHPCAS_CLIENT->setExtraCurlOption($key, $value); + phpCAS :: traceEnd(); + } } @@ -1525,7 +1521,6 @@ class phpCAS /** @defgroup publicDebug Debugging * @ingroup public */ - /** @defgroup internal Implementation */ /** @defgroup internalAuthentication Authentication @@ -1579,37 +1574,37 @@ class phpCAS /** * @example example_simple.php */ - /** - * @example example_proxy.php - */ - /** - * @example example_proxy2.php - */ - /** - * @example example_lang.php - */ - /** - * @example example_html.php - */ - /** - * @example example_file.php - */ - /** - * @example example_db.php - */ - /** - * @example example_service.php - */ - /** - * @example example_session_proxy.php - */ - /** - * @example example_session_service.php - */ - /** - * @example example_gateway.php - */ - - - +/** + * @example example_proxy.php + */ +/** + * @example example_proxy2.php + */ +/** + * @example example_lang.php + */ +/** + * @example example_html.php + */ +/** + * @example example_file.php + */ +/** + * @example example_db.php + */ +/** + * @example example_service.php + */ +/** + * @example example_session_proxy.php + */ +/** + * @example example_session_service.php + */ +/** + * @example example_gateway.php + */ +/** + * @example example_custom_urls.php + */ ?> diff --git a/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-db.php b/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-db.php index 5a589e4b28..1e316b6f6a 100644 --- a/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-db.php +++ b/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-db.php @@ -1,4 +1,32 @@ <?php +/* + * Copyright © 2003-2010, The ESUP-Portail consortium & the JA-SIG Collaborative. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of the ESUP-Portail consortium & the JA-SIG + * Collaborative 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. + */ /** * @file CAS/PGTStorage/pgt-db.php diff --git a/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-file.php b/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-file.php index bc07485b8f..983e557c57 100644 --- a/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-file.php +++ b/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-file.php @@ -1,5 +1,32 @@ <?php +/* + * Copyright © 2003-2010, The ESUP-Portail consortium & the JA-SIG Collaborative. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of the ESUP-Portail consortium & the JA-SIG + * Collaborative 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. + */ /** * @file CAS/PGTStorage/pgt-file.php * Basic class for PGT file storage diff --git a/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-main.php b/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-main.php index cd9b499671..cf4c4ed0f2 100644 --- a/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-main.php +++ b/plugins/CasAuthentication/extlib/CAS/PGTStorage/pgt-main.php @@ -1,5 +1,32 @@ <?php +/* + * Copyright © 2003-2010, The ESUP-Portail consortium & the JA-SIG Collaborative. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of the ESUP-Portail consortium & the JA-SIG + * Collaborative 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. + */ /** * @file CAS/PGTStorage/pgt-main.php * Basic class for PGT storage diff --git a/plugins/CasAuthentication/extlib/CAS/client.php b/plugins/CasAuthentication/extlib/CAS/client.php index ad5a23f839..d38c24d361 100644 --- a/plugins/CasAuthentication/extlib/CAS/client.php +++ b/plugins/CasAuthentication/extlib/CAS/client.php @@ -1,5 +1,34 @@ <?php +/* + * Copyright © 2003-2010, The ESUP-Portail consortium & the JA-SIG Collaborative. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * 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. + * * Neither the name of the ESUP-Portail consortium & the JA-SIG + * Collaborative 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. + */ + /** * @file CAS/client.php * Main class of the phpCAS library @@ -351,8 +380,8 @@ class CASClient { return $this->_server['login_url'] = $url; } - - + + /** * This method sets the serviceValidate URL of the CAS server. * @param $url the serviceValidate URL @@ -363,8 +392,8 @@ class CASClient { return $this->_server['service_validate_url'] = $url; } - - + + /** * This method sets the proxyValidate URL of the CAS server. * @param $url the proxyValidate URL @@ -375,8 +404,8 @@ class CASClient { return $this->_server['proxy_validate_url'] = $url; } - - + + /** * This method sets the samlValidate URL of the CAS server. * @param $url the samlValidate URL @@ -387,7 +416,7 @@ class CASClient { return $this->_server['saml_validate_url'] = $url; } - + /** * This method is used to retrieve the service validating URL of the CAS server. @@ -411,24 +440,24 @@ class CASClient return $this->_server['service_validate_url'].'?service='.urlencode($this->getURL()); } /** - * This method is used to retrieve the SAML validating URL of the CAS server. - * @return a URL. - * @private - */ + * This method is used to retrieve the SAML validating URL of the CAS server. + * @return a URL. + * @private + */ function getServerSamlValidateURL() - { - phpCAS::traceBegin(); - // the URL is build only when needed - if ( empty($this->_server['saml_validate_url']) ) { - switch ($this->getServerVersion()) { - case SAML_VERSION_1_1: - $this->_server['saml_validate_url'] = $this->getServerBaseURL().'samlValidate'; - break; + { + phpCAS::traceBegin(); + // the URL is build only when needed + if ( empty($this->_server['saml_validate_url']) ) { + switch ($this->getServerVersion()) { + case SAML_VERSION_1_1: + $this->_server['saml_validate_url'] = $this->getServerBaseURL().'samlValidate'; + break; } - } - phpCAS::traceEnd($this->_server['saml_validate_url'].'?TARGET='.urlencode($this->getURL())); - return $this->_server['saml_validate_url'].'?TARGET='.urlencode($this->getURL()); - } + } + phpCAS::traceEnd($this->_server['saml_validate_url'].'?TARGET='.urlencode($this->getURL())); + return $this->_server['saml_validate_url'].'?TARGET='.urlencode($this->getURL()); + } /** * This method is used to retrieve the proxy validating URL of the CAS server. * @return a URL. @@ -496,20 +525,20 @@ class CASClient { return $this->_server['logout_url'] = $url; } - + /** * An array to store extra curl options. */ var $_curl_options = array(); - + /** * This method is used to set additional user curl options. */ function setExtraCurlOption($key, $value) - { + { $this->_curl_options[$key] = $value; - } - + } + /** * This method checks to see if the request is secured via HTTPS * @return true if https, false otherwise @@ -556,45 +585,21 @@ class CASClient if (version_compare(PHP_VERSION,'5','>=') && ini_get('zend.ze1_compatibility_mode')) { phpCAS::error('phpCAS cannot support zend.ze1_compatibility_mode. Sorry.'); } - // skip Session Handling for logout requests and if don't want it' - if ($start_session && !$this->isLogoutRequest()) { - phpCAS::trace("Starting session handling"); - // Check for Tickets from the CAS server - if (empty($_GET['ticket'])){ - phpCAS::trace("No ticket found"); - // only create a session if necessary - if (!isset($_SESSION)) { - phpCAS::trace("No session found, creating new session"); - session_start(); - } - }else{ - phpCAS::trace("Ticket found"); - // We have to copy any old data before renaming the session - if (isset($_SESSION)) { - phpCAS::trace("Old active session found, saving old data and destroying session"); - $old_session = $_SESSION; - session_destroy(); - }else{ - session_start(); - phpCAS::trace("Starting possible old session to copy variables"); - $old_session = $_SESSION; - session_destroy(); - } - // set up a new session, of name based on the ticket - $session_id = preg_replace('/[^\w]/','',$_GET['ticket']); - phpCAS::LOG("Session ID: " . $session_id); - session_id($session_id); - session_start(); - // restore old session vars - if(isset($old_session)){ - phpCAS::trace("Restoring old session vars"); - $_SESSION = $old_session; - } - } - }else{ - phpCAS::trace("Skipping session creation"); - } + $this->_start_session = $start_session; + if ($this->_start_session && session_id()) + { + phpCAS :: error("Another session was started before phpcas. Either disable the session" . + " handling for phpcas in the client() call or modify your application to leave" . + " session handling to phpcas"); + } + // skip Session Handling for logout requests and if don't want it' + if ($start_session && !$this->isLogoutRequest()) + { + phpCAS :: trace("Starting a new session"); + session_start(); + } + // are we in proxy mode ? $this->_proxy = $proxy; @@ -667,12 +672,8 @@ class CASClient } break; case CAS_VERSION_2_0: // check for a Service or Proxy Ticket - if (preg_match('/^ST-/', $ticket)) { - phpCAS::trace('ST \'' . $ticket . '\' found'); - $this->setST($ticket); - unset ($_GET['ticket']); - } else if (preg_match('/^PT-/', $ticket)) { - phpCAS::trace('PT \'' . $ticket . '\' found'); + if( preg_match('/^[SP]T-/',$ticket) ) { + phpCAS::trace('ST or PT \''.$ticket.'\' found'); $this->setPT($ticket); unset($_GET['ticket']); } else if ( !empty($ticket) ) { @@ -682,9 +683,9 @@ class CASClient break; case SAML_VERSION_1_1: // SAML just does Service Tickets if( preg_match('/^[SP]T-/',$ticket) ) { - phpCAS::trace('SA \''.$ticket.'\' found'); - $this->setSA($ticket); - unset($_GET['ticket']); + phpCAS::trace('SA \''.$ticket.'\' found'); + $this->setSA($ticket); + unset($_GET['ticket']); } else if ( !empty($ticket) ) { //ill-formed ticket, halt phpCAS::error('ill-formed ticket found in the URL (ticket=`'.htmlentities($ticket).'\')'); @@ -697,6 +698,57 @@ class CASClient /** @} */ + // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + // XX XX + // XX Session Handling XX + // XX XX + // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + + /** + * A variable to whether phpcas will use its own session handling. Default = true + * @hideinitializer + * @private + */ + var $_start_session = true; + + function setStartSession($session) + { + $this->_start_session = session; + } + + function getStartSession($session) + { + $this->_start_session = session; + } + + /** + * Renaming the session + */ + function renameSession($ticket) + { + phpCAS::traceBegin(); + if($this->_start_session){ + if (!empty ($this->_user)) + { + $old_session = $_SESSION; + session_destroy(); + // set up a new session, of name based on the ticket + $session_id = preg_replace('/[^\w]/', '', $ticket); + phpCAS :: trace("Session ID: ".$session_id); + session_id($session_id); + session_start(); + phpCAS :: trace("Restoring old session vars"); + $_SESSION = $old_session; + } else + { + phpCAS :: error('Session should only be renamed after successfull authentication'); + } + }else{ + phpCAS :: trace("Skipping session rename since phpCAS is not handling the session."); + } + phpCAS::traceEnd(); + } + // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // XX XX // XX AUTHENTICATION XX @@ -743,8 +795,8 @@ class CASClient } return $this->_user; } - - + + /*********************************************************************************************************************** * Atrributes section @@ -760,23 +812,23 @@ class CASClient * @private */ var $_attributes = array(); - + function setAttributes($attributes) { $this->_attributes = $attributes; } - + function getAttributes() { if ( empty($this->_user) ) { // if no user is set, there shouldn't be any attributes also... phpCAS::error('this method should be used only after '.__CLASS__.'::forceAuthentication() or '.__CLASS__.'::isAuthenticated()'); } return $this->_attributes; } - + function hasAttributes() { return !empty($this->_attributes); } - + function hasAttribute($key) { return (is_array($this->_attributes) && array_key_exists($key, $this->_attributes)); } - + function getAttribute($key) { if($this->hasAttribute($key)) { return $this->_attributes[$key]; @@ -802,7 +854,7 @@ class CASClient } phpCAS::traceEnd(); } - + /** * This method is called to be sure that the user is authenticated. When not * authenticated, halt by redirecting to the CAS server; otherwise return TRUE. @@ -914,66 +966,73 @@ class CASClient */ function isAuthenticated() { - phpCAS::traceBegin(); - $res = FALSE; - $validate_url = ''; - - if ( $this->wasPreviouslyAuthenticated() ) { + phpCAS::traceBegin(); + $res = FALSE; + $validate_url = ''; + + if ( $this->wasPreviouslyAuthenticated() ) { + if($this->hasST() || $this->hasPT() || $this->hasSA()){ + // User has a additional ticket but was already authenticated + phpCAS::trace('ticket was present and will be discarded, use renewAuthenticate()'); + header('Location: '.$this->getURL()); + phpCAS::log( "Prepare redirect to remove ticket: ".$this->getURL() ); + }else{ // the user has already (previously during the session) been // authenticated, nothing to be done. phpCAS::trace('user was already authenticated, no need to look for tickets'); + } + $res = TRUE; + } + else { + if ( $this->hasST() ) { + // if a Service Ticket was given, validate it + phpCAS::trace('ST `'.$this->getST().'\' is present'); + $this->validateST($validate_url,$text_response,$tree_response); // if it fails, it halts + phpCAS::trace('ST `'.$this->getST().'\' was validated'); + if ( $this->isProxy() ) { + $this->validatePGT($validate_url,$text_response,$tree_response); // idem + phpCAS::trace('PGT `'.$this->getPGT().'\' was validated'); + $_SESSION['phpCAS']['pgt'] = $this->getPGT(); + } + $_SESSION['phpCAS']['user'] = $this->getUser(); + $res = TRUE; + } + elseif ( $this->hasPT() ) { + // if a Proxy Ticket was given, validate it + phpCAS::trace('PT `'.$this->getPT().'\' is present'); + $this->validatePT($validate_url,$text_response,$tree_response); // note: if it fails, it halts + phpCAS::trace('PT `'.$this->getPT().'\' was validated'); + if ( $this->isProxy() ) { + $this->validatePGT($validate_url,$text_response,$tree_response); // idem + phpCAS::trace('PGT `'.$this->getPGT().'\' was validated'); + $_SESSION['phpCAS']['pgt'] = $this->getPGT(); + } + $_SESSION['phpCAS']['user'] = $this->getUser(); + $res = TRUE; + } + elseif ( $this->hasSA() ) { + // if we have a SAML ticket, validate it. + phpCAS::trace('SA `'.$this->getSA().'\' is present'); + $this->validateSA($validate_url,$text_response,$tree_response); // if it fails, it halts + phpCAS::trace('SA `'.$this->getSA().'\' was validated'); + $_SESSION['phpCAS']['user'] = $this->getUser(); + $_SESSION['phpCAS']['attributes'] = $this->getAttributes(); $res = TRUE; } else { - if ( $this->hasST() ) { - // if a Service Ticket was given, validate it - phpCAS::trace('ST `'.$this->getST().'\' is present'); - $this->validateST($validate_url,$text_response,$tree_response); // if it fails, it halts - phpCAS::trace('ST `'.$this->getST().'\' was validated'); - if ( $this->isProxy() ) { - $this->validatePGT($validate_url,$text_response,$tree_response); // idem - phpCAS::trace('PGT `'.$this->getPGT().'\' was validated'); - $_SESSION['phpCAS']['pgt'] = $this->getPGT(); - } - $_SESSION['phpCAS']['user'] = $this->getUser(); - $res = TRUE; - } - elseif ( $this->hasPT() ) { - // if a Proxy Ticket was given, validate it - phpCAS::trace('PT `'.$this->getPT().'\' is present'); - $this->validatePT($validate_url,$text_response,$tree_response); // note: if it fails, it halts - phpCAS::trace('PT `'.$this->getPT().'\' was validated'); - if ( $this->isProxy() ) { - $this->validatePGT($validate_url,$text_response,$tree_response); // idem - phpCAS::trace('PGT `'.$this->getPGT().'\' was validated'); - $_SESSION['phpCAS']['pgt'] = $this->getPGT(); - } - $_SESSION['phpCAS']['user'] = $this->getUser(); - $res = TRUE; - } - elseif ( $this->hasSA() ) { - // if we have a SAML ticket, validate it. - phpCAS::trace('SA `'.$this->getSA().'\' is present'); - $this->validateSA($validate_url,$text_response,$tree_response); // if it fails, it halts - phpCAS::trace('SA `'.$this->getSA().'\' was validated'); - $_SESSION['phpCAS']['user'] = $this->getUser(); - $_SESSION['phpCAS']['attributes'] = $this->getAttributes(); - $res = TRUE; - } - else { - // no ticket given, not authenticated - phpCAS::trace('no ticket found'); - } - if ($res) { - // if called with a ticket parameter, we need to redirect to the app without the ticket so that CAS-ification is transparent to the browser (for later POSTS) - // most of the checks and errors should have been made now, so we're safe for redirect without masking error messages. - header('Location: '.$this->getURL()); - phpCAS::log( "Prepare redirect to : ".$this->getURL() ); - } + // no ticket given, not authenticated + phpCAS::trace('no ticket found'); } - - phpCAS::traceEnd($res); - return $res; + if ($res) { + // if called with a ticket parameter, we need to redirect to the app without the ticket so that CAS-ification is transparent to the browser (for later POSTS) + // most of the checks and errors should have been made now, so we're safe for redirect without masking error messages. + header('Location: '.$this->getURL()); + phpCAS::log( "Prepare redirect to : ".$this->getURL() ); + } + } + + phpCAS::traceEnd($res); + return $res; } /** @@ -1071,30 +1130,7 @@ class CASClient phpCAS::traceExit(); exit(); } - -// /** -// * This method is used to logout from CAS. -// * @param $url a URL that will be transmitted to the CAS server (to come back to when logged out) -// * @public -// */ -// function logout($url = "") { -// phpCAS::traceBegin(); -// $cas_url = $this->getServerLogoutURL(); -// // v0.4.14 sebastien.gougeon at univ-rennes1.fr -// // header('Location: '.$cas_url); -// if ( $url != "" ) { -// // Adam Moore 1.0.0RC2 -// $url = '?service=' . $url . '&url=' . $url; -// } -// header('Location: '.$cas_url . $url); -// session_unset(); -// session_destroy(); -// $this->printHTMLHeader($this->getString(CAS_STR_LOGOUT)); -// printf('<p>'.$this->getString(CAS_STR_SHOULD_HAVE_BEEN_REDIRECTED).'</p>',$cas_url); -// $this->printHTMLFooter(); -// phpCAS::traceExit(); -// exit(); -// } + /** * This method is used to logout from CAS. @@ -1114,7 +1150,7 @@ class CASClient } header('Location: '.$cas_url); phpCAS::log( "Prepare redirect to : ".$cas_url ); - + session_unset(); session_destroy(); @@ -1156,6 +1192,9 @@ class CASClient phpCAS::traceEnd(); return; } + if(!$this->_start_session){ + phpCAS::log("phpCAS can't handle logout requests if it does not manage the session."); + } phpCAS::log("Logout requested"); phpCAS::log("SAML REQUEST: ".$_POST['logoutRequest']); if ($check_client) { @@ -1177,7 +1216,7 @@ class CASClient } if (!$allowed) { phpCAS::error("Unauthorized logout request from client '".$client."'"); - printf("Unauthorized!"); + printf("Unauthorized!"); phpCAS::traceExit(); exit(); } @@ -1191,8 +1230,13 @@ class CASClient phpCAS::log("Ticket to logout: ".$ticket2logout); $session_id = preg_replace('/[^\w]/','',$ticket2logout); phpCAS::log("Session id: ".$session_id); - - // fix New session ID + + // destroy a possible application session created before phpcas + if(session_id()){ + session_unset(); + session_destroy(); + } + // fix session ID session_id($session_id); $_COOKIE[session_name()]=$session_id; $_GET[session_name()]=$session_id; @@ -1200,8 +1244,8 @@ class CASClient // Overwrite session session_start(); session_unset(); - session_destroy(); - printf("Disconnected!"); + session_destroy(); + printf("Disconnected!"); phpCAS::traceExit(); exit(); } @@ -1322,7 +1366,7 @@ class CASClient * This method is used to validate a ST; halt on failure, and sets $validate_url, * $text_reponse and $tree_response on success. These parameters are used later * by CASClient::validatePGT() for CAS proxies. - * + * Used for all CAS 1.0 validations * @param $validate_url the URL of the request to the CAS server. * @param $text_response the response of the CAS server, as is (XML text). * @param $tree_response the response of the CAS server, as a DOM XML tree. @@ -1338,7 +1382,7 @@ class CASClient $validate_url = $this->getServerServiceValidateURL().'&ticket='.$this->getST(); if ( $this->isProxy() ) { // pass the callback url for CAS proxies - $validate_url .= '&pgtUrl='.$this->getCallbackURL(); + $validate_url .= '&pgtUrl='.urlencode($this->getCallbackURL()); } // open and read the URL @@ -1434,156 +1478,160 @@ class CASClient } break; } - + $this->renameSession($this->getST()); // at this step, ST has been validated and $this->_user has been set, phpCAS::traceEnd(TRUE); return TRUE; } - - // ######################################################################## - // SAML VALIDATION - // ######################################################################## - /** - * @addtogroup internalBasic - * @{ - */ - - /** - * This method is used to validate a SAML TICKET; halt on failure, and sets $validate_url, - * $text_reponse and $tree_response on success. These parameters are used later - * by CASClient::validatePGT() for CAS proxies. - * - * @param $validate_url the URL of the request to the CAS server. - * @param $text_response the response of the CAS server, as is (XML text). - * @param $tree_response the response of the CAS server, as a DOM XML tree. - * - * @return bool TRUE when successfull, halt otherwise by calling CASClient::authError(). - * - * @private - */ - function validateSA($validate_url,&$text_response,&$tree_response) - { - phpCAS::traceBegin(); - - // build the URL to validate the ticket - $validate_url = $this->getServerSamlValidateURL(); - - // open and read the URL - if ( !$this->readURL($validate_url,''/*cookies*/,$headers,$text_response,$err_msg) ) { - phpCAS::trace('could not open URL \''.$validate_url.'\' to validate ('.$err_msg.')'); - $this->authError('SA not validated', $validate_url, TRUE/*$no_response*/); - } - - phpCAS::trace('server version: '.$this->getServerVersion()); - - // analyze the result depending on the version - switch ($this->getServerVersion()) { - case SAML_VERSION_1_1: - - // read the response of the CAS server into a DOM object - if ( !($dom = domxml_open_mem($text_response))) { - phpCAS::trace('domxml_open_mem() failed'); - $this->authError('SA not validated', - $validate_url, - FALSE/*$no_response*/, - TRUE/*$bad_response*/, - $text_response); - } - // read the root node of the XML tree - if ( !($tree_response = $dom->document_element()) ) { - phpCAS::trace('document_element() failed'); - $this->authError('SA not validated', - $validate_url, - FALSE/*$no_response*/, - TRUE/*$bad_response*/, - $text_response); - } - // insure that tag name is 'Envelope' - if ( $tree_response->node_name() != 'Envelope' ) { - phpCAS::trace('bad XML root node (should be `Envelope\' instead of `'.$tree_response->node_name().'\''); - $this->authError('SA not validated', - $validate_url, - FALSE/*$no_response*/, - TRUE/*$bad_response*/, - $text_response); - } - // check for the NameIdentifier tag in the SAML response - if ( sizeof($success_elements = $tree_response->get_elements_by_tagname("NameIdentifier")) != 0) { - phpCAS::trace('NameIdentifier found'); - $user = trim($success_elements[0]->get_content()); - phpCAS::trace('user = `'.$user.'`'); - $this->setUser($user); - $this->setSessionAttributes($text_response); - } else { - phpCAS::trace('no <NameIdentifier> tag found in SAML payload'); - $this->authError('SA not validated', - $validate_url, - FALSE/*$no_response*/, - TRUE/*$bad_response*/, - $text_response); - } - break; - } - - // at this step, ST has been validated and $this->_user has been set, - phpCAS::traceEnd(TRUE); - return TRUE; - } - - /** - * This method will parse the DOM and pull out the attributes from the SAML - * payload and put them into an array, then put the array into the session. - * - * @param $text_response the SAML payload. - * @return bool TRUE when successfull, halt otherwise by calling CASClient::authError(). - * - * @private - */ - function setSessionAttributes($text_response) - { - phpCAS::traceBegin(); - - $result = FALSE; - - if (isset($_SESSION[SAML_ATTRIBUTES])) { - phpCAS::trace("session attrs already set."); //testbml - do we care? - } - - $attr_array = array(); - - if (($dom = domxml_open_mem($text_response))) { - $xPath = $dom->xpath_new_context(); - $xPath->xpath_register_ns('samlp', 'urn:oasis:names:tc:SAML:1.0:protocol'); - $xPath->xpath_register_ns('saml', 'urn:oasis:names:tc:SAML:1.0:assertion'); - $nodelist = $xPath->xpath_eval("//saml:Attribute"); - $attrs = $nodelist->nodeset; - phpCAS::trace($text_response); - foreach($attrs as $attr){ - $xres = $xPath->xpath_eval("saml:AttributeValue", $attr); - $name = $attr->get_attribute("AttributeName"); - $value_array = array(); - foreach($xres->nodeset as $node){ - $value_array[] = $node->get_content(); - - } - phpCAS::trace("* " . $name . "=" . $value_array); - $attr_array[$name] = $value_array; - } - $_SESSION[SAML_ATTRIBUTES] = $attr_array; - // UGent addition... - foreach($attr_array as $attr_key => $attr_value) { - if(count($attr_value) > 1) { - $this->_attributes[$attr_key] = $attr_value; - } - else { - $this->_attributes[$attr_key] = $attr_value[0]; - } - } - $result = TRUE; - } - phpCAS::traceEnd($result); - return $result; - } + + // ######################################################################## + // SAML VALIDATION + // ######################################################################## + /** + * @addtogroup internalBasic + * @{ + */ + + /** + * This method is used to validate a SAML TICKET; halt on failure, and sets $validate_url, + * $text_reponse and $tree_response on success. These parameters are used later + * by CASClient::validatePGT() for CAS proxies. + * + * @param $validate_url the URL of the request to the CAS server. + * @param $text_response the response of the CAS server, as is (XML text). + * @param $tree_response the response of the CAS server, as a DOM XML tree. + * + * @return bool TRUE when successfull, halt otherwise by calling CASClient::authError(). + * + * @private + */ + function validateSA($validate_url,&$text_response,&$tree_response) + { + phpCAS::traceBegin(); + + // build the URL to validate the ticket + $validate_url = $this->getServerSamlValidateURL(); + + // open and read the URL + if ( !$this->readURL($validate_url,''/*cookies*/,$headers,$text_response,$err_msg) ) { + phpCAS::trace('could not open URL \''.$validate_url.'\' to validate ('.$err_msg.')'); + $this->authError('SA not validated', $validate_url, TRUE/*$no_response*/); + } + + phpCAS::trace('server version: '.$this->getServerVersion()); + + // analyze the result depending on the version + switch ($this->getServerVersion()) { + case SAML_VERSION_1_1: + + // read the response of the CAS server into a DOM object + if ( !($dom = domxml_open_mem($text_response))) { + phpCAS::trace('domxml_open_mem() failed'); + $this->authError('SA not validated', + $validate_url, + FALSE/*$no_response*/, + TRUE/*$bad_response*/, + $text_response); + } + // read the root node of the XML tree + if ( !($tree_response = $dom->document_element()) ) { + phpCAS::trace('document_element() failed'); + $this->authError('SA not validated', + $validate_url, + FALSE/*$no_response*/, + TRUE/*$bad_response*/, + $text_response); + } + // insure that tag name is 'Envelope' + if ( $tree_response->node_name() != 'Envelope' ) { + phpCAS::trace('bad XML root node (should be `Envelope\' instead of `'.$tree_response->node_name().'\''); + $this->authError('SA not validated', + $validate_url, + FALSE/*$no_response*/, + TRUE/*$bad_response*/, + $text_response); + } + // check for the NameIdentifier tag in the SAML response + if ( sizeof($success_elements = $tree_response->get_elements_by_tagname("NameIdentifier")) != 0) { + phpCAS::trace('NameIdentifier found'); + $user = trim($success_elements[0]->get_content()); + phpCAS::trace('user = `'.$user.'`'); + $this->setUser($user); + $this->setSessionAttributes($text_response); + } else { + phpCAS::trace('no <NameIdentifier> tag found in SAML payload'); + $this->authError('SA not validated', + $validate_url, + FALSE/*$no_response*/, + TRUE/*$bad_response*/, + $text_response); + } + break; + } + $this->renameSession($this->getSA()); + // at this step, ST has been validated and $this->_user has been set, + phpCAS::traceEnd(TRUE); + return TRUE; + } + + /** + * This method will parse the DOM and pull out the attributes from the SAML + * payload and put them into an array, then put the array into the session. + * + * @param $text_response the SAML payload. + * @return bool TRUE when successfull and FALSE if no attributes a found + * + * @private + */ + function setSessionAttributes($text_response) + { + phpCAS::traceBegin(); + + $result = FALSE; + + if (isset($_SESSION[SAML_ATTRIBUTES])) { + phpCAS::trace("session attrs already set."); //testbml - do we care? + } + + $attr_array = array(); + + if (($dom = domxml_open_mem($text_response))) { + $xPath = $dom->xpath_new_context(); + $xPath->xpath_register_ns('samlp', 'urn:oasis:names:tc:SAML:1.0:protocol'); + $xPath->xpath_register_ns('saml', 'urn:oasis:names:tc:SAML:1.0:assertion'); + $nodelist = $xPath->xpath_eval("//saml:Attribute"); + if($nodelist){ + $attrs = $nodelist->nodeset; + foreach($attrs as $attr){ + $xres = $xPath->xpath_eval("saml:AttributeValue", $attr); + $name = $attr->get_attribute("AttributeName"); + $value_array = array(); + foreach($xres->nodeset as $node){ + $value_array[] = $node->get_content(); + } + $attr_array[$name] = $value_array; + } + $_SESSION[SAML_ATTRIBUTES] = $attr_array; + // UGent addition... + foreach($attr_array as $attr_key => $attr_value) { + if(count($attr_value) > 1) { + $this->_attributes[$attr_key] = $attr_value; + phpCAS::trace("* " . $attr_key . "=" . $attr_value); + } + else { + $this->_attributes[$attr_key] = $attr_value[0]; + phpCAS::trace("* " . $attr_key . "=" . $attr_value[0]); + } + } + $result = TRUE; + }else{ + phpCAS::trace("SAML Attributes are empty"); + $result = FALSE; + } + } + phpCAS::traceEnd($result); + return $result; + } /** @} */ @@ -2118,7 +2166,7 @@ class CASClient curl_setopt($ch, $key, $value); } } - + if ($this->_cas_server_cert == '' && $this->_cas_server_ca_cert == '' && !$this->_no_cas_server_validation) { phpCAS::error('one of the methods phpCAS::setCasServerCert(), phpCAS::setCasServerCACert() or phpCAS::setNoCasServerValidation() must be called.'); } @@ -2150,21 +2198,21 @@ class CASClient if ( is_array($cookies) ) { curl_setopt($ch,CURLOPT_COOKIE,implode(';',$cookies)); } - // add extra stuff if SAML - if ($this->hasSA()) { - $more_headers = array ("soapaction: http://www.oasis-open.org/committees/security", - "cache-control: no-cache", - "pragma: no-cache", - "accept: text/xml", - "connection: keep-alive", - "content-type: text/xml"); - - curl_setopt($ch, CURLOPT_HTTPHEADER, $more_headers); - curl_setopt($ch, CURLOPT_POST, 1); - $data = $this->buildSAMLPayload(); - //phpCAS::trace('SAML Payload: '.print_r($data, TRUE)); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - } + // add extra stuff if SAML + if ($this->hasSA()) { + $more_headers = array ("soapaction: http://www.oasis-open.org/committees/security", + "cache-control: no-cache", + "pragma: no-cache", + "accept: text/xml", + "connection: keep-alive", + "content-type: text/xml"); + + curl_setopt($ch, CURLOPT_HTTPHEADER, $more_headers); + curl_setopt($ch, CURLOPT_POST, 1); + $data = $this->buildSAMLPayload(); + //phpCAS::trace('SAML Payload: '.print_r($data, TRUE)); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + } // perform the query $buf = curl_exec ($ch); //phpCAS::trace('CURL: Call completed. Response body is: \''.$buf.'\''); @@ -2185,39 +2233,39 @@ class CASClient phpCAS::traceEnd($res); return $res; - } - - /** - * This method is used to build the SAML POST body sent to /samlValidate URL. - * - * @return the SOAP-encased SAMLP artifact (the ticket). - * - * @private - */ - function buildSAMLPayload() - { - phpCAS::traceBegin(); - - //get the ticket - $sa = $this->getSA(); - //phpCAS::trace("SA: ".$sa); - - $body=SAML_SOAP_ENV.SAML_SOAP_BODY.SAMLP_REQUEST.SAML_ASSERTION_ARTIFACT.$sa.SAML_ASSERTION_ARTIFACT_CLOSE.SAMLP_REQUEST_CLOSE.SAML_SOAP_BODY_CLOSE.SAML_SOAP_ENV_CLOSE; - - phpCAS::traceEnd($body); - return ($body); - } - + } + + /** + * This method is used to build the SAML POST body sent to /samlValidate URL. + * + * @return the SOAP-encased SAMLP artifact (the ticket). + * + * @private + */ + function buildSAMLPayload() + { + phpCAS::traceBegin(); + + //get the ticket + $sa = $this->getSA(); + //phpCAS::trace("SA: ".$sa); + + $body=SAML_SOAP_ENV.SAML_SOAP_BODY.SAMLP_REQUEST.SAML_ASSERTION_ARTIFACT.$sa.SAML_ASSERTION_ARTIFACT_CLOSE.SAMLP_REQUEST_CLOSE.SAML_SOAP_BODY_CLOSE.SAML_SOAP_ENV_CLOSE; + + phpCAS::traceEnd($body); + return ($body); + } + /** * This method is the callback used by readURL method to request HTTP headers. */ var $_curl_headers = array(); function _curl_read_headers($ch, $header) - { + { $this->_curl_headers[] = $header; return strlen($header); - } - + } + /** * This method is used to access an HTTP[S] service. * @@ -2236,6 +2284,7 @@ class CASClient function serviceWeb($url,&$err_code,&$output) { phpCAS::traceBegin(); + $cookies = array(); // at first retrieve a PT $pt = $this->retrievePT($url,$err_code,$output); @@ -2248,7 +2297,8 @@ class CASClient $res = FALSE; } else { // add cookies if necessary - if ( is_array($_SESSION['phpCAS']['services'][$url]['cookies']) ) { + if ( isset($_SESSION['phpCAS']['services'][$url]['cookies']) && + is_array($_SESSION['phpCAS']['services'][$url]['cookies']) ) { foreach ( $_SESSION['phpCAS']['services'][$url]['cookies'] as $name => $val ) { $cookies[] = $name.'='.$val; } @@ -2400,29 +2450,29 @@ class CASClient function hasPT() { return !empty($this->_pt); } /** - * This method returns the SAML Ticket provided in the URL of the request. - * @return The SAML ticket. - * @private - */ - function getSA() - { return 'ST'.substr($this->_sa, 2); } - - /** - * This method stores the SAML Ticket. - * @param $sa The SAML Ticket. - * @private - */ - function setSA($sa) - { $this->_sa = $sa; } - - /** - * This method tells if a SAML Ticket was stored. - * @return TRUE if a SAML Ticket has been stored. - * @private - */ - function hasSA() - { return !empty($this->_sa); } - + * This method returns the SAML Ticket provided in the URL of the request. + * @return The SAML ticket. + * @private + */ + function getSA() + { return 'ST'.substr($this->_sa, 2); } + + /** + * This method stores the SAML Ticket. + * @param $sa The SAML Ticket. + * @private + */ + function setSA($sa) + { $this->_sa = $sa; } + + /** + * This method tells if a SAML Ticket was stored. + * @return TRUE if a SAML Ticket has been stored. + * @private + */ + function hasSA() + { return !empty($this->_sa); } + /** @} */ // ######################################################################## // PT VALIDATION @@ -2433,8 +2483,8 @@ class CASClient */ /** - * This method is used to validate a PT; halt on failure - * + * This method is used to validate a ST or PT; halt on failure + * Used for all CAS 2.0 validations * @return bool TRUE when successfull, halt otherwise by calling CASClient::authError(). * * @private @@ -2447,7 +2497,7 @@ class CASClient if ( $this->isProxy() ) { // pass the callback url for CAS proxies - $validate_url .= '&pgtUrl='.$this->getCallbackURL(); + $validate_url .= '&pgtUrl='.urlencode($this->getCallbackURL()); } // open and read the URL @@ -2514,6 +2564,7 @@ class CASClient $text_response); } + $this->renameSession($this->getPT()); // at this step, PT has been validated and $this->_user has been set, phpCAS::traceEnd(TRUE); @@ -2586,25 +2637,43 @@ class CASClient } } - $php_is_for_sissies = split("\?", $_SERVER['REQUEST_URI'], 2); - $final_uri .= $php_is_for_sissies[0]; - if(sizeof($php_is_for_sissies) > 1){ - $cgi_params = '?' . $php_is_for_sissies[1]; - } else { - $cgi_params = '?'; + $request_uri = explode('?', $_SERVER['REQUEST_URI'], 2); + $final_uri .= $request_uri[0]; + + if (isset($request_uri[1]) && $request_uri[1]) + { + $query_string = $this->removeParameterFromQueryString('ticket', $request_uri[1]); + + // If the query string still has anything left, append it to the final URI + if ($query_string !== '') + $final_uri .= "?$query_string"; + } - // remove the ticket if present in the CGI parameters - $cgi_params = preg_replace('/&ticket=[^&]*/','',$cgi_params); - $cgi_params = preg_replace('/\?ticket=[^&;]*/','?',$cgi_params); - $cgi_params = preg_replace('/\?%26/','?',$cgi_params); - $cgi_params = preg_replace('/\?&/','?',$cgi_params); - $cgi_params = preg_replace('/\?$/','',$cgi_params); - $final_uri .= $cgi_params; + + phpCAS::trace("Final URI: $final_uri"); $this->setURL($final_uri); } phpCAS::traceEnd($this->_url); return $this->_url; - } + } + + + + /** + * Removes a parameter from a query string + * + * @param string $parameterName + * @param string $queryString + * @return string + * + * @link http://stackoverflow.com/questions/1842681/regular-expression-to-remove-one-parameter-from-query-string + */ + function removeParameterFromQueryString($parameterName, $queryString) + { + $parameterName = preg_quote($parameterName); + return preg_replace("/&$parameterName(=[^&]*)?|^$parameterName(=[^&]*)?&?/", '', $queryString); + } + /** * This method sets the URL of the current request @@ -2641,7 +2710,7 @@ class CASClient phpCAS::traceBegin(); $this->printHTMLHeader($this->getString(CAS_STR_AUTHENTICATION_FAILED)); - printf($this->getString(CAS_STR_YOU_WERE_NOT_AUTHENTICATED),$this->getURL(),$_SERVER['SERVER_ADMIN']); + printf($this->getString(CAS_STR_YOU_WERE_NOT_AUTHENTICATED),htmlentities($this->getURL()),$_SERVER['SERVER_ADMIN']); phpCAS::trace('CAS URL: '.$cas_url); phpCAS::trace('Authentication failure: '.$failure); if ( $no_response ) { diff --git a/plugins/CasAuthentication/locale/CasAuthentication.pot b/plugins/CasAuthentication/locale/CasAuthentication.pot new file mode 100644 index 0000000000..20a2bf2330 --- /dev/null +++ b/plugins/CasAuthentication/locale/CasAuthentication.pot @@ -0,0 +1,35 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: CasAuthenticationPlugin.php:82 +msgid "CAS" +msgstr "" + +#: CasAuthenticationPlugin.php:83 +msgid "Login or register with CAS" +msgstr "" + +#: CasAuthenticationPlugin.php:150 +msgid "" +"The CAS Authentication plugin allows for StatusNet to handle authentication " +"through CAS (Central Authentication Service)." +msgstr "" + +#: caslogin.php:28 +msgid "Already logged in." +msgstr "" diff --git a/plugins/ClientSideShorten/ClientSideShortenPlugin.php b/plugins/ClientSideShorten/ClientSideShortenPlugin.php new file mode 100644 index 0000000000..3da08e05da --- /dev/null +++ b/plugins/ClientSideShorten/ClientSideShortenPlugin.php @@ -0,0 +1,81 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Plugin to enable client side url shortening in the status box + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @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); +} + +require_once(INSTALLDIR.'/plugins/ClientSideShorten/shorten.php'); + +class ClientSideShortenPlugin extends Plugin +{ + function __construct() + { + parent::__construct(); + } + + function onAutoload($cls) + { + switch ($cls) + { + case 'ShortenAction': + require_once(INSTALLDIR.'/plugins/ClientSideShorten/shorten.php'); + return false; + } + } + + function onEndShowScripts($action){ + if (common_logged_in()) { + $user = common_current_user(); + $action->inlineScript('var maxNoticeLength = ' . User_urlshortener_prefs::maxNoticeLength($user)); + $action->inlineScript('var maxUrlLength = ' . User_urlshortener_prefs::maxUrlLength($user)); + $action->script('plugins/ClientSideShorten/shorten.js'); + } + } + + function onRouterInitialized($m) + { + if (common_logged_in()) { + $m->connect('plugins/ClientSideShorten/shorten', array('action'=>'shorten')); + } + } + + function onPluginVersion(&$versions) + { + $versions[] = array('name' => 'Shorten', + 'version' => STATUSNET_VERSION, + 'author' => 'Craig Andrews', + 'homepage' => 'http://status.net/wiki/Plugin:ClientSideShorten', + 'rawdescription' => + _m('ClientSideShorten causes the web interface\'s notice form to automatically shorten urls as they entered, and before the notice is submitted.')); + return true; + } + +} + diff --git a/plugins/ClientSideShorten/README b/plugins/ClientSideShorten/README new file mode 100644 index 0000000000..e6524c9c7d --- /dev/null +++ b/plugins/ClientSideShorten/README @@ -0,0 +1,6 @@ +ClientSideShorten causes the web interface's notice form to automatically shorten urls as they entered, and before the notice is submitted. + +Installation +============ +Add "addPlugin('ClientSideShorten');" to the bottom of your config.php +That's it! diff --git a/plugins/ClientSideShorten/locale/ClientSideShorten.pot b/plugins/ClientSideShorten/locale/ClientSideShorten.pot new file mode 100644 index 0000000000..83caff3221 --- /dev/null +++ b/plugins/ClientSideShorten/locale/ClientSideShorten.pot @@ -0,0 +1,27 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ClientSideShortenPlugin.php:74 +msgid "" +"ClientSideShorten causes the web interface's notice form to automatically " +"shorten urls as they entered, and before the notice is submitted." +msgstr "" + +#: shorten.php:55 +msgid "'text' argument must be specified." +msgstr "" diff --git a/plugins/ClientSideShorten/shorten.js b/plugins/ClientSideShorten/shorten.js new file mode 100644 index 0000000000..bdffb81e26 --- /dev/null +++ b/plugins/ClientSideShorten/shorten.js @@ -0,0 +1,77 @@ +//wrap everything in a self-executing anonymous function to avoid conflicts +(function(){ + + // smart(x) from Paul Irish + // http://paulirish.com/2009/throttled-smartresize-jquery-event-handler/ + + (function($,sr){ + + // debouncing function from John Hann + // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/ + var debounce = function (func, threshold, execAsap) { + var timeout; + + return function debounced () { + var obj = this, args = arguments; + function delayed () { + if (!execAsap) + func.apply(obj, args); + timeout = null; + }; + + if (timeout) + clearTimeout(timeout); + else if (execAsap) + func.apply(obj, args); + + timeout = setTimeout(delayed, threshold || 100); + }; + } + jQuery.fn[sr] = function(fn){ return fn ? this.bind('keypress', debounce(fn, 1000)) : this.trigger(sr); }; + + })(jQuery,'smartkeypress'); + + function longestWordInString(string) + { + var words = string.split(/\s/); + var longestWord = 0; + for(var i=0;i<words.length;i++) + if(words[i].length > longestWord) longestWord = words[i].length; + return longestWord; + } + + function shorten() + { + var $noticeDataText = $('#'+SN.C.S.NoticeDataText); + var noticeText = $noticeDataText.val(); + + if(noticeText.length > maxNoticeLength || longestWordInString(noticeText) > maxUrlLength) { + var original = $noticeDataText.val(); + shortenAjax = $.ajax({ + url: $('address .url')[0].href+'/plugins/ClientSideShorten/shorten', + data: { text: $noticeDataText.val() }, + dataType: 'text', + success: function(data) { + if(original == $noticeDataText.val()) { + $noticeDataText.val(data).keyup(); + } + } + }); + } + } + + $(document).ready(function(){ + $noticeDataText = $('#'+SN.C.S.NoticeDataText); + $noticeDataText.smartkeypress(function(e){ + //if(typeof(shortenAjax) !== 'undefined') shortenAjax.abort(); + if(e.charCode == '32') { + shorten(); + } + }); + $noticeDataText.bind('paste', function() { + //if(typeof(shortenAjax) !== 'undefined') shortenAjax.abort(); + setTimeout(shorten,1); + }); + }); + +})(); diff --git a/plugins/ClientSideShorten/shorten.php b/plugins/ClientSideShorten/shorten.php new file mode 100644 index 0000000000..f67cbf3b28 --- /dev/null +++ b/plugins/ClientSideShorten/shorten.php @@ -0,0 +1,69 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * List users for autocompletion + * + * PHP version 5 + * + * LICENCE: This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @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/ + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { + exit(1); +} + +/** + * Shorten all URLs in a string + * + * @category Plugin + * @package StatusNet + * @author Craig Andrews <candrews@integralblue.com> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class ShortenAction extends Action +{ + private $text; + + function prepare($args) + { + parent::prepare($args); + $this->groups=array(); + $this->users=array(); + $this->text = $this->arg('text'); + if(is_null($this->text)){ + throw new ClientException(_m('\'text\' argument must be specified.')); + } + return true; + } + + function handle($args) + { + parent::handle($args); + header('Content-Type: text/plain'); + $shortened_text = common_shorten_links($this->text); + print $shortened_text; + } +} + diff --git a/plugins/DirectionDetector/DirectionDetectorPlugin.php b/plugins/DirectionDetector/DirectionDetectorPlugin.php index 303e60d5f4..b1362b166f 100644 --- a/plugins/DirectionDetector/DirectionDetectorPlugin.php +++ b/plugins/DirectionDetector/DirectionDetectorPlugin.php @@ -1,5 +1,4 @@ <?php - /** * DirectionDetector plugin, detects notices with RTL content & sets RTL * style for them. @@ -29,7 +28,7 @@ if (!defined('STATUSNET')) { exit(1); } -define('DIRECTIONDETECTORPLUGIN_VERSION', '0.1.1'); +define('DIRECTIONDETECTORPLUGIN_VERSION', '0.1.2'); class DirectionDetectorPlugin extends Plugin { /** @@ -38,7 +37,7 @@ class DirectionDetectorPlugin extends Plugin { * @param object $notice notice is going to be saved */ public function onStartNoticeSave(&$notice){ - if(self::isRTL($notice->content)) + if(!preg_match('/<span class="rtl">/', $notice->rendered) && self::isRTL($notice->content)) $notice->rendered = '<span class="rtl">'.$notice->rendered.'</span>'; return true; } @@ -46,15 +45,15 @@ class DirectionDetectorPlugin extends Plugin { /** * SN plugin API, here we will add css needed for modifiyed rendered * - * @param + * @param */ - public function onEndShowStatusNetStyles(&$xml){ + public function onEndShowStatusNetStyles($xml){ $xml->element('style', array('type' => 'text/css'), 'span.rtl {display:block;direction:rtl;text-align:right;float:right;width:490px;} .notice .author {float:left}'); } /** * checks that passed string is a RTL language or not * - * @param string $str string to be checked + * @param string $str String to be checked */ public static function isRTL($str){ self::getClearText($str); @@ -62,15 +61,15 @@ class DirectionDetectorPlugin extends Plugin { $cc = $cc[0]; else return false; - if($cc>=1536 && $cc<=1791) // arabic, persian, urdu, kurdish, ... + if($cc>=1536 && $cc<=1791) // Arabic, Persian, Urdu, Kurdish, ... return true; - if($cc>=65136 && $cc<=65279) // arabic peresent 2 + if($cc>=65136 && $cc<=65279) // Arabic peresent 2 return true; - if($cc>=64336 && $cc<=65023) // arabic peresent 1 + if($cc>=64336 && $cc<=65023) // Arabic peresent 1 return true; - if($cc>=1424 && $cc<=1535) // hebrew + if($cc>=1424 && $cc<=1535) // Hebrew return true; - if($cc>=64256 && $cc<=64335) // hebrew peresent + if($cc>=64256 && $cc<=64335) // Hebrew peresent return true; if($cc>=1792 && $cc<=1871) // Syriac return true; @@ -84,7 +83,7 @@ class DirectionDetectorPlugin extends Plugin { } /** - * clears text from replys, tags, groups, reteets & whitespaces + * clears text from replies, tags, groups, repeats & whitespaces * * @param string &$str string to be cleared */ @@ -95,14 +94,14 @@ class DirectionDetectorPlugin extends Plugin { } /** - * Takes an UTF-8 string and returns an array of ints representing the - * Unicode characters. Astral planes are supported ie. the ints in the - * output can be > 0xFFFF. O$ccurrances of the BOM are ignored. Surrogates + * Takes a UTF-8 string and returns an array of ints representing the + * Unicode characters. Astral planes are supported i.e. the ints in the + * output can be > 0xFFFF. Occurrances of the BOM are ignored. Surrogates * are not allowed. ### modified ### returns first character code * * Returns false if the input string isn't a valid UTF-8 octet sequence. */ - private static function utf8ToUnicode(&$str){ + private static function utf8ToUnicode($str){ $mState = 0; // cached expected number of octets after the current octet // until the beginning of the next UTF8 character sequence $mUcs4 = 0; // cached Unicode character @@ -200,7 +199,7 @@ class DirectionDetectorPlugin extends Plugin { } } else { /* ((0xC0 & (*in) != 0x80) && (mState != 0)) - * + * * Incomplete multi-octet sequence. */ return false; @@ -217,8 +216,9 @@ class DirectionDetectorPlugin extends Plugin { $versions[] = array( 'name' => 'Direction detector', 'version' => DIRECTIONDETECTORPLUGIN_VERSION, - 'author' => 'behrooz shabani', - 'rawdescription' => _m('shows notices with right-to-left content in correct direction.') + 'author' => 'Behrooz Shabani', + // TRANS: Direction detector plugin description. + 'rawdescription' => _m('Shows notices with right-to-left content in correct direction.') ); return true; } diff --git a/plugins/DirectionDetector/locale/DirectionDetector.pot b/plugins/DirectionDetector/locale/DirectionDetector.pot new file mode 100644 index 0000000000..44bbcca4dd --- /dev/null +++ b/plugins/DirectionDetector/locale/DirectionDetector.pot @@ -0,0 +1,21 @@ +# 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-05-08 22:32+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: DirectionDetectorPlugin.php:222 +msgid "Shows notices with right-to-left content in correct direction." +msgstr "" diff --git a/plugins/DirectionDetector/locale/nl/LC_MESSAGES/DirectionDetector.po b/plugins/DirectionDetector/locale/nl/LC_MESSAGES/DirectionDetector.po new file mode 100644 index 0000000000..e8dae6ea85 --- /dev/null +++ b/plugins/DirectionDetector/locale/nl/LC_MESSAGES/DirectionDetector.po @@ -0,0 +1,22 @@ +# Translation of StatusNet plugin DirectionDetector to Dutch +# +# Author@translatewiki.net: Siebrand +# -- +# 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-05-08 22:32+0000\n" +"PO-Revision-Date: 2010-05-08 23:32+0100\n" +"Last-Translator: Siebrand Mazeland <s.mazeland@xs4all.nl>\n" +"Language-Team: Dutch\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: DirectionDetectorPlugin.php:222 +msgid "Geeft mededelingen met rechts-naar-linksinhoud weer in de juiste richting." +msgstr "" diff --git a/plugins/DisqusPlugin.php b/plugins/DisqusPlugin.php new file mode 100644 index 0000000000..c07eaaabdd --- /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 0000000000..7b51866ebd --- /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 406c000731..4c018537b8 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/EmailAuthentication/locale/EmailAuthentication.pot b/plugins/EmailAuthentication/locale/EmailAuthentication.pot new file mode 100644 index 0000000000..d945e2537a --- /dev/null +++ b/plugins/EmailAuthentication/locale/EmailAuthentication.pot @@ -0,0 +1,23 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: EmailAuthenticationPlugin.php:61 +msgid "" +"The Email Authentication plugin allows users to login using their email " +"address." +msgstr "" diff --git a/plugins/Facebook/FacebookPlugin.php b/plugins/Facebook/FacebookPlugin.php index 5dba73a5d8..19989a952e 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 14c1d32419..532f1d82e4 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 440706cbc3..76696c1d55 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 fa1088cd00..e249a326b2 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 766d0e1996..f94a346b57 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 ac532e18bf..1290fed557 100644 --- a/plugins/Facebook/facebookutil.php +++ b/plugins/Facebook/facebookutil.php @@ -81,97 +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); - $can_publish = $facebook->api_client->users_hasAppPermission('publish_stream', - $fbuid); + $canPublish = 0; - $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, - "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, - "Posted notice $notice->id to Facebook " . - "as a status update (fbuid = $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 { - $msg = "Not sending notice $notice->id to Facebook " . - "because user $user->nickname hasn't given the " . + 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->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) + ); + } + + // 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 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) { - - $code = $e->getCode(); - - $msg = "Facebook returned error code $code: " . - $e->getMessage() . ' - ' . - "Unable to update Facebook status (notice $notice->id) " . - "for $user->nickname (user id: $user->id)!"; - - common_log(LOG_WARNING, $msg); - - if ($code == 100 || $code == 200 || $code == 250) { - - // 100 The account is 'inactive' (probably - this is not well documented) - // 200 The application does not have permission to operate on the passed in uid parameter. - // 250 Updating status requires the extended permission status_update or publish_stream. - // see: http://wiki.developers.facebook.com/index.php/Users.setStatus#Example_Return_XML - - remove_facebook_app($flink); - - } else { - - // Try sending again later. - - return false; - } - + return handleFacebookError($e, $notice, $flink); } } return true; - } -function updateProfileBox($facebook, $flink, $notice) { - $fbaction = new FacebookAction($output = 'php://output', - $indent = null, $facebook, $flink); +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; + } +} + +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" + ); + + $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" + ); +} + +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" + ); + + $fbattachment = format_attachments($notice->attachments()); + + $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" + ); +} + +function updateProfileBox($facebook, $flink, $notice, $user) { + + $facebook = getFacebook(); + $fbaction = new FacebookAction( + $output = 'php://output', + $indent = null, + $facebook, + $flink + ); + + $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" + ); + $fbaction->updateProfileBox($notice); + + common_debug( + 'FacebookPlugin - finished updating profile box for ' + . "$user->nickname ($user->id) Facebook UID: $fbuid" + ); + } function format_attachments($attachments) @@ -272,12 +426,12 @@ function remove_facebook_app($flink) function mail_facebook_app_removed($user) { - common_init_locale($user->language); - $profile = $user->getProfile(); $site_name = common_config('site', 'name'); + common_switch_locale($user->language); + $subject = sprintf( _m('Your %1$s Facebook application access has been disabled.', $site_name)); @@ -291,7 +445,7 @@ function mail_facebook_app_removed($user) "re-installing the %2\$s Facebook application.\n\nRegards,\n\n%2\$s"), $user->nickname, $site_name); - common_init_locale(); + common_switch_locale(); return mail_to_user($user, $subject, $body); } diff --git a/plugins/Facebook/locale/Facebook.pot b/plugins/Facebook/locale/Facebook.pot index 4bc00248c9..dce10d230f 100644 --- a/plugins/Facebook/locale/Facebook.pot +++ b/plugins/Facebook/locale/Facebook.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+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" @@ -16,201 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: facebookaction.php:171 -msgid "Home" -msgstr "" - -#: facebookaction.php:179 -msgid "Invite" -msgstr "" - -#: facebookaction.php:188 -msgid "Settings" -msgstr "" - -#: facebookaction.php:228 -#, php-format -msgid "" -"To use the %s Facebook Application you need to login with your username and " -"password. Don't have a username yet? " -msgstr "" - -#: facebookaction.php:230 -msgid " a new account." -msgstr "" - -#: facebookaction.php:236 -msgid "Register" -msgstr "" - -#: facebookaction.php:249 facebookaction.php:275 facebooklogin.php:91 -msgid "Login" -msgstr "" - -#: facebookaction.php:268 -msgid "Nickname" -msgstr "" - -#: facebookaction.php:271 FBConnectAuth.php:196 -msgid "Password" -msgstr "" - -#: facebookaction.php:281 -msgid "Lost or forgotten password?" -msgstr "" - -#: facebookaction.php:330 facebookhome.php:248 -msgid "Pagination" -msgstr "" - -#: facebookaction.php:339 facebookhome.php:257 -msgid "After" -msgstr "" - -#: facebookaction.php:347 facebookhome.php:265 -msgid "Before" -msgstr "" - -#: facebookaction.php:365 -msgid "No notice content!" -msgstr "" - -#: facebookaction.php:371 -#, php-format -msgid "That's too long. Max notice size is %d chars." -msgstr "" - -#: facebookaction.php:430 -msgid "Notices" -msgstr "" - -#: facebookhome.php:111 -msgid "Server error - couldn't get user!" -msgstr "" - -#: facebookhome.php:131 -msgid "Incorrect username or password." -msgstr "" - -#: facebookhome.php:158 -#, php-format -msgid "%s and friends, page %d" -msgstr "" - -#: facebookhome.php:160 -#, php-format -msgid "%s and friends" -msgstr "" - -#: facebookhome.php:189 -#, php-format -msgid "" -"If you would like the %s app to automatically update your Facebook status " -"with your latest notice, you need to give it permission." -msgstr "" - -#: facebookhome.php:213 -msgid "Okay, do it!" -msgstr "" - -#: facebookhome.php:219 -msgid "Skip" -msgstr "" - -#: facebookinvite.php:72 -#, php-format -msgid "Thanks for inviting your friends to use %s" -msgstr "" - -#: facebookinvite.php:74 -msgid "Invitations have been sent to the following users:" -msgstr "" - -#: facebookinvite.php:94 -#, php-format -msgid "You have been invited to %s" -msgstr "" - -#: facebookinvite.php:103 -#, php-format -msgid "Invite your friends to use %s" -msgstr "" - -#: facebookinvite.php:125 -#, php-format -msgid "Friends already using %s:" -msgstr "" - -#: facebookinvite.php:143 -msgid "Send invitations" -msgstr "" - -#: FacebookPlugin.php:413 FacebookPlugin.php:433 -msgid "Facebook" -msgstr "" - -#: FacebookPlugin.php:414 -msgid "Login or register using Facebook" -msgstr "" - -#: FacebookPlugin.php:434 FBConnectSettings.php:56 -msgid "Facebook Connect Settings" -msgstr "" - -#: FacebookPlugin.php:533 -msgid "" -"The Facebook plugin allows you to integrate your StatusNet instance with <a " -"href=\"http://facebook.com/\">Facebook</a> and Facebook Connect." -msgstr "" - -#: facebookremove.php:58 -msgid "Couldn't remove Facebook user." -msgstr "" - -#: facebooksettings.php:74 -msgid "There was a problem saving your sync preferences!" -msgstr "" - -#: facebooksettings.php:76 -msgid "Sync preferences saved." -msgstr "" - -#: facebooksettings.php:99 -msgid "Automatically update my Facebook status with my notices." -msgstr "" - -#: facebooksettings.php:106 -msgid "Send \"@\" replies to Facebook." -msgstr "" - -#: facebooksettings.php:115 -msgid "Prefix" -msgstr "" - -#: facebooksettings.php:117 -msgid "A string to prefix notices with." -msgstr "" - -#: facebooksettings.php:123 -msgid "Save" -msgstr "" - -#: facebooksettings.php:133 -#, php-format -msgid "" -"If you would like %s to automatically update your Facebook status with your " -"latest notice, you need to give it permission." -msgstr "" - -#: facebooksettings.php:146 -#, php-format -msgid "Allow %s to update my Facebook status" -msgstr "" - -#: facebooksettings.php:156 -msgid "Sync preferences" -msgstr "" - #: facebookutil.php:285 #, php-format msgid "" @@ -258,85 +63,180 @@ msgstr "" msgid "Facebook Account Setup" msgstr "" -#: FBConnectAuth.php:153 +#: FBConnectAuth.php:158 msgid "Connection options" msgstr "" -#: FBConnectAuth.php:162 -msgid "My text and files are available under " -msgstr "" - -#: FBConnectAuth.php:165 -msgid "" -" except this private data: password, email address, IM address, phone number." -msgstr "" - -#: FBConnectAuth.php:173 +#: FBConnectAuth.php:183 msgid "Create new account" msgstr "" -#: FBConnectAuth.php:175 +#: FBConnectAuth.php:185 msgid "Create a new user with this nickname." msgstr "" -#: FBConnectAuth.php:178 +#: FBConnectAuth.php:188 msgid "New nickname" msgstr "" -#: FBConnectAuth.php:180 +#: FBConnectAuth.php:190 msgid "1-64 lowercase letters or numbers, no punctuation or spaces" msgstr "" -#: FBConnectAuth.php:183 +#: FBConnectAuth.php:193 msgid "Create" msgstr "" -#: FBConnectAuth.php:188 +#: FBConnectAuth.php:198 msgid "Connect existing account" msgstr "" -#: FBConnectAuth.php:190 +#: FBConnectAuth.php:200 msgid "" "If you already have an account, login with your username and password to " "connect it to your Facebook." msgstr "" -#: FBConnectAuth.php:193 +#: FBConnectAuth.php:203 msgid "Existing nickname" msgstr "" -#: FBConnectAuth.php:199 +#: FBConnectAuth.php:206 facebookaction.php:271 +msgid "Password" +msgstr "" + +#: FBConnectAuth.php:209 msgid "Connect" msgstr "" -#: FBConnectAuth.php:215 FBConnectAuth.php:224 +#: FBConnectAuth.php:225 FBConnectAuth.php:234 msgid "Registration not allowed." msgstr "" -#: FBConnectAuth.php:231 +#: FBConnectAuth.php:241 msgid "Not a valid invitation code." msgstr "" -#: FBConnectAuth.php:241 +#: FBConnectAuth.php:251 msgid "Nickname must have only lowercase letters and numbers and no spaces." msgstr "" -#: FBConnectAuth.php:246 +#: FBConnectAuth.php:256 msgid "Nickname not allowed." msgstr "" -#: FBConnectAuth.php:251 +#: FBConnectAuth.php:261 msgid "Nickname already in use. Try another one." msgstr "" -#: FBConnectAuth.php:269 FBConnectAuth.php:303 FBConnectAuth.php:323 +#: FBConnectAuth.php:279 FBConnectAuth.php:313 FBConnectAuth.php:333 msgid "Error connecting user to Facebook." msgstr "" -#: FBConnectAuth.php:289 +#: FBConnectAuth.php:299 msgid "Invalid username or password." msgstr "" +#: facebooklogin.php:91 facebookaction.php:249 facebookaction.php:275 +msgid "Login" +msgstr "" + +#: facebookhome.php:111 +msgid "Server error - couldn't get user!" +msgstr "" + +#: facebookhome.php:131 +msgid "Incorrect username or password." +msgstr "" + +#: facebookhome.php:158 +#, php-format +msgid "%s and friends, page %d" +msgstr "" + +#: facebookhome.php:160 +#, php-format +msgid "%s and friends" +msgstr "" + +#: facebookhome.php:189 +#, php-format +msgid "" +"If you would like the %s app to automatically update your Facebook status " +"with your latest notice, you need to give it permission." +msgstr "" + +#: facebookhome.php:213 +msgid "Okay, do it!" +msgstr "" + +#: facebookhome.php:219 +msgid "Skip" +msgstr "" + +#: facebookhome.php:248 facebookaction.php:330 +msgid "Pagination" +msgstr "" + +#: facebookhome.php:257 facebookaction.php:339 +msgid "After" +msgstr "" + +#: facebookhome.php:265 facebookaction.php:347 +msgid "Before" +msgstr "" + +#: facebookinvite.php:72 +#, php-format +msgid "Thanks for inviting your friends to use %s" +msgstr "" + +#: facebookinvite.php:74 +msgid "Invitations have been sent to the following users:" +msgstr "" + +#: facebookinvite.php:94 +#, php-format +msgid "You have been invited to %s" +msgstr "" + +#: facebookinvite.php:103 +#, php-format +msgid "Invite your friends to use %s" +msgstr "" + +#: facebookinvite.php:125 +#, php-format +msgid "Friends already using %s:" +msgstr "" + +#: facebookinvite.php:143 +msgid "Send invitations" +msgstr "" + +#: FacebookPlugin.php:195 FacebookPlugin.php:488 FacebookPlugin.php:510 +#: facebookadminpanel.php:54 +msgid "Facebook" +msgstr "" + +#: FacebookPlugin.php:196 +msgid "Facebook integration configuration" +msgstr "" + +#: FacebookPlugin.php:489 +msgid "Login or register using Facebook" +msgstr "" + +#: FacebookPlugin.php:511 FBConnectSettings.php:56 +msgid "Facebook Connect Settings" +msgstr "" + +#: FacebookPlugin.php:617 +msgid "" +"The Facebook plugin allows you to integrate your StatusNet instance with <a " +"href=\"http://facebook.com/\">Facebook</a> and Facebook Connect." +msgstr "" + #: FBConnectLogin.php:33 msgid "Already logged in." msgstr "" @@ -349,6 +249,90 @@ msgstr "" msgid "Facebook Login" msgstr "" +#: facebookremove.php:58 +msgid "Couldn't remove Facebook user." +msgstr "" + +#: facebookaction.php:171 +msgid "Home" +msgstr "" + +#: facebookaction.php:179 +msgid "Invite" +msgstr "" + +#: facebookaction.php:188 +msgid "Settings" +msgstr "" + +#: facebookaction.php:228 +#, php-format +msgid "" +"To use the %s Facebook Application you need to login with your username and " +"password. Don't have a username yet? " +msgstr "" + +#: facebookaction.php:230 +msgid " a new account." +msgstr "" + +#: facebookaction.php:236 +msgid "Register" +msgstr "" + +#: facebookaction.php:268 +msgid "Nickname" +msgstr "" + +#: facebookaction.php:281 +msgid "Lost or forgotten password?" +msgstr "" + +#: facebookaction.php:365 +msgid "No notice content!" +msgstr "" + +#: facebookaction.php:371 +#, php-format +msgid "That's too long. Max notice size is %d chars." +msgstr "" + +#: facebookaction.php:430 +msgid "Notices" +msgstr "" + +#: facebookadminpanel.php:65 +msgid "Facebook integration settings" +msgstr "" + +#: facebookadminpanel.php:129 +msgid "Invalid Facebook API key. Max length is 255 characters." +msgstr "" + +#: facebookadminpanel.php:135 +msgid "Invalid Facebook API secret. Max length is 255 characters." +msgstr "" + +#: facebookadminpanel.php:188 +msgid "Facebook application settings" +msgstr "" + +#: facebookadminpanel.php:194 +msgid "API key" +msgstr "" + +#: facebookadminpanel.php:195 +msgid "API key provided by Facebook" +msgstr "" + +#: facebookadminpanel.php:203 +msgid "Secret" +msgstr "" + +#: facebookadminpanel.php:204 +msgid "API secret provided by Facebook" +msgstr "" + #: FBConnectSettings.php:67 msgid "Manage how your account connects to Facebook" msgstr "" @@ -393,3 +377,47 @@ msgstr "" #: FBConnectSettings.php:197 msgid "Not sure what you're trying to do." msgstr "" + +#: facebooksettings.php:74 +msgid "There was a problem saving your sync preferences!" +msgstr "" + +#: facebooksettings.php:76 +msgid "Sync preferences saved." +msgstr "" + +#: facebooksettings.php:99 +msgid "Automatically update my Facebook status with my notices." +msgstr "" + +#: facebooksettings.php:106 +msgid "Send \"@\" replies to Facebook." +msgstr "" + +#: facebooksettings.php:115 +msgid "Prefix" +msgstr "" + +#: facebooksettings.php:117 +msgid "A string to prefix notices with." +msgstr "" + +#: facebooksettings.php:123 +msgid "Save" +msgstr "" + +#: facebooksettings.php:133 +#, php-format +msgid "" +"If you would like %s to automatically update your Facebook status with your " +"latest notice, you need to give it permission." +msgstr "" + +#: facebooksettings.php:146 +#, php-format +msgid "Allow %s to update my Facebook status" +msgstr "" + +#: facebooksettings.php:156 +msgid "Sync preferences" +msgstr "" diff --git a/plugins/FirePHP/FirePHPPlugin.php b/plugins/FirePHP/FirePHPPlugin.php index 9143ff69ca..d984ec1af4 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/FirePHP/locale/FirePHP.pot b/plugins/FirePHP/locale/FirePHP.pot new file mode 100644 index 0000000000..fa16f283eb --- /dev/null +++ b/plugins/FirePHP/locale/FirePHP.pot @@ -0,0 +1,21 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: FirePHPPlugin.php:66 +msgid "The FirePHP plugin writes StatusNet's log output to FirePHP." +msgstr "" diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php index bc5899943b..b64ebdba9d 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; @@ -384,7 +384,7 @@ class GeonamesPlugin extends Plugin function getCache($attrs) { - $c = common_memcache(); + $c = Cache::instance(); if (empty($c)) { return null; @@ -399,7 +399,7 @@ class GeonamesPlugin extends Plugin function setCache($attrs, $loc) { - $c = common_memcache(); + $c = Cache::instance(); if (empty($c)) { return null; @@ -416,11 +416,11 @@ class GeonamesPlugin extends Plugin { $key = 'geonames:' . implode(',', array_keys($attrs)) . ':'. - common_keyize(implode(',', array_values($attrs))); + Cache::keyize(implode(',', array_values($attrs))); if ($this->cachePrefix) { return $this->cachePrefix . ':' . $key; } else { - return common_cache_key($key); + return Cache::key($key); } } diff --git a/plugins/Gravatar/GravatarPlugin.php b/plugins/Gravatar/GravatarPlugin.php index 580852072d..8a9721ea90 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/Gravatar/locale/Gravatar.pot b/plugins/Gravatar/locale/Gravatar.pot index d7275b9290..d3a4cd86b8 100644 --- a/plugins/Gravatar/locale/Gravatar.pot +++ b/plugins/Gravatar/locale/Gravatar.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+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" diff --git a/plugins/Imap/ImapPlugin.php b/plugins/Imap/ImapPlugin.php index d1e920b009..66be799d3e 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 4c0edeaa1d..cfc08c1ee1 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/Imap/locale/Imap.pot b/plugins/Imap/locale/Imap.pot new file mode 100644 index 0000000000..ee8452aaaf --- /dev/null +++ b/plugins/Imap/locale/Imap.pot @@ -0,0 +1,27 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: imapmailhandler.php:28 +msgid "Error" +msgstr "" + +#: ImapPlugin.php:101 +msgid "" +"The IMAP plugin allows for StatusNet to check a POP or IMAP mailbox for " +"incoming mail containing user posts." +msgstr "" diff --git a/plugins/InfiniteScroll/InfiniteScrollPlugin.php b/plugins/InfiniteScroll/InfiniteScrollPlugin.php index a4d1a5d05c..50c1b5a208 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/InfiniteScroll/locale/InfiniteScroll.pot b/plugins/InfiniteScroll/locale/InfiniteScroll.pot new file mode 100644 index 0000000000..a0f466fcb4 --- /dev/null +++ b/plugins/InfiniteScroll/locale/InfiniteScroll.pot @@ -0,0 +1,25 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: InfiniteScrollPlugin.php:54 +msgid "" +"Infinite Scroll adds the following functionality to your StatusNet " +"installation: When a user scrolls towards the bottom of the page, the next " +"page of notices is automatically retrieved and appended. This means they " +"never need to click \"Next Page\", which dramatically increases stickiness." +msgstr "" diff --git a/plugins/Irc/ChannelResponseChannel.php b/plugins/Irc/ChannelResponseChannel.php new file mode 100644 index 0000000000..9d50b914ab --- /dev/null +++ b/plugins/Irc/ChannelResponseChannel.php @@ -0,0 +1,61 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Extend the IMChannel class to allow commands to send messages + * to a channel instead of PMing a user + * + * 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 Network + * @package StatusNet + * @author Luke Fitzgerald <lw.fitzgerald@googlemail.com> + * @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 ChannelResponseChannel extends IMChannel { + protected $ircChannel; + + /** + * Construct a ChannelResponseChannel + * + * @param IMplugin $imPlugin IMPlugin + * @param string $ircChannel IRC Channel to reply to + * @return ChannelResponseChannel + */ + public function __construct($imPlugin, $ircChannel) { + $this->ircChannel = $ircChannel; + parent::__construct($imPlugin); + } + + /** + * Send a message using the plugin + * + * @param User $user User + * @param string $text Message text + * @return void + */ + public function output($user, $text) { + $text = $user->nickname.': ['.common_config('site', 'name') . '] ' . $text; + $this->imPlugin->sendMessage($this->ircChannel, $text); + } +} \ No newline at end of file diff --git a/plugins/Irc/Fake_Irc.php b/plugins/Irc/Fake_Irc.php new file mode 100644 index 0000000000..d95ab0491d --- /dev/null +++ b/plugins/Irc/Fake_Irc.php @@ -0,0 +1,47 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * Instead of sending IRC messages, retrieve the raw data that would be sent + * + * 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 Network + * @package StatusNet + * @author Luke Fitzgerald <lw.fitzgerald@googlemail.com> + * @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 Fake_Irc extends Phergie_Driver_Streams { + public $would_be_sent = null; + + /** + * Store the components for sending a command + * + * @param string $command Command + * @param array $args Arguments + * @return void + */ + protected function send($command, $args = '') { + $this->would_be_sent = array('command' => $command, 'args' => $args); + } +} \ No newline at end of file diff --git a/plugins/Irc/IrcPlugin.php b/plugins/Irc/IrcPlugin.php new file mode 100644 index 0000000000..7a53e5cbf5 --- /dev/null +++ b/plugins/Irc/IrcPlugin.php @@ -0,0 +1,396 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010, StatusNet, Inc. + * + * Send and receive notices using an IRC network + * + * 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 IM + * @package StatusNet + * @author Luke Fitzgerald <lw.fitzgerald@googlemail.com> + * @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); +} + +// We bundle the Phergie library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/phergie'); + +/** + * Plugin for IRC + * + * @category Plugin + * @package StatusNet + * @author Luke Fitzgerald <lw.fitzgerald@googlemail.com> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class IrcPlugin extends ImPlugin { + public $host = null; + public $port = null; + public $username = null; + public $realname = null; + public $nick = null; + public $password = null; + public $nickservidentifyregexp = null; + public $nickservpassword = null; + public $channels = null; + public $transporttype = null; + public $encoding = null; + public $pinginterval = null; + + public $regcheck = null; + public $unregregexp = null; + public $regregexp = null; + + public $transport = 'irc'; + protected $whiteList; + protected $fake_irc; + + /** + * Get the internationalized/translated display name of this IM service + * + * @return string Name of service + */ + public function getDisplayName() { + return _m('IRC'); + } + + /** + * Normalize a screenname for comparison + * + * @param string $screenname Screenname to normalize + * @return string An equivalent screenname in normalized form + */ + public function normalize($screenname) { + $screenname = str_replace(" ","", $screenname); + return strtolower($screenname); + } + + /** + * Get the screenname of the daemon that sends and receives messages + * + * @return string Screenname + */ + public function daemonScreenname() { + return $this->nick; + } + + /** + * Validate (ensure the validity of) a screenname + * + * @param string $screenname Screenname to validate + * @return boolean true if screenname is valid + */ + public function validate($screenname) { + if (preg_match('/\A[a-z0-9\-_]{1,1000}\z/i', $screenname)) { + return true; + } else { + return false; + } + } + + /** + * 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. + */ + public function onAutoload($cls) { + $dir = dirname(__FILE__); + + switch ($cls) { + case 'IrcManager': + include_once $dir . '/'.strtolower($cls).'.php'; + return false; + case 'Fake_Irc': + case 'Irc_waiting_message': + case 'ChannelResponseChannel': + include_once $dir . '/'. $cls .'.php'; + return false; + default: + if (substr($cls, 0, 7) == 'Phergie') { + include_once str_replace('_', DIRECTORY_SEPARATOR, $cls) . '.php'; + return false; + } + return true; + } + } + + /* + * Start manager on daemon start + * + * @param array &$versions Array to insert manager into + * @return boolean + */ + public function onStartImDaemonIoManagers(&$classes) { + parent::onStartImDaemonIoManagers(&$classes); + $classes[] = new IrcManager($this); // handles sending/receiving + return true; + } + + /** + * Ensure the database table is present + * + */ + public function onCheckSchema() { + $schema = Schema::get(); + + // For storing messages while sessions become ready + $schema->ensureTable('irc_waiting_message', + array(new ColumnDef('id', 'integer', null, + false, 'PRI', null, null, true), + new ColumnDef('data', 'blob', null, false), + new ColumnDef('prioritise', 'tinyint', 1, false), + new ColumnDef('attempts', 'integer', null, false), + new ColumnDef('created', 'datetime', null, false), + new ColumnDef('claimed', 'datetime'))); + + return true; + } + + /** + * Get a microid URI for the given screenname + * + * @param string $screenname Screenname + * @return string microid URI + */ + public function microiduri($screenname) { + return 'irc:' . $screenname; + } + + /** + * Send a message to a given screenname + * + * @param string $screenname Screenname to send to + * @param string $body Text to send + * @return boolean true on success + */ + public function sendMessage($screenname, $body) { + $lines = explode("\n", $body); + foreach ($lines as $line) { + $this->fake_irc->doPrivmsg($screenname, $line); + $this->enqueueOutgoingRaw(array('type' => 'message', 'prioritise' => 0, 'data' => $this->fake_irc->would_be_sent)); + } + return true; + } + + /** + * Accept a queued input message. + * + * @return boolean true if processing completed, false if message should be reprocessed + */ + public function receiveRawMessage($data) { + if (strpos($data['source'], '#') === 0) { + $message = $data['message']; + $parts = explode(' ', $message, 2); + $command = $parts[0]; + if (in_array($command, $this->whiteList)) { + $this->handle_channel_incoming($data['sender'], $data['source'], $message); + } else { + $this->handleIncoming($data['sender'], $message); + } + } else { + $this->handleIncoming($data['sender'], $data['message']); + } + return true; + } + + /** + * Helper for handling incoming messages from a channel requiring response + * to the channel instead of via PM + * + * @param string $nick Screenname the message was sent from + * @param string $channel Channel the message originated from + * @param string $message Message text + * @param boolean true on success + */ + protected function handle_channel_incoming($nick, $channel, $notice_text) { + $user = $this->getUser($nick); + // For common_current_user to work + global $_cur; + $_cur = $user; + + if (!$user) { + $this->sendFromSite($nick, 'Unknown user; go to ' . + common_local_url('imsettings') . + ' to add your address to your account'); + common_log(LOG_WARNING, 'Message from unknown user ' . $nick); + return; + } + if ($this->handle_channel_command($user, $channel, $notice_text)) { + common_log(LOG_INFO, "Command message by $nick handled."); + return; + } else if ($this->isAutoreply($notice_text)) { + common_log(LOG_INFO, 'Ignoring auto reply from ' . $nick); + return; + } else if ($this->isOtr($notice_text)) { + common_log(LOG_INFO, 'Ignoring OTR from ' . $nick); + return; + } else { + common_log(LOG_INFO, 'Posting a notice from ' . $user->nickname); + $this->addNotice($nick, $user, $notice_text); + } + + $user->free(); + unset($user); + unset($_cur); + unset($message); + } + + /** + * Attempt to handle a message from a channel as a command + * + * @param User $user User the message is from + * @param string $channel Channel the message originated from + * @param string $body Message text + * @return boolean true if the message was a command and was executed, false if it was not a command + */ + protected function handle_channel_command($user, $channel, $body) { + $inter = new CommandInterpreter(); + $cmd = $inter->handle_command($user, $body); + if ($cmd) { + $chan = new ChannelResponseChannel($this, $channel); + $cmd->execute($chan); + return true; + } else { + return false; + } + } + + /** + * Send a confirmation code to a user + * + * @param string $screenname screenname sending to + * @param string $code the confirmation code + * @param User $user user sending to + * @return boolean success value + */ + public function sendConfirmationCode($screenname, $code, $user, $checked = false) { + $body = sprintf(_('User "%s" on %s has said that your %s screenname belongs to them. ' . + 'If that\'s true, you can confirm by clicking on this URL: ' . + '%s' . + ' . (If you cannot click it, copy-and-paste it into the ' . + 'address bar of your browser). If that user isn\'t you, ' . + 'or if you didn\'t request this confirmation, just ignore this message.'), + $user->nickname, common_config('site', 'name'), $this->getDisplayName(), common_local_url('confirmaddress', array('code' => $code))); + + if ($this->regcheck && !$checked) { + return $this->checked_sendConfirmationCode($screenname, $code, $user); + } else { + return $this->sendMessage($screenname, $body); + } + } + + /** + * Only sends the confirmation message if the nick is + * registered + * + * @param string $screenname Screenname sending to + * @param string $code The confirmation code + * @param User $user User sending to + * @return boolean true on succes + */ + public function checked_sendConfirmationCode($screenname, $code, $user) { + $this->fake_irc->doPrivmsg('NickServ', 'INFO '.$screenname); + $this->enqueueOutgoingRaw( + array( + 'type' => 'nickcheck', + 'prioritise' => 1, + 'data' => $this->fake_irc->would_be_sent, + 'nickdata' => + array( + 'screenname' => $screenname, + 'code' => $code, + 'user' => $user + ) + ) + ); + return true; + } + + /** + * Initialize plugin + * + * @return boolean + */ + public function initialize() { + if (!isset($this->host)) { + throw new Exception('must specify a host'); + } + if (!isset($this->username)) { + throw new Exception('must specify a username'); + } + if (!isset($this->realname)) { + throw new Exception('must specify a "real name"'); + } + if (!isset($this->nick)) { + throw new Exception('must specify a nickname'); + } + + if (!isset($this->port)) { + $this->port = 6667; + } + if (!isset($this->transporttype)) { + $this->transporttype = 'tcp'; + } + if (!isset($this->encoding)) { + $this->encoding = 'UTF-8'; + } + if (!isset($this->pinginterval)) { + $this->pinginterval = 120; + } + + if (!isset($this->regcheck)) { + $this->regcheck = true; + } + + $this->fake_irc = new Fake_Irc; + + /* + * Commands allowed to return output to a channel + */ + $this->whiteList = array('stats', 'last', 'get'); + + return true; + } + + /** + * Get plugin information + * + * @param array $versions Array to insert information into + * @return void + */ + public function onPluginVersion(&$versions) { + $versions[] = array('name' => 'IRC', + 'version' => STATUSNET_VERSION, + 'author' => 'Luke Fitzgerald', + 'homepage' => 'http://status.net/wiki/Plugin:IRC', + 'rawdescription' => + _m('The IRC plugin allows users to send and receive notices over an IRC network.')); + return true; + } +} diff --git a/plugins/Irc/Irc_waiting_message.php b/plugins/Irc/Irc_waiting_message.php new file mode 100644 index 0000000000..59eec63d8d --- /dev/null +++ b/plugins/Irc/Irc_waiting_message.php @@ -0,0 +1,142 @@ +<?php +/** + * Table Definition for irc_waiting_message + */ +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; + +class Irc_waiting_message extends Memcached_DataObject { + + public $__table = 'irc_waiting_message'; // table name + public $id; // int primary_key not_null auto_increment + public $data; // blob not_null + public $prioritise; // tinyint(1) not_null + public $attempts; // int not_null + public $created; // datetime() not_null + public $claimed; // datetime() + + /* Static get */ + public function staticGet($k, $v = null) { + return Memcached_DataObject::staticGet('Irc_waiting_message', $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 + */ + public function table() { + return array('id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'data' => DB_DATAOBJECT_BLOB + DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, + 'prioritise' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'created' => DB_DATAOBJECT_TIME + DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, + 'claimed' => DB_DATAOBJECT_TIME + DB_DATAOBJECT_STR); + } + + /** + * return key definitions for DB_DataObject + * + * DB_DataObject needs to know about keys that the table has, since it + * won't appear in StatusNet's own keys list. In most cases, this will + * simply reference your keyTypes() function. + * + * @return array list of key field names + */ + public 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. This key information is used to store and clear + * cached data, so be sure to list any key that will be used for static + * lookups. + * + * @return array associative array of key definitions, field name to type: + * 'K' for primary key: for compound keys, add an entry for each component; + * 'U' for unique keys: compound keys are not well supported here. + */ + public function keyTypes() { + return array('id' => 'K'); + } + + /** + * Magic formula for non-autoincrementing integer primary keys + * + * If a table has a single integer column as its primary key, DB_DataObject + * assumes that the column is auto-incrementing and makes a sequence table + * to do this incrementation. Since we don't need this for our class, we + * overload this method and return the magic formula that DB_DataObject needs. + * + * @return array magic three-false array that stops auto-incrementing. + */ + public function sequenceKey() { + return array(false, false, false); + } + + /** + * Get the next item in the queue + * + * @return Irc_waiting_message Next message if there is one + */ + public static function top() { + $wm = new Irc_waiting_message(); + + $wm->orderBy('prioritise DESC, created'); + $wm->whereAdd('claimed is null'); + + $wm->limit(1); + + $cnt = $wm->find(true); + + if ($cnt) { + # XXX: potential race condition + # can we force it to only update if claimed is still null + # (or old)? + common_log(LOG_INFO, 'claiming IRC waiting message id = ' . $wm->id); + $orig = clone($wm); + $wm->claimed = common_sql_now(); + $result = $wm->update($orig); + if ($result) { + common_log(LOG_INFO, 'claim succeeded.'); + return $wm; + } else { + common_log(LOG_INFO, 'claim failed.'); + } + } + $wm = null; + return null; + } + + /** + * Increment the attempts count + * + * @return void + * @throws Exception + */ + public function incAttempts() { + $orig = clone($this); + $this->attempts++; + $result = $this->update($orig); + + if (!$result) { + throw Exception(sprintf(_m("Could not increment attempts count for %d"), $this->id)); + } + } + + /** + * Release a claimed item. + */ + public function releaseClaim() { + // DB_DataObject doesn't let us save nulls right now + $sql = sprintf("UPDATE irc_waiting_message SET claimed=NULL WHERE id=%d", $this->id); + $this->query($sql); + + $this->claimed = null; + $this->encache(); + } +} diff --git a/plugins/Irc/README b/plugins/Irc/README new file mode 100644 index 0000000000..0a5d9ea83f --- /dev/null +++ b/plugins/Irc/README @@ -0,0 +1,45 @@ +The IRC plugin allows users to send and receive notices over an IRC network. + +Installation +============ +add "addPlugin('irc', + array('setting'=>'value', 'setting2'=>'value2', ...);" +to the bottom of your config.php + +scripts/imdaemon.php included with StatusNet must be running. It will be started by +the plugin along with their other daemons when you run scripts/startdaemons.sh. +See the StatusNet README for more about queuing and daemons. + +Settings +======== +host*: Hostname of IRC server +port: Port of IRC server (defaults to 6667) +username*: Username of bot +realname*: Real name of bot +nick*: Nickname of bot +password: Password +nickservpassword: NickServ password for identification +nickservidentifyregexp: Override existing regexp matching request for identification from NickServ +channels: Channels for bot to idle in +transporttype: Set to 'ssl' to enable SSL +encoding: Set to change encoding +pinginterval: Set to change the number of seconds between pings (helps keep the connection open) + Defaults to 120 seconds +regcheck: Check user's nicknames are registered, enabled by default, set to false to disable +regregexp: Override existing regexp matching response from NickServ if nick checked is registered. + Must contain a capturing group catching the nick +unregregexp: Override existing regexp matching response from NickServ if nick checked is unregistered + Must contain a capturing group catching the nick + +* required + +Example +======= +addPlugin('irc', array( + 'host' => '...', + 'username' => '...', + 'realname' => '...', + 'nick' => '...', + 'channels' => array('#channel1', '#channel2') +)); + diff --git a/plugins/Irc/extlib/.gitignore b/plugins/Irc/extlib/.gitignore new file mode 100644 index 0000000000..553fe8e258 --- /dev/null +++ b/plugins/Irc/extlib/.gitignore @@ -0,0 +1,2 @@ +Settings.php +*.db diff --git a/plugins/Irc/extlib/phergie/.gitignore b/plugins/Irc/extlib/phergie/.gitignore new file mode 100644 index 0000000000..553fe8e258 --- /dev/null +++ b/plugins/Irc/extlib/phergie/.gitignore @@ -0,0 +1,2 @@ +Settings.php +*.db diff --git a/plugins/Irc/extlib/phergie/LICENSE b/plugins/Irc/extlib/phergie/LICENSE new file mode 100644 index 0000000000..d7d23420ac --- /dev/null +++ b/plugins/Irc/extlib/phergie/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2010, Phergie Development Team +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +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. + +Neither the name of the Phergie Development Team 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 HOLDER 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. diff --git a/plugins/Irc/extlib/phergie/Phergie/Autoload.php b/plugins/Irc/extlib/phergie/Phergie/Autoload.php new file mode 100755 index 0000000000..0004f44e22 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Autoload.php @@ -0,0 +1,81 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Autoloader for Phergie classes. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Autoload +{ + /** + * Constructor to add the base Phergie path to the include_path. + * + * @return void + */ + public function __construct() + { + $path = realpath(dirname(__FILE__) . '/..'); + $includePath = get_include_path(); + $includePathList = explode(PATH_SEPARATOR, $includePath); + if (!in_array($path, $includePathList)) { + self::addPath($path); + } + } + + /** + * Autoload callback for loading class files. + * + * @param string $class Class to load + * + * @return void + */ + public function load($class) + { + include str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php'; + } + + /** + * Registers an instance of this class as an autoloader. + * + * @return void + */ + public static function registerAutoloader() + { + spl_autoload_register(array(new self, 'load')); + } + + /** + * Add a path to the include path. + * + * @param string $path Path to add + * + * @return void + */ + public static function addPath($path) + { + set_include_path($path . PATH_SEPARATOR . get_include_path()); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Bot.php b/plugins/Irc/extlib/phergie/Phergie/Bot.php new file mode 100755 index 0000000000..85e8a00fc9 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Bot.php @@ -0,0 +1,390 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Composite class for other components to represent the bot. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Bot +{ + /** + * Current version of Phergie + */ + const VERSION = '2.0.1'; + + /** + * Current driver instance + * + * @var Phergie_Driver_Abstract + */ + protected $driver; + + /** + * Current configuration instance + * + * @var Phergie_Config + */ + protected $config; + + /** + * Current connection handler instance + * + * @var Phergie_Connection_Handler + */ + protected $connections; + + /** + * Current plugin handler instance + * + * @var Phergie_Plugin_Handler + */ + protected $plugins; + + /** + * Current event handler instance + * + * @var Phergie_Event_Handler + */ + protected $events; + + /** + * Current end-user interface instance + * + * @var Phergie_Ui_Abstract + */ + protected $ui; + + /** + * Current processor instance + * + * @var Phergie_Process_Abstract + */ + protected $processor; + + /** + * Returns a driver instance, creating one of the default class if + * none has been set. + * + * @return Phergie_Driver_Abstract + */ + public function getDriver() + { + if (empty($this->driver)) { + // Check if a driver has been defined in the configuration to use + // as the default + $config = $this->getConfig(); + if (isset($config['driver'])) { + $class = 'Phergie_Driver_' . ucfirst($config['driver']); + } else { + // Otherwise default to the Streams driver. + $class = 'Phergie_Driver_Streams'; + } + + $this->driver = new $class; + } + return $this->driver; + } + + /** + * Sets the driver instance to use. + * + * @param Phergie_Driver_Abstract $driver Driver instance + * + * @return Phergie_Bot Provides a fluent interface + */ + public function setDriver(Phergie_Driver_Abstract $driver) + { + $this->driver = $driver; + return $this; + } + + /** + * Sets the configuration to use. + * + * @param Phergie_Config $config Configuration instance + * + * @return Phergie_Runner_Abstract Provides a fluent interface + */ + public function setConfig(Phergie_Config $config) + { + $this->config = $config; + return $this; + } + + /** + * Returns the entire configuration in use or the value of a specific + * configuration setting. + * + * @param string $index Optional index of a specific configuration + * setting for which the corresponding value should be returned + * @param mixed $default Value to return if no match is found for $index + * + * @return mixed Value corresponding to $index or the entire + * configuration if $index is not specified + */ + public function getConfig($index = null, $default = null) + { + if (empty($this->config)) { + $this->config = new Phergie_Config; + $this->config->read('Settings.php'); + } + if ($index !== null) { + if (isset($this->config[$index])) { + return $this->config[$index]; + } else { + return $default; + } + } + return $this->config; + } + + /** + * Returns a plugin handler instance, creating it if it does not already + * exist and using a default class if none has been set. + * + * @return Phergie_Plugin_Handler + */ + public function getPluginHandler() + { + if (empty($this->plugins)) { + $this->plugins = new Phergie_Plugin_Handler( + $this->getConfig(), + $this->getEventHandler() + ); + } + return $this->plugins; + } + + /** + * Sets the plugin handler instance to use. + * + * @param Phergie_Plugin_Handler $handler Plugin handler instance + * + * @return Phergie_Bot Provides a fluent interface + */ + public function setPluginHandler(Phergie_Plugin_Handler $handler) + { + $this->plugins = $handler; + return $this; + } + + /** + * Returns an event handler instance, creating it if it does not already + * exist and using a default class if none has been set. + * + * @return Phergie_Event_Handler + */ + public function getEventHandler() + { + if (empty($this->events)) { + $this->events = new Phergie_Event_Handler; + } + return $this->events; + } + + /** + * Sets the event handler instance to use. + * + * @param Phergie_Event_Handler $handler Event handler instance + * + * @return Phergie_Bot Provides a fluent interface + */ + public function setEventHandler(Phergie_Event_Handler $handler) + { + $this->events = $handler; + return $this; + } + + /** + * Returns a connection handler instance, creating it if it does not + * already exist and using a default class if none has been set. + * + * @return Phergie_Connection_Handler + */ + public function getConnectionHandler() + { + if (empty($this->connections)) { + $this->connections = new Phergie_Connection_Handler; + } + return $this->connections; + } + + /** + * Sets the connection handler instance to use. + * + * @param Phergie_Connection_Handler $handler Connection handler instance + * + * @return Phergie_Bot Provides a fluent interface + */ + public function setConnectionHandler(Phergie_Connection_Handler $handler) + { + $this->connections = $handler; + return $this; + } + + /** + * Returns an end-user interface instance, creating it if it does not + * already exist and using a default class if none has been set. + * + * @return Phergie_Ui_Abstract + */ + public function getUi() + { + if (empty($this->ui)) { + $this->ui = new Phergie_Ui_Console; + } + return $this->ui; + } + + /** + * Sets the end-user interface instance to use. + * + * @param Phergie_Ui_Abstract $ui End-user interface instance + * + * @return Phergie_Bot Provides a fluent interface + */ + public function setUi(Phergie_Ui_Abstract $ui) + { + $this->ui = $ui; + return $this; + } + + /** + * Returns a processer instance, creating one if none exists. + * + * @return Phergie_Process_Abstract + */ + public function getProcessor() + { + if (empty($this->processor)) { + $class = 'Phergie_Process_Standard'; + + $type = $this->getConfig('processor'); + if (!empty($type)) { + $class = 'Phergie_Process_' . ucfirst($type); + } + + $this->processor = new $class( + $this, + $this->getConfig('processor.options', array()) + ); + } + return $this->processor; + } + + /** + * Sets the processer instance to use. + * + * @param Phergie_Process_Abstract $processor Processer instance + * + * @return Phergie_Bot Provides a fluent interface + */ + public function setProcessor(Phergie_Process_Abstract $processor) + { + $this->processor = $processor; + return $this; + } + + /** + * Loads plugins into the plugin handler. + * + * @return void + */ + protected function loadPlugins() + { + $config = $this->getConfig(); + $plugins = $this->getPluginHandler(); + $ui = $this->getUi(); + + $plugins->setAutoload($config['plugins.autoload']); + foreach ($config['plugins'] as $name) { + try { + $plugin = $plugins->addPlugin($name); + $ui->onPluginLoad($name); + } catch (Phergie_Plugin_Exception $e) { + $ui->onPluginFailure($name, $e->getMessage()); + if (!empty($plugin)) { + $plugins->removePlugin($plugin); + } + } + } + } + + /** + * Configures and establishes connections to IRC servers. + * + * @return void + */ + protected function loadConnections() + { + $config = $this->getConfig(); + $driver = $this->getDriver(); + $connections = $this->getConnectionHandler(); + $plugins = $this->getPluginHandler(); + $ui = $this->getUi(); + + foreach ($config['connections'] as $data) { + $connection = new Phergie_Connection($data); + $connections->addConnection($connection); + + $ui->onConnect($data['host']); + $driver->setConnection($connection)->doConnect(); + $plugins->setConnection($connection); + $plugins->onConnect(); + } + } + + /** + * Establishes server connections and initiates an execution loop to + * continuously receive and process events. + * + * @return Phergie_Bot Provides a fluent interface + */ + public function run() + { + set_time_limit(0); + + $timezone = $this->getConfig('timezone', 'UTC'); + date_default_timezone_set($timezone); + + $ui = $this->getUi(); + $ui->setEnabled($this->getConfig('ui.enabled')); + + $this->loadPlugins(); + $this->loadConnections(); + + $processor = $this->getProcessor(); + + $connections = $this->getConnectionHandler(); + while (count($connections)) { + $processor->handleEvents(); + } + + $ui->onShutdown(); + + return $this; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Config.php b/plugins/Irc/extlib/phergie/Phergie/Config.php new file mode 100755 index 0000000000..c182f2ac1e --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Config.php @@ -0,0 +1,186 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Reads from and writes to PHP configuration files and provides access to + * the settings they contain. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Config implements ArrayAccess +{ + /** + * Mapping of configuration file paths to an array of names of settings + * they contain + * + * @var array + */ + protected $files = array(); + + /** + * Mapping of setting names to their current corresponding values + * + * @var array + */ + protected $settings = array(); + + /** + * Includes a specified PHP configuration file and incorporates its + * return value (which should be an associative array) into the current + * configuration settings. + * + * @param string $file Path to the file to read + * + * @return Phergie_Config Provides a fluent interface + * @throws Phergie_Config_Exception + */ + public function read($file) + { + if (!(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' + && file_exists($file)) + && !is_executable($file) + ) { + throw new Phergie_Config_Exception( + 'Path "' . $file . '" does not reference an executable file', + Phergie_Config_Exception::ERR_FILE_NOT_EXECUTABLE + ); + } + + $settings = include $file; + if (!is_array($settings)) { + throw new Phergie_Config_Exception( + 'File "' . $file . '" does not return an array', + Phergie_Config_Exception::ERR_ARRAY_NOT_RETURNED + ); + } + + $this->files[$file] = array_keys($settings); + $this->settings += $settings; + + return $this; + } + + /** + * Merges an associative array of configuration setting values into the + * current configuration settings. + * + * @param array $settings Associative array of configuration setting + * values keyed by setting name + * + * @return Phergie_Config Provides a fluent interface + */ + public function readArray(array $settings) + { + $this->settings += $settings; + + return $this; + } + + /** + * Writes the values of the current configuration settings back to their + * originating files. + * + * @return Phergie_Config Provides a fluent interface + */ + public function write() + { + foreach ($this->files as $file => &$settings) { + $values = array(); + foreach ($settings as $setting) { + $values[$setting] = $this->settings[$setting]; + } + $source = '<?php' . PHP_EOL . PHP_EOL . + 'return ' . var_export($value, true) . ';'; + file_put_contents($file, $source); + } + } + + /** + * Checks to see if a configuration setting is assigned a value. + * + * @param string $offset Configuration setting name + * + * @return bool TRUE if the setting has a value, FALSE otherwise + * @see ArrayAccess::offsetExists() + */ + public function offsetExists($offset) + { + return isset($this->settings[$offset]); + } + + /** + * Returns the value of a configuration setting. + * + * @param string $offset Configuration setting name + * + * @return mixed Configuration setting value or NULL if it is not + * assigned a value + * @see ArrayAccess::offsetGet() + */ + public function offsetGet($offset) + { + if (isset($this->settings[$offset])) { + $value = &$this->settings[$offset]; + } else { + $value = null; + } + + return $value; + } + + /** + * Sets the value of a configuration setting. + * + * @param string $offset Configuration setting name + * @param mixed $value New setting value + * + * @return void + * @see ArrayAccess::offsetSet() + */ + public function offsetSet($offset, $value) + { + $this->settings[$offset] = $value; + } + + /** + * Removes the value set for a configuration setting. + * + * @param string $offset Configuration setting name + * + * @return void + * @see ArrayAccess::offsetUnset() + */ + public function offsetUnset($offset) + { + unset($this->settings[$offset]); + + foreach ($this->files as $file => $settings) { + $key = array_search($offset, $settings); + if ($key !== false) { + unset($this->files[$file][$key]); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Config/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Config/Exception.php new file mode 100644 index 0000000000..fb646c10c1 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Config/Exception.php @@ -0,0 +1,44 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to configuration. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Config_Exception extends Phergie_Exception +{ + /** + * Error indicating that an attempt was made to read a configuration + * file that could not be executed + */ + const ERR_FILE_NOT_EXECUTABLE = 1; + + /** + * Error indicating that a read configuration file does not return an + * array + */ + const ERR_ARRAY_NOT_RETURNED = 2; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Connection.php b/plugins/Irc/extlib/phergie/Phergie/Connection.php new file mode 100755 index 0000000000..746dec05f4 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Connection.php @@ -0,0 +1,401 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Data structure for connection metadata. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Connection +{ + /** + * Host to which the client will connect + * + * @var string + */ + protected $host; + + /** + * Port on which the client will connect, defaults to the standard IRC + * port + * + * @var int + */ + protected $port; + + /** + * Transport for the connection, defaults to tcp but can be set to ssl + * or variations thereof to connect over SSL + * + * @var string + */ + protected $transport; + + /** + * Encoding method for the connection, defaults to ISO-8859-1 but can + * be set to UTF8 if necessary + * + * @var strng + */ + protected $encoding; + + /** + * Nick that the client will use + * + * @var string + */ + protected $nick; + + /** + * Username that the client will use + * + * @var string + */ + protected $username; + + /** + * Realname that the client will use + * + * @var string + */ + protected $realname; + + /** + * Password that the client will use + * + * @var string + */ + protected $password; + + /** + * Hostmask for the connection + * + * @var Phergie_Hostmask + */ + protected $hostmask; + + /** + * Constructor to initialize instance properties. + * + * @param array $options Optional associative array of property values + * to initialize + * + * @return void + */ + public function __construct(array $options = array()) + { + $this->transport = 'tcp'; + $this->encoding = 'ISO-8859-1'; + // @note this may need changed to something different, for broader support. + // @note also may need to make use of http://us.php.net/manual/en/function.stream-encoding.php + + $this->setOptions($options); + } + + /** + * Emits an error related to a required connection setting does not have + * value set for it. + * + * @param string $setting Name of the setting + * + * @return void + */ + protected function checkSetting($setting) + { + if (empty($this->$setting)) { + throw new Phergie_Connection_Exception( + 'Required connection setting "' . $setting . '" missing', + Phergie_Connection_Exception::ERR_REQUIRED_SETTING_MISSING + ); + } + } + + /** + * Returns a hostmask that uniquely identifies the connection. + * + * @return string + */ + public function getHostmask() + { + if (empty($this->hostmask)) { + $this->hostmask = new Phergie_Hostmask( + $this->getNick(), + $this->getUsername(), + $this->getHost() + ); + } + + return $this->hostmask; + } + + /** + * Sets the host to which the client will connect. + * + * @param string $host Hostname + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setHost($host) + { + if (empty($this->host)) { + $this->host = (string) $host; + } + + return $this; + } + + /** + * Returns the host to which the client will connect if it is set or + * emits an error if it is not set. + * + * @return string + */ + public function getHost() + { + $this->checkSetting('host'); + + return $this->host; + } + + /** + * Sets the port on which the client will connect. + * + * @param int $port Port + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setPort($port) + { + if (empty($this->port)) { + $this->port = (int) $port; + } + + return $this; + } + + /** + * Returns the port on which the client will connect. + * + * @return int + */ + public function getPort() + { + if (empty($this->port)) { + $this->port = 6667; + } + + return $this->port; + } + + /** + * Sets the transport for the connection to use. + * + * @param string $transport Transport (ex: tcp, ssl, etc.) + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setTransport($transport) + { + $this->transport = (string) $transport; + + if (!in_array($this->transport, stream_get_transports())) { + throw new Phergie_Connection_Exception( + 'Transport ' . $this->transport . ' is not supported', + Phergie_Connection_Exception::ERR_TRANSPORT_NOT_SUPPORTED + ); + } + + return $this; + } + + /** + * Returns the transport in use by the connection. + * + * @return string Transport (ex: tcp, ssl, etc.) + */ + public function getTransport() + { + return $this->transport; + } + + /** + * Sets the encoding for the connection to use. + * + * @param string $encoding Encoding to use (ex: ASCII, ISO-8859-1, UTF8, etc.) + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setEncoding($encoding) + { + $this->encoding = (string) $encoding; + + if (!in_array($this->encoding, mb_list_encodings())) { + throw new Phergie_Connection_Exception( + 'Encoding ' . $this->encoding . ' is not supported', + Phergie_Connection_Exception::ERR_ENCODING_NOT_SUPPORTED + ); + } + + return $this; + } + + /** + * Returns the encoding in use by the connection. + * + * @return string Encoding (ex: ASCII, ISO-8859-1, UTF8, etc.) + */ + public function getEncoding() + { + return $this->encoding; + } + + /** + * Sets the nick that the client will use. + * + * @param string $nick Nickname + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setNick($nick) + { + if (empty($this->nick)) { + $this->nick = (string) $nick; + } + + return $this; + } + + /** + * Returns the nick that the client will use. + * + * @return string + */ + public function getNick() + { + $this->checkSetting('nick'); + + return $this->nick; + } + + /** + * Sets the username that the client will use. + * + * @param string $username Username + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setUsername($username) + { + if (empty($this->username)) { + $this->username = (string) $username; + } + + return $this; + } + + /** + * Returns the username that the client will use. + * + * @return string + */ + public function getUsername() + { + $this->checkSetting('username'); + + return $this->username; + } + + /** + * Sets the realname that the client will use. + * + * @param string $realname Real name + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setRealname($realname) + { + if (empty($this->realname)) { + $this->realname = (string) $realname; + } + + return $this; + } + + /** + * Returns the realname that the client will use. + * + * @return string + */ + public function getRealname() + { + $this->checkSetting('realname'); + + return $this->realname; + } + + /** + * Sets the password that the client will use. + * + * @param string $password Password + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setPassword($password) + { + if (empty($this->password)) { + $this->password = (string) $password; + } + + return $this; + } + + /** + * Returns the password that the client will use. + * + * @return string + */ + public function getPassword() + { + return $this->password; + } + + /** + * Sets multiple connection settings using an array. + * + * @param array $options Associative array of setting names mapped to + * corresponding values + * + * @return Phergie_Connection Provides a fluent interface + */ + public function setOptions(array $options) + { + foreach ($options as $option => $value) { + $method = 'set' . ucfirst($option); + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Connection/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Connection/Exception.php new file mode 100644 index 0000000000..aec1cd8e0f --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Connection/Exception.php @@ -0,0 +1,50 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to a connection to an IRC server. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Connection_Exception extends Phergie_Exception +{ + /** + * Error indicating that an operation was attempted requiring a value + * for a specific configuration setting, but none was set + */ + const ERR_REQUIRED_SETTING_MISSING = 1; + + /** + * Error indicating that a connection is configured to use a transport, + * but that transport is not supported by the current PHP installation + */ + const ERR_TRANSPORT_NOT_SUPPORTED = 2; + + /** + * Error indicating that a connection is configured to use an encoding, + * but that encoding is not supported by the current PHP installation + */ + const ERR_ENCODING_NOT_SUPPORTED = 3; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Connection/Handler.php b/plugins/Irc/extlib/phergie/Phergie/Connection/Handler.php new file mode 100644 index 0000000000..e9aeddcd3e --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Connection/Handler.php @@ -0,0 +1,130 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Handles connections initiated by the bot. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Connection_Handler implements Countable, IteratorAggregate +{ + /** + * Map of connections indexed by hostmask + * + * @var array + */ + protected $connections; + + /** + * Constructor to initialize storage for connections. + * + * @return void + */ + public function __construct() + { + $this->connections = array(); + } + + /** + * Adds a connection to the connection list. + * + * @param Phergie_Connection $connection Connection to add + * + * @return Phergie_Connection_Handler Provides a fluent interface + */ + public function addConnection(Phergie_Connection $connection) + { + $this->connections[(string) $connection->getHostmask()] = $connection; + return $this; + } + + /** + * Removes a connection from the connection list. + * + * @param Phergie_Connection|string $connection Instance or hostmask for + * the connection to remove + * + * @return Phergie_Connection_Handler Provides a fluent interface + */ + public function removeConnection($connection) + { + if ($connection instanceof Phergie_Connection) { + $hostmask = (string) $connection->getHostmask(); + } elseif (is_string($connection) + && isset($this->connections[$connection])) { + $hostmask = $connection; + } else { + return $this; + } + unset($this->connections[$hostmask]); + return $this; + } + + /** + * Returns the number of connections in the list. + * + * @return int Number of connections + */ + public function count() + { + return count($this->connections); + } + + /** + * Returns an iterator for the connection list. + * + * @return ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->connections); + } + + /** + * Returns a list of specified connection objects. + * + * @param array|string $keys One or more hostmasks identifying the + * connections to return + * + * @return array List of Phergie_Connection objects corresponding to the + * specified hostmask(s) + */ + public function getConnections($keys) + { + $connections = array(); + + if (!is_array($keys)) { + $keys = array($keys); + } + + foreach ($keys as $key) { + if (isset($this->connections[$key])) { + $connections[] = $this->connections[$key]; + } + } + + return $connections; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Driver/Abstract.php b/plugins/Irc/extlib/phergie/Phergie/Driver/Abstract.php new file mode 100755 index 0000000000..62736620d4 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Driver/Abstract.php @@ -0,0 +1,301 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Base class for drivers which handle issuing client commands to the IRC + * server and converting responses into usable data objects. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +abstract class Phergie_Driver_Abstract +{ + /** + * Currently active connection + * + * @var Phergie_Connection + */ + protected $connection; + + /** + * Sets the currently active connection. + * + * @param Phergie_Connection $connection Active connection + * + * @return Phergie_Driver_Abstract Provides a fluent interface + */ + public function setConnection(Phergie_Connection $connection) + { + $this->connection = $connection; + + return $this; + } + + /** + * Returns the currently active connection. + * + * @return Phergie_Connection + * @throws Phergie_Driver_Exception + */ + public function getConnection() + { + if (empty($this->connection)) { + throw new Phergie_Driver_Exception( + 'Operation requires an active connection, but none is set', + Phergie_Driver_Exception::ERR_NO_ACTIVE_CONNECTION + ); + } + + return $this->connection; + } + + /** + * Returns an event if one has been received from the server. + * + * @return Phergie_Event_Interface|null Event instance if an event has + * been received, NULL otherwise + */ + public abstract function getEvent(); + + /** + * Initiates a connection with the server. + * + * @return void + */ + public abstract function doConnect(); + + /** + * Terminates the connection with the server. + * + * @param string $reason Reason for connection termination (optional) + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_1_6 + */ + public abstract function doQuit($reason = null); + + /** + * Joins a channel. + * + * @param string $channels Comma-delimited list of channels to join + * @param string $keys Optional comma-delimited list of channel keys + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_1 + */ + public abstract function doJoin($channels, $keys = null); + + /** + * Leaves a channel. + * + * @param string $channels Comma-delimited list of channels to leave + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_2 + */ + public abstract function doPart($channels); + + /** + * Invites a user to an invite-only channel. + * + * @param string $nick Nick of the user to invite + * @param string $channel Name of the channel + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_7 + */ + public abstract function doInvite($nick, $channel); + + /** + * Obtains a list of nicks of users in specified channels. + * + * @param string $channels Comma-delimited list of one or more channels + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_5 + */ + public abstract function doNames($channels); + + /** + * Obtains a list of channel names and topics. + * + * @param string $channels Comma-delimited list of one or more channels + * to which the response should be restricted + * (optional) + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_6 + */ + public abstract function doList($channels = null); + + /** + * Retrieves or changes a channel topic. + * + * @param string $channel Name of the channel + * @param string $topic New topic to assign (optional) + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_4 + */ + public abstract function doTopic($channel, $topic = null); + + /** + * Retrieves or changes a channel or user mode. + * + * @param string $target Channel name or user nick + * @param string $mode New mode to assign (optional) + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_3 + */ + public abstract function doMode($target, $mode = null); + + /** + * Changes the client nick. + * + * @param string $nick New nick to assign + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_1_2 + */ + public abstract function doNick($nick); + + /** + * Retrieves information about a nick. + * + * @param string $nick Nick + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_5_2 + */ + public abstract function doWhois($nick); + + /** + * Sends a message to a nick or channel. + * + * @param string $target Channel name or user nick + * @param string $text Text of the message to send + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_4_1 + */ + public abstract function doPrivmsg($target, $text); + + /** + * Sends a notice to a nick or channel. + * + * @param string $target Channel name or user nick + * @param string $text Text of the notice to send + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_4_2 + */ + public abstract function doNotice($target, $text); + + /** + * Kicks a user from a channel. + * + * @param string $nick Nick of the user + * @param string $channel Channel name + * @param string $reason Reason for the kick (optional) + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_2_8 + */ + public abstract function doKick($nick, $channel, $reason = null); + + /** + * Responds to a server test of client responsiveness. + * + * @param string $daemon Daemon from which the original request originates + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html#c4_6_3 + */ + public abstract function doPong($daemon); + + /** + * Sends a CTCP ACTION (/me) command to a nick or channel. + * + * @param string $target Channel name or user nick + * @param string $text Text of the action to perform + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.4 + */ + public abstract function doAction($target, $text); + + /** + * Sends a CTCP PING request to a user. + * + * @param string $nick User nick + * @param string $hash Hash to use in the handshake + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.2 + */ + public abstract function doPing($nick, $hash); + + /** + * Sends a CTCP VERSION request or response to a user. + * + * @param string $nick User nick + * @param string $version Version string to send for a response + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.1 + */ + public abstract function doVersion($nick, $version = null); + + /** + * Sends a CTCP TIME request to a user. + * + * @param string $nick User nick + * @param string $time Time string to send for a response + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.6 + */ + public abstract function doTime($nick, $time = null); + + /** + * Sends a CTCP FINGER request to a user. + * + * @param string $nick User nick + * @param string $finger Finger string to send for a response + * + * @return void + * @link http://www.irchelp.org/irchelp/rfc/ctcpspec.html + */ + public abstract function doFinger($nick, $finger = null); + + /** + * Sends a raw command to the server. + * + * @param string $command Command string to send + * + * @return void + */ + public abstract function doRaw($command); +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Driver/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Driver/Exception.php new file mode 100755 index 0000000000..5873b2cb96 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Driver/Exception.php @@ -0,0 +1,59 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to driver operations. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Driver_Exception extends Phergie_Exception +{ + /** + * Error indicating that an operation was requested requiring an active + * connection before one had been set + */ + const ERR_NO_ACTIVE_CONNECTION = 1; + + /** + * Error indicating that an operation was requested requiring an active + * connection where one had been set but not initiated + */ + const ERR_NO_INITIATED_CONNECTION = 2; + + /** + * Error indicating that an attempt to initiate a connection failed + */ + const ERR_CONNECTION_ATTEMPT_FAILED = 3; + + /** + * Error indicating that an attempt to send data via a connection failed + */ + const ERR_CONNECTION_WRITE_FAILED = 4; + + /** + * Error indicating that an attempt to read data via a connection failed + */ + const ERR_CONNECTION_READ_FAILED = 5; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Driver/Statusnet.php b/plugins/Irc/extlib/phergie/Phergie/Driver/Statusnet.php new file mode 100644 index 0000000000..84c85a01cc --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Driver/Statusnet.php @@ -0,0 +1,66 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * + * 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/>. + * + * Extends the Streams driver (Phergie_Driver_Streams) to give external access + * to the socket resources and send method + * + * @category Phergie + * @package Phergie_Driver_Statusnet + * @author Luke Fitzgerald <lw.fitzgerald@googlemail.com> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class Phergie_Driver_Statusnet extends Phergie_Driver_Streams { + /** + * Handles construction of command strings and their transmission to the + * server. + * + * @param string $command Command to send + * @param string|array $args Optional string or array of sequential + * arguments + * + * @return string Command string that was sent + * @throws Phergie_Driver_Exception + */ + public function send($command, $args = '') { + return parent::send($command, $args); + } + + public function forceQuit() { + try { + // Send a QUIT command to the server + $this->send('QUIT', 'Reconnecting'); + } catch (Phergie_Driver_Exception $e){} + + // Terminate the socket connection + fclose($this->socket); + + // Remove the socket from the internal socket list + unset($this->sockets[(string) $this->getConnection()->getHostmask()]); + } + + /** + * Returns the array of sockets + * + * @return array Array of socket resources + */ + public function getSockets() { + return $this->sockets; + } +} \ No newline at end of file diff --git a/plugins/Irc/extlib/phergie/Phergie/Driver/Streams.php b/plugins/Irc/extlib/phergie/Phergie/Driver/Streams.php new file mode 100755 index 0000000000..73c0230c71 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Driver/Streams.php @@ -0,0 +1,729 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Driver that uses the sockets wrapper of the streams extension for + * communicating with the server and handles formatting and parsing of + * events using PHP. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Driver_Streams extends Phergie_Driver_Abstract +{ + /** + * Socket handlers + * + * @var array + */ + protected $sockets = array(); + + /** + * Reference to the currently active socket handler + * + * @var resource + */ + protected $socket; + + /** + * Amount of time in seconds to wait to receive an event each time the + * socket is polled + * + * @var float + */ + protected $timeout = 0.1; + + /** + * Handles construction of command strings and their transmission to the + * server. + * + * @param string $command Command to send + * @param string|array $args Optional string or array of sequential + * arguments + * + * @return string Command string that was sent + * @throws Phergie_Driver_Exception + */ + protected function send($command, $args = '') + { + $connection = $this->getConnection(); + $encoding = $connection->getEncoding(); + + // Require an open socket connection to continue + if (empty($this->socket)) { + throw new Phergie_Driver_Exception( + 'doConnect() must be called first', + Phergie_Driver_Exception::ERR_NO_INITIATED_CONNECTION + ); + } + + // Add the command + $buffer = strtoupper($command); + + // Add arguments + if (!empty($args)) { + + // Apply formatting if arguments are passed in as an array + if (is_array($args)) { + $end = count($args) - 1; + $args[$end] = ':' . $args[$end]; + $args = implode(' ', $args); + } else { + $args = ':' . $args; + } + + $buffer .= ' ' . $args; + } + + // Transmit the command over the socket connection + $attempts = $written = 0; + $temp = $buffer . "\r\n"; + $is_multibyte = !substr($encoding, 0, 8) === 'ISO-8859' && $encoding !== 'ASCII' && $encoding !== 'CP1252'; + $length = ($is_multibyte) ? mb_strlen($buffer, '8bit') : strlen($buffer); + while (true) { + $written += (int) fwrite($this->socket, $temp); + if ($written < $length) { + $temp = substr($temp, $written); + $attempts++; + if ($attempts == 3) { + throw new Phergie_Driver_Exception( + 'Unable to write to socket', + Phergie_Driver_Exception::ERR_CONNECTION_WRITE_FAILED + ); + } + } else { + break; + } + } + + // Return the command string that was transmitted + return $buffer; + } + + /** + * Overrides the parent class to set the currently active socket handler + * when the active connection is changed. + * + * @param Phergie_Connection $connection Active connection + * + * @return Phergie_Driver_Streams Provides a fluent interface + */ + public function setConnection(Phergie_Connection $connection) + { + // Set the active socket handler + $hostmask = (string) $connection->getHostmask(); + if (!empty($this->sockets[$hostmask])) { + $this->socket = $this->sockets[$hostmask]; + } + + // Set the active connection + return parent::setConnection($connection); + } + + /** + * Returns a list of hostmasks corresponding to sockets with data to read. + * + * @param int $sec Length of time to wait for new data (seconds) + * @param int $usec Length of time to wait for new data (microseconds) + * + * @return array List of hostmasks or an empty array if none were found + * to have data to read + */ + public function getActiveReadSockets($sec = 0, $usec = 200000) + { + $read = $this->sockets; + $write = null; + $error = null; + $active = array(); + + if (count($this->sockets) > 0) { + $number = stream_select($read, $write, $error, $sec, $usec); + if ($number > 0) { + foreach ($read as $item) { + $active[] = array_search($item, $this->sockets); + } + } + } + + return $active; + } + + /** + * Sets the amount of time to wait for a new event each time the socket + * is polled. + * + * @param float $timeout Amount of time in seconds + * + * @return Phergie_Driver_Streams Provides a fluent interface + */ + public function setTimeout($timeout) + { + $timeout = (float) $timeout; + if ($timeout) { + $this->timeout = $timeout; + } + return $this; + } + + /** + * Returns the amount of time to wait for a new event each time the + * socket is polled. + * + * @return float Amount of time in seconds + */ + public function getTimeout() + { + return $this->timeout; + } + + /** + * Supporting method to parse event argument strings where the last + * argument may contain a colon. + * + * @param string $args Argument string to parse + * @param int $count Optional maximum number of arguments + * + * @return array Array of argument values + */ + protected function parseArguments($args, $count = -1) + { + return preg_split('/ :?/S', $args, $count); + } + + /** + * Listens for an event on the current connection. + * + * @return Phergie_Event_Interface|null Event instance if an event was + * received, NULL otherwise + */ + public function getEvent() + { + // Check the socket is still active + if (feof($this->socket)) { + throw new Phergie_Driver_Exception( + 'EOF detected on socket', + Phergie_Driver_Exception::ERR_CONNECTION_READ_FAILED + ); + } + + // Check for a new event on the current connection + $buffer = fgets($this->socket, 512); + + // If no new event was found, return NULL + if (empty($buffer)) { + return null; + } + + // Strip the trailing newline from the buffer + $buffer = rtrim($buffer); + + // If the event is from the server... + if (substr($buffer, 0, 1) != ':') { + + // Parse the command and arguments + list($cmd, $args) = array_pad(explode(' ', $buffer, 2), 2, null); + $hostmask = new Phergie_Hostmask(null, null, $this->connection->getHost()); + + } else { + // If the event could be from the server or a user... + + // Parse the server hostname or user hostmask, command, and arguments + list($prefix, $cmd, $args) + = array_pad(explode(' ', ltrim($buffer, ':'), 3), 3, null); + if (strpos($prefix, '@') !== false) { + $hostmask = Phergie_Hostmask::fromString($prefix); + } else { + $hostmask = new Phergie_Hostmask(null, null, $prefix); + } + } + + // Parse the event arguments depending on the event type + $cmd = strtolower($cmd); + switch ($cmd) { + case 'names': + case 'nick': + case 'quit': + case 'ping': + case 'join': + case 'error': + $args = array(ltrim($args, ':')); + break; + + case 'privmsg': + case 'notice': + $args = $this->parseArguments($args, 2); + list($source, $ctcp) = $args; + if (substr($ctcp, 0, 1) === "\001" && substr($ctcp, -1) === "\001") { + $ctcp = substr($ctcp, 1, -1); + $reply = ($cmd == 'notice'); + list($cmd, $args) = array_pad(explode(' ', $ctcp, 2), 2, null); + $cmd = strtolower($cmd); + switch ($cmd) { + case 'version': + case 'time': + case 'finger': + if ($reply) { + $args = $ctcp; + } + break; + case 'ping': + if ($reply) { + $cmd .= 'Response'; + } else { + $cmd = 'ctcpPing'; + } + break; + case 'action': + $args = array($source, $args); + break; + + default: + $cmd = 'ctcp'; + if ($reply) { + $cmd .= 'Response'; + } + $args = array($source, $args); + break; + } + } + break; + + case 'oper': + case 'topic': + case 'mode': + $args = $this->parseArguments($args); + break; + + case 'part': + case 'kill': + case 'invite': + $args = $this->parseArguments($args, 2); + break; + + case 'kick': + $args = $this->parseArguments($args, 3); + break; + + // Remove the target from responses + default: + $args = substr($args, strpos($args, ' ') + 1); + break; + } + + // Create, populate, and return an event object + if (ctype_digit($cmd)) { + $event = new Phergie_Event_Response; + $event + ->setCode($cmd) + ->setDescription($args); + } else { + $event = new Phergie_Event_Request; + $event + ->setType($cmd) + ->setArguments($args); + if (isset($hostmask)) { + $event->setHostmask($hostmask); + } + } + $event->setRawData($buffer); + return $event; + } + + /** + * Initiates a connection with the server. + * + * @return void + */ + public function doConnect() + { + // Listen for input indefinitely + set_time_limit(0); + + // Get connection information + $connection = $this->getConnection(); + $hostname = $connection->getHost(); + $port = $connection->getPort(); + $password = $connection->getPassword(); + $username = $connection->getUsername(); + $nick = $connection->getNick(); + $realname = $connection->getRealname(); + $transport = $connection->getTransport(); + + // Establish and configure the socket connection + $remote = $transport . '://' . $hostname . ':' . $port; + $this->socket = @stream_socket_client($remote, $errno, $errstr); + if (!$this->socket) { + throw new Phergie_Driver_Exception( + 'Unable to connect: socket error ' . $errno . ' ' . $errstr, + Phergie_Driver_Exception::ERR_CONNECTION_ATTEMPT_FAILED + ); + } + + $seconds = (int) $this->timeout; + $microseconds = ($this->timeout - $seconds) * 1000000; + stream_set_timeout($this->socket, $seconds, $microseconds); + + // Send the password if one is specified + if (!empty($password)) { + $this->send('PASS', $password); + } + + // Send user information + $this->send( + 'USER', + array( + $username, + $hostname, + $hostname, + $realname + ) + ); + + $this->send('NICK', $nick); + + // Add the socket handler to the internal array for socket handlers + $this->sockets[(string) $connection->getHostmask()] = $this->socket; + } + + /** + * Terminates the connection with the server. + * + * @param string $reason Reason for connection termination (optional) + * + * @return void + */ + public function doQuit($reason = null) + { + // Send a QUIT command to the server + $this->send('QUIT', $reason); + + // Terminate the socket connection + fclose($this->socket); + + // Remove the socket from the internal socket list + unset($this->sockets[(string) $this->getConnection()->getHostmask()]); + } + + /** + * Joins a channel. + * + * @param string $channels Comma-delimited list of channels to join + * @param string $keys Optional comma-delimited list of channel keys + * + * @return void + */ + public function doJoin($channels, $keys = null) + { + $args = array($channels); + + if (!empty($keys)) { + $args[] = $keys; + } + + $this->send('JOIN', $args); + } + + /** + * Leaves a channel. + * + * @param string $channels Comma-delimited list of channels to leave + * + * @return void + */ + public function doPart($channels) + { + $this->send('PART', $channels); + } + + /** + * Invites a user to an invite-only channel. + * + * @param string $nick Nick of the user to invite + * @param string $channel Name of the channel + * + * @return void + */ + public function doInvite($nick, $channel) + { + $this->send('INVITE', array($nick, $channel)); + } + + /** + * Obtains a list of nicks of usrs in currently joined channels. + * + * @param string $channels Comma-delimited list of one or more channels + * + * @return void + */ + public function doNames($channels) + { + $this->send('NAMES', $channels); + } + + /** + * Obtains a list of channel names and topics. + * + * @param string $channels Comma-delimited list of one or more channels + * to which the response should be restricted + * (optional) + * + * @return void + */ + public function doList($channels = null) + { + $this->send('LIST', $channels); + } + + /** + * Retrieves or changes a channel topic. + * + * @param string $channel Name of the channel + * @param string $topic New topic to assign (optional) + * + * @return void + */ + public function doTopic($channel, $topic = null) + { + $args = array($channel); + + if (!empty($topic)) { + $args[] = $topic; + } + + $this->send('TOPIC', $args); + } + + /** + * Retrieves or changes a channel or user mode. + * + * @param string $target Channel name or user nick + * @param string $mode New mode to assign (optional) + * + * @return void + */ + public function doMode($target, $mode = null) + { + $args = array($target); + + if (!empty($mode)) { + $args[] = $mode; + } + + $this->send('MODE', $args); + } + + /** + * Changes the client nick. + * + * @param string $nick New nick to assign + * + * @return void + */ + public function doNick($nick) + { + $this->send('NICK', $nick); + } + + /** + * Retrieves information about a nick. + * + * @param string $nick Nick + * + * @return void + */ + public function doWhois($nick) + { + $this->send('WHOIS', $nick); + } + + /** + * Sends a message to a nick or channel. + * + * @param string $target Channel name or user nick + * @param string $text Text of the message to send + * + * @return void + */ + public function doPrivmsg($target, $text) + { + $this->send('PRIVMSG', array($target, $text)); + } + + /** + * Sends a notice to a nick or channel. + * + * @param string $target Channel name or user nick + * @param string $text Text of the notice to send + * + * @return void + */ + public function doNotice($target, $text) + { + $this->send('NOTICE', array($target, $text)); + } + + /** + * Kicks a user from a channel. + * + * @param string $nick Nick of the user + * @param string $channel Channel name + * @param string $reason Reason for the kick (optional) + * + * @return void + */ + public function doKick($nick, $channel, $reason = null) + { + $args = array($nick, $channel); + + if (!empty($reason)) { + $args[] = $response; + } + + $this->send('KICK', $args); + } + + /** + * Responds to a server test of client responsiveness. + * + * @param string $daemon Daemon from which the original request originates + * + * @return void + */ + public function doPong($daemon) + { + $this->send('PONG', $daemon); + } + + /** + * Sends a CTCP ACTION (/me) command to a nick or channel. + * + * @param string $target Channel name or user nick + * @param string $text Text of the action to perform + * + * @return void + */ + public function doAction($target, $text) + { + $buffer = rtrim('ACTION ' . $text); + + $this->doPrivmsg($target, chr(1) . $buffer . chr(1)); + } + + /** + * Sends a CTCP response to a user. + * + * @param string $nick User nick + * @param string $command Command to send + * @param string|array $args String or array of sequential arguments + * (optional) + * + * @return void + */ + protected function doCtcp($nick, $command, $args = null) + { + if (is_array($args)) { + $args = implode(' ', $args); + } + + $buffer = rtrim(strtoupper($command) . ' ' . $args); + + $this->doNotice($nick, chr(1) . $buffer . chr(1)); + } + + /** + * Sends a CTCP PING request or response (they are identical) to a user. + * + * @param string $nick User nick + * @param string $hash Hash to use in the handshake + * + * @return void + */ + public function doPing($nick, $hash) + { + $this->doCtcp($nick, 'PING', $hash); + } + + /** + * Sends a CTCP VERSION request or response to a user. + * + * @param string $nick User nick + * @param string $version Version string to send for a response + * + * @return void + */ + public function doVersion($nick, $version = null) + { + if ($version) { + $this->doCtcp($nick, 'VERSION', $version); + } else { + $this->doCtcp($nick, 'VERSION'); + } + } + + /** + * Sends a CTCP TIME request to a user. + * + * @param string $nick User nick + * @param string $time Time string to send for a response + * + * @return void + */ + public function doTime($nick, $time = null) + { + if ($time) { + $this->doCtcp($nick, 'TIME', $time); + } else { + $this->doCtcp($nick, 'TIME'); + } + } + + /** + * Sends a CTCP FINGER request to a user. + * + * @param string $nick User nick + * @param string $finger Finger string to send for a response + * + * @return void + */ + public function doFinger($nick, $finger = null) + { + if ($finger) { + $this->doCtcp($nick, 'FINGER', $finger); + } else { + $this->doCtcp($nick, 'FINGER'); + } + } + + /** + * Sends a raw command to the server. + * + * @param string $command Command string to send + * + * @return void + */ + public function doRaw($command) + { + $this->send('RAW', $command); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Event/Abstract.php b/plugins/Irc/extlib/phergie/Phergie/Event/Abstract.php new file mode 100644 index 0000000000..54b035dc03 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Event/Abstract.php @@ -0,0 +1,62 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Base class for events. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +abstract class Phergie_Event_Abstract +{ + /** + * Event type, used for determining the callback to execute in response + * + * @var string + */ + protected $type; + + /** + * Returns the event type. + * + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * Sets the event type. + * + * @param string $type Event type + * + * @return Phergie_Event_Abstract Implements a fluent interface + */ + public function setType($type) + { + $this->type = (string) $type; + return $this; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Event/Command.php b/plugins/Irc/extlib/phergie/Phergie/Event/Command.php new file mode 100644 index 0000000000..5940636ba7 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Event/Command.php @@ -0,0 +1,62 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Event originating from a plugin for the bot. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Event_Command extends Phergie_Event_Request +{ + /** + * Reference to the plugin instance that created the event + * + * @var Phergie_Plugin_Abstract + */ + protected $plugin; + + /** + * Stores a reference to the plugin instance that created the event. + * + * @param Phergie_Plugin_Abstract $plugin Plugin instance + * + * @return Phergie_Event_Command Provides a fluent interface + */ + public function setPlugin(Phergie_Plugin_Abstract $plugin) + { + $this->plugin = $plugin; + return $this; + } + + /** + * Returns a reference to the plugin instance that created the event. + * + * @return Phergie_Plugin_Abstract + */ + public function getPlugin() + { + return $this->plugin; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Event/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Event/Exception.php new file mode 100644 index 0000000000..6b094a810c --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Event/Exception.php @@ -0,0 +1,38 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to outgoing events. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Event_Exception extends Phergie_Exception +{ + /** + * Error indicating that an attempt was made to create an event of an + * unknown type + */ + const ERR_UNKNOWN_EVENT_TYPE = 1; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Event/Handler.php b/plugins/Irc/extlib/phergie/Phergie/Event/Handler.php new file mode 100644 index 0000000000..e308df8a56 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Event/Handler.php @@ -0,0 +1,190 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Handles events initiated by plugins. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Event_Handler implements IteratorAggregate, Countable +{ + /** + * Current queue of events + * + * @var array + */ + protected $events; + + /** + * Constructor to initialize the event queue. + * + * @return void + */ + public function __construct() + { + $this->events = array(); + } + + /** + * Adds an event to the queue. + * + * @param Phergie_Plugin_Abstract $plugin Plugin originating the event + * @param string $type Event type, corresponding to a + * Phergie_Event_Command::TYPE_* constant + * @param array $args Optional event arguments + * + * @return Phergie_Event_Handler Provides a fluent interface + */ + public function addEvent(Phergie_Plugin_Abstract $plugin, $type, + array $args = array() + ) { + if (!defined('Phergie_Event_Command::TYPE_' . strtoupper($type))) { + throw new Phergie_Event_Exception( + 'Unknown event type "' . $type . '"', + Phergie_Event_Exception::ERR_UNKNOWN_EVENT_TYPE + ); + } + + $event = new Phergie_Event_Command; + $event + ->setPlugin($plugin) + ->setType($type) + ->setArguments($args); + + $this->events[] = $event; + + return $this; + } + + /** + * Returns the current event queue. + * + * @return array Enumerated array of Phergie_Event_Command objects + */ + public function getEvents() + { + return $this->events; + } + + /** + * Clears the event queue. + * + * @return Phergie_Event_Handler Provides a fluent interface + */ + public function clearEvents() + { + $this->events = array(); + return $this; + } + + /** + * Replaces the current event queue with a given queue of events. + * + * @param array $events Ordered list of objects of the class + * Phergie_Event_Command + * + * @return Phergie_Event_Handler Provides a fluent interface + */ + public function replaceEvents(array $events) + { + $this->events = $events; + return $this; + } + + /** + * Returns whether an event of the given type exists in the queue. + * + * @param string $type Event type from Phergie_Event_Request::TYPE_* + * constants + * + * @return bool TRUE if an event of the specified type exists in the + * queue, FALSE otherwise + */ + public function hasEventOfType($type) + { + foreach ($this->events as $event) { + if ($event->getType() == $type) { + return true; + } + } + return false; + } + + /** + * Returns a list of events of a specified type. + * + * @param string $type Event type from Phergie_Event_Request::TYPE_* + * constants + * + * @return array Array containing event instances of the specified type + * or an empty array if no such events were found + */ + public function getEventsOfType($type) + { + $events = array(); + foreach ($this->events as $event) { + if ($event->getType() == $type) { + $events[] = $event; + } + } + return $events; + } + + /** + * Removes a single event from the event queue. + * + * @param Phergie_Event_Command $event Event to remove + * + * @return Phergie_Event_Handler Provides a fluent interface + */ + public function removeEvent(Phergie_Event_Command $event) + { + $key = array_search($event, $this->events); + if ($key !== false) { + unset($this->events[$key]); + } + return $this; + } + + /** + * Returns an iterator for the current event queue. + * + * @return ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->events); + } + + /** + * Returns the number of events in the event queue + * + * @return int number of queued events + */ + public function count() + { + return count($this->events); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Event/Request.php b/plugins/Irc/extlib/phergie/Phergie/Event/Request.php new file mode 100755 index 0000000000..647b5acb87 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Event/Request.php @@ -0,0 +1,468 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Autonomous event originating from a user or the server. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + * @link http://www.irchelp.org/irchelp/rfc/chapter4.html + */ +class Phergie_Event_Request + extends Phergie_Event_Abstract + implements ArrayAccess +{ + /** + * Nick message event type + */ + const TYPE_NICK = 'nick'; + + /** + * Whois message event type + */ + const TYPE_WHOIS = 'whois'; + + /** + * Quit command event type + */ + const TYPE_QUIT = 'quit'; + + /** + * Join message event type + */ + const TYPE_JOIN = 'join'; + + /** + * Kick message event type + */ + const TYPE_KICK = 'kick'; + + /** + * Part message event type + */ + const TYPE_PART = 'part'; + + /** + * Invite message event type + */ + const TYPE_INVITE = 'invite'; + + /** + * Mode message event type + */ + const TYPE_MODE = 'mode'; + + /** + * Topic message event type + */ + const TYPE_TOPIC = 'topic'; + + /** + * Private message command event type + */ + const TYPE_PRIVMSG = 'privmsg'; + + /** + * Notice message event type + */ + const TYPE_NOTICE = 'notice'; + + /** + * Pong message event type + */ + const TYPE_PONG = 'pong'; + + /** + * CTCP ACTION command event type + */ + const TYPE_ACTION = 'action'; + + /** + * CTCP PING command event type + */ + const TYPE_PING = 'ping'; + + /** + * CTCP TIME command event type + */ + const TYPE_TIME = 'time'; + + /** + * CTCP VERSION command event type + */ + const TYPE_VERSION = 'version'; + + /** + * RAW message event type + */ + const TYPE_RAW = 'raw'; + + /** + * Mapping of event types to their named parameters + * + * @var array + */ + protected static $map = array( + + self::TYPE_QUIT => array( + 'message' => 0 + ), + + self::TYPE_JOIN => array( + 'channel' => 0 + ), + + self::TYPE_KICK => array( + 'channel' => 0, + 'user' => 1, + 'comment' => 2 + ), + + self::TYPE_PART => array( + 'channel' => 0, + 'message' => 1 + ), + + self::TYPE_INVITE => array( + 'nickname' => 0, + 'channel' => 1 + ), + + self::TYPE_MODE => array( + 'target' => 0, + 'mode' => 1, + 'limit' => 2, + 'user' => 3, + 'banmask' => 4 + ), + + self::TYPE_TOPIC => array( + 'channel' => 0, + 'topic' => 1 + ), + + self::TYPE_PRIVMSG => array( + 'receiver' => 0, + 'text' => 1 + ), + + self::TYPE_NOTICE => array( + 'nickname' => 0, + 'text' => 1 + ), + + self::TYPE_ACTION => array( + 'target' => 0, + 'action' => 1 + ), + + self::TYPE_RAW => array( + 'message' => 0 + ) + + ); + + /** + * Hostmask representing the originating user, if applicable + * + * @var Phergie_Hostmask + */ + protected $hostmask; + + /** + * Arguments included with the message + * + * @var array + */ + protected $arguments; + + /** + * Raw data sent by the server + * + * @var string + */ + protected $rawData; + + /** + * Sets the hostmask representing the originating user. + * + * @param Phergie_Hostmask $hostmask User hostmask + * + * @return Phergie_Event_Request Provides a fluent interface + */ + public function setHostmask(Phergie_Hostmask $hostmask) + { + $this->hostmask = $hostmask; + return $this; + } + + /** + * Returns the hostmask representing the originating user. + * + * @return Phergie_Event_Request|null Hostmask or NULL if none was set + */ + public function getHostmask() + { + return $this->hostmask; + } + + /** + * Sets the arguments for the request. + * + * @param array $arguments Request arguments + * + * @return Phergie_Event_Request Provides a fluent interface + */ + public function setArguments($arguments) + { + $this->arguments = $arguments; + return $this; + } + + /** + * Sets the value of a single argument for the request. + * + * @param mixed $argument Integer position (starting from 0) or the + * equivalent string name of the argument from self::$map + * @param string $value Value to assign to the argument + * + * @return Phergie_Event_Request Provides a fluent interface + */ + public function setArgument($argument, $value) + { + $argument = $this->resolveArgument($argument); + if ($argument !== null) { + $this->arguments[$argument] = (string) $value; + } + return $this; + } + + /** + * Returns the arguments for the request. + * + * @return array + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Resolves an argument specification to an integer position. + * + * @param mixed $argument Integer position (starting from 0) or the + * equivalent string name of the argument from self::$map + * + * @return int|null Integer position of the argument or NULL if no + * corresponding argument was found + */ + protected function resolveArgument($argument) + { + if (isset($this->arguments[$argument])) { + return $argument; + } else { + $argument = strtolower($argument); + if (isset(self::$map[$this->type][$argument]) + && isset($this->arguments[self::$map[$this->type][$argument]]) + ) { + return self::$map[$this->type][$argument]; + } + } + return null; + } + + /** + * Returns a single specified argument for the request. + * + * @param mixed $argument Integer position (starting from 0) or the + * equivalent string name of the argument from self::$map + * + * @return string|null Argument value or NULL if none is set + */ + public function getArgument($argument) + { + $argument = $this->resolveArgument($argument); + if ($argument !== null) { + return $this->arguments[$argument]; + } + return null; + } + + /** + * Sets the raw buffer for the event. + * + * @param string $buffer Raw event buffer + * + * @return Phergie_Event_Request Provides a fluent interface + */ + public function setRawData($buffer) + { + $this->rawData = $buffer; + return $this; + } + + /** + * Returns the raw buffer sent from the server for the event. + * + * @return string + */ + public function getRawData() + { + return $this->rawData; + } + + /** + * Returns the nick of the user who originated the event. + * + * @return string + */ + public function getNick() + { + return $this->hostmask->getNick(); + } + + /** + * Returns the channel name if the event occurred in a channel or the + * user nick if the event was a private message directed at the bot by a + * user. + * + * @return string + */ + public function getSource() + { + if (substr($this->arguments[0], 0, 1) == '#') { + return $this->arguments[0]; + } + return $this->hostmask->getNick(); + } + + /** + * Returns whether or not the event occurred within a channel. + * + * @return TRUE if the event is in a channel, FALSE otherwise + */ + public function isInChannel() + { + return (substr($this->getSource(), 0, 1) == '#'); + } + + /** + * Returns whether or not the event originated from a user. + * + * @return TRUE if the event is from a user, FALSE otherwise + */ + public function isFromUser() + { + if (empty($this->hostmask)) { + return false; + } + $username = $this->hostmask->getUsername(); + return !empty($username); + } + + /** + * Returns whether or not the event originated from the server. + * + * @return TRUE if the event is from the server, FALSE otherwise + */ + public function isFromServer() + { + $username = $this->hostmask->getUsername(); + return empty($username); + } + + /** + * Provides access to named parameters via virtual "getter" methods. + * + * @param string $name Name of the method called + * @param array $arguments Arguments passed to the method (should always + * be empty) + * + * @return mixed Method return value + */ + public function __call($name, array $arguments) + { + if (!count($arguments) && substr($name, 0, 3) == 'get') { + return $this->getArgument(substr($name, 3)); + } + } + + /** + * Checks to see if an event argument is assigned a value. + * + * @param string|int $offset Argument name or position beginning from 0 + * + * @return bool TRUE if the argument has a value, FALSE otherwise + * @see ArrayAccess::offsetExists() + */ + public function offsetExists($offset) + { + return ($this->resolveArgument($offset) !== null); + } + + /** + * Returns the value of an event argument. + * + * @param string|int $offset Argument name or position beginning from 0 + * + * @return string|null Argument value or NULL if none is set + * @see ArrayAccess::offsetGet() + */ + public function offsetGet($offset) + { + return $this->getArgument($offset); + } + + /** + * Sets the value of an event argument. + * + * @param string|int $offset Argument name or position beginning from 0 + * @param string $value New argument value + * + * @return void + * @see ArrayAccess::offsetSet() + */ + public function offsetSet($offset, $value) + { + $offset = $this->resolveArgument($offset); + if ($offset !== null) { + $this->arguments[$offset] = $value; + } + } + + /** + * Removes the value set for an event argument. + * + * @param string|int $offset Argument name or position beginning from 0 + * + * @return void + * @see ArrayAccess::offsetUnset() + */ + public function offsetUnset($offset) + { + if ($offset = $this->resolveArgument($offset)) { + unset($this->arguments[$offset]); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Event/Response.php b/plugins/Irc/extlib/phergie/Phergie/Event/Response.php new file mode 100755 index 0000000000..097e2535e8 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Event/Response.php @@ -0,0 +1,953 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Event originating from the server in response to an event sent by the + * current client. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + * @link http://www.irchelp.org/irchelp/rfc/chapter6.html + */ +class Phergie_Event_Response extends Phergie_Event_Abstract +{ + /** + * <nickname> No such nick/channel + * + * Used to indicate the nickname parameter supplied to a command is currently + * unused. + */ + const ERR_NOSUCHNICK = '401'; + + /** + * <server name> No such server + * + * Used to indicate the server name given currently doesn't exist. + */ + const ERR_NOSUCHSERVER = '402'; + + /** + * <channel name> No such channel + * + * Used to indicate the given channel name is invalid. + */ + const ERR_NOSUCHCHANNEL = '403'; + + /** + * <channel name> Cannot send to channel + * + * Sent to a user who is either (a) not on a channel which is mode +n or (b) not + * a chanop (or mode +v) on a channel which has mode +m set and is trying to send + * a PRIVMSG message to that channel. + */ + const ERR_CANNOTSENDTOCHAN = '404'; + + /** + * <channel name> You have joined too many channels + * + * Sent to a user when they have joined the maximum number of allowed channels + * and they try to join another channel. + */ + const ERR_TOOMANYCHANNELS = '405'; + + /** + * <nickname> There was no such nickname + * + * Returned by WHOWAS to indicate there is no history information for that + * nickname. + */ + const ERR_WASNOSUCHNICK = '406'; + + /** + * <target> Duplicate recipients. No message delivered + * + * Returned to a client which is attempting to send PRIVMSG/NOTICE using the + * user@host destination format and for a user@host which has several + * occurrences. + */ + const ERR_TOOMANYTARGETS = '407'; + + /** + * No origin specified + * + * PING or PONG message missing the originator parameter which is required since + * these commands must work without valid prefixes. + */ + const ERR_NOORIGIN = '409'; + + /** + * No recipient given (<command>) + */ + const ERR_NORECIPIENT = '411'; + + /** + * No text to send + */ + const ERR_NOTEXTTOSEND = '412'; + + /** + * <mask> No toplevel domain specified + */ + const ERR_NOTOPLEVEL = '413'; + + /** + * <mask> Wildcard in toplevel domain + * + * 412 - 414 are returned by PRIVMSG to indicate that the message wasn't + * delivered for some reason. ERR_NOTOPLEVEL and ERR_WILDTOPLEVEL are errors that + * are returned when an invalid use of "PRIVMSG $<server>" or "PRIVMSG #<host>" + * is attempted. + */ + const ERR_WILDTOPLEVEL = '414'; + + /** + * <command> Unknown command + * + * Returned to a registered client to indicate that the command sent is unknown + * by the server. + */ + const ERR_UNKNOWNCOMMAND = '421'; + + /** + * MOTD File is missing + * + * Server's MOTD file could not be opened by the server. + */ + const ERR_NOMOTD = '422'; + + /** + * <server> No administrative info available + * + * Returned by a server in response to an ADMIN message when there is an error in + * finding the appropriate information. + */ + const ERR_NOADMININFO = '423'; + + /** + * File error doing <file op> on <file> + * + * Generic error message used to report a failed file operation during the + * processing of a message. + */ + const ERR_FILEERROR = '424'; + + /** + * No nickname given + * + * Returned when a nickname parameter expected for a command and isn't found. + */ + const ERR_NONICKNAMEGIVEN = '431'; + + /** + * <nick> Erroneus nickname + * + * Returned after receiving a NICK message which contains characters which do not + * fall in the defined set. See section x.x.x for details on valid nicknames. + */ + const ERR_ERRONEUSNICKNAME = '432'; + + /** + * <nick> Nickname is already in use + * + * Returned when a NICK message is processed that results in an attempt to change + * to a currently existing nickname. + */ + const ERR_NICKNAMEINUSE = '433'; + + /** + * <nick> Nickname collision KILL + * + * Returned by a server to a client when it detects a nickname collision + * (registered of a NICK that already exists by another server). + */ + const ERR_NICKCOLLISION = '436'; + + /** + * <nick> <channel> They aren't on that channel + * + * Returned by the server to indicate that the target user of the command is not + * on the given channel. + */ + const ERR_USERNOTINCHANNEL = '441'; + + /** + * <channel> You're not on that channel + * + * Returned by the server whenever a client tries to perform a channel effecting + * command for which the client isn't a member. + */ + const ERR_NOTONCHANNEL = '442'; + + /** + * <user> <channel> is already on channel + * + * Returned when a client tries to invite a user to a channel they are already + * on. + */ + const ERR_USERONCHANNEL = '443'; + + /** + * <user> User not logged in + * + * Returned by the summon after a SUMMON command for a user was unable to be + * performed since they were not logged in. + */ + const ERR_NOLOGIN = '444'; + + /** + * SUMMON has been disabled + * + * Returned as a response to the SUMMON command. Must be returned by any server + * which does not implement it. + */ + const ERR_SUMMONDISABLED = '445'; + + /** + * USERS has been disabled + * + * Returned as a response to the USERS command. Must be returned by any server + * which does not implement it. + */ + const ERR_USERSDISABLED = '446'; + + /** + * You have not registered + * + * Returned by the server to indicate that the client must be registered before + * the server will allow it to be parsed in detail. + */ + const ERR_NOTREGISTERED = '451'; + + /** + * <command> Not enough parameters + * + * Returned by the server by numerous commands to indicate to the client that it + * didn't supply enough parameters. + */ + const ERR_NEEDMOREPARAMS = '461'; + + /** + * You may not reregister + * + * Returned by the server to any link which tries to change part of the + * registered details (such as password or user details from second USER + * message). + */ + const ERR_ALREADYREGISTRED = '462'; + + /** + * Your host isn't among the privileged + * + * Returned to a client which attempts to register with a server which does not + * been setup to allow connections from the host the attempted connection is + * tried. + */ + const ERR_NOPERMFORHOST = '463'; + + /** + * Password incorrect + * + * Returned to indicate a failed attempt at registering a connection for which a + * password was required and was either not given or incorrect. + */ + const ERR_PASSWDMISMATCH = '464'; + + /** + * You are banned from this server + * + * Returned after an attempt to connect and register yourself with a server which + * has been setup to explicitly deny connections to you. + */ + const ERR_YOUREBANNEDCREEP = '465'; + + /** + * <channel> Channel key already set + */ + const ERR_KEYSET = '467'; + + /** + * <channel> Cannot join channel (+l) + */ + const ERR_CHANNELISFULL = '471'; + + /** + * <char> is unknown mode char to me + */ + const ERR_UNKNOWNMODE = '472'; + + /** + * <channel> Cannot join channel (+i) + */ + const ERR_INVITEONLYCHAN = '473'; + + /** + * <channel> Cannot join channel (+b) + */ + const ERR_BANNEDFROMCHAN = '474'; + + /** + * <channel> Cannot join channel (+k) + */ + const ERR_BADCHANNELKEY = '475'; + + /** + * Permission Denied- You're not an IRC operator + * + * Any command requiring operator privileges to operate must return this error to + * indicate the attempt was unsuccessful. + */ + const ERR_NOPRIVILEGES = '481'; + + /** + * <channel> You're not channel operator + * + * Any command requiring 'chanop' privileges (such as MODE messages) must return + * this error if the client making the attempt is not a chanop on the specified + * channel. + */ + const ERR_CHANOPRIVSNEEDED = '482'; + + /** + * You cant kill a server! + * + * Any attempts to use the KILL command on a server are to be refused and this + * error returned directly to the client. + */ + const ERR_CANTKILLSERVER = '483'; + + /** + * No O-lines for your host + * + * If a client sends an OPER message and the server has not been configured to + * allow connections from the client's host as an operator, this error must be + * returned. + */ + const ERR_NOOPERHOST = '491'; + + /** + * Unknown MODE flag + * + * Returned by the server to indicate that a MODE message was sent with a + * nickname parameter and that the a mode flag sent was not recognized. + */ + const ERR_UMODEUNKNOWNFLAG = '501'; + + /** + * Cant change mode for other users + * + * Error sent to any user trying to view or change the user mode for a user other + * than themselves. + */ + const ERR_USERSDONTMATCH = '502'; + + /** + * Dummy reply number. Not used. + */ + const RPL_NONE = '300'; + + /** + * [<reply>{<space><reply>}] + * + * Reply format used by USERHOST to list replies to the query list. The reply + * string is composed as follows <reply> = <nick>['*'] '=' <'+'|'-'><hostname> + * The '*' indicates whether the client has registered as an Operator. The '-' or + * '+' characters represent whether the client has set an AWAY message or not + * respectively. + */ + const RPL_USERHOST = '302'; + + /** + * [<nick> {<space><nick>}] + * + * Reply format used by ISON to list replies to the query list. + */ + const RPL_ISON = '303'; + + /** + * <nick> <away message> + */ + const RPL_AWAY = '301'; + + /** + * You are no longer marked as being away + */ + const RPL_UNAWAY = '305'; + + /** + * You have been marked as being away + * + * These replies are used with the AWAY command (if allowed). RPL_AWAY is sent to + * any client sending a PRIVMSG to a client which is away. RPL_AWAY is only sent + * by the server to which the client is connected. Replies RPL_UNAWAY and + * RPL_NOWAWAY are sent when the client removes and sets an AWAY message. + */ + const RPL_NOWAWAY = '306'; + + /** + * <nick> <user> <host> * <real name> + */ + const RPL_WHOISUSER = '311'; + + /** + * <nick> <server> <server info> + */ + const RPL_WHOISSERVER = '312'; + + /** + * <nick> is an IRC operator + */ + const RPL_WHOISOPERATOR = '313'; + + /** + * <nick> <integer> seconds idle + */ + const RPL_WHOISIDLE = '317'; + + /** + * <nick> End of /WHOIS list + */ + const RPL_ENDOFWHOIS = '318'; + + /** + * <nick> {[@|+]<channel><space>} + * + * Replies 311 - 313, 317 - 319 are all replies generated in response to a WHOIS + * message. Given that there are enough parameters present, the answering server + * must either formulate a reply out of the above numerics (if the query nick is + * found) or return an error reply. The '*' in RPL_WHOISUSER is there as the + * literal character and not as a wild card. For each reply set, only + * RPL_WHOISCHANNELS may appear more than once (for long lists of channel names). + * The '@' and '+' characters next to the channel name indicate whether a client + * is a channel operator or has been granted permission to speak on a moderated + * channel. The RPL_ENDOFWHOIS reply is used to mark the end of processing a + * WHOIS message. + */ + const RPL_WHOISCHANNELS = '319'; + + /** + * <nick> <user> <host> * <real name> + */ + const RPL_WHOWASUSER = '314'; + + /** + * <nick> End of WHOWAS + * + * When replying to a WHOWAS message, a server must use the replies + * RPL_WHOWASUSER, RPL_WHOISSERVER or ERR_WASNOSUCHNICK for each nickname in the + * presented list. At the end of all reply batches, there must be RPL_ENDOFWHOWAS + * (even if there was only one reply and it was an error). + */ + const RPL_ENDOFWHOWAS = '369'; + + /** + * Channel Users Name + */ + const RPL_LISTSTART = '321'; + + /** + * <channel> <# visible> <topic> + */ + const RPL_LIST = '322'; + + /** + * End of /LIST + * + * Replies RPL_LISTSTART, RPL_LIST, RPL_LISTEND mark the start, actual replies + * with data and end of the server's response to a LIST command. If there are no + * channels available to return, only the start and end reply must be sent. + */ + const RPL_LISTEND = '323'; + + /** + * <channel> <mode> <mode params> + */ + const RPL_CHANNELMODEIS = '324'; + + /** + * <channel> No topic is set + */ + const RPL_NOTOPIC = '331'; + + /** + * <channel> <topic> + * + * When sending a TOPIC message to determine the channel topic, one of two + * replies is sent. If the topic is set, RPL_TOPIC is sent back else RPL_NOTOPIC. + */ + const RPL_TOPIC = '332'; + + /** + * <channel> <nick> + * + * Returned by the server to indicate that the attempted INVITE message was + * successful and is being passed onto the end client. + */ + const RPL_INVITING = '341'; + + /** + * <user> Summoning user to IRC + * + * Returned by a server answering a SUMMON message to indicate that it is + * summoning that user. + */ + const RPL_SUMMONING = '342'; + + /** + * <version>.<debuglevel> <server> <comments> + * + * Reply by the server showing its version details. The <version> is the version + * of the software being used (including any patchlevel revisions) and the + * <debuglevel> is used to indicate if the server is running in "debug mode". The + * "comments" field may contain any comments about the version or further version + * details. + */ + const RPL_VERSION = '351'; + + /** + * <channel> <user> <host> <server> <nick> <H|G>[*][@|+] <hopcount> <real name> + */ + const RPL_WHOREPLY = '352'; + + /** + * <name> End of /WHO list + * + * The RPL_WHOREPLY and RPL_ENDOFWHO pair are used to answer a WHO message. The + * RPL_WHOREPLY is only sent if there is an appropriate match to the WHO query. + * If there is a list of parameters supplied with a WHO message, a RPL_ENDOFWHO + * must be sent after processing each list item with <name> being the item. + */ + const RPL_ENDOFWHO = '315'; + + /** + * <channel> [[@|+]<nick> [[@|+]<nick> [...]]] + */ + const RPL_NAMREPLY = '353'; + + /** + * <channel> End of /NAMES list + * + * To reply to a NAMES message, a reply pair consisting of RPL_NAMREPLY and + * RPL_ENDOFNAMES is sent by the server back to the client. If there is no + * channel found as in the query, then only RPL_ENDOFNAMES is returned. The + * exception to this is when a NAMES message is sent with no parameters and all + * visible channels and contents are sent back in a series of RPL_NAMEREPLY + * messages with a RPL_ENDOFNAMES to mark the end. + */ + const RPL_ENDOFNAMES = '366'; + + /** + * <mask> <server> <hopcount> <server info> + */ + const RPL_LINKS = '364'; + + /** + * <mask> End of /LINKS list + * + * In replying to the LINKS message, a server must send replies back using the + * RPL_LINKS numeric and mark the end of the list using an RPL_ENDOFLINKS reply.v + */ + const RPL_ENDOFLINKS = '365'; + + /** + * <channel> <banid> + */ + const RPL_BANLIST = '367'; + + /** + * <channel> End of channel ban list + * + * When listing the active 'bans' for a given channel, a server is required to + * send the list back using the RPL_BANLIST and RPL_ENDOFBANLIST messages. A + * separate RPL_BANLIST is sent for each active banid. After the banids have been + * listed (or if none present) a RPL_ENDOFBANLIST must be sent. + */ + const RPL_ENDOFBANLIST = '368'; + + /** + * <string> + */ + const RPL_INFO = '371'; + + /** + * End of /INFO list + * + * A server responding to an INFO message is required to send all its 'info' in a + * series of RPL_INFO messages with a RPL_ENDOFINFO reply to indicate the end of + * the replies. + */ + const RPL_ENDOFINFO = '374'; + + /** + * - <server> Message of the day - + */ + const RPL_MOTDSTART = '375'; + + /** + * - <text> + */ + const RPL_MOTD = '372'; + + /** + * End of /MOTD command + * + * When responding to the MOTD message and the MOTD file is found, the file is + * displayed line by line, with each line no longer than 80 characters, using + * RPL_MOTD format replies. These should be surrounded by a RPL_MOTDSTART (before + * the RPL_MOTDs) and an RPL_ENDOFMOTD (after). + */ + const RPL_ENDOFMOTD = '376'; + + /** + * You are now an IRC operator + * + * RPL_YOUREOPER is sent back to a client which has just successfully issued an + * OPER message and gained operator status. + */ + const RPL_YOUREOPER = '381'; + + /** + * <config file> Rehashing + * + * If the REHASH option is used and an operator sends a REHASH message, an + * RPL_REHASHING is sent back to the operator. + */ + const RPL_REHASHING = '382'; + + /** + * <server> <string showing server's local time> + * + * When replying to the TIME message, a server must send the reply using the + * RPL_TIME format above. The string showing the time need only contain the + * correct day and time there. There is no further requirement for the time + * string. + */ + const RPL_TIME = '391'; + + /** + * UserID Terminal Host + */ + const RPL_USERSSTART = '392'; + + /** + * %-8s %-9s %-8s + */ + const RPL_USERS = '393'; + + /** + * End of users + */ + const RPL_ENDOFUSERS = '394'; + + /** + * Nobody logged in + * + * If the USERS message is handled by a server, the replies RPL_USERSTART, + * RPL_USERS, RPL_ENDOFUSERS and RPL_NOUSERS are used. RPL_USERSSTART must be + * sent first, following by either a sequence of RPL_USERS or a single + * RPL_NOUSER. Following this is RPL_ENDOFUSERS. + */ + const RPL_NOUSERS = '395'; + + /** + * Link <version & debug level> <destination> <next server> + */ + const RPL_TRACELINK = '200'; + + /** + * Try. <class> <server> + */ + const RPL_TRACECONNECTING = '201'; + + /** + * H.S. <class> <server> + */ + const RPL_TRACEHANDSHAKE = '202'; + + /** + * ???? <class> [<client IP address in dot form>] + */ + const RPL_TRACEUNKNOWN = '203'; + + /** + * Oper <class> <nick> + */ + const RPL_TRACEOPERATOR = '204'; + + /** + * User <class> <nick> + */ + const RPL_TRACEUSER = '205'; + + /** + * Serv <class> <int>S <int>C <server> <nick!user|*!*>@<host|server> + */ + const RPL_TRACESERVER = '206'; + + /** + * <newtype> 0 <client name> + */ + const RPL_TRACENEWTYPE = '208'; + + /** + * File <logfile> <debug level> + * + * The RPL_TRACE* are all returned by the server in response to the TRACE + * message. How many are returned is dependent on the the TRACE message and + * whether it was sent by an operator or not. There is no predefined order for + * which occurs first. Replies RPL_TRACEUNKNOWN, RPL_TRACECONNECTING and + * RPL_TRACEHANDSHAKE are all used for connections which have not been fully + * established and are either unknown, still attempting to connect or in the + * process of completing the 'server handshake'. RPL_TRACELINK is sent by any + * server which handles a TRACE message and has to pass it on to another server. + * The list of RPL_TRACELINKs sent in response to a TRACE command traversing the + * IRC network should reflect the actual connectivity of the servers themselves + * along that path. RPL_TRACENEWTYPE is to be used for any connection which does + * not fit in the other categories but is being displayed anyway. + */ + const RPL_TRACELOG = '261'; + + /** + * <linkname> <sendq> <sent messages> <sent bytes> <received messages> <received + * bytes> <time open> + */ + const RPL_STATSLINKINFO = '211'; + + /** + * <command> <count> + */ + const RPL_STATSCOMMANDS = '212'; + + /** + * C <host> * <name> <port> <class> + */ + const RPL_STATSCLINE = '213'; + + /** + * N <host> * <name> <port> <class> + */ + const RPL_STATSNLINE = '214'; + + /** + * I <host> * <host> <port> <class> + */ + const RPL_STATSILINE = '215'; + + /** + * K <host> * <username> <port> <class> + */ + const RPL_STATSKLINE = '216'; + + /** + * Y <class> <ping frequency> <connect frequency> <max sendq> + */ + const RPL_STATSYLINE = '218'; + + /** + * <stats letter> End of /STATS report + */ + const RPL_ENDOFSTATS = '219'; + + /** + * L <hostmask> * <servername> <maxdepth> + */ + const RPL_STATSLLINE = '241'; + + /** + * Server Up %d days %d%02d%02d + */ + const RPL_STATSUPTIME = '242'; + + /** + * O <hostmask> * <name> + */ + const RPL_STATSOLINE = '243'; + + /** + * H <hostmask> * <servername> + */ + const RPL_STATSHLINE = '244'; + + /** + * <user mode string> + * + * To answer a query about a client's own mode, RPL_UMODEIS is sent back. + */ + const RPL_UMODEIS = '221'; + + /** + * There are <integer> users and <integer> invisible on <integer> servers + */ + const RPL_LUSERCLIENT = '251'; + + /** + * <integer> operator(s) online + */ + const RPL_LUSEROP = '252'; + + /** + * <integer> unknown connection(s) + */ + const RPL_LUSERUNKNOWN = '253'; + + /** + * <integer> channels formed + */ + const RPL_LUSERCHANNELS = '254'; + + /** + * I have <integer> clients and <integer> servers + * + * In processing an LUSERS message, the server sends a set of replies from + * RPL_LUSERCLIENT, RPL_LUSEROP, RPL_USERUNKNOWN, RPL_LUSERCHANNELS and + * RPL_LUSERME. When replying, a server must send back RPL_LUSERCLIENT and + * RPL_LUSERME. The other replies are only sent back if a non-zero count is found + * for them. + */ + const RPL_LUSERME = '255'; + + /** + * <server> Administrative info + */ + const RPL_ADMINME = '256'; + + /** + * <admin info> + */ + const RPL_ADMINLOC1 = '257'; + + /** + * <admin info> + */ + const RPL_ADMINLOC2 = '258'; + + /** + * <admin info> + * + * When replying to an ADMIN message, a server is expected to use replies + * RLP_ADMINME through to RPL_ADMINEMAIL and provide a text message with each. + * For RPL_ADMINLOC1 a description of what city, state and country the server is + * in is expected, followed by details of the university and department + * (RPL_ADMINLOC2) and finally the administrative contact for the server (an + * email address here is required) in RPL_ADMINEMAIL. + */ + const RPL_ADMINEMAIL = '259'; + + /** + * Reply code sent by the server, which can be compared to the ERR_* and + * RPL_* constants + * + * @var string + */ + protected $code; + + /** + * Reply code description sent by the server. + * + * @var string + */ + protected $description; + + /** + * Raw data sent by the server + * + * @var string + */ + protected $rawData; + + /** + * Event type + * + * @var string + */ + protected $type = 'response'; + + /** + * Sets the reply code sent by the server. + * + * @param string $code Reply code + * + * @return Phergie_Event_Response Provides a fluent interface + */ + public function setCode($code) + { + $this->code = $code; + return $this; + } + + /** + * Returns the reply code sent by the server. + * + * @return string + */ + public function getCode() + { + return $this->code; + } + + /** + * Sets the reply code description sent by the server. + * + * @param string $description Reply code description + * + * @return Phergie_Event_Response Provides a fluent interface + */ + public function setDescription($description) + { + $this->description = $description; + return $this; + } + + /** + * Returns the reply code description sent by the server. + * + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * Sets the raw buffer for the given event + * + * @param string $buffer Raw event buffer + * + * @return Phergie_Event_Response Provides a fluent interface + */ + public function setRawData($buffer) + { + $this->rawData = $buffer; + return $this; + } + + /** + * Returns the raw buffer that was sent from the server for that event + * + * @return string + */ + public function getRawData() + { + return $this->rawData; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Exception.php new file mode 100755 index 0000000000..f4d71e5319 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Exception.php @@ -0,0 +1,33 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Base class for all Phergie-related exceptions. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Exception extends Exception +{ +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Hostmask.php b/plugins/Irc/extlib/phergie/Phergie/Hostmask.php new file mode 100755 index 0000000000..b13842f53c --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Hostmask.php @@ -0,0 +1,217 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Data structure for a hostmask. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Hostmask +{ + /** + * Host + * + * @var string + */ + protected $host; + + /** + * Nick + * + * @var string + */ + protected $nick; + + /** + * Username + * + * @var string + */ + protected $username; + + /** + * Regular expression used to parse a hostmask + * + * @var string + */ + protected static $regex = '/^([^!@]+)!(?:[ni]=)?([^@]+)@([^ ]+)/'; + + /** + * Constructor to initialize components of the hostmask. + * + * @param string $nick Nick component + * @param string $username Username component + * @param string $host Host component + * + * @return void + */ + public function __construct($nick, $username, $host) + { + $this->nick = $nick; + $this->username = $username; + $this->host = $host; + } + + /** + * Returns whether a given string appears to be a valid hostmask. + * + * @param string $string Alleged hostmask string + * + * @return bool TRUE if the string appears to be a valid hostmask, FALSE + * otherwise + */ + public static function isValid($string) + { + return (preg_match(self::$regex, $string) > 0); + } + + /** + * Parses a string containing the entire hostmask into a new instance of + * this class. + * + * @param string $hostmask Entire hostmask including the nick, username, + * and host components + * + * @return Phergie_Hostmask New instance populated with data parsed from + * the provided hostmask string + * @throws Phergie_Hostmask_Exception + */ + public static function fromString($hostmask) + { + if (preg_match(self::$regex, $hostmask, $match)) { + list(, $nick, $username, $host) = $match; + return new self($nick, $username, $host); + } + + throw new Phergie_Hostmask_Exception( + 'Invalid hostmask specified: "' . $hostmask . '"', + Phergie_Hostmask_Exception::ERR_INVALID_HOSTMASK + ); + } + + /** + * Sets the hostname. + * + * @param string $host Hostname + * + * @return Phergie_Hostmask Provides a fluent interface + */ + public function setHost($host) + { + $this->host = $host; + + return $this; + } + + /** + * Returns the hostname. + * + * @return string + */ + public function getHost() + { + return $this->host; + } + + /** + * Sets the username of the user. + * + * @param string $username Username + * + * @return Phergie_Hostmask Provides a fluent interface + */ + public function setUsername($username) + { + $this->username = $username; + + return $this; + } + + /** + * Returns the username of the user. + * + * @return string + */ + public function getUsername() + { + return $this->username; + } + + /** + * Sets the nick of the user. + * + * @param string $nick User nick + * + * @return Phergie_Hostmask Provides a fluent interface + */ + public function setNick($nick) + { + $this->nick = $nick; + + return $this; + } + + /** + * Returns the nick of the user. + * + * @return string + */ + public function getNick() + { + return $this->nick; + } + + /** + * Returns the hostmask for the originating server or user. + * + * @return string + */ + public function __toString() + { + return $this->nick . '!' . $this->username . '@' . $this->host; + } + + /** + * Returns whether a given hostmask matches a given pattern. + * + * @param string $pattern Pattern using conventions of a ban mask where + * represents a wildcard + * @param string $hostmask Optional hostmask to match against, if not + * the current hostmask instance + * + * @return bool TRUE if the hostmask matches the pattern, FALSE otherwise + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_3 Examples + */ + public function matches($pattern, $hostmask = null) + { + if (!$hostmask) { + $hostmask = (string) $this; + } + + $pattern = str_replace('*', '.*', $pattern); + + return (preg_match('#^' . $pattern . '$#', $hostmask) > 0); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Hostmask/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Hostmask/Exception.php new file mode 100644 index 0000000000..590f020046 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Hostmask/Exception.php @@ -0,0 +1,37 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to hostmask handling. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Hostmask_Exception extends Phergie_Exception +{ + /** + * Error indicating that an invalid hostmask string was specified + */ + const ERR_INVALID_HOSTMASK = 1; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Abstract.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Abstract.php new file mode 100755 index 0000000000..b7105ecdb2 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Abstract.php @@ -0,0 +1,605 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Base class for plugins to provide event handler stubs and commonly needed + * functionality. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +abstract class Phergie_Plugin_Abstract +{ + /** + * Current configuration handler + * + * @var Phergie_Config + */ + protected $config; + + /** + * Plugin handler used to provide access to other plugins + * + * @var Phergie_Plugin_Handler + */ + protected $plugins; + + /** + * Current event handler instance for outgoing events + * + * @var Phergie_Event_Handler + */ + protected $events; + + /** + * Current connection instance + * + * @var Phergie_Connection + */ + protected $connection; + + /** + * Current incoming event being handled + * + * @var Phergie_Event_Request|Phergie_Event_Response + */ + protected $event; + + /** + * Plugin short name + * + * @var string + */ + protected $name; + + /** + * Returns the short name for the plugin based on its class name. + * + * @return string + */ + public function getName() + { + if (empty($this->name)) { + $this->name = substr(strrchr(get_class($this), '_'), 1); + } + return $this->name; + } + + /** + * Sets the short name for the plugin. + * + * @param string $name Plugin short name + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + */ + public function setName($name) + { + $this->name = (string) $name; + return $this; + } + + /** + * Indicates that the plugin failed to load due to an unsatisfied + * runtime requirement, such as a missing dependency. + * + * @param string $message Error message to provide more information + * about the reason for the failure + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + * @throws Phergie_Plugin_Exception Always + */ + protected function fail($message) + { + throw new Phergie_Plugin_Exception( + $message, + Phergie_Plugin_Exception::ERR_REQUIREMENT_UNSATISFIED + ); + } + + /** + * Sets the current configuration handler. + * + * @param Phergie_Config $config Configuration handler + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + */ + public function setConfig(Phergie_Config $config) + { + $this->config = $config; + return $this; + } + + /** + * Returns the current configuration handler or the value of a single + * setting from it. + * + * @param string $name Optional name of a setting for which the value + * should be returned instead of the entire configuration handler + * @param mixed $default Optional default value to return if no value + * is set for the setting indicated by $name + * + * @return Phergie_Config|mixed Configuration handler or value of the + * setting specified by $name + * @throws Phergie_Plugin_Exception No configuration handler has been set + */ + public function getConfig($name = null, $default = null) + { + if (empty($this->config)) { + throw new Phergie_Plugin_Exception( + 'Configuration handler cannot be accessed before one is set', + Phergie_Plugin_Exception::ERR_NO_CONFIG_HANDLER + ); + } + if (!is_null($name)) { + if (!isset($this->config[$name])) { + return $default; + } + return $this->config[$name]; + } + return $this->config; + } + + /** + * Sets the current plugin handler. + * + * @param Phergie_Plugin_Handler $handler Plugin handler + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + */ + public function setPluginHandler(Phergie_Plugin_Handler $handler) + { + $this->plugins = $handler; + return $this; + } + + /** + * Returns the current plugin handler. + * + * @return Phergie_Plugin_Handler + * @throws Phergie_Plugin_Exception No plugin handler has been set + */ + public function getPluginHandler() + { + if (empty($this->plugins)) { + throw new Phergie_Plugin_Exception( + 'Plugin handler cannot be accessed before one is set', + Phergie_Plugin_Exception::ERR_NO_PLUGIN_HANDLER + ); + } + return $this->plugins; + } + + /** + * Sets the current event handler. + * + * @param Phergie_Event_Handler $handler Event handler + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + */ + public function setEventHandler(Phergie_Event_Handler $handler) + { + $this->events = $handler; + return $this; + } + + /** + * Returns the current event handler. + * + * @return Phergie_Event_Handler + * @throws Phergie_Plugin_Exception No event handler has been set + */ + public function getEventHandler() + { + if (empty($this->events)) { + throw new Phergie_Plugin_Exception( + 'Event handler cannot be accessed before one is set', + Phergie_Plugin_Exception::ERR_NO_EVENT_HANDLER + ); + } + return $this->events; + } + + /** + * Sets the current connection. + * + * @param Phergie_Connection $connection Connection + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + */ + public function setConnection(Phergie_Connection $connection) + { + $this->connection = $connection; + return $this; + } + + /** + * Returns the current event connection. + * + * @return Phergie_Connection + * @throws Phergie_Plugin_Exception No connection has been set + */ + public function getConnection() + { + if (empty($this->connection)) { + throw new Phergie_Plugin_Exception( + 'Connection cannot be accessed before one is set', + Phergie_Plugin_Exception::ERR_NO_CONNECTION + ); + } + return $this->connection; + } + + /** + * Sets the current incoming event to be handled. + * + * @param Phergie_Event_Request|Phergie_Event_Response $event Event + * + * @return Phergie_Plugin_Abstract Provides a fluent interface + */ + public function setEvent($event) + { + $this->event = $event; + return $this; + } + + /** + * Returns the current incoming event to be handled. + * + * @return Phergie_Event_Request|Phergie_Event_Response + */ + public function getEvent() + { + if (empty($this->event)) { + throw new Phergie_Plugin_Exception( + 'Event cannot be accessed before one is set', + Phergie_Plugin_Exception::ERR_NO_EVENT + ); + } + return $this->event; + } + + /** + * Provides do* methods with signatures identical to those of + * Phergie_Driver_Abstract but that queue up events to be dispatched + * later. + * + * @param string $name Name of the method called + * @param array $args Arguments passed in the call + * + * @return mixed + */ + public function __call($name, array $args) + { + $subcmd = substr($name, 0, 2); + if ($subcmd == 'do') { + $type = strtolower(substr($name, 2)); + $this->getEventHandler()->addEvent($this, $type, $args); + } else if ($subcmd != 'on') { + throw new Phergie_Plugin_Exception( + 'Called invalid method ' . $name . ' in ' . get_class($this), + Phergie_Plugin_Exception::ERR_INVALID_CALL + ); + } + } + + /** + * Handler for when the plugin is initially loaded - useful for checking + * runtime dependencies or performing any setup necessary for the plugin + * to function properly such as initializing a database. + * + * @return void + */ + public function onLoad() + { + } + + /** + * Handler for when the bot initially connects to a server. + * + * @return void + */ + public function onConnect() + { + } + + /** + * Handler for each tick, a single iteration of the continuous loop + * executed by the bot to receive, handle, and send events - useful for + * repeated execution of tasks on a time interval. + * + * @return void + */ + public function onTick() + { + } + + /** + * Handler for when any event is received but has not yet been dispatched + * to the plugin handler method specific to its event type. + * + * @return bool|null|void FALSE to short-circuit further event + * processing, TRUE or NULL otherwise + */ + public function preEvent() + { + } + + /** + * Handler for after plugin processing of an event has concluded but + * before any events triggered in response by plugins are sent to the + * server - useful for modifying outgoing events before they are sent. + * + * @return void + */ + public function preDispatch() + { + } + + /** + * Handler for after any events triggered by plugins in response to a + * received event are sent to the server. + * + * @return void + */ + public function postDispatch() + { + } + + /** + * Handler for when the server prompts the client for a nick. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_1_2 + */ + public function onNick() + { + } + + /** + * Handler for when a user obtains operator privileges. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_1_5 + */ + public function onOper() + { + } + + /** + * Handler for when the client session is about to be terminated. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_1_6 + */ + public function onQuit() + { + } + + /** + * Handler for when a user joins a channel. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_1 + */ + public function onJoin() + { + } + + /** + * Handler for when a user leaves a channel. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_2 + */ + public function onPart() + { + } + + /** + * Handler for when a user or channel mode is changed. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_3 + */ + public function onMode() + { + } + + /** + * Handler for when a channel topic is viewed or changed. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_4 + */ + public function onTopic() + { + } + + /** + * Handler for when a message is received from a channel or user. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_4_1 + */ + public function onPrivmsg() + { + } + + /** + * Handler for when the bot receives a CTCP ACTION request. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.4 + */ + public function onAction() + { + } + + /** + * Handler for when a notice is received. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_4_2 + */ + public function onNotice() + { + } + + /** + * Handler for when a user is kicked from a channel. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_8 + */ + public function onKick() + { + } + + /** + * Handler for when the bot receives a ping event from a server, at + * which point it is expected to respond with a pong request within + * a short period else the server may terminate its connection. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_6_2 + */ + public function onPing() + { + } + + /** + * Handler for when the bot receives a CTCP TIME request. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.6 + */ + public function onTime() + { + } + + /** + * Handler for when the bot receives a CTCP VERSION request. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.1 + */ + public function onVersion() + { + } + + /** + * Handler for when the bot receives a CTCP PING request. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.2 + */ + public function onCtcpPing() + { + } + + /** + * Handler for when the bot receives a CTCP request of an unknown type. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html + */ + public function onCtcp() + { + } + + /** + * Handler for when a reply is received for a CTCP PING request sent by + * the bot. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.2 + */ + public function onPingReply() + { + } + + /** + * Handler for when a reply is received for a CTCP TIME request sent by + * the bot. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.6 + */ + public function onTimeReply() + { + } + + /** + * Handler for when a reply is received for a CTCP VERSION request sent + * by the bot. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html#4.1 + */ + public function onVersionReply() + { + } + + /** + * Handler for when a reply received for a CTCP request of an unknown + * type. + * + * @return void + * @link http://www.invlogic.com/irc/ctcp.html + */ + public function onCtcpReply() + { + } + + /** + * Handler for when the bot receives a kill request from a server. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_6_1 + */ + public function onKill() + { + } + + /** + * Handler for when the bot receives an invitation to join a channel. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_7 + */ + public function onInvite() + { + } + + /** + * Handler for when a server response is received to a command issued by + * the bot. + * + * @return void + * @link http://irchelp.org/irchelp/rfc/chapter6.html + */ + public function onResponse() + { + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Acl.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Acl.php new file mode 100755 index 0000000000..e209e32e14 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Acl.php @@ -0,0 +1,186 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Acl + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Acl + */ + +/** + * Provides an access control system to limit reponses to events based on + * the users who originate them. + * + * Configuration settings: + * acl.whitelist - mapping of user hostmask patterns (optionally by host) to + * plugins and methods where those plugins and methods will + * only be accessible to those users (i.e. and inaccessible + * to other users) + * acl.blacklist - mapping of user hostmasks (optionally by host) to plugins + * and methods where where those plugins and methods will be + * inaccessible to those users but accessible to other users + * acl.ops - TRUE to automatically give access to whitelisted plugins + * and methods to users with ops for events they initiate in + * channels where they have ops + * + * The whitelist and blacklist settings are formatted like so: + * <code> + * 'acl.whitelist' => array( + * 'hostname1' => array( + * 'pattern1' => array( + * 'plugins' => array( + * 'ShortPluginName' + * ), + * 'methods' => array( + * 'methodName' + * ) + * ), + * ) + * ), + * </code> + * + * The hostname array dimension is optional; if not used, rules will be + * applied across all connections. The pattern is a user hostmask pattern + * where asterisks (*) are used for wildcards. Plugins and methods do not + * need to be set to empty arrays if they are not used; simply exclude them. + * + * @category Phergie + * @package Phergie_Plugin_Acl + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Acl + * @uses Phergie_Plugin_UserInfo pear.phergie.org + */ +class Phergie_Plugin_Acl extends Phergie_Plugin_Abstract +{ + /** + * Checks for permission settings and removes the plugin if none are set. + * + * @return void + */ + public function onLoad() + { + $this->plugins->getPlugin('UserInfo'); + + if (!$this->getConfig('acl.blacklist') + && !$this->getConfig('acl.whitelist') + ) { + $this->plugins->removePlugin($this); + } + } + + /** + * Applies a set of rules to a plugin handler iterator. + * + * @param Phergie_Plugin_Iterator $iterator Iterator to receive rules + * @param array $rules Associate array containing + * either a 'plugins' key pointing to an array containing plugin + * short names to filter, a 'methods' key pointing to an array + * containing method names to filter, or both + * + * @return void + */ + protected function applyRules(Phergie_Plugin_Iterator $iterator, array $rules) + { + if (!empty($rules['plugins'])) { + $iterator->addPluginFilter($rules['plugins']); + } + if (!empty($rules['methods'])) { + $iterator->addMethodFilter($rules['methods']); + } + } + + /** + * Checks permission settings and short-circuits event processing for + * blacklisted users. + * + * @return void + */ + public function preEvent() + { + // Ignore server responses + if ($this->event instanceof Phergie_Event_Response) { + return; + } + + // Ignore server-initiated events + if (!$this->event->isFromUser()) { + return; + } + + // Get the iterator used to filter plugins when processing events + $iterator = $this->plugins->getIterator(); + + // Get configuration setting values + $whitelist = $this->getConfig('acl.whitelist', array()); + $blacklist = $this->getConfig('acl.blacklist', array()); + $ops = $this->getConfig('acl.ops', false); + + // Support host-specific lists + $host = $this->connection->getHost(); + foreach (array('whitelist', 'blacklist') as $var) { + foreach ($$var as $pattern => $rules) { + $regex = '/^' . str_replace('*', '.*', $pattern) . '$/i'; + if (preg_match($regex, $host)) { + ${$var} = ${$var}[$pattern]; + break; + } + } + } + + // Get information on the user initiating the current event + $hostmask = $this->event->getHostmask(); + $isOp = $ops + && $this->event->isInChannel() + && $this->plugins->userInfo->isOp( + $this->event->getNick(), + $this->event->getSource() + ); + + // Filter whitelisted commands if the user is not on the whitelist + if (!$isOp) { + $whitelisted = false; + foreach ($whitelist as $pattern => $rules) { + if ($hostmask->matches($pattern)) { + $whitelisted = true; + } + } + if (!$whitelisted) { + foreach ($whitelist as $pattern => $rules) { + $this->applyRules($iterator, $rules); + } + } + } + + // Filter blacklisted commands if the user is on the blacklist + $blacklisted = false; + foreach ($blacklist as $pattern => $rules) { + if ($hostmask->matches($pattern)) { + $this->applyRules($iterator, $rules); + break; + } + } + } + + /** + * Clears filters on the plugin handler iterator. + * + * @return void + */ + public function postDispatch() + { + $this->plugins->getIterator()->clearFilters(); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/AltNick.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/AltNick.php new file mode 100755 index 0000000000..16d5f9b9cc --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/AltNick.php @@ -0,0 +1,95 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_AltNick + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_AltNick + */ + +/** + * Handles switching to alternate nicks in cases where the primary nick is + * not available for use. + * + * @category Phergie + * @package Phergie_Plugin_AltNick + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_AltNick + * @uses extension spl + */ +class Phergie_Plugin_AltNick extends Phergie_Plugin_Abstract +{ + /** + * Iterator for the alternate nick list + * + * @var ArrayIterator + */ + protected $iterator; + + /** + * Initializes instance variables. + * + * @return void + */ + public function onConnect() + { + if ($this->config['altnick.nicks']) { + if (is_string($this->config['altnick.nicks'])) { + $this->config['altnick.nicks'] + = array($this->config['altnick.nicks']); + } + $this->iterator = new ArrayIterator($this->config['altnick.nicks']); + } + } + + /** + * Switches to alternate nicks as needed when nick collisions occur. + * + * @return void + */ + public function onResponse() + { + // If no alternate nick list was found, return + if (empty($this->iterator)) { + return; + } + + // If the response event indicates that the nick set is in use... + $code = $this->getEvent()->getCode(); + if ($code == Phergie_Event_Response::ERR_NICKNAMEINUSE) { + + // Attempt to move to the next nick in the alternate nick list + $this->iterator->next(); + + // If another nick is available... + if ($this->iterator->valid()) { + + // Switch to the new nick + $altNick = $this->iterator->current(); + $this->doNick($altNick); + + // Update the connection to reflect the nick change + $this->getConnection()->setNick($altNick); + + } else { + // If no other nicks are available... + + // Terminate the connection + $this->doQuit('All specified alternate nicks are in use'); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/AudioScrobbler.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/AudioScrobbler.php new file mode 100755 index 0000000000..ed4030a284 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/AudioScrobbler.php @@ -0,0 +1,191 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_AudioScrobbler + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_AudioScrobbler + */ + +/** + * Provides commands to look up information on tracks played by specific + * users on the Last.fm and Libre.fm services. + * + * TODO: Make the "nick-binding" use an SQLite database instead of having them + * hard-coded in to the config file. + * + * Configuration settings: + * "audioscrobbler.lastfm_api_key": API given by last.fm (string). + * "audioscrobbler.librefm_api_key": API key given by libre.fm (string). + * + * @category Phergie + * @package Phergie_Plugin_AudioScrobbler + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_AudioScrobbler + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Http pear.phergie.org + * @uses extension simplexml + */ +class Phergie_Plugin_AudioScrobbler extends Phergie_Plugin_Abstract +{ + /** + * Last.FM API entry point + * + * @var string + */ + protected $lastfmUrl = 'http://ws.audioscrobbler.com/2.0/'; + + /** + * Libre.FM API entry point + * + * @var string + */ + protected $librefmUrl = 'http://alpha.dev.libre.fm/2.0/'; + + /** + * Scrobbler query string for user.getRecentTracks + * + * @var string + */ + protected $query = '?method=user.getrecenttracks&user=%s&api_key=%s'; + + /** + * HTTP plugin + * + * @var Phergie_Plugin_Http + */ + protected $http; + + /** + * Check for dependencies. + * + * @return void + */ + public function onLoad() + { + if (!extension_loaded('simplexml')) { + $this->fail('SimpleXML php extension is required'); + } + + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Command'); + $this->http = $plugins->getPlugin('Http'); + } + + /** + * Command function to get a user's status on last.fm. + * + * @param string $user User identifier + * + * @return void + */ + public function onCommandLastfm($user = null) + { + if ($key = $this->config['audioscrobbler.lastfm_api_key']) { + $scrobbled = $this->getScrobbled($user, $this->lastfmUrl, $key); + if ($scrobbled) { + $this->doPrivmsg($this->getEvent()->getSource(), $scrobbled); + } + } + } + + /** + * Command function to get a user's status on libre.fm. + * + * @param string $user User identifier + * + * @return void + */ + public function onCommandLibrefm($user = null) + { + if ($key = $this->config['audioscrobbler.librefm_api_key']) { + $scrobbled = $this->getScrobbled($user, $this->librefmUrl, $key); + if ($scrobbled) { + $this->doPrivmsg($this->getEvent()->getSource(), $scrobbled); + } + } + } + + /** + * Simple Scrobbler API function to get a formatted string of the most + * recent track played by a user. + * + * @param string $user Username to look up + * @param string $url Base URL of the scrobbler service + * @param string $key Scrobbler service API key + * + * @return string Formatted string of the most recent track played + */ + public function getScrobbled($user, $url, $key) + { + $event = $this->getEvent(); + $user = $user ? $user : $event->getNick(); + $url = sprintf($url . $this->query, urlencode($user), urlencode($key)); + + $response = $this->http->get($url); + if ($response->isError()) { + $this->doNotice( + $event->getNick(), + 'Can\'t find status for ' . $user . ': HTTP ' . + $response->getCode() . ' ' . $response->getMessage() + ); + return false; + } + + $xml = $response->getContent(); + if ($xml->error) { + $this->doNotice( + $event->getNick(), + 'Can\'t find status for ' . $user . ': API ' . $xml->error + ); + return false; + } + + $recenttracks = $xml->recenttracks; + $track = $recenttracks->track[0]; + + // If the user exists but has not scrobbled anything, the result will + // be empty. + if (empty($track->name) && empty($track->artist)) { + $this->doNotice( + $event->getNick(), + 'Can\'t find track information for ' . $recenttracks['user'] + ); + return false; + } + + if (isset($track['nowplaying'])) { + $msg = sprintf( + '%s is listening to %s by %s', + $recenttracks['user'], + $track->name, + $track->artist + ); + } else { + $msg = sprintf( + '%s, %s was listening to %s by %s', + date('j M Y, H:i', (int) $track->date['uts']), + $recenttracks['user'], + $track->name, + $track->artist + ); + } + if ($track->streamable == 1) { + $msg .= ' - ' . $track->url; + } + return $msg; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/AutoJoin.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/AutoJoin.php new file mode 100755 index 0000000000..a6d1adfbb2 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/AutoJoin.php @@ -0,0 +1,69 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_AutoJoin + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_AutoJoin + */ + +/** + * Automates the process of having the bot join one or more channels upon + * connection to the server. + * + * The configuration setting autojoin.channels is used to determine which + * channels to join. This setting can point to a comma-delimited string or + * enumerated array containing a single list of channels or an associative + * array keyed by hostname where each value is a comma-delimited string or + * enumerated array containing a list of channels to join on the server + * corresponding to that hostname. + * + * @category Phergie + * @package Phergie_Plugin_AutoJoin + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_AutoJoin + */ +class Phergie_Plugin_AutoJoin extends Phergie_Plugin_Abstract +{ + /** + * Intercepts the end of the "message of the day" response and responds by + * joining the channels specified in the configuration file. + * + * @return void + */ + public function onResponse() + { + switch ($this->getEvent()->getCode()) { + case Phergie_Event_Response::RPL_ENDOFMOTD: + case Phergie_Event_Response::ERR_NOMOTD: + if ($channels = $this->config['autojoin.channels']) { + if (is_array($channels)) { + // Support autojoin.channels being in these formats: + // 'hostname' => array('#channel1', '#channel2', ... ) + $host = $this->getConnection()->getHost(); + if (isset($channels[$host])) { + $channels = $channels[$host]; + } + if (is_array($channels)) { + $channels = implode(',', $channels); + } + } + $this->doJoin($channels); + } + $this->getPluginHandler()->removePlugin($this); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Beer.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Beer.php new file mode 100644 index 0000000000..7213cdee8b --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Beer.php @@ -0,0 +1,82 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Beer + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Beer + */ + +/** + * Processes requests to serve users beer. + * + * @category Phergie + * @package Phergie_Plugin_Beer + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Beer + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Serve pear.phergie.org + */ +class Phergie_Plugin_Beer extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Command'); + $plugins->getPlugin('Serve'); + } + + /** + * Processes requests to serve a user a beer. + * + * @param string $request Request including the target and an optional + * suggestion of what beer to serve + * + * @return void + */ + public function onCommandBeer($request) + { + $format = $this->getConfig( + 'beer.format', + 'throws %target% %article% %item%.' + ); + + $this->plugins->getPlugin('Serve')->serve( + dirname(__FILE__) . '/Beer/beer.db', + 'beer', + $format, + $request + ); + } + + /** + * Adds a "booze" alias for the "beer" command. + * + * @param string $request Request including the target and an optional + * suggestion of what beer to serve + * + * @return void + */ + public function onCommandBooze($request) + { + $this->onCommandBeer($request); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Beer/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Beer/db.php new file mode 100644 index 0000000000..c7921e5193 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Beer/db.php @@ -0,0 +1,81 @@ +<?php + +if (!defined('__DIR__')) { + define('__DIR__', dirname(__FILE__)); +} + +// Create database schema +echo 'Creating database', PHP_EOL; +$file = __DIR__ . '/beer.db'; +if (file_exists($file)) { + unlink($file); +} +$db = new PDO('sqlite:' . $file); +$db->exec('CREATE TABLE beer (name VARCHAR(255), link VARCHAR(255))'); +$db->exec('CREATE UNIQUE INDEX beer_name ON beer (name)'); +$insert = $db->prepare('INSERT INTO beer (name, link) VALUES (:name, :link)'); + +// Get raw beerme.com data set +echo 'Downloading beerme.com data set', PHP_EOL; +$file = __DIR__ . '/beerlist.txt'; +if (!file_exists($file)) { + copy('http://beerme.com/beerlist.php', $file); +} +$contents = file_get_contents($file); + +// Extract data from data set +echo 'Processing beerme.com data', PHP_EOL; +$contents = tidy_repair_string($contents); +libxml_use_internal_errors(true); +$doc = new DOMDocument; +$doc->loadHTML($contents); +libxml_clear_errors(); +$xpath = new DOMXPath($doc); +$beers = $xpath->query('//table[@class="beerlist"]/tr/td[1]'); +$db->beginTransaction(); +foreach ($beers as $beer) { + $name = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $beer->textContent); + $name = preg_replace('/\h*\v+\h*/', '', $name); + $link = 'http://beerme.com' . $beer->childNodes->item(1)->getAttribute('href'); + $insert->execute(array($name, $link)); +} +$db->commit(); + +// Clean up +echo 'Cleaning up', PHP_EOL; +unlink($file); + +// Get and decompress openbeerdb.com data set +$archive = __DIR__ . '/beers.zip'; +if (!file_exists($archive)) { + echo 'Downloading openbeerdb.com data set', PHP_EOL; + copy('http://openbeerdb.googlecode.com/files/beers.zip', $archive); +} + +echo 'Decompressing openbeerdb.com data set', PHP_EOL; +$zip = new ZipArchive; +$zip->open($archive); +$zip->extractTo(__DIR__, 'beers/beers.csv'); +$zip->close(); +$file = __DIR__ . '/beers/beers.csv'; + +// Extract data from data set +echo 'Processing openbeerdb.com data', PHP_EOL; +$fp = fopen($file, 'r'); +$columns = fgetcsv($fp, 0, '|'); +$db->beginTransaction(); +while ($line = fgetcsv($fp, 0, '|')) { + $line = array_combine($columns, $line); + $name = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $line['name']); + $name = preg_replace('/\h*\v+\h*/', '', $name); + $link = null; + $insert->execute(array($name, $link)); +} +$db->commit(); +fclose($fp); + +// Clean up +echo 'Cleaning up', PHP_EOL; +unlink($file); +unlink($archive); +rmdir(__DIR__ . '/beers'); diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/BeerScore.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/BeerScore.php new file mode 100644 index 0000000000..16c671f683 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/BeerScore.php @@ -0,0 +1,156 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_BeerScore + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_BeerScore + */ + +/** + * Handles incoming requests for beer scores. + * + * @category Phergie + * @package Phergie_Plugin_BeerScore + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_BeerScore + * @uses Phergie_Plugin_Http pear.phergie.org + */ +class Phergie_Plugin_BeerScore extends Phergie_Plugin_Abstract +{ + /** + * Score result type + * + * @const string + */ + const TYPE_SCORE = 'SCORE'; + + /** + * Search result type + * + * @const string + */ + const TYPE_SEARCH = 'SEARCH'; + + /** + * Refine result type + * + * @const type + */ + const TYPE_REFINE = 'REFINE'; + + /** + * Base API URL + * + * @const string + */ + const API_BASE_URL = 'http://caedmon.net/beerscore/'; + + /** + * HTTP plugin + * + * @var Phergie_Plugin_Http + */ + protected $http; + + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->http = $this->getPluginHandler()->getPlugin('Http'); + } + + /** + * Handles beerscore commands. + * + * @param string $searchstring String to use in seaching for beer scores + * + * @return void + */ + public function onCommandBeerscore($searchstring) + { + $event = $this->getEvent(); + $target = $event->getNick(); + $source = $event->getSource(); + + $apiurl = self::API_BASE_URL . rawurlencode($searchstring); + $response = $this->http->get($apiurl); + + if ($response->isError()) { + $this->doNotice($target, 'Score not found (or failed to contact API)'); + return; + } + + $result = $response->getContent(); + switch ($result->type) { + case self::TYPE_SCORE: + // small enough number to get scores + foreach ($result->beer as $beer) { + if ($beer->score === -1) { + $score = '(not rated)'; + } else { + $score = $beer->score; + } + $str + = "{$target}: rating for {$beer->name}" . + " = {$score} ({$beer->url})"; + $this->doPrivmsg($source, $str); + } + break; + + case self::TYPE_SEARCH: + // only beer names, no scores + $str = ''; + $found = 0; + foreach ($result->beer as $beer) { + if (isset($beer->score)) { + ++$found; + if ($beer->score === -1) { + $score = '(not rated)'; + } else { + $score = $beer->score; + } + $str + = "{$target}: rating for {$beer->name}" . + " = {$score} ({$beer->url})"; + $this->doPrivmsg($source, $str); + } else { + $str .= "({$beer->name} -> {$beer->url}) "; + } + } + $foundnum = $result->num - $found; + $more = $found ? 'more ' : ''; + $str = "{$target}: {$foundnum} {$more}results... {$str}"; + $this->doPrivmsg($source, $str); + break; + + case self::TYPE_REFINE: + // Too many results; only output search URL + if ($result->num < 100) { + $num = $result->num; + } else { + $num = 'at least 100'; + } + $resultsword = (($result->num > 1) ? 'results' : 'result'); + $str = "{$target}: {$num} {$resultsword}; {$result->searchurl}"; + $this->doPrivmsg($source, $str); + break; + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Cache.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cache.php new file mode 100644 index 0000000000..2b54fab68a --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cache.php @@ -0,0 +1,106 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Cache + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cache + */ + +/** + * Implements a generic cache to be used by other plugins. + * + * @category Phergie + * @package Phergie_Plugin_Cache + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cache + */ +class Phergie_Plugin_Cache extends Phergie_Plugin_Abstract +{ + /** + * Key-value data storage for the cache + * + * @var array + */ + protected $cache = array(); + + /** + * Stores a value in the cache. + * + * @param string $key Key to associate with the value + * @param mixed $data Data to be stored + * @param int|null $ttl Time to live in seconds or NULL for forever + * @param bool $overwrite TRUE to overwrite any existing value + * associated with the specified key + * + * @return bool + */ + public function store($key, $data, $ttl = 3600, $overwrite = true) + { + if (!$overwrite && isset($this->cache[$key])) { + return false; + } + + if ($ttl) { + $expires = time()+$ttl; + } else { + $expires = null; + } + + $this->cache[$key] = array('data' => $data, 'expires' => $expires); + return true; + + } + + /** + * Fetches a previously stored value. + * + * @param string $key Key associated with the value + * + * @return mixed Stored value or FALSE if no value or an expired value + * is associated with the specified key + */ + public function fetch($key) + { + if (!isset($this->cache[$key])) { + return false; + } + + $item = $this->cache[$key]; + if (!is_null($item['expires']) && $item['expires'] < time()) { + $this->expire($key); + return false; + } + + return $item['data']; + } + + /** + * Expires a value that has exceeded its time to live. + * + * @param string $key Key associated with the value to expire + * + * @return bool + */ + protected function expire($key) + { + if (!isset($this->cache[$key])) { + return false; + } + unset($this->cache[$key]); + return true; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Caffeine.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Caffeine.php new file mode 100644 index 0000000000..2b76bd312f --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Caffeine.php @@ -0,0 +1,69 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Caffeine + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Caffeine + */ + +/** + * Processes requests to serve users caffeinated beverages. + * + * @category Phergie + * @package Phergie_Plugin_Caffeine + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Caffeine + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Serve pear.phergie.org + */ +class Phergie_Plugin_Caffeine extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Command'); + $plugins->getPlugin('Serve'); + } + + /** + * Processes requests to serve a user a caffeinated beverage. + * + * @param string $request Request including the target and an optional + * suggestion of what caffeinated beverage to serve + * + * @return void + */ + public function onCommandCaffeine($request) + { + $format = $this->getConfig( + 'beer.format', + 'throws %target% %article% %item%.' + ); + + $this->plugins->getPlugin('Serve')->serve( + dirname(__FILE__) . '/Caffeine/caffeine.db', + 'caffeine', + $format, + $request + ); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Caffeine/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Caffeine/db.php new file mode 100644 index 0000000000..cdff52fd8d --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Caffeine/db.php @@ -0,0 +1,51 @@ +<?php + +if (!defined('__DIR__')) { + define('__DIR__', dirname(__FILE__)); +} + +// Create database schema +echo 'Creating database', PHP_EOL; +$file = __DIR__ . '/caffeine.db'; +if (file_exists($file)) { + unlink($file); +} +$db = new PDO('sqlite:' . $file); +$db->exec('CREATE TABLE caffeine (name VARCHAR(255), link VARCHAR(255))'); +$db->exec('CREATE UNIQUE INDEX caffeine_name ON caffeine (name)'); +$insert = $db->prepare('INSERT INTO caffeine (name, link) VALUES (:name, :link)'); + +// Get raw energyfiend.com data set +echo 'Downloading energyfiend.com data set', PHP_EOL; +$file = __DIR__ . '/the-caffeine-database.html'; +if (!file_exists($file)) { + copy('http://www.energyfiend.com/the-caffeine-database', $file); +} +$contents = file_get_contents($file); + +// Extract data from data set +echo 'Processing energyfiend.com data', PHP_EOL; +$contents = tidy_repair_string($contents); +libxml_use_internal_errors(true); +$doc = new DOMDocument; +$doc->loadHTML($contents); +libxml_clear_errors(); +$xpath = new DOMXPath($doc); +$caffeine = $xpath->query('//table[@id="caffeinedb"]//tr/td[1]'); +$db->beginTransaction(); +foreach ($caffeine as $drink) { + $name = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $drink->textContent); + $name = preg_replace('/\s*\v+\s*/', ' ', $name); + if ($drink->firstChild->nodeName == 'a') { + $link = 'http://energyfiend.com' + . $drink->firstChild->getAttribute('href'); + } else { + $link = null; + } + $insert->execute(array($name, $link)); +} +$db->commit(); + +// Clean up +echo 'Cleaning up', PHP_EOL; +unlink($file); diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Censor.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Censor.php new file mode 100755 index 0000000000..99c69d8734 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Censor.php @@ -0,0 +1,120 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Censor + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Censor + */ + +/** + * Facilitates censoring of event content or discardment of events + * containing potentially offensive phrases depending on the value of the + * configuration setting censor.mode ('off', 'censor', 'discard'). Also + * provides access to a web service for detecting censored words so that + * other plugins may optionally integrate and adjust behavior accordingly to + * prevent discardment of events. + * + * @category Phergie + * @package Phergie_Plugin_Censor + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Censor + * @uses extension soap + */ +class Phergie_Plugin_Censor extends Phergie_Plugin_Abstract +{ + /** + * SOAP client to interact with the CDYNE Profanity Filter API + * + * @var SoapClient + */ + protected $soap; + + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + if (!extension_loaded('soap')) { + $this->fail('The PHP soap extension is required'); + } + + if (!in_array($this->config['censor.mode'], array('censor', 'discard'))) { + $this->plugins->removePlugin($this); + } + } + + /** + * Returns a "clean" version of a given string. + * + * @param string $string String to clean + * + * @return string Cleaned string + */ + public function cleanString($string) + { + if (empty($this->soap)) { + $this->soap = new SoapClient('http://ws.cdyne.com/ProfanityWS/Profanity.asmx?wsdl'); + } + $params = array('Text' => $string); + $attempts = 0; + while ($attempts < 3) { + try { + $response = $this->soap->SimpleProfanityFilter($params); + break; + } catch (SoapFault $e) { + $attempts++; + sleep(1); + } + } + if ($attempts == 3) { + return $string; + } + return $response->SimpleProfanityFilterResult->CleanText; + } + + /** + * Processes events before they are dispatched and either censors their + * content or discards them if they contain potentially offensive + * content. + * + * @return void + */ + public function preDispatch() + { + $events = $this->events->getEvents(); + + foreach ($events as $event) { + switch ($event->getType()) { + case Phergie_Event_Request::TYPE_PRIVMSG: + case Phergie_Event_Request::TYPE_ACTION: + case Phergie_Event_Request::TYPE_NOTICE: + $text = $event->getArgument(1); + $clean = $this->cleanString($text); + if ($text != $clean) { + if ($this->config['censor.mode'] == 'censor') { + $event->setArgument(1, $clean); + } else { + $this->events->removeEvent($event); + } + } + break; + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Cocktail.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cocktail.php new file mode 100644 index 0000000000..eafeb657bf --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cocktail.php @@ -0,0 +1,71 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Cocktail + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cocktail + */ + +/** + * Processes requests to serve users cocktail. + * + * @category Phergie + * @package Phergie_Plugin_Cocktail + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cocktail + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Serve pear.phergie.org + */ +class Phergie_Plugin_Cocktail extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Command'); + $plugins->getPlugin('Serve'); + } + + /** + * Processes requests to serve a user a cocktail. + * + * @param string $request Request including the target and an optional + * suggestion of what cocktail to serve + * + * @return void + */ + public function onCommandCocktail($request) + { + $format = $this->getConfig( + 'cocktail.format', + 'throws %target% %article% %item%.' + ); + + $this->plugins->getPlugin('Serve')->serve( + dirname(__FILE__) . '/Cocktail/cocktail.db', + 'cocktail', + $format, + $request, + true + ); + } +} + diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Cocktail/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cocktail/db.php new file mode 100644 index 0000000000..2e61dd0bdb --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cocktail/db.php @@ -0,0 +1,74 @@ +<?php + +if (!defined('__DIR__')) { + define('__DIR__', dirname(__FILE__)); +} + +// Create database schema +echo 'Creating database', PHP_EOL; +$file = __DIR__ . '/cocktail.db'; +if (file_exists($file)) { + unlink($file); +} +$db = new PDO('sqlite:' . $file); +$db->exec('CREATE TABLE cocktail (name VARCHAR(255), link VARCHAR(255))'); +$db->exec('CREATE UNIQUE INDEX cocktail_name ON cocktail (name)'); +$insert = $db->prepare('INSERT INTO cocktail (name, link) VALUES (:name, :link)'); + +// Get raw webtender.com data set +echo 'Downloading webtender.com data set', PHP_EOL; +$start = 1; +do { + $file = __DIR__ . '/' . $start . '.html'; + if (file_exists($file)) { + continue; + } + copy( + 'http://www.webtender.com/db/browse?level=2&dir=drinks&char=%2A&start=' . $start, + $file + ); + if (!isset($limit)) { + $contents = file_get_contents($file); + preg_match('/([0-9]+) found/', $contents, $match); + $limit = $match[1] + (150 - ($match[1] % 150)); + } + echo 'Got records ', $start, ' - ', min($start + 150, $limit), ' of ', $limit, PHP_EOL; + $start += 150; +} while ($start < $limit); + +// Extract data from data set +$start = 1; +while ($start < $limit) { + echo 'Processing ', $start, ' - ', min($start + 150, $limit), ' of ', $limit, PHP_EOL; + + $file = __DIR__ . '/' . $start . '.html'; + $contents = file_get_contents($file); + $contents = tidy_repair_string($contents); + libxml_use_internal_errors(true); + $doc = new DOMDocument; + $doc->loadHTML($contents); + libxml_clear_errors(); + $xpath = new DOMXPath($doc); + + $cocktails = $xpath->query('//li/a'); + $db->beginTransaction(); + foreach ($cocktails as $cocktail) { + $name = $cocktail->nodeValue; + $name = preg_replace('/ The$|^The |\s*\([^)]+\)\s*| #[0-9]+$/', '', $name); + $name = html_entity_decode($name); + $link = 'http://www.webtender.com' . $cocktail->getAttribute('href'); + $insert->execute(array($name, $link)); + } + $db->commit(); + + $start += 150; +} + +// Clean up +echo 'Cleaning up', PHP_EOL; +$start = 1; +while ($start < $limit) { + $file = __DIR__ . '/' . $start . '.html'; + unlink($file); + $start += 150; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Command.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Command.php new file mode 100644 index 0000000000..2058977ed5 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Command.php @@ -0,0 +1,146 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Command + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Command + */ + +/** + * Handles parsing and execution of commands sent by users via messages sent + * to channels in which the bot is present or directly to the bot. + * + * @category Phergie + * @package Phergie_Plugin_Command + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Command + * @uses extension reflection + * @uses Phergie_Plugin_Message pear.phergie.org + */ +class Phergie_Plugin_Command extends Phergie_Plugin_Abstract +{ + /** + * Prefix for command method names + * + * @var string + */ + const METHOD_PREFIX = 'onCommand'; + + /** + * Cache for command lookups used to confirm that methods exist and + * parameter counts match + * + * @var array + */ + protected $methods = array(); + + /** + * Load the Message plugin + * + * @return void + */ + public function onLoad() + { + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Message'); + } + + /** + * Populates the methods cache. + * + * @return void + */ + public function populateMethodCache() + { + foreach ($this->getPluginHandler()->getPlugins() as $plugin) { + $reflector = new ReflectionClass($plugin); + foreach ($reflector->getMethods() as $method) { + $name = $method->getName(); + if (strpos($name, self::METHOD_PREFIX) === 0 + && !isset($this->methods[$name]) + ) { + $this->methods[$name] = array( + 'total' => $method->getNumberOfParameters(), + 'required' => $method->getNumberOfRequiredParameters() + ); + } + } + } + } + + /** + * Parses a given message and, if its format corresponds to that of a + * defined command, calls the handler method for that command with any + * provided parameters. + * + * @return void + */ + public function onPrivmsg() + { + // Populate the methods cache if needed + if (empty($this->methods)) { + $this->populateMethodCache(); + } + + // Check for a prefixed message + $msg = $this->plugins->message->getMessage(); + if ($msg === false) { + return; + } + + // Separate the command and arguments + $parsed = preg_split('/\s+/', $msg, 2); + $command = strtolower(array_shift($parsed)); + $args = count($parsed) ? array_shift($parsed) : ''; + + // Resolve aliases to their corresponding commands + $aliases = $this->getConfig('command.aliases', array()); + $result = preg_grep('/^' . preg_quote($command, '/') . '$/i', array_keys($aliases)); + if ($result) { + $command = $aliases[array_shift($result)]; + } + + // Check to ensure the command exists + $method = self::METHOD_PREFIX . ucfirst($command); + if (empty($this->methods[$method])) { + return; + } + + // If no arguments are passed... + if (empty($args)) { + + // If the method requires no arguments, call it + if (empty($this->methods[$method]['required'])) { + $this->getPluginHandler()->$method(); + } + + } else { + // If arguments are passed... + + // Parse the arguments + $args = preg_split('/\s+/', $args, $this->methods[$method]['total']); + + // If the minimum arguments are passed, call the method + if ($this->methods[$method]['required'] <= count($args)) { + call_user_func_array( + array($this->getPluginHandler(), $method), + $args + ); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Cookie.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cookie.php new file mode 100644 index 0000000000..4bc2ceecbc --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cookie.php @@ -0,0 +1,69 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Cookie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cookie + */ + +/** + * Processes requests to serve users cookies. + * + * @category Phergie + * @package Phergie_Plugin_Cookie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cookie + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Serve pear.phergie.org + */ +class Phergie_Plugin_Cookie extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Command'); + $plugins->getPlugin('Serve'); + } + + /** + * Processes requests to serve a user a cookie. + * + * @param string $request Request including the target and an optional + * suggestion of what cookie to serve + * + * @return void + */ + public function onCommandCookie($request) + { + $format = $this->getConfig( + 'cookie.format', + 'throws %target% %article% %item%.' + ); + + $this->plugins->getPlugin('Serve')->serve( + dirname(__FILE__) . '/Cookie/cookie.db', + 'cookies', + $format, + $request + ); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Cookie/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cookie/db.php new file mode 100644 index 0000000000..27763159cc --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cookie/db.php @@ -0,0 +1,55 @@ +<?php + +if (!defined('__DIR__')) { + define('__DIR__', dirname(__FILE__)); +} + +// Create database schema +echo 'Creating database', PHP_EOL; +$file = __DIR__ . '/cookie.db'; +if (file_exists($file)) { + unlink($file); +} +$db = new PDO('sqlite:' . $file); +$db->exec('CREATE TABLE cookies (name VARCHAR(255), link VARCHAR(255))'); +$db->exec('CREATE UNIQUE INDEX cookie_name ON cookies (name)'); +$insert = $db->prepare('INSERT INTO cookies (name, link) VALUES (:name, :link)'); + +// Get Cookies list from http://en.wikipedia.org/wiki/List_of_cookies +echo 'Downloading data from Wikipedia', PHP_EOL; +$file = __DIR__ . '/cookieslist.txt'; +if (!file_exists($file)) { + copy('http://en.wikipedia.org/wiki/List_of_cookies', $file); +} +$contents = file_get_contents($file); + +// Extract data from data set +echo 'Processing Wikipedia\'s cookies list', PHP_EOL; +$contents = tidy_repair_string($contents); +libxml_use_internal_errors(true); +$doc = new DOMDocument; +$doc->loadHTML($contents); +libxml_clear_errors(); +$xpath = new DOMXPath($doc); + +$cookies = $xpath->query('//table[@width="90%"]/tr/td[1]/a'); + +foreach ($cookies as $cookie) { + $name = $cookie->textContent; + $name = str_replace( + array('(',')',"\n", 'cookies'), + array('','', ' ', 'cookie'), + $name + ); + $name = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $name); + $name = trim($name); + $name = rtrim($name, 's'); + + $link = 'http://en.wikipedia.org' . $cookie->getAttribute('href'); + $insert->execute(array($name, $link)); + echo 'added [' . $name . '] -> '. $link . PHP_EOL; +} + +// Clean up +echo 'Cleaning up', PHP_EOL; +unlink($file); diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Cron.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cron.php new file mode 100644 index 0000000000..d24910fa32 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Cron.php @@ -0,0 +1,147 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Cron + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cron + */ + +/** + * Allows callbacks to be registered for asynchronous execution. + * + * @category Phergie + * @package Phergie_Plugin_Cron + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Cron + */ +class Phergie_Plugin_Cron extends Phergie_Plugin_Abstract +{ + /** + * Array of all registered callbacks with delays and arguments + * + * @var array + */ + protected $callbacks; + + /** + * Returns a human-readable representation of a callback for debugging + * purposes. + * + * @param callback $callback Callback to analyze + * + * @return string|boolean String representation of the callback or FALSE + * if the specified value is not a valid callback + */ + protected function getCallbackString($callback) + { + if (!is_callable($callback)) { + return false; + } + + if (is_array($callback)) { + $class = is_string($callback[0]) ? + $callback[0] : get_class($callback[0]); + $method = $class . '::' . $callback[1]; + return $method; + } + + return $callback; + } + + /** + * Registers a callback for execution sometime after a given delay + * relative to now. + * + * @param callback $callback Callback to be registered + * @param int $delay Delay in seconds from now when the callback + * will be executed + * @param array $arguments Arguments to pass to the callback when + * it's executed + * @param bool $repeat TRUE to automatically re-register the + * callback for the same delay after it's executed, FALSE + * otherwise + * + * @return void + */ + public function registerCallback($callback, $delay, + array $arguments = array(), $repeat = false) + { + $callbackString = $this->getCallbackString($callback); + if ($callbackString === false) { + echo 'DEBUG(Cron): Invalid callback specified - ', + var_export($callback, true), PHP_EOL; + return; + } + + $registered = time(); + $scheduled = $registered + $delay; + + $this->callbacks[] = array( + 'callback' => $callback, + 'delay' => $delay, + 'arguments' => $arguments, + 'registered' => $registered, + 'scheduled' => $scheduled, + 'repeat' => $repeat, + ); + + echo 'DEBUG(Cron): Callback ', $callbackString, + ' scheduled for ', date('H:i:s', $scheduled), PHP_EOL; + } + + /** + * Handles callback execution. + * + * @return void + */ + public function onTick() + { + $time = time(); + foreach ($this->callbacks as $key => &$callback) { + $callbackString = $this->getCallbackString($callback); + + $scheduled = $callback['scheduled']; + if ($time < $scheduled) { + continue; + } + + if (empty($callback['arguments'])) { + call_user_func($callback['callback']); + } else { + call_user_func_array( + $callback['callback'], + $callback['arguments'] + ); + } + + echo 'DEBUG(Cron): Callback ', $callbackString, + ' scheduled for ', date('H:i:s', $scheduled), ',', + ' executed at ', date('H:i:s', $now), PHP_EOL; + + if ($callback['repeat']) { + $callback['scheduled'] = $time + $callback['delay']; + echo 'DEBUG(Cron): Callback ', $callbackString, + ' scheduled for ', date('H:i:s', $callback['scheduled']), + PHP_EOL; + } else { + echo 'DEBUG(Cron): Callback ', $callbackString, + ' removed from callback list', PHP_EOL; + unset($this->callbacks[$key]); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Ctcp.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Ctcp.php new file mode 100755 index 0000000000..e79fcf13ee --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Ctcp.php @@ -0,0 +1,91 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Ctcp + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Ctcp + */ + +/** + * Responds to various CTCP requests sent by the server and users. + * + * @category Phergie + * @package Phergie_Plugin_Ctcp + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Ctcp + * @link http://www.irchelp.org/irchelp/rfc/ctcpspec.html + */ +class Phergie_Plugin_Ctcp extends Phergie_Plugin_Abstract +{ + /** + * Responds to a CTCP TIME request from a user with the current local + * time. + * + * @return void + */ + public function onTime() + { + $source = $this->getEvent()->getSource(); + $this->doTime($source, strftime('%c %z')); + } + + /** + * Responds to a CTCP VERSION request from a user with the codebase + * version. + * + * @return void + */ + public function onVersion() + { + $source = $this->getEvent()->getSource(); + $msg = 'Phergie ' . Phergie_Bot::VERSION . ' (http://phergie.org)'; + $this->doVersion($source, $msg); + } + + /** + * Responds to a CTCP PING request from a user. + * + * @return void + */ + public function onCtcpPing() + { + $event = $this->getEvent(); + $source = $event->getSource(); + $handshake = $event->getArgument(1); + $this->doPing($source, $handshake); + } + + /** + * Responds to a CTCP FINGER request from a user. + * + * @return void + */ + public function onFinger() + { + $connection = $this->getConnection(); + $name = $connection->getNick(); + $realname = $connection->getRealname(); + $username = $connection->getUsername(); + + $finger + = (empty($realname) ? $realname : $name) . + ' (' . (!empty($username) ? $username : $name) . ')'; + + $this->doFinger($source, $finger); + } +} +?> diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Daddy.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Daddy.php new file mode 100644 index 0000000000..ed258e10ff --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Daddy.php @@ -0,0 +1,56 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Daddy + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Daddy + */ + +/** + * Simply responds to messages addressed to the bot that contain the phrase + * "Who's your daddy?" and related variations. + * + * @category Phergie + * @package Phergie_Plugin_Daddy + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Daddy + */ +class Phergie_Plugin_Daddy extends Phergie_Plugin_Abstract +{ + /** + * Checks messages for the question to which it should respond and sends a + * response when appropriate + * + * @return void + */ + public function onPrivmsg() + { + $config = $this->getConfig(); + $prefix = $config['command.prefix']; + $event = $this->getEvent(); + $text = $event->getArgument(1); + $target = $event->getNick(); + $source = $event->getSource(); + $pattern + = '/' . preg_quote($prefix) . + '\s*?who\'?s y(?:our|a) ([^?]+)\??/iAD'; + if (preg_match($pattern, $text, $m)) { + $msg = 'You\'re my ' . $m[1] . ', ' . $target . '!'; + $this->doPrivmsg($source, $msg); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Encoding.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Encoding.php new file mode 100644 index 0000000000..419322bd7a --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Encoding.php @@ -0,0 +1,182 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Encoding + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Encoding + */ + +/** + * Handles decoding markup entities and converting text between character + * encodings. + * + * @category Phergie + * @package Phergie_Plugin_Encoding + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Encoding + */ +class Phergie_Plugin_Encoding extends Phergie_Plugin_Abstract +{ + /** + * Lookup table for entity conversions not supported by + * html_entity_decode() + * + * @var array + * @link http://us.php.net/manual/en/function.get-html-translation-table.php#73409 + * @link http://us.php.net/manual/en/function.get-html-translation-table.php#73410 + */ + protected static $entities = array( + 'α' => 913, + ''' => 39, + 'β' => 914, + '•' => 149, + 'χ' => 935, + 'ˆ' => 94, + 'δ' => 916, + 'ε' => 917, + 'η' => 919, + 'ƒ' => 402, + 'γ' => 915, + 'ι' => 921, + 'κ' => 922, + 'λ' => 923, + '“' => 147, + '‹' => 139, + '‘' => 145, + '—' => 151, + '−' => 45, + 'μ' => 924, + '–' => 150, + 'ν' => 925, + 'œ' => 140, + 'ω' => 937, + 'ο' => 927, + 'φ' => 934, + 'π' => 928, + 'ϖ' => 982, + 'ψ' => 936, + '”' => 148, + 'ρ' => 929, + '›' => 155, + '’' => 146, + 'š' => 138, + 'σ' => 931, + 'ς' => 962, + 'τ' => 932, + 'θ' => 920, + 'ϑ' => 977, + '˜' => 126, + '™' => 153, + 'ϒ' => 978, + 'υ' => 933, + 'ξ' => 926, + 'ÿ' => 159, + 'ζ' => 918, + ); + + /** + * Decodes markup entities in a given string. + * + * @param string $string String containing markup entities + * @param string $charset Optional character set name to use in decoding + * entities, defaults to UTF-8 + * + * @return string String with markup entities decoded + */ + public function decodeEntities($string, $charset = 'UTF-8') + { + $string = str_ireplace( + array_keys(self::$entities), + array_map('chr', self::$entities), + $string + ); + $string = html_entity_decode($string, ENT_QUOTES, $charset); + $string = preg_replace( + array('/�*([0-9]+);/me', '/�*([a-f0-9]+);/mei'), + array('$this->codeToUtf(\\1)', '$this->codeToUtf(hexdec(\\1))'), + $string + ); + return $string; + } + + /** + * Converts a given unicode to its UTF-8 equivalent. + * + * @param int $code Code to convert + * @return string Character corresponding to code + */ + public function codeToUtf8($code) + { + $code = (int) $code; + switch ($code) { + // 1 byte, 7 bits + case 0: + return chr(0); + case ($code & 0x7F): + return chr($code); + + // 2 bytes, 11 bits + case ($code & 0x7FF): + return chr(0xC0 | (($code >> 6) & 0x1F)) . + chr(0x80 | ($code & 0x3F)); + + // 3 bytes, 16 bits + case ($code & 0xFFFF): + return chr(0xE0 | (($code >> 12) & 0x0F)) . + chr(0x80 | (($code >> 6) & 0x3F)) . + chr(0x80 | ($code & 0x3F)); + + // 4 bytes, 21 bits + case ($code & 0x1FFFFF): + return chr(0xF0 | ($code >> 18)) . + chr(0x80 | (($code >> 12) & 0x3F)) . + chr(0x80 | (($code >> 6) & 0x3F)) . + chr(0x80 | ($code & 0x3F)); + } + } + + /** + * Transliterates characters in a given string where possible. + * + * @param string $string String containing characters to + * transliterate + * @param string $charsetFrom Optional character set of the string, + * defaults to UTF-8 + * @param string $charsetTo Optional character set to which the string + * should be converted, defaults to ISO-8859-1 + * + * @return string String with characters transliterated or the original + * string if transliteration was not possible + */ + public function transliterate($string, $charsetFrom = 'UTF-8', $charsetTo = 'ISO-8859-1') + { + // @link http://pecl.php.net/package/translit + if (function_exists('transliterate')) { + $string = transliterate($string, array('han_transliterate', 'diacritical_remove'), $charsetFrom, $charsetTo); + } elseif (function_exists('iconv')) { + $string = iconv($charsetFrom, $charsetTo . '//TRANSLIT', $string); + } else { + // @link http://stackoverflow.com/questions/1284535/php-transliteration/1285491#1285491 + $string = preg_replace( + '~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', + '$1', + htmlentities($string, ENT_COMPAT, $charsetFrom) + ); + } + return $string; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Exception.php new file mode 100755 index 0000000000..ca4d53fede --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Exception.php @@ -0,0 +1,120 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to plugin handling. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Plugin_Exception extends Phergie_Exception +{ + /** + * Error indicating that a path containing plugins was specified, but + * did not reference a readable directory + */ + const ERR_DIRECTORY_NOT_READABLE = 1; + + /** + * Error indicating that an attempt was made to locate the class for a + * specified plugin, but the class could not be found + */ + const ERR_CLASS_NOT_FOUND = 2; + + /** + * Error indicating that an attempt was made to locate the class for a + * specified plugin, but that the found class did not extend the base + * plugin class + */ + const ERR_INCORRECT_BASE_CLASS = 3; + + /** + * Error indicating that an attempt was made to locate the class for a + * specified plugin, but that the found class cannot be instantiated + */ + const ERR_CLASS_NOT_INSTANTIABLE = 4; + + /** + * Error indicating that an attempt was made to access a plugin that had + * not been loaded and autoloading was not enabled to load it + */ + const ERR_PLUGIN_NOT_LOADED = 5; + + /** + * Error indicating that an attempt was made to access the configuration + * handler before one had been set + */ + const ERR_NO_CONFIG_HANDLER = 6; + + /** + * Error indicating that an attempt was made to access the plugin + * handler before one had been set + */ + const ERR_NO_PLUGIN_HANDLER = 7; + + /** + * Error indicating that an attempt was made to access the event + * handler before one had been set + */ + const ERR_NO_EVENT_HANDLER = 8; + + /** + * Error indicating that an attempt was made to access the connection + * before one had been set + */ + const ERR_NO_CONNECTION = 9; + + /** + * Error indicating that an attempt was made to access the current + * incoming event before one had been set + */ + const ERR_NO_EVENT = 10; + + /** + * Error indicating that a dependency of the plugin was unavailable at + * the time that an attempt was made to load it + */ + const ERR_REQUIREMENT_UNSATISFIED = 11; + + /** + * Error indicating that a call was made to a nonexistent plugin method + * and that its __call() implementation did not process that call as an + * attempt to trigger an event - this is intended to aid in debugging of + * such situations + */ + const ERR_INVALID_CALL = 12; + + /** + * Error indicating that a fatal runtime issue was encountered within a + * plugin + */ + const ERR_FATAL_ERROR = 13; + + /** + * Error indicating that a class specified to be used for iterating + * plugins cannot be found by the autoloader or does not extend + * FilterIterator + */ + const ERR_INVALID_ITERATOR_CLASS = 14; +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Google.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Google.php new file mode 100644 index 0000000000..d2a9d4dce9 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Google.php @@ -0,0 +1,459 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Google + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Google + */ + +/** + * Provides commands used to access several services offered by Google + * including search, translation, weather, maps, and currency and general + * value unit conversion. + * + * @category Phergie + * @package Phergie_Plugin_Google + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Google + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Http pear.phergie.org + * @uses Phergie_Plugin_Temperature pear.phergie.org + */ +class Phergie_Plugin_Google extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Command'); + $plugins->getPlugin('Http'); + $plugins->getPlugin('Weather'); + } + + /** + * Returns the first result of a Google search. + * + * @param string $query Search term + * + * @return void + * @todo Implement use of URL shortening here + */ + public function onCommandG($query) + { + $url = 'http://ajax.googleapis.com/ajax/services/search/web'; + $params = array( + 'v' => '1.0', + 'q' => $query + ); + $response = $this->plugins->http->get($url, $params); + $json = $response->getContent()->responseData; + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + if ($json->cursor->estimatedResultCount > 0) { + $msg + = $nick + . ': [ ' + . $json->results[0]->titleNoFormatting + . ' ] - ' + . $json->results[0]->url + . ' - More results: ' + . $json->cursor->moreResultsUrl; + $this->doPrivmsg($source, $msg); + } else { + $msg = $nick . ': No results for this query.'; + $this->doPrivmsg($source, $msg); + } + } + + /** + * Performs a Google Count search for the given term. + * + * @param string $query Search term + * + * @return void + */ + public function onCommandGc($query) + { + $url = 'http://ajax.googleapis.com/ajax/services/search/web'; + $params = array( + 'v' => '1.0', + 'q' => $query + ); + $response = $this->plugins->http->get($url, $params); + $json = $response->getContent()->responseData->cursor; + $count = $json->estimatedResultCount; + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + if ($count) { + $msg + = $nick . ': ' . + number_format($count, 0) . + ' estimated results for ' . $query; + $this->doPrivmsg($source, $msg); + } else { + $this->doPrivmsg($source, $nick . ': No results for this query.'); + } + } + + /** + * Performs a Google Translate search for the given term. + * + * @param string $from Language of the search term + * @param string $to Language to which the search term should be + * translated + * @param string $query Term to translate + * + * @return void + */ + public function onCommandGt($from, $to, $query) + { + $url = 'http://ajax.googleapis.com/ajax/services/language/translate'; + $params = array( + 'v' => '1.0', + 'q' => $query, + 'langpair' => $from . '|' . $to + ); + $response = $this->plugins->http->get($url, $params); + $json = $response->getContent(); + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + if (empty($json->responseData->translatedText)) { + $this->doPrivmsg($source, $nick . ': ' . $json->responseDetails); + } else { + $this->doPrivmsg( + $source, + $nick . ': ' . $json->responseData->translatedText + ); + } + } + + /** + * Performs a Google Weather search for the given term. + * + * @param string $location Location to search for + * @param int $offset Optional day offset from the current date + * between 0 and 3 to get the forecast + * + * @return void + */ + public function onCommandGw($location, $offset = null) + { + $url = 'http://www.google.com/ig/api'; + $params = array( + 'weather' => $location, + 'hl' => $this->getConfig('google.lang', 'en'), + 'oe' => 'UTF-8' + ); + $response = $this->plugins->http->get($url, $params); + $xml = $response->getContent()->weather; + + $event = $this->getEvent(); + $source = $event->getSource(); + $msg = ''; + if ($event->isInChannel()) { + $msg .= $event->getNick() . ': '; + } + + if (isset($xml->problem_cause)) { + $msg .= $xml->problem_cause->attributes()->data[0]; + $this->doPrivmsg($source, $msg); + return; + } + + $temperature = $this->plugins->getPlugin('Temperature'); + + $forecast = $xml->forecast_information; + $city = $forecast->city->attributes()->data[0]; + $zip = $forecast->postal_code->attributes()->data[0]; + + if ($offset !== null) { + $offset = (int) $offset; + if ($offset < 0) { + $this->doNotice($source, 'Past weather data is not available'); + return; + } elseif ($offset > 3) { + $this->doNotice($source, 'Future weather data is limited to 3 days from today'); + return; + } + + $linha = $xml->forecast_conditions[$offset]; + $low = $linha->low->attributes()->data[0]; + $high = $linha->high->attributes()->data[0]; + $units = $forecast->unit_system->attributes()->data[0]; + $condition = $linha->condition->attributes()->data[0]; + $day = $linha->day_of_week->attributes()->data[0]; + + $date = ($offset == 0) ? time() : strtotime('next ' . $day); + $day = ucfirst($day) . ' ' . date('n/j/y', $date); + + if ($units == 'US') { + $lowF = $low; + $lowC = $temperature->convertFahrenheitToCelsius($low); + $highF = $high; + $highC = $temperature->convertFahrenheitToCelsius($high); + } else { + $lowC = $low; + $lowF = $temperature->convertCelsiusToFahrenheit($lowC); + $highC = $high; + $highF = $temperature->convertCelsiusToFahrenheit($high); + } + + $msg .= 'Forecast for ' . $city . ' (' . $zip . ')' + . ' on ' . $day . ' ::' + . ' Low: ' . $lowF . 'F/' . $lowC . 'C,' + . ' High: ' . $highF . 'F/' . $highC . 'C,' + . ' Conditions: ' . $condition; + } else { + $conditions = $xml->current_conditions; + $condition = $conditions->condition->attributes()->data[0]; + $tempF = $conditions->temp_f->attributes()->data[0]; + $tempC = $conditions->temp_c->attributes()->data[0]; + $humidity = $conditions->humidity->attributes()->data[0]; + $wind = $conditions->wind_condition->attributes()->data[0]; + $time = $forecast->current_date_time->attributes()->data[0]; + $time = date('n/j/y g:i A', strtotime($time)) . ' +0000'; + + $hiF = $temperature->getHeatIndex($tempF, $humidity); + $hiC = $temperature->convertFahrenheitToCelsius($hiF); + + $msg .= 'Weather for ' . $city . ' (' . $zip . ') -' + . ' Temperature: ' . $tempF . 'F/' . $tempC . 'C,' + . ' ' . $humidity . ',' + . ' Heat Index: ' . $hiF . 'F/' . $hiC . 'C,' + . ' Conditions: ' . $condition . ',' + . ' Updated: ' . $time; + } + + $this->doPrivmsg($source, $msg); + } + + /** + * Performs a Google Maps search for the given term. + * + * @param string $location Location to search for + * + * @return void + */ + public function onCommandGmap($location) + { + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + + $location = utf8_encode($location); + $url = 'http://maps.google.com/maps/geo'; + $params = array( + 'q' => $location, + 'output' => 'json', + 'gl' => $this->getConfig('google.lang', 'en'), + 'sensor' => 'false', + 'oe' => 'utf8', + 'mrt' => 'all', + 'key' => $this->getConfig('google.key') + ); + $response = $this->plugins->http->get($url, $params); + $json = $response->getContent(); + if (!empty($json)) { + $qtd = count($json->Placemark); + if ($qtd > 1) { + if ($qtd <= 3) { + foreach ($json->Placemark as $places) { + $xy = $places->Point->coordinates; + $address = utf8_decode($places->address); + $url = 'http://maps.google.com/maps?sll=' . $xy[1] . ',' + . $xy[0] . '&z=15'; + $msg = $nick . ' -> ' . $address . ' - ' . $url; + $this->doPrivmsg($source, $msg); + } + } else { + $msg + = $nick . + ', there are a lot of places with that query.' . + ' Try to be more specific!'; + $this->doPrivmsg($source, $msg); + } + } elseif ($qtd == 1) { + $xy = $json->Placemark[0]->Point->coordinates; + $address = utf8_decode($json->Placemark[0]->address); + $url = 'http://maps.google.com/maps?sll=' . $xy[1] . ',' . $xy[0] + . '&z=15'; + $msg = $nick . ' -> ' . $address . ' - ' . $url; + $this->doPrivmsg($source, $msg); + } else { + $this->doPrivmsg($source, $nick . ', I found nothing.'); + } + } else { + $this->doPrivmsg($source, $nick . ', we have a problem.'); + } + } + + /** + * Perform a Google Convert query to convert a value from one metric to + * another. + * + * @param string $value Value to convert + * @param string $from Source metric + * @param string $to Destination metric + * + * @return void + */ + public function onCommandGconvert($value, $from, $to) + { + $url = 'http://www.google.com/finance/converter'; + $params = array( + 'a' => $value, + 'from' => $from, + 'to' => $to + ); + $response = $this->plugins->http->get($url, $params); + $contents = $response->getContent(); + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + if ($contents) { + libxml_use_internal_errors(true); + $doc = new DOMDocument; + $doc->loadHTML($contents); + libxml_clear_errors(); + $xpath = new DOMXPath($doc); + $result = $xpath->query('//div[@id="currency_converter_result"]'); + $div = $result->item(0); + $text = rtrim($div->textContent); + $this->doPrivmsg($source, $text); + } + } + + /** + * Performs a Google search to convert a value from one unit to another. + * + * @param string $query Query of the form "[quantity] [unit] to [unit2]" + * + * @return void + * + * @pluginCmd [quantity] [unit] to [unit2] Convert a value from one + * metric to another + */ + public function onCommandConvert($query) + { + $url = 'http://www.google.com/search?q=' . urlencode($query); + $response = $this->plugins->http->get($url); + $contents = $response->getContent(); + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + + if ($response->isError()) { + $code = $response->getCode(); + $message = $response->getMessage(); + $this->doNotice($nick, 'ERROR: ' . $code . ' ' . $message); + return; + } + + $start = strpos($contents, '<h3 class=r>'); + if ($start !== false) { + $end = strpos($contents, '</b>', $start); + $text = strip_tags(substr($contents, $start, $end - $start)); + $text = str_replace( + array(chr(195), chr(151), chr(160)), + array('x', '', ' '), + $text + ); + } + + if (isset($text)) { + $this->doPrivmsg($source, $nick . ': ' . $text); + } else { + $this->doNotice($nick, 'Sorry I couldn\'t find an answer.'); + } + } + + + /** + * Returns the first definition of a Google Dictionary search. + * + * @param string $query Word to get the definition + * + * @return void + * @todo Implement use of URL shortening here + */ + public function onCommandDefine($query) + { + $lang = $this->getConfig('google.lang', 'en'); + $url = 'http://www.google.com/dictionary/json'; + $params = array( + 'callback' => 'result', + 'q' => $query, + 'sl' => $lang, + 'tl' => $lang, + 'restrict' => 'pr,de' + ); + $response = $this->plugins->http->get($url, $params); + $json = $response->getContent(); + + // Remove some garbage from the JSON and decode it + $json = str_replace(array('result(', ',200,null)'), '', $json); + $json = str_replace('"', '¿?¿', $json); + $json = strip_tags(stripcslashes($json)); + $json = str_replace('"', "'", $json); + $json = str_replace('¿?¿', '"', $json); + $json = json_decode($json); + + $event = $this->getEvent(); + $source = $event->getSource(); + $nick = $event->getNick(); + if (!empty($json->webDefinitions)) { + $results = 0; + foreach ($json->primaries[0]->entries as $entry) { + if ($entry->type == 'meaning') { + $results++; + if (empty($text)) { + foreach ($entry->terms as $term) { + if ($term->type == 'text') { + $text = trim($term->text); + } + } + } + } + } + $more = $results > 1 ? ($results - 1) . ' ' : ''; + $lang_code = substr($lang, 0, 2); + $msg = $nick . ': ' . $text + . ' - You can find ' . $more . 'more results at ' + . 'http://www.google.com/dictionary' + . '?aq=f' + . '&langpair=' . $lang_code . '%7C' . $lang_code + . '&q=' . $query + . '&hl=' . $lang_code; + $this->doPrivmsg($source, $msg); + } else { + if ($lang != 'en'){ + $lang = 'en'; + $this->onCommandDefine($query); + } else { + $msg = $nick . ': No results for this query.'; + $this->doPrivmsg($source, $msg); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Handler.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Handler.php new file mode 100755 index 0000000000..c3086587be --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Handler.php @@ -0,0 +1,501 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Handles on-demand loading of, iteration over, and access to plugins. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Plugin_Handler implements IteratorAggregate, Countable +{ + /** + * Current list of plugin instances + * + * @var array + */ + protected $plugins; + + /** + * Paths in which to search for plugin class files + * + * @var array + */ + protected $paths; + + /** + * Flag indicating whether plugin classes should be instantiated on + * demand if they are requested but no instance currently exists + * + * @var bool + */ + protected $autoload; + + /** + * Phergie_Config instance that should be passed in to any plugin + * instantiated within the handler + * + * @var Phergie_Config + */ + protected $config; + + /** + * Phergie_Event_Handler instance that should be passed in to any plugin + * instantiated within the handler + * + * @var Phergie_Event_Handler + */ + protected $events; + + /** + * Name of the class to use for iterating over all currently loaded + * plugins + * + * @var string + */ + protected $iteratorClass = 'Phergie_Plugin_Iterator'; + + /** + * Constructor to initialize class properties and add the path for core + * plugins. + * + * @param Phergie_Config $config configuration to pass to any + * instantiated plugin + * @param Phergie_Event_Handler $events event handler to pass to any + * instantiated plugin + * + * @return void + */ + public function __construct( + Phergie_Config $config, + Phergie_Event_Handler $events + ) { + $this->config = $config; + $this->events = $events; + + $this->plugins = array(); + $this->paths = array(); + $this->autoload = false; + + if (!empty($config['plugins.paths'])) { + foreach ($config['plugins.paths'] as $dir => $prefix) { + $this->addPath($dir, $prefix); + } + } + + $this->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + } + + + /** + * Adds a path to search for plugin class files. Paths are searched in + * the reverse order in which they are added. + * + * @param string $path Filesystem directory path + * @param string $prefix Optional class name prefix corresponding to the + * path + * + * @return Phergie_Plugin_Handler Provides a fluent interface + * @throws Phergie_Plugin_Exception + */ + public function addPath($path, $prefix = '') + { + if (!is_readable($path)) { + throw new Phergie_Plugin_Exception( + 'Path "' . $path . '" does not reference a readable directory', + Phergie_Plugin_Exception::ERR_DIRECTORY_NOT_READABLE + ); + } + + $this->paths[] = array( + 'path' => rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR, + 'prefix' => $prefix + ); + + return $this; + } + + /** + * Returns metadata corresponding to a specified plugin. + * + * @param string $plugin Short name of the plugin class + * + * @throws Phergie_Plugin_Exception Class file can't be found + * + * @return array|boolean Associative array containing the path to the + * class file and its containing directory as well as the full + * class name + */ + public function getPluginInfo($plugin) + { + foreach (array_reverse($this->paths) as $path) { + $file = $path['path'] . $plugin . '.php'; + if (file_exists($file)) { + $path = array( + 'dir' => $path['path'], + 'file' => $file, + 'class' => $path['prefix'] . $plugin, + ); + return $path; + } + } + + // If the class can't be found, display an error + throw new Phergie_Plugin_Exception( + 'Class file for plugin "' . $plugin . '" cannot be found', + Phergie_Plugin_Exception::ERR_CLASS_NOT_FOUND + ); + } + + /** + * Adds a plugin instance to the handler. + * + * @param string|Phergie_Plugin_Abstract $plugin Short name of the + * plugin class or a plugin object + * @param array $args Optional array of + * arguments to pass to the plugin constructor if a short name is + * passed for $plugin + * + * @return Phergie_Plugin_Abstract New plugin instance + */ + public function addPlugin($plugin, array $args = null) + { + // If a short plugin name is specified... + if (is_string($plugin)) { + $index = strtolower($plugin); + if (isset($this->plugins[$index])) { + return $this->plugins[$index]; + } + + // Attempt to locate and load the class + $info = $this->getPluginInfo($plugin); + $file = $info['file']; + $class = $info['class']; + include_once $file; + if (!class_exists($class, false)) { + throw new Phergie_Plugin_Exception( + 'File "' . $file . '" does not contain class "' . $class . '"', + Phergie_Plugin_Exception::ERR_CLASS_NOT_FOUND + ); + } + + // Check to ensure the class is a plugin class + if (!is_subclass_of($class, 'Phergie_Plugin_Abstract')) { + $msg + = 'Class for plugin "' . $plugin . + '" does not extend Phergie_Plugin_Abstract'; + throw new Phergie_Plugin_Exception( + $msg, + Phergie_Plugin_Exception::ERR_INCORRECT_BASE_CLASS + ); + } + + // Check to ensure the class can be instantiated + $reflection = new ReflectionClass($class); + if (!$reflection->isInstantiable()) { + throw new Phergie_Plugin_Exception( + 'Class for plugin "' . $plugin . '" cannot be instantiated', + Phergie_Plugin_Exception::ERR_CLASS_NOT_INSTANTIABLE + ); + } + + // If the class is found, instantiate it + if (!empty($args)) { + $instance = $reflection->newInstanceArgs($args); + } else { + $instance = new $class; + } + + // Store the instance + $this->plugins[$index] = $instance; + $plugin = $instance; + + } elseif ($plugin instanceof Phergie_Plugin_Abstract) { + // If a plugin instance is specified... + + // Add the plugin instance to the list of plugins + $this->plugins[strtolower($plugin->getName())] = $plugin; + } + + // Configure and initialize the instance + $plugin->setPluginHandler($this); + $plugin->setConfig($this->config); + $plugin->setEventHandler($this->events); + $plugin->onLoad(); + + return $plugin; + } + + /** + * Adds multiple plugin instances to the handler. + * + * @param array $plugins List of elements where each is of the form + * 'ShortPluginName' or array('ShortPluginName', array($arg1, + * ..., $argN)) + * + * @return Phergie_Plugin_Handler Provides a fluent interface + */ + public function addPlugins(array $plugins) + { + foreach ($plugins as $plugin) { + if (is_array($plugin)) { + $this->addPlugin($plugin[0], $plugin[1]); + } else { + $this->addPlugin($plugin); + } + } + + return $this; + } + + /** + * Removes a plugin instance from the handler. + * + * @param string|Phergie_Plugin_Abstract $plugin Short name of the + * plugin class or a plugin object + * + * @return Phergie_Plugin_Handler Provides a fluent interface + */ + public function removePlugin($plugin) + { + if ($plugin instanceof Phergie_Plugin_Abstract) { + $plugin = $plugin->getName(); + } + $plugin = strtolower($plugin); + + unset($this->plugins[$plugin]); + + return $this; + } + + /** + * Returns the corresponding instance for a specified plugin, loading it + * if it is not already loaded and autoloading is enabled. + * + * @param string $name Short name of the plugin class + * + * @return Phergie_Plugin_Abstract Plugin instance + */ + public function getPlugin($name) + { + // If the plugin is loaded, return the instance + $lower = strtolower($name); + if (isset($this->plugins[$lower])) { + return $this->plugins[$lower]; + } + + // If autoloading is disabled, display an error + if (!$this->autoload) { + $msg + = 'Plugin "' . $name . '" has been requested, ' . + 'is not loaded, and autoload is disabled'; + throw new Phergie_Plugin_Exception( + $msg, + Phergie_Plugin_Exception::ERR_PLUGIN_NOT_LOADED + ); + } + + // If autoloading is enabled, attempt to load the plugin + $plugin = $this->addPlugin($name); + + // Return the added plugin + return $plugin; + } + + /** + * Returns the corresponding instances for multiple specified plugins, + * loading them if they are not already loaded and autoloading is + * enabled. + * + * @param array $names Optional list of short names of the plugin + * classes to which the returned plugin list will be limited, + * defaults to all presently loaded plugins + * + * @return array Associative array mapping lowercased plugin class short + * names to corresponding plugin instances + */ + public function getPlugins(array $names = array()) + { + if (empty($names)) { + return $this->plugins; + } + + $plugins = array(); + foreach ($names as $name) { + $plugins[strtolower($name)] = $this->getPlugin($name); + } + return $plugins; + } + + /** + * Returns whether or not at least one instance of a specified plugin + * class is loaded. + * + * @param string $name Short name of the plugin class + * + * @return bool TRUE if an instance exists, FALSE otherwise + */ + public function hasPlugin($name) + { + return isset($this->plugins[strtolower($name)]); + } + + /** + * Sets a flag used to determine whether plugins should be loaded + * automatically if they have not been explicitly loaded. + * + * @param bool $flag TRUE to have plugins autoload (default), FALSE + * otherwise + * + * @return Phergie_Plugin_Handler Provides a fluent interface. + */ + public function setAutoload($flag = true) + { + $this->autoload = $flag; + + return $this; + } + + /** + * Returns the value of a flag used to determine whether plugins should + * be loaded automatically if they have not been explicitly loaded. + * + * @return bool TRUE if autoloading is enabled, FALSE otherwise + */ + public function getAutoload() + { + return $this->autoload; + } + + /** + * Allows plugin instances to be accessed as properties of the handler. + * + * @param string $name Short name of the plugin + * + * @return Phergie_Plugin_Abstract Requested plugin instance + */ + public function __get($name) + { + return $this->getPlugin($name); + } + + /** + * Allows plugin instances to be detected as properties of the handler. + * + * @param string $name Short name of the plugin + * + * @return bool TRUE if the plugin is loaded, FALSE otherwise + */ + public function __isset($name) + { + return $this->hasPlugin($name); + } + + /** + * Allows plugin instances to be removed as properties of handler. + * + * @param string $name Short name of the plugin + * + * @return void + */ + public function __unset($name) + { + $this->removePlugin($name); + } + + /** + * Returns an iterator for all currently loaded plugin instances. + * + * @return ArrayIterator + */ + public function getIterator() + { + return new $this->iteratorClass( + new ArrayIterator($this->plugins) + ); + } + + /** + * Sets the iterator class used for all currently loaded plugin + * instances. + * + * @param string $class Name of a class that extends FilterIterator + * + * @return Phergie_Plugin_Handler Provides a fluent API + * @throws Phergie_Plugin_Exception Class cannot be found or is not an + * FilterIterator-based class + */ + public function setIteratorClass($class) + { + $valid = true; + + try { + $error_reporting = error_reporting(0); // ignore autoloader errors + $r = new ReflectionClass($class); + error_reporting($error_reporting); + if (!$r->isSubclassOf('FilterIterator')) { + $message = 'Class ' . $class . ' is not a subclass of FilterIterator'; + $valid = false; + } + } catch (ReflectionException $e) { + $message = $e->getMessage(); + $valid = false; + } + + if (!$valid) { + throw new Phergie_Plugin_Exception( + $message, + Phergie_Plugin_Exception::ERR_INVALID_ITERATOR_CLASS + ); + } + + $this->iteratorClass = $class; + } + + /** + * Proxies method calls to all plugins containing the called method. + * + * @param string $name Name of the method called + * @param array $args Arguments passed in the method call + * + * @return void + */ + public function __call($name, array $args) + { + foreach ($this->getIterator() as $plugin) { + call_user_func_array(array($plugin, $name), $args); + } + return true; + } + + /** + * Returns the number of plugins contained within the handler. + * + * @return int Plugin count + */ + public function count() + { + return count($this->plugins); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Help.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Help.php new file mode 100644 index 0000000000..4c2c49b314 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Help.php @@ -0,0 +1,276 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Help + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Help + */ + +/** + * Provides access to descriptions of plugins and the commands they provide. + * + * @category Phergie + * @package Phergie_Plugin_Help + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Help + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Help extends Phergie_Plugin_Abstract +{ + /** + * Registry of help data indexed by plugin name + * + * @var array + */ + protected $registry; + + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + } + + /** + * Creates a registry of plugin metadata on connect. + * + * @return void + */ + public function onConnect() + { + $this->populateRegistry(); + } + + /** + * Creates a registry of plugin metadata. + * + * @return void + */ + public function populateRegistry() + { + $this->registry = array(); + + foreach ($this->plugins as $plugin) { + $class = new ReflectionClass($plugin); + $pluginName = strtolower($plugin->getName()); + + // Parse the plugin description + $docblock = $class->getDocComment(); + $annotations = $this->getAnnotations($docblock); + if (isset($annotations['pluginDesc'])) { + $pluginDesc = implode(' ', $annotations['pluginDesc']); + } else { + $pluginDesc = $this->parseShortDescription($docblock); + } + $this->registry[$pluginName] = array( + 'desc' => $pluginDesc, + 'cmds' => array() + ); + + // Parse command method descriptions + $methodPrefix = Phergie_Plugin_Command::METHOD_PREFIX; + $methodPrefixLength = strlen($methodPrefix); + foreach ($class->getMethods() as $method) { + if (strpos($method->getName(), $methodPrefix) !== 0) { + continue; + } + + $cmd = strtolower(substr($method->getName(), $methodPrefixLength)); + $docblock = $method->getDocComment(); + $annotations = $this->getAnnotations($docblock); + + if (isset($annotations['pluginCmd'])) { + $cmdDesc = implode(' ', $annotations['pluginCmd']); + } else { + $cmdDesc = $this->parseShortDescription($docblock); + } + + $cmdParams = array(); + if (!empty($annotations['param'])) { + foreach ($annotations['param'] as $param) { + $match = null; + if (preg_match('/\h+\$([^\h]+)\h+/', $param, $match)) { + $cmdParams[] = $match[1]; + } + } + } + + $this->registry[$pluginName]['cmds'][$cmd] = array( + 'desc' => $cmdDesc, + 'params' => $cmdParams + ); + } + + if (empty($this->registry[$pluginName]['cmds'])) { + unset($this->registry[$pluginName]); + } + } + } + + /** + * Displays a list of plugins with help information available or + * commands available for a specific plugin. + * + * @param string $query Optional short name of a plugin for which commands + * should be returned or a command; if unspecified, a list of + * plugins with help information available is returned + * + * @return void + */ + public function onCommandHelp($query = null) + { + if ($query == 'refresh') { + $this->populateRegistry(); + } + + $nick = $this->getEvent()->getNick(); + $delay = $this->getConfig('help.delay', 2); + + // Handle requests for a plugin list + if (!$query) { + $msg = 'These plugins have help information available: ' + . implode(', ', array_keys($this->registry)); + $this->doPrivmsg($nick, $msg); + return; + } + + // Handle requests for plugin information + $query = strtolower($query); + if (isset($this->registry[$query]) + && empty($this->registry[$query]['cmds'][$query])) { + $msg = $query . ' - ' . $this->registry[$query]['desc']; + $this->doPrivmsg($nick, $msg); + + $msg = 'Available commands - ' + . implode(', ', array_keys($this->registry[$query]['cmds'])); + $this->doPrivmsg($nick, $msg); + + if ($this->getConfig('command.prefix')) { + $msg + = 'Note that these commands must be prefixed with "' + . $this->getConfig('command.prefix') + . '" (without quotes) when issued in a public channel.'; + $this->doPrivmsg($nick, $msg); + } + + return; + } + + // Handle requests for command information + foreach ($this->registry as $plugin => $data) { + if (empty($data['cmds'])) { + continue; + } + + $result = preg_grep('/^' . $query . '$/i', array_keys($data['cmds'])); + if (!$result) { + continue; + } + + $cmd = $data['cmds'][array_shift($result)]; + $msg = $query; + if (!empty($cmd['params'])) { + $msg .= ' [' . implode('] [', $cmd['params']) . ']'; + } + $msg .= ' - ' . $cmd['desc']; + $this->doPrivmsg($nick, $msg); + } + } + + /** + * Parses and returns the short description from a docblock. + * + * @param string $docblock Docblock comment code + * + * @return string Short description (i.e. content from the start of the + * docblock up to the first double-newline) + */ + protected function parseShortDescription($docblock) + { + $desc = preg_replace( + array('#^\h*\*\h*#m', '#^/\*\*\h*\v+\h*#', '#(?:\r?\n){2,}.*#s', '#\s*\v+\s*#'), + array('', '', '', ' '), + $docblock + ); + return $desc; + } + + /** + * Taken from PHPUnit/Util/Test.php and modified to fix an issue with + * tag content spanning multiple lines. + * + * PHPUnit + * + * Copyright (c) 2002-2010, Sebastian Bergmann <sb@sebastian-bergmann.de>. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * 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. + * + * * Neither the name of Sebastian Bergmann nor the names of his + * 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. + * + * @param string $docblock docblock to parse + * + * @return array + */ + protected function getAnnotations($docblock) + { + $annotations = array(); + + $regex = '/@(?P<name>[A-Za-z_-]+)(?:[ \t]+(?P<value>.*?))?(?:\*\/|\* @)/ms'; + + if (preg_match_all($regex, $docblock, $matches)) { + $numMatches = count($matches[0]); + + for ($i = 0; $i < $numMatches; ++$i) { + $annotation = $matches['value'][$i]; + $annotation = preg_replace('/\s*\v+\s*\*\s*/', ' ', $annotation); + $annotation = rtrim($annotation); + $annotations[$matches['name'][$i]][] = $annotation; + } + } + + return $annotations; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Http.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Http.php new file mode 100644 index 0000000000..7c5c8704c2 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Http.php @@ -0,0 +1,284 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Http + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Http + */ + +/** + * Provides an HTTP client for plugins to use in contacting web services or + * retrieving feeds or web pages. + * + * @category Phergie + * @package Phergie_Plugin_Http + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Http + * @uses extension simplexml optional + * @uses extension json optional + */ +class Phergie_Plugin_Http extends Phergie_Plugin_Abstract +{ + /** + * Response to the last executed HTTP request + * + * @var Phergie_Plugin_Http_Response + */ + protected $response; + + /** + * Mapping of content types to handlers for them + * + * @var array + */ + protected $handlers; + + /** + * Initializes the handler lookup table. + * + * @return void + */ + public function onLoad() + { + $this->handlers = array( + '(?:application|text)/xml(?:;.*)?' + => 'simplexml_load_string', + '(?:(?:application|text)/(?:x-)?json)|text/javascript.*' + => 'json_decode', + ); + + if (is_array($this->config['http.handlers'])) { + $this->handlers = array_merge( + $this->handlers, + $this->config['http.handlers'] + ); + } + } + + /** + * Sets a handler callback for a content type, which is called when a + * response of that content type is received to perform any needed + * transformations on the response body content before storing it in the + * response object. Note that the calling plugin is responsible for + * indicating any dependencies related to specified handler callbacks. + * + * @param string $type PCRE regular expression (without delimiters) that + * matches one or more MIME types + * @param callback $callback Callback to execute when a response of a content + * type matched by $type is encountered + * + * @return Phergie_Plugin_Http Provides a fluent interface + */ + public function setHandler($type, $callback) + { + if (!is_callable($callback)) { + throw new Phergie_Plugin_Exception( + 'Invalid callback specified', + Phergie_Plugin_Exception::ERR_FATAL_ERROR + ); + } + + $this->handlers[$type] = $callback; + + return $this; + } + + /** + * Supporting method that parses the status line of an HTTP response + * message. + * + * @param string $status Status line + * + * @return array Associative array containing the HTTP version, response + * code, and response description + */ + protected function parseStatusLine($status) + { + $parts = explode(' ', $status, 3); + $parsed = array( + 'version' => str_replace('HTTP/', '', $parts[0]), + 'code' => $parts[1], + 'message' => rtrim($parts[2]) + ); + return $parsed; + } + + /** + * Supporting method that acts as an error handler to intercept HTTP + * responses resulting in PHP-level errors. + * + * @param int $errno Level of the error raised + * @param string $errstr Error message + * @param string $errfile Name of the file in which the error was raised + * @param string $errline Line number on which the error was raised + * + * @return bool Always returns TRUE to allow normal execution to + * continue once this method terminates + */ + public function handleError($errno, $errstr, $errfile, $errline) + { + if ($httperr = strstr($errstr, 'HTTP/')) { + $parts = $this->parseStatusLine($httperr); + $this->response + ->setCode($parts['code']) + ->setMessage($parts['message']); + } + + return true; + } + + /** + * Supporting method that executes a request and handles the response. + * + * @param string $url URL to request + * @param array $context Associative array of stream context parameters + * + * @return Phergie_Plugin_Http_Response Object representing the response + * resulting from the request + */ + public function request($url, array $context) + { + $this->response = new Phergie_Plugin_Http_Response; + + $url = (string) $url; + $context = stream_context_create(array('http' => $context)); + + set_error_handler(array($this, 'handleError'), E_WARNING); + $stream = fopen($url, 'r', false, $context); + if ($stream) { + $meta = stream_get_meta_data($stream); + $status = $this->parseStatusLine($meta['wrapper_data'][0]); + $code = $status['code']; + $message = $status['message']; + $headers = array(); + foreach (array_slice($meta['wrapper_data'], 1) as $header) { + if (!strpos($header, ':')) { + continue; + } + list($name, $value) = explode(': ', $header, 2); + $headers[$name] = $value; + } + unset($meta['wrapper_data']); + + $this->response + ->setCode($code) + ->setMessage($message) + ->setHeaders($headers) + ->setMeta($meta); + + $body = stream_get_contents($stream); + $type = $this->response->getHeaders('content-type'); + foreach ($this->handlers as $expr => $handler) { + if (preg_match('#^' . $expr . '$#i', $type)) { + $handled = call_user_func($handler, $body); + if (!empty($handled)) { + $body = $handled; + } + } + } + + $this->response->setContent($body); + } + restore_error_handler(); + + return $this->response; + } + + /** + * Performs a GET request. + * + * @param string $url URL for the request + * @param array $query Optional associative array of parameters + * constituting the URL query string if $url has none + * @param array $context Optional associative array of additional stream + * context parameters + * + * @return Phergie_Plugin_Http_Response Received response data + */ + public function get($url, array $query = array(), array $context = array()) + { + if (!empty($query)) { + $url .= '?' . http_build_query($query); + } + + $context['method'] = 'GET'; + + return $this->request($url, $context); + } + + /** + * Performs a HEAD request. + * + * @param string $url URL for the request + * @param array $query Optional associative array of parameters + * constituting the URL query string if $url has none + * @param array $context Optional associative array of additional stream + * context parameters + * + * @return Phergie_Plugin_Http_Response Received response data + */ + public function head($url, array $query = array(), array $context = array()) + { + if (!empty($query)) { + $url .= '?' . http_build_query($query); + } + + $context['method'] = 'HEAD'; + + return $this->request($url, $context); + } + + /** + * Performs a POST request. + * + * @param string $url URL for the request + * @param array $query Optional associative array of parameters + * constituting the URL query string if $url has none + * @param array $post Optional associative array of parameters + * constituting the POST request body if it is using the + * traditional URL-encoded format + * @param array $context Optional associative array of additional stream + * context parameters + * + * @return Phergie_Plugin_Http_Response Received response data + */ + public function post($url, array $query = array(), + array $post = array(), array $context = array() + ) { + if (!empty($query)) { + $url .= '?' . http_build_query($query); + } + + $context['method'] = 'POST'; + + if (!empty($post) + && (!empty($context['header']) + xor stripos($context['header'], 'Content-Type')) + ) { + if (!empty($context['header'])) { + $context['header'] .= "\r\n"; + } else { + $context['header'] = ''; + } + $context['header'] .= + 'Content-Type: application/x-www-form-urlencoded'; + $context['content'] = http_build_query($post); + } + + return $this->request($url, $context); + } +} \ No newline at end of file diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Http/Response.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Http/Response.php new file mode 100644 index 0000000000..b9e377cf64 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Http/Response.php @@ -0,0 +1,281 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Http + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Http + */ + +/** + * Data structure for HTTP response information. + * + * @category Phergie + * @package Phergie_Plugin_Http + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Http + */ +class Phergie_Plugin_Http_Response +{ + /** + * HTTP response code or 0 if no HTTP response was received + * + * @var string + */ + protected $code; + + /** + * HTTP response strings + * + * @var array + */ + protected static $codeStrings = array( + 0 => 'No Response', + 100 => 'Continue', + 200 => 'OK', + 201 => 'Created', + 204 => 'No Content', + 206 => 'Partial Content', + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 303 => 'See Other', + 304 => 'Not Modified', + 307 => 'Temporary Redirect', + 400 => 'Bad Request', + 401 => 'Unauthorized', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 408 => 'Request Timeout', + 410 => 'Gone', + 413 => 'Request Entity Too Large', + 414 => 'Request URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Requested Range Not Satisfiable', + 417 => 'Expectation Failed', + 500 => 'Internal Server Error', + 501 => 'Method Not Implemented', + 503 => 'Service Unavailable', + 506 => 'Variant Also Negotiates' + ); + + /** + * Description of the HTTP response code or the error message if no HTTP + * response was received + * + * @var string + */ + protected $message; + + /** + * Content of the response body, decoded for supported content types + * + * @var mixed + */ + protected $content; + + /** + * Associative array mapping response header names to their values + * + * @var array + */ + protected $headers; + + /** + * Associative array containing other metadata about the response + * + * @var array + */ + protected $meta; + + /** + * Sets the HTTP response code. + * + * @param string $code Response code + * + * @return Phergie_Plugin_Http_Response Provides a fluent interface + */ + public function setCode($code) + { + $this->code = $code; + return $this; + } + + /** + * Returns the HTTP response code. + * + * @return string Response code + */ + public function getCode() + { + return $this->code; + } + + /** + * Returns the HTTP response code text. + * + * @return string Response code text + */ + public function getCodeAsString() + { + $code = $this->code; + + if (!isset(self::$codeStrings[$code])) { + return 'Unkown HTTP Status'; + } + + return self::$codeStrings[$code]; + } + + /** + * Returns whether the response indicates a client- or server-side error. + * + * @return bool TRUE if the response indicates an error, FALSE otherwise + */ + public function isError() + { + switch (substr($this->code, 0, 1)) { + case '0': + case '4': + case '5': + return true; + default: + return false; + } + } + + /** + * Sets the HTTP response description. + * + * @param string $message Response description + * + * @return Phergie_Plugin_Http_Response Provides a fluent interface + */ + public function setMessage($message) + { + $this->message = $message; + return $this; + } + + /** + * Returns the HTTP response description. + * + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * Sets the content of the response body. + * + * @param mixed $content Response body content + * + * @return Phergie_Plugin_Http_Response Provides a fluent interface + */ + public function setContent($content) + { + $this->content = $content; + return $this; + } + + /** + * Returns the content of the response body. + * + * @return mixed Response body content, decoded for supported content + * types + */ + public function getContent() + { + return $this->content; + } + + /** + * Sets the response headers. + * + * @param array $headers Associative array of response headers indexed + * by header name + * + * @return Phergie_Plugin_Http_Response Provides a fluent interface + */ + public function setHeaders(array $headers) + { + $names = array_map('strtolower', array_keys($headers)); + $values = array_values($headers); + $this->headers = array_combine($names, $values); + return $this; + } + + /** + * Returns all response headers or the value of a single specified + * response header. + * + * @param string $name Optional name of a single header for which the + * associated value should be returned + * + * @return array|string Associative array of all header values, a string + * containing the value of the header indicated by $name if one + * is set, or null if one is not + */ + public function getHeaders($name = null) + { + if ($name) { + $name = strtolower($name); + if (empty($this->headers[$name])) { + return null; + } + return $this->headers[$name]; + } + return $this->headers; + } + + /** + * Sets the response metadata. + * + * @param array $meta Associative array of response metadata + * + * @return Phergie_Plugin_Http_Response Provides a fluent interface + */ + public function setMeta(array $meta) + { + $this->meta = $meta; + return $this; + } + + /** + * Returns all metadata or the value of a single specified metadatum. + * + * @param string $name Optional name of a single metadatum for which the + * associated value should be returned + * + * @return array|string|null Associative array of all metadata values, a + * string containing the value of the metadatum indicated by + * $name if one is set, or null if one is not + */ + public function getMeta($name = null) + { + if ($name) { + if (empty($this->meta[$name])) { + return null; + } + return $this->meta[$name]; + } + return $this->meta; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Ideone.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Ideone.php new file mode 100644 index 0000000000..3af88dda94 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Ideone.php @@ -0,0 +1,180 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Ideone + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Ideone + */ + +/** + * Interfaces with ideone.com to execute code and return the result. + * + * @category Phergie + * @package Phergie_Plugin_Ideone + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Ideone + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Ideone extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->plugins->getPlugin('Command'); + } + + /** + * Checks a service response for an error, sends a notice to the event + * source if an error has occurred, and returns whether an error was found. + * + * @param array $result Associative array representing the service response + * + * @return boolean TRUE if an error is found, FALSE otherwise + */ + protected function isError($result) + { + if ($result['error'] != 'OK') { + $this->doNotice($this->event->getNick(), 'ideone error: ' . $result['error']); + return true; + } + return false; + } + + /** + * Executes a source code sequence in a specified language and returns + * the result. + * + * @param string $language Programming language the source code is in + * @param string $code Source code to execute + * + * @return void + */ + public function onCommandIdeone($language, $code) + { + $source = $this->event->getSource(); + $nick = $this->event->getNick(); + + // Get authentication credentials + $user = $this->getConfig('ideone.user', 'test'); + $pass = $this->getConfig('ideone.pass', 'test'); + + // Normalize the command parameters + $language = strtolower($language); + + // Massage PHP code to allow for convenient shorthand + if ($language == 'php') { + if (!preg_match('/^<\?(?:php)?/', $code)) { + $code = '<?php ' . $code; + } + switch (substr($code, -1)) { + case '}': + case ';': + break; + default: + $code .= ';'; + break; + } + } + + // Identify the language to use + $client = new SoapClient('http://ideone.com/api/1/service.wsdl'); + $response = $client->getLanguages($user, $pass); + if ($this->isError($response)) { + return; + } + $languageLength = strlen($language); + foreach ($response['languages'] as $languageId => $languageName) { + if (strncasecmp($language, $languageName, $languageLength) == 0) { + break; + } + } + + // Send the paste data + $response = $client->createSubmission( + $user, + $pass, + $code, + $languageId, + null, // string input - data from stdin + true, // boolean run - TRUE to execute the code + false // boolean private - FALSE to make the paste public + ); + if ($this->isError($response)) { + return; + } + $link = $response['link']; + + // Wait until the paste data is processed or the service fails + $attempts = $this->getConfig('ideone.attempts', 10); + foreach (range(1, $attempts) as $attempt) { + $response = $client->getSubmissionStatus($user, $pass, $link); + if ($this->isError($response)) { + return; + } + if ($response['status'] == 0) { + $result = $response['result']; + break; + } else { + $result = null; + sleep(1); + } + } + if ($result == null) { + $this->doNotice($nick, 'ideone error: Timed out'); + return; + } + if ($result != 15) { + $this->doNotice($nick, 'ideone error: Status code ' . $result); + return; + } + + // Get details for the created paste + $response = $client->getSubmissionDetails( + $user, + $pass, + $link, + false, // boolean withSource - FALSE to not return the source code + false, // boolean withInput - FALSE to not return stdin data + true, // boolean withOutput - TRUE to include output + true, // boolean withStderr - TRUE to return stderr data + false // boolean withCmpinfo - TRUE to return compilation info + ); + if ($this->isError($response)) { + return; + } + + // Replace the output if it exceeds a specified maximum length + $outputLimit = $this->getConfig('ideone.output_limit', 100); + var_dump($response); + if ($outputLimit && strlen($response['output']) > $outputLimit) { + $response['output'] = 'Output is too long to post'; + } + + // Format the message + $msg = $this->getConfig('ideone.format', '%nick%: [ %link% ] %output%'); + $response['nick'] = $nick; + $response['link'] = 'http://ideone.com/' . $link; + foreach ($response as $key => $value) { + $msg = str_replace('%' . $key . '%', $value, $msg); + } + $this->doPrivmsg($source, $msg); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Invisible.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Invisible.php new file mode 100755 index 0000000000..622f7d3db0 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Invisible.php @@ -0,0 +1,44 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Invisible + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Invisible + */ + +/** + * Marks the bot as invisible when it connects to the server. + * + * @category Phergie + * @package Phergie_Plugin_Invisible + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Invisible + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_2_3_2 + */ +class Phergie_Plugin_Invisible extends Phergie_Plugin_Abstract +{ + /** + * Marks the bot as invisible when it connects to the server. + * + * @return void + */ + public function onConnect() + { + $this->doMode($this->getConnection()->getNick(), '+i'); + $this->getPluginHandler()->removePlugin($this); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Iterator.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Iterator.php new file mode 100644 index 0000000000..d610962986 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Iterator.php @@ -0,0 +1,142 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Implements a filtering iterator for limiting executing of methods across + * a group of plugins. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Plugin_Iterator extends FilterIterator +{ + /** + * List of short names of plugins to exclude when iterating + * + * @var array + */ + protected $plugins = array(); + + /** + * List of method names where plugins with these methods will be + * excluded when iterating + * + * @var array + */ + protected $methods = array(); + + /** + * Overrides the parent constructor to reset the internal iterator's + * pointer to the current item, which the parent class errantly does not + * do. + * + * @param Iterator $iterator Iterator to filter + * + * @return void + * @link http://bugs.php.net/bug.php?id=52560 + */ + public function __construct(Iterator $iterator) + { + parent::__construct($iterator); + $this->rewind(); + } + + /** + * Adds to a list of plugins to exclude when iterating. + * + * @param mixed $plugins String containing the short name of a single + * plugin to exclude or an array of short names of multiple + * plugins to exclude + * + * @return Phergie_Plugin_Iterator Provides a fluent interface + */ + public function addPluginFilter($plugins) + { + if (is_array($plugins)) { + $this->plugins = array_unique( + array_merge($this->plugins, $plugins) + ); + } else { + $this->plugins[] = $plugins; + } + return $this; + } + + /** + * Adds to a list of method names where plugins defining these methods + * will be excluded when iterating. + * + * @param mixed $methods String containing the name of a single method + * or an array containing the name of multiple methods + * + * @return Phergie_Plugin_Iterator Provides a fluent interface + */ + public function addMethodFilter($methods) + { + if (is_array($methods)) { + $this->methods = array_merge($this->methods, $methods); + } else { + $this->methods[]= $methods; + } + return $this; + } + + /** + * Clears any existing plugin and methods filters. + * + * @return Phergie_Plugin_Iterator Provides a fluent interface + */ + public function clearFilters() + { + $this->plugins = array(); + $this->methods = array(); + } + + /** + * Implements FilterIterator::accept(). + * + * @return boolean TRUE to include the current item in those by returned + * during iteration, FALSE otherwise + */ + public function accept() + { + if (!$this->plugins && !$this->methods) { + return true; + } + + $current = $this->current(); + + if (in_array($current->getName(), $this->plugins)) { + return false; + } + + foreach ($this->methods as $method) { + if (method_exists($current, $method)) { + return false; + } + } + + return true; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Join.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Join.php new file mode 100755 index 0000000000..50c3ad8e69 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Join.php @@ -0,0 +1,56 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Join + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Join + */ + +/** + * Joins a specified channel on command from a user. + * + * @category Phergie + * @package Phergie_Plugin_Join + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Join + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Join extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + } + + /** + * Joins a channel. + * + * @param string $channels Comma-delimited list of channels to join + * @param string $keys Optional comma-delimited list of channel keys + * + * @return void + */ + public function onCommandJoin($channels, $keys = null) + { + $this->doJoin($channels, $keys); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Karma.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Karma.php new file mode 100644 index 0000000000..27b4a087d3 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Karma.php @@ -0,0 +1,451 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Karma + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Karma + */ + +/** + * Handles requests for incrementation or decrementation of a maintained list + * of counters for specified terms. + * + * @category Phergie + * @package Phergie_Plugin_Karma + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Karma + * @uses extension PDO + * @uses extension pdo_sqlite + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Karma extends Phergie_Plugin_Abstract +{ + /** + * SQLite object + * + * @var resource + */ + protected $db = null; + + /** + * Prepared statement to add a new karma record + * + * @var PDOStatement + */ + protected $insertKarma; + + /** + * Prepared statement to update an existing karma record + * + * @var PDOStatement + */ + protected $updateKarma; + + /** + * Retrieves an existing karma record + * + * @var PDOStatement + */ + protected $fetchKarma; + + /** + * Retrieves an existing fixed karma record + * + * @var PDOStatement + */ + protected $fetchFixedKarma; + + /** + * Retrieves a positive answer for a karma comparison + * + * @var PDOStatement + */ + protected $fetchPositiveAnswer; + + /** + * Retrieves a negative answer for a karma comparison + * + * @var PDOStatement + */ + protected $fetchNegativeAnswer; + + /** + * Check for dependencies and initializes a database connection and + * prepared statements. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Command'); + $this->getDb(); + } + + /** + * Initializes prepared statements used by the plugin. + * + * @return void + */ + protected function initializePreparedStatements() + { + $this->fetchKarma = $this->db->prepare(' + SELECT karma + FROM karmas + WHERE term = :term + LIMIT 1 + '); + + $this->insertKarma = $this->db->prepare(' + INSERT INTO karmas (term, karma) + VALUES (:term, :karma) + '); + + $this->updateKarma = $this->db->prepare(' + UPDATE karmas + SET karma = :karma + WHERE term = :term + '); + + $this->fetchFixedKarma = $this->db->prepare(' + SELECT karma + FROM fixed_karmas + WHERE term = :term + LIMIT 1 + '); + + $this->fetchPositiveAnswer = $this->db->prepare(' + SELECT answer + FROM positive_answers + ORDER BY RANDOM() + LIMIT 1 + '); + + $this->fetchNegativeAnswer = $this->db->prepare(' + SELECT answer + FROM negative_answers + ORDER BY RANDOM() + LIMIT 1 + '); + } + + /** + * Returns a connection to the plugin database, initializing one if none + * is explicitly set. + * + * @return PDO Database connection + */ + public function getDb() + { + if (empty($this->db)) { + $this->db = new PDO('sqlite:' . dirname(__FILE__) . '/Karma/karma.db'); + $this->initializePreparedStatements(); + } + return $this->db; + } + + /** + * Sets the connection to the plugin database, mainly intended for unit + * testing. + * + * @param PDO $db Database connection + * + * @return Phergie_Plugin_Karma Provides a fluent interface + */ + public function setDb(PDO $db) + { + $this->db = $db; + $this->initializePreparedStatements(); + return $this; + } + + /** + * Get the canonical form of a given term. + * + * In the canonical form all sequences of whitespace + * are replaced by a single space and all characters + * are lowercased. + * + * @param string $term Term for which a canonical form is required + * + * @return string Canonical term + */ + protected function getCanonicalTerm($term) + { + $canonicalTerm = strtolower(preg_replace('|\s+|', ' ', trim($term, '()'))); + switch ($canonicalTerm) { + case 'me': + $canonicalTerm = strtolower($this->event->getNick()); + break; + case 'all': + case '*': + case 'everything': + $canonicalTerm = 'everything'; + break; + } + return $canonicalTerm; + } + + /** + * Intercepts a message and processes any contained recognized commands. + * + * @return void + */ + public function onPrivmsg() + { + $message = $this->getEvent()->getText(); + + $termPattern = '\S+?|\([^<>]+?\)+'; + $actionPattern = '(?P<action>\+\+|--)'; + + $modifyPattern = <<<REGEX + {^ + (?J) # allow overwriting capture names + \s* # ignore leading whitespace + + (?: # start with ++ or -- before the term + $actionPattern + (?P<term>$termPattern) + | # follow the term with ++ or -- + (?P<term>$termPattern) + $actionPattern # allow no whitespace between the term and the action + ) + $}ix +REGEX; + + $versusPattern = <<<REGEX + {^ + (?P<term0>$termPattern) + \s+(?P<method><|>)\s+ + (?P<term1>$termPattern)$# + $}ix +REGEX; + + $match = null; + + if (preg_match($modifyPattern, $message, $match)) { + $action = $match['action']; + $term = $this->getCanonicalTerm($match['term']); + $this->modifyKarma($term, $action); + } elseif (preg_match($versusPattern, $message, $match)) { + $term0 = trim($match['term0']); + $term1 = trim($match['term1']); + $method = $match['method']; + $this->compareKarma($term0, $term1, $method); + } + } + + /** + * Get the karma rating for a given term. + * + * @param string $term Term for which the karma rating needs to be + * retrieved + * + * @return void + */ + public function onCommandKarma($term) + { + $source = $this->getEvent()->getSource(); + $nick = $this->getEvent()->getNick(); + + $canonicalTerm = $this->getCanonicalTerm($term); + + $fixedKarma = $this->fetchFixedKarma($canonicalTerm); + if ($fixedKarma) { + $message = $nick . ': ' . $term . ' ' . $fixedKarma; + $this->doPrivmsg($source, $message); + return; + } + + $karma = $this->fetchKarma($canonicalTerm); + + $message = $nick . ': '; + + if ($term == 'me') { + $message .= 'You have'; + } else { + $message .= $term . ' has'; + } + + $message .= ' '; + + if ($karma) { + $message .= 'karma of ' . $karma; + } else { + $message .= 'neutral karma'; + } + + $message .= '.'; + + $this->doPrivmsg($source, $message); + } + + /** + * Resets the karma for a term to 0. + * + * @param string $term Term for which to reset the karma rating + * + * @return void + */ + public function onCommandReincarnate($term) + { + $data = array( + ':term' => $term, + ':karma' => 0 + ); + $this->updateKarma->execute($data); + } + + /** + * Compares the karma between two terms. Optionally increases/decreases + * the karma of either term. + * + * @param string $term0 First term + * @param string $term1 Second term + * @param string $method Comparison method (< or >) + * + * @return void + */ + protected function compareKarma($term0, $term1, $method) + { + $event = $this->getEvent(); + $nick = $event->getNick(); + $source = $event->getSource(); + + $canonicalTerm0 = $this->getCanonicalTerm($term0); + $canonicalTerm1 = $this->getCanonicalTerm($term1); + + $fixedKarma0 = $this->fetchFixedKarma($canonicalTerm0); + $fixedKarma1 = $this->fetchFixedKarma($canonicalTerm1); + + if ($fixedKarma0 || $fixedKarma1) { + return; + } + + if ($canonicalTerm0 == 'everything') { + $change = $method == '<' ? '++' : '--'; + $karma0 = 0; + $karma1 = $this->modifyKarma($canonicalTerm1, $change); + } elseif ($canonicalTerm1 == 'everything') { + $change = $method == '<' ? '--' : '++'; + $karma0 = $this->modifyKarma($canonicalTerm0, $change); + $karma1 = 0; + } else { + $karma0 = $this->fetchKarma($canonicalTerm0); + $karma1 = $this->fetchKarma($canonicalTerm1); + } + + // Combining the first and second branches here causes an odd + // single-line lapse in code coverage, but the lapse disappears if + // they're separated + if ($method == '<' && $karma0 < $karma1) { + $replies = $this->fetchPositiveAnswer; + } elseif ($method == '>' && $karma0 > $karma1) { + $replies = $this->fetchPositiveAnswer; + } else { + $replies = $this->fetchNegativeAnswer; + } + $replies->execute(); + $reply = $replies->fetchColumn(); + + if (max($karma0, $karma1) == $karma1) { + list($canonicalTerm0, $canonicalTerm1) = + array($canonicalTerm1, $canonicalTerm0); + } + + $message = str_replace( + array('%owner%','%owned%'), + array($canonicalTerm0, $canonicalTerm1), + $reply + ); + + $this->doPrivmsg($source, $message); + } + + /** + * Modifes a term's karma. + * + * @param string $term Term to modify + * @param string $action Karma action (either ++ or --) + * + * @return int Modified karma rating + */ + protected function modifyKarma($term, $action) + { + $karma = $this->fetchKarma($term); + if ($karma !== false) { + $statement = $this->updateKarma; + } else { + $statement = $this->insertKarma; + } + + $karma += ($action == '++') ? 1 : -1; + + $args = array( + ':term' => $term, + ':karma' => $karma + ); + $statement->execute($args); + + return $karma; + } + + /** + * Returns the karma rating for a specified term for which the karma + * rating can be modified. + * + * @param string $term Term for which to fetch the corresponding karma + * rating + * + * @return integer|boolean Integer value denoting the term's karma or + * FALSE if there is the specified term has no associated karma + * rating + */ + protected function fetchKarma($term) + { + $this->fetchKarma->execute(array(':term' => $term)); + $result = $this->fetchKarma->fetch(PDO::FETCH_ASSOC); + + if ($result === false) { + return false; + } + + return (int) $result['karma']; + } + + /** + * Returns a phrase describing the karma rating for a specified term for + * which the karma rating is fixed. + * + * @param string $term Term for which to fetch the corresponding karma + * rating + * + * @return string Phrase describing the karma rating, which may be append + * to the term to form a complete response + */ + protected function fetchFixedKarma($term) + { + $this->fetchFixedKarma->execute(array(':term' => $term)); + $result = $this->fetchFixedKarma->fetch(PDO::FETCH_ASSOC); + + if ($result === false) { + return false; + } + + return $result['karma']; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Lart.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Lart.php new file mode 100644 index 0000000000..d00cae0dd1 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Lart.php @@ -0,0 +1,303 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Lart + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Lart + */ + +/** + * Accepts terms and corresponding definitions for storage to a local data + * source and performs and returns the result of lookups for term definitions + * as they are requested. + * + * @category Phergie + * @package Phergie_Plugin_Lart + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Lart + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses extension PDO + * @uses extension pdo_sqlite + */ +class Phergie_Plugin_Lart extends Phergie_Plugin_Abstract +{ + /** + * PDO instance for the database + * + * @var PDO + */ + protected $db; + + /** + * Prepared statement for inserting a new definition + * + * @var PDOStatement + */ + protected $save; + + /** + * Prepared statement for deleting the definition for a given term + * + * @var PDOStatement + */ + protected $delete; + + /** + * Prepared statement for searching for a definition for which the term + * matches as a regular expression against a given search string + * + * @var PDOStatement + */ + protected $process; + + /** + * Prepared statement for searching for a definition by its exact term + * + * @var PDOStatement + */ + protected $select; + + /** + * Checks for dependencies and initializes the database. + * + * @return void + */ + public function onLoad() + { + if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) { + $this->fail('PDO and pdo_sqlite extensions must be installed'); + } + + $this->plugins->getPlugin('Command'); + + $dir = dirname(__FILE__) . '/' . $this->getName(); + $path = $dir . '/lart.db'; + $exists = file_exists($path); + if (!$exists) { + mkdir($dir); + } + + try { + $this->db = new PDO('sqlite:' . $path); + } catch (PDO_Exception $e) { + throw new Phergie_Plugin_Exception($e->getMessage()); + } + + $this->db->sqliteCreateFunction('preg_match', 'preg_match'); + + if (!$exists) { + $this->db->exec(' + CREATE TABLE lart ( + name VARCHAR(255), + definition TEXT, + hostmask VARCHAR(50), + tstamp VARCHAR(19) + ) + '); + $this->db->exec(' + CREATE UNIQUE INDEX lart_name ON lart (name) + '); + } + + $this->save = $this->db->prepare(' + REPLACE INTO lart (name, definition, hostmask, tstamp) + VALUES (:name, :definition, :hostmask, :tstamp) + '); + + $this->process = $this->db->prepare(' + SELECT * + FROM lart + WHERE preg_match(name, :name) + '); + + $this->select = $this->db->prepare(' + SELECT * + FROM lart + WHERE name = :name + '); + + $this->delete = $this->db->prepare(' + DELETE FROM lart + WHERE name = :name + '); + } + + /** + * Retrieves the definition for a given term if it exists. + * + * @param string $term Term to search for + * + * @return mixed String containing the definition or FALSE if no definition + * exists + */ + protected function getLart($term) + { + $this->process->execute(array(':name' => $term)); + $row = $this->process->fetchObject(); + if ($row === false) { + return false; + } + preg_match($row->name, $term, $match); + $definition = preg_replace( + "/(?:\\\\|\\$)([0-9]+)/e", + '$match[\1]', + $row->definition + ); + $event = $this->getEvent(); + $definition = str_replace( + array('$source', '$nick'), + array($event->getSource(), $event->getNick()), + $definition + ); + return $definition; + } + + /** + * Deletes a given definition. + * + * @param string $term Term for which the definition should be deleted + * + * @return boolean TRUE if the definition was found and deleted, FALSE + * otherwise + */ + protected function deleteLart($term) + { + $this->delete->execute(array(':name' => $term)); + return ($this->delete->rowCount() > 0); + } + + /** + * Saves a given definition. + * + * @param string $term Term to trigger a response containing the + * corresponding definition, may be a regular expression + * @param string $definition Definition corresponding to the term + * + * @return boolean TRUE if the definition was saved successfully, FALSE + * otherwise + */ + protected function saveLart($term, $definition) + { + $data = array( + ':name' => $term, + ':definition' => $definition, + ':hostmask' => (string) $this->getEvent()->getHostmask(), + ':tstamp' => time() + ); + $this->save->execute($data); + return ($this->save->rowCount() > 0); + } + + /** + * Returns information about a definition. + * + * @param string $term Term about which to return information + * + * @return void + */ + public function onCommandLartinfo($term) + { + $this->select->execute(array(':name' => $term)); + $row = $this->select->fetchObject(); + $msg = $this->getEvent()->getNick() . ': '; + if (!$row) { + $msg .= 'Lart not found'; + } else { + $msg .= 'Term: ' . $row->name + . ', Definition: ' . $row->definition + . ', User: ' . $row->hostmask + . ', Added: ' . date('n/j/y g:i A', $row->tstamp); + } + $this->doNotice($this->getEvent()->getSource(), $msg); + } + + /** + * Creates a new definition. + * + * @param string $term Term to add + * @param string $definition Definition to add + * + * @return void + */ + public function onCommandAddlart($term, $definition) + { + $result = $this->saveLart($term, $definition); + if ($result) { + $msg = 'Lart saved successfully'; + } else { + $msg = 'Lart could not be saved'; + } + $this->doNotice($this->getEvent()->getSource(), $msg); + } + + /** + * Removes an existing definition. + * + * @param string $term Term for which the definition should be removed + * + * @return void + */ + public function onCommandDeletelart($term) + { + $source = $this->getEvent()->getSource(); + if ($this->deleteLart($term)) { + $msg = 'Lart deleted successfully'; + } else { + $msg = 'Lart not found'; + } + $this->doNotice($source, $msg); + } + + /** + * Processes definition triggers in the text of the current event. + * + * @return void + */ + protected function processLart() + { + $lart = $this->getLart($this->getEvent()->getText()); + if ($lart) { + if (strpos($lart, '/me') === 0) { + $lart = substr($lart, 4); + $method = 'doAction'; + } else { + $method = 'doPrivmsg'; + } + $this->$method($this->getEvent()->getSource(), $lart); + } + } + + /** + * Processes definition triggers in messages. + * + * @return void + */ + public function onPrivmsg() + { + $this->processLart(); + } + + /** + * Processes definition triggers in CTCP actions. + * + * @return void + */ + public function onAction() + { + $this->processLart(); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Message.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Message.php new file mode 100644 index 0000000000..af8fc7287b --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Message.php @@ -0,0 +1,112 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Message + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Message + */ + +/** + * Generalized plugin providing utility methods for + * prefix and bot named based message extraction. + * + * @category Phergie + * @package Phergie_Plugin_Message + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Message + */ +class Phergie_Plugin_Message extends Phergie_Plugin_Abstract +{ + + /** + * Check whether a message is specifically targeted at the bot. + * This is the case when the message starts with the bot's name + * followed by [,:>] or when it is a private message. + * + * @return boolean true when the message is specifically targeted at the bot, + * false otherwise. + */ + public function isTargetedMessage() + { + $event = $this->getEvent(); + + $self = preg_quote($this->connection->getNick()); + + $targetPattern = <<<REGEX + {^ + \s*{$self}\s*[:>,].* # expect the bots name, followed by a [:>,] + $}ix +REGEX; + + return !$event->isInChannel() + || preg_match($targetPattern, $event->getText()) > 0; + } + + /** + * Allow for prefix and bot name aware extraction of a message + * + * @return string|bool $message The message, which is possibly targeted at the + * bot or false if a prefix requirement failed + */ + public function getMessage() + { + $event = $this->getEvent(); + + $prefix = preg_quote($this->getConfig('command.prefix')); + $self = preg_quote($this->connection->getNick()); + $message = $event->getText(); + + // $prefixPattern matches : Phergie, do command <parameters> + // where $prefix = 'do' : do command <parameters> + // : Phergie, command <parameters> + $prefixPattern = <<<REGEX + {^ + (?: + \s*{$self}\s*[:>,]\s* # start with bot name + (?:{$prefix})? # which is optionally followed by the prefix + | + \s*{$prefix} # or start with the prefix + ) + \s*(.*) # always end with the message + $}ix +REGEX; + + // $noPrefixPattern matches : Phergie, command <parameters> + // : command <parameters> + $noPrefixPattern = <<<REGEX + {^ + \s*(?:{$self}\s*[:>,]\s*)? # optionally start with the bot name + (.*?) # always end with the message + $}ix +REGEX; + + $pattern = $noPrefixPattern; + + // If a prefix is set, force it as a requirement + if ($prefix && $event->isInChannel()) { + $pattern = $prefixPattern; + } + + $match = null; + + if (!preg_match($pattern, $message, $match)) { + return false; + } + + return $match[1]; + } +} \ No newline at end of file diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/NickServ.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/NickServ.php new file mode 100644 index 0000000000..e97abecf78 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/NickServ.php @@ -0,0 +1,178 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_NickServ + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_NickServ + */ + +/** + * Intercepts and responds to messages from the NickServ agent requesting that + * the bot authenticate its identify. + * + * The password configuration setting should contain the password registered + * with NickServ for the nick used by the bot. + * + * @category Phergie + * @package Phergie_Plugin_NickServ + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_NickServ + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_NickServ extends Phergie_Plugin_Abstract +{ + /** + * Nick of the NickServ bot + * + * @var string + */ + protected $botNick; + + /** + * Identify message + */ + protected $identifyMessage; + + /** + * Checks for dependencies and required configuration settings. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + + // Get the name of the NickServ bot, defaults to NickServ + $this->botNick = $this->getConfig('nickserv.botnick', 'NickServ'); + + // Get the identify message + $this->identifyMessage = $this->getConfig( + 'nickserv.identify_message', + '/This nickname is registered./' + ); + } + + /** + * Checks for a notice from NickServ and responds accordingly if it is an + * authentication request or a notice that a ghost connection has been + * killed. + * + * @return void + */ + public function onNotice() + { + $event = $this->event; + if (strtolower($event->getNick()) == strtolower($this->botNick)) { + $message = $event->getArgument(1); + $nick = $this->connection->getNick(); + if (preg_match($this->identifyMessage, $message)) { + $password = $this->config['nickserv.password']; + if (!empty($password)) { + $this->doPrivmsg($this->botNick, 'IDENTIFY ' . $password); + } + unset($password); + } elseif (preg_match('/^.*' . $nick . '.* has been killed/', $message)) { + $this->doNick($nick); + } + } + } + + /** + * Checks to see if the original nick has quit; if so, take the name back. + * + * @return void + */ + public function onQuit() + { + $eventNick = $this->event->getNick(); + $nick = $this->connection->getNick(); + if ($eventNick == $nick) { + $this->doNick($nick); + } + } + + /** + * Changes the in-memory configuration setting for the bot nick if it is + * successfully changed. + * + * @return void + */ + public function onNick() + { + $event = $this->event; + $connection = $this->connection; + if ($event->getNick() == $connection->getNick()) { + $connection->setNick($event->getArgument(0)); + } + } + + /** + * Provides a command to terminate ghost connections. + * + * @return void + */ + public function onCommandGhostbust() + { + $event = $this->event; + $user = $event->getNick(); + $conn = $this->connection; + $nick = $conn->getNick(); + + if ($nick != $this->config['connections'][$conn->getHost()]['nick']) { + $password = $this->config['nickserv.password']; + if (!empty($password)) { + $this->doPrivmsg( + $this->event->getSource(), + $user . ': Attempting to ghost ' . $nick .'.' + ); + $this->doPrivmsg( + $this->botNick, + 'GHOST ' . $nick . ' ' . $password, + true + ); + } + } + } + + /** + * Automatically send the GHOST command if the bot's nick is in use. + * + * @return void + */ + public function onResponse() + { + if ($this->event->getCode() == Phergie_Event_Response::ERR_NICKNAMEINUSE) { + $password = $this->config['nickserv.password']; + if (!empty($password)) { + $this->doPrivmsg( + $this->botNick, + 'GHOST ' . $this->connection->getNick() . ' ' . $password + ); + } + } + } + + /** + * Handle the server sending a KILL request. + * + * @return void + */ + public function onKill() + { + $this->doQuit($this->event->getArgument(1)); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Part.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Part.php new file mode 100755 index 0000000000..c07cdd918b --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Part.php @@ -0,0 +1,55 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Part + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Part + */ + +/** + * Parts a specified channel on command from a user. + * + * @category Phergie + * @package Phergie_Plugin_Part + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Part + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Part extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + } + + /** + * Parts a channel. + * + * @param string $channels Comma-delimited list of channels to leave + * + * @return void + */ + public function onCommandPart($channels) + { + $this->doPart($channels); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Php.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Php.php new file mode 100644 index 0000000000..e10d101e73 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Php.php @@ -0,0 +1,78 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Php + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + */ + +/** + * Returns information on PHP functions as requested. + * + * @category Phergie + * @package Phergie_Plugin_Php + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + * @uses extension pdo + * @uses extension pdo_sqlite + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Php extends Phergie_Plugin_Abstract +{ + /** + * Data source to use + * + * @var Phergie_Plugin_Php_Source + */ + protected $source; + + /** + * Check for dependencies. + * + * @return void + */ + public function onLoad() + { + // @todo find a way to move this to Phergie_Plugin_Php_Source_Local + if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) { + $this->fail('PDO and pdo_sqlite extensions must be installed'); + } + + $this->getPluginHandler()->getPlugin('Command'); + + $this->source = new Phergie_Plugin_Php_Source_Local; + } + + /** + * Searches the data source for the requested function. + * + * @param string $functionName Name of the function to search for + * + * @return void + */ + public function onCommandPhp($functionName) + { + $nick = $this->event->getNick(); + if ($function = $this->source->findFunction($functionName)) { + $msg = $nick . ': ' . $function['description']; + $this->doPrivmsg($this->event->getSource(), $msg); + } else { + $msg = 'Search for function ' . $functionName . ' returned no results.'; + $this->doNotice($nick, $msg); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Php/Source.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Php/Source.php new file mode 100644 index 0000000000..c6cf3261bd --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Php/Source.php @@ -0,0 +1,46 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Php + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + */ + +/** + * Data source interface for the Php plugin. + * + * @category Phergie + * @package Phergie_Plugin_Php + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + * @uses extension pdo + * @uses extension pdo_sqlite + * @uses Phergie_Plugin_Command pear.phergie.org + */ +interface Phergie_Plugin_Php_Source +{ + /** + * Searches for a description of the function. + * + * @param string $function Search pattern to match against the function + * name, wildcards supported using % + * + * @return array|null Associative array containing the function name and + * description or NULL if no results are found + */ + public function findFunction($function); +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Php/Source/Local.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Php/Source/Local.php new file mode 100644 index 0000000000..9292bea848 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Php/Source/Local.php @@ -0,0 +1,208 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Php + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + */ + +/** + * Data source for {@see Phergie_Plugin_Php}. This source reads function + * descriptions from a file and stores them in a SQLite database. When a + * function description is requested, the function is retrieved from the + * local database. + * + * @category Phergie + * @package Phergie_Plugin_Php + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + * @uses extension pdo + * @uses extension pdo_sqlite + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Php_Source_Local implements Phergie_Plugin_Php_Source +{ + /** + * Local database for storage + * + * @var PDO + */ + protected $database; + + /** + * Source of the PHP function summary + * + * @var string + */ + protected $url = 'http://cvs.php.net/viewvc.cgi/phpdoc/funcsummary.txt?revision=HEAD'; + + /** + * Constructor to initialize the data source. + * + * @return void + */ + public function __construct() + { + $path = dirname(__FILE__); + + try { + $this->database = new PDO('sqlite:' . $path . '/functions.db'); + $this->buildDatabase(); + // @todo Modify this to be rethrown as an appropriate + // Phergie_Plugin_Exception and handled in Phergie_Plugin_Php + } catch (PDOException $e) { + echo 'PDO failure: '.$e->getMessage(); + } + } + + /** + * Searches for a description of the function. + * + * @param string $function Search pattern to match against the function + * name, wildcards supported using % + * + * @return array|null Associative array containing the function name and + * description or NULL if no results are found + */ + public function findFunction($function) + { + // Remove possible parentheses + $split = preg_split('{\(|\)}', $function); + $function = (count($split)) ? array_shift($split) : $function; + + // Prepare the database statement + $stmt = $this->database->prepare('SELECT `name`, `description` FROM `functions` WHERE `name` LIKE :function'); + $stmt->execute(array(':function' => $function)); + + // Check the results + if (count($stmt) > 0) { + $result = $stmt->fetch(PDO::FETCH_ASSOC); + /** + * @todo add class and function URLS + * class methods: http://php.net/manual/en/classname.methodname.php + * functions: http://php.net/manual/en/function.functionname.php + * where '_' is replaced with '-' + */ + return $result; + } + + // No results found, return + return null; + } + + /** + * Build the database and parses the function summary file into it. + * + * @param bool $rebuild TRUE to force a rebuild of the table used to + * house function information, FALSE otherwise, defaults to FALSE + * + * @return void + */ + protected function buildDatabase($rebuild = false) + { + // Check to see if the functions table exists + $checkstmt = $this->database->query("SELECT COUNT(*) FROM `sqlite_master` WHERE `name` = 'functions'"); + $checkstmt->execute(); + $result = $checkstmt->fetch(PDO::FETCH_ASSOC); + unset( $checkstmt ); + $table = $result['COUNT(*)']; + unset( $result ); + // If the table doesn't exist, create it + if (!$table) { + $this->database->exec('CREATE TABLE `functions` (`name` VARCHAR(255), `description` TEXT)'); + $this->database->exec('CREATE UNIQUE INDEX `functions_name` ON `functions` (`name`)'); + } + + // If we created a new table, fill it with data + if (!$table || $rebuild) { + // Get the contents of the source file + // @todo Handle possible error cases better here; the @ operator + // shouldn't be needed + $contents = @file($this->url, FILE_IGNORE_NEW_LINES + FILE_SKIP_EMPTY_LINES); + + if (!$contents) { + return; + } + + // Parse the contents + $valid = array(); + $firstPart = ''; + $lineNumber = 0; + foreach ($contents as $line) { + // Clean the current line + $line = trim($line); + + // Skip comment lines + if (0 === strpos($line, '#')) { + // reset the line if the current line is odd + if (($lineNumber % 2) !== 0) { + $lineNumber--; + } + continue; + } + + /* + * If the current line is even, it's the first part of the + * complete function description ... + */ + if (($lineNumber % 2) === 0) { + $firstPart = $line; + } else { + // ... it's the last part of the complete function description + $completeLine = $firstPart . ' ' . $line; + $firstPart = ''; + if (preg_match('{^([^\s]*)[\s]?([^)]*)\(([^\)]*)\)[\sU]+([\sa-zA-Z0-9\.,\-_()]*)$}', $completeLine, $matches)) { + $valid[] = $matches; + } + } + // Up the line number before going to the next line + $lineNumber++; + } + // free up some memory + unset($contents); + + // Process the valid matches + if (count($valid) > 0) { + // Clear the database + $this->database->exec('DELETE * FROM `functions`'); + + // Prepare the sql statement + $stmt = $this->database->prepare('INSERT INTO `functions` (`name`, `description`) VALUES (:name, :description)'); + $this->database->beginTransaction(); + + // Insert the data + foreach ($valid as $function) { + // Extract function values + list( , $retval, $name, $params, $desc) = $function; + if (empty($name)) { + $name = $retval; + $retval = ''; + } + // Reconstruct the complete function line + $line = trim($retval . ' ' . $name . '(' . $params . ') - ' . $desc); + // Execute the statement + $stmt->execute(array(':name' => $name, ':description' => $line)); + } + + // Commit the changes to the database + $this->database->commit(); + } + // free up some more memory + unset($valid); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Ping.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Ping.php new file mode 100755 index 0000000000..021670d97d --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Ping.php @@ -0,0 +1,162 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Ping + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Ping + */ + +/** + * Uses a self CTCP PING to ensure that the client connection has not been + * dropped. + * + * @category Phergie + * @package Phergie_Plugin_Ping + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Ping + */ +class Phergie_Plugin_Ping extends Phergie_Plugin_Abstract +{ + /** + * Timestamp for the last instance in which an event was received + * + * @var int + */ + protected $lastEvent; + + /** + * Timestamp for the last instance in which a PING was sent + * + * @var int + */ + protected $lastPing; + + /** + * Initialize event timestamps upon connecting to the server. + * + * @return void + */ + public function onConnect() + { + $this->lastEvent = time(); + $this->lastPing = null; + } + + /** + * Updates the timestamp since the last received event when a new event + * arrives. + * + * @return void + */ + public function preEvent() + { + $this->lastEvent = time(); + } + + /** + * Clears the ping time if a reply is received. + * + * @return void + */ + public function onPingResponse() + { + $this->lastPing = null; + } + + /** + * Performs a self ping if the event threshold has been exceeded or + * issues a termination command if the ping threshold has been exceeded. + * + * @return void + */ + public function onTick() + { + $time = time(); + if (!empty($this->lastPing)) { + if ($time - $this->lastPing > $this->getConfig('ping.ping', 20)) { + $this->doQuit(); + } + } elseif ( + $time - $this->lastEvent > $this->getConfig('ping.event', 300) + ) { + $this->lastPing = $time; + $this->doPing($this->getConnection()->getNick(), $this->lastPing); + } + } + + /** + * Gets the last ping time + * lastPing needs exposing for things such as unit testing + * + * @return int timestamp of last ping + */ + public function getLastPing() + { + return $this->lastPing; + } + + /** + * Set the last ping time + * lastPing needs to be exposed for unit testing + * + * @param int|null $ping timestamp of last ping + * + * @return self + */ + public function setLastPing($ping = null) + { + if (null === $ping) { + $ping = time(); + } + if (!is_int($ping)) { + throw new InvalidArgumentException('$ping must be an integer or null'); + } + $this->lastPing = $ping; + return $this; + } + + /** + * Gets the last event time + * lastEvent needs exposing for things such as unit testing + * + * @return int timestamp of last ping + */ + public function getLastEvent() + { + return $this->lastEvent; + } + + /** + * Set the last event time + * lastEvent needs to be exposed for unit testing + * + * @param int|null $event timestamp of last ping + * + * @return self + */ + public function setLastEvent($event = null) + { + if (null === $event) { + $event = time(); + } + if (!is_int($event)) { + throw new InvalidArgumentException('$ping must be an integer or null'); + } + $this->lastEvent = $event; + return $this; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Pong.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Pong.php new file mode 100755 index 0000000000..54e19fc06d --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Pong.php @@ -0,0 +1,44 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Pong + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Pong + */ + +/** + * Responds to PING requests from the server. + * + * @category Phergie + * @package Phergie_Plugin_Pong + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Pong + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_6_2 + * @link http://irchelp.org/irchelp/rfc/chapter4.html#c4_6_3 + */ +class Phergie_Plugin_Pong extends Phergie_Plugin_Abstract +{ + /** + * Sends a PONG response for each PING request received by the server. + * + * @return void + */ + public function onPing() + { + $this->doPong($this->getEvent()->getArgument(0)); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Prioritize.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Prioritize.php new file mode 100755 index 0000000000..2312567fb7 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Prioritize.php @@ -0,0 +1,99 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Prioritize + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Prioritize + */ + +/** + * Prioritizes events such that they are executed in order from least to most + * destructive. + * + * @category Phergie + * @package Phergie_Plugin_Prioritize + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Prioritize + */ +class Phergie_Plugin_Prioritize extends Phergie_Plugin_Abstract +{ + /** + * Event types ordered by priority of execution + * + * @var array + */ + protected $priority = array( + 'raw', + 'pass', + 'user', + 'ping', + 'pong', + 'notice', + 'join', + 'list', + 'names', + 'version', + 'stats', + 'links', + 'time', + 'trace', + 'admin', + 'info', + 'who', + 'whois', + 'whowas', + 'mode', + 'privmsg', + 'action', + 'nick', + 'topic', + 'invite', + 'kill', + 'part', + 'quit' + ); + + /** + * Prioritizes events from least to most destructive. + * + * @return void + */ + public function preDispatch() + { + $events = $this->getEventHandler(); + + // Categorize events by type + $categorized = array(); + foreach ($events as $event) { + $type = $event->getType(); + if (!isset($categorized[$type])) { + $categorized[$type] = array(); + } + $categorized[$type][] = $event; + } + + // Order events by type from least to most destructive + $types = array_intersect($this->priority, array_keys($categorized)); + $prioritized = array(); + foreach ($types as $type) { + $prioritized = array_merge($prioritized, $categorized[$type]); + } + + // Replace the original events array with the prioritized one + $events->replaceEvents($prioritized); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Puppet.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Puppet.php new file mode 100644 index 0000000000..bede0be2c8 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Puppet.php @@ -0,0 +1,89 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Puppet + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Puppet + */ + +/** + * Allows a user to effectively speak and act as the bot. + * + * @category Phergie + * @package Phergie_Plugin_Puppet + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Puppet + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Puppet extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + } + + /** + * Handles a request for the bot to repeat a given message in a specified + * channel. + * + * <code>say #chan message</code> + * + * @param string $channel Name of the channel + * @param string $message Message to repeat + * + * @return void + */ + public function onCommandSay($channel, $message) + { + $this->doPrivmsg($channel, $message); + } + + /** + * Handles a request for the bot to repeat a given action in a specified + * channel. + * + * <code>act #chan action</code> + * + * @param string $channel Name of the channel + * @param string $action Action to perform + * + * @return void + */ + public function onCommandAct($channel, $action) + { + $this->doAction($channel, $action); + } + + /** + * Handles a request for the bot to send the server a raw message + * + * <code>raw message</code> + * + * @param string $message Message to send + * + * @return void + */ + public function onCommandRaw($message) + { + $this->doRaw($message); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Quit.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Quit.php new file mode 100755 index 0000000000..eca22a98e3 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Quit.php @@ -0,0 +1,54 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Quit + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Quit + */ + +/** + * Terminates the current connection upon command. + * + * @category Phergie + * @package Phergie_Plugin_Quit + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Quit + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Quit extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + } + + /** + * Issues a quit command when a message is received requesting that the + * bot terminate the current connection. + * + * @return void + */ + public function onCommandQuit() + { + $this->doQuit('Requested by ' . $this->getEvent()->getNick()); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Reload.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Reload.php new file mode 100755 index 0000000000..4305770812 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Reload.php @@ -0,0 +1,122 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Reload + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Reload + */ + +/** + * Facilitates reloading of individual plugins for development purposes. + * Note that, because existing class definitions cannot be removed from + * memory, increased memory usage is an expected result of using this plugin. + * + * @category Phergie + * @package Phergie_Plugin_Reload + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Reload + * @uses Phergie_Plugin_Command pear.phergie.org + */ +class Phergie_Plugin_Reload extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Command'); + } + + /** + * Reloads a specified plugin. + * + * @param string $plugin Short name of the plugin to reload + * + * @return void + */ + public function onCommandReload($plugin) + { + $plugin = ucfirst($plugin); + + $evalClass = true; + if (strpos($plugin, ' ') !== false) { + $args = explode(' ', $plugin); + $plugin = $args[0]; + if (strtolower($args[1]) == 'force') { + $evalClass = false; + } + } + + if (!$this->plugins->hasPlugin($plugin)) { + echo 'DEBUG(Reload): ' . ucfirst($plugin) . ' is not loaded yet, loading', PHP_EOL; + try { + $this->plugins->getPlugin($plugin); + $this->plugins->command->populateMethodCache(); + } catch (Phergie_Plugin_Exception $e) { + if ($e->getCode() == Phergie_Plugin_Exception::ERR_CLASS_NOT_FOUND) { + echo 'DEBUG(Reload): ', $e->getMessage(), PHP_EOL; + } else { + throw $e; + } + } + return; + } + + try { + $info = $this->plugins->getPluginInfo($plugin); + } catch (Phergie_Plugin_Exception $e) { + $source = $this->event->getSource(); + $nick = $this->event->getNick(); + $this->doNotice($source, $nick . ': ' . $e->getMessage()); + return; + } + + $class = $info['class']; + $contents = file_get_contents($info['file']); + $newClass = $class . '_' . sha1($contents); + + if (class_exists($newClass, false)) { + if ($evalClass == true) { + echo 'DEBUG(Reload): Class ', $class, ' has not changed since last reload', PHP_EOL; + return; + } + } else { + $contents = preg_replace( + array('/^<\?(?:php)?/', '/class\s+' . $class . '/i'), + array('', 'class ' . $newClass), + $contents + ); + eval($contents); + } + + $instance = new $newClass; + $instance->setName($plugin); + $instance->setEvent($this->event); + $this->plugins + ->removePlugin($plugin) + ->addPlugin($instance); + + $this->plugins->command->populateMethodCache(); + if ($this->plugins->hasPlugin('Help')) { + $this->plugins->help->populateRegistry(); + } + + echo 'DEBUG(Reload): Reloaded ', $class, ' to ', $newClass, PHP_EOL; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Remind.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Remind.php new file mode 100644 index 0000000000..42d674c68f --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Remind.php @@ -0,0 +1,378 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Remind + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Remind + */ + +/** + * Parses and logs messages that should be relayed to other users the next time + * the recipient is active on the same channel. + * + * @category Phergie + * @package Phergie_Plugin_Remind + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Remind + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Time pear.phergie.org + * @uses extension PDO + * @uses extension pdo_sqlite + */ +class Phergie_Plugin_Remind extends Phergie_Plugin_Abstract +{ + /** + * Number of reminders to show in public. + */ + protected $publicReminders = 3; + + /** + * PDO resource for a SQLite database containing the reminders. + * + * @var resource + */ + protected $db; + + /** + * Flag that indicates whether or not to use an in-memory reminder list. + * + * @var bool + */ + protected $keepListInMemory = true; + + /** + * In-memory store for pending reminders. + */ + protected $msgStorage = array(); + + /** + * Check for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Command'); + $plugins->getPlugin('Time'); + + if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) { + $this->fail('PDO and pdo_sqlite extensions must be installed'); + } + + $dir = dirname(__FILE__) . '/' . $this->getName(); + $path = $dir . '/reminder.db'; + if (!file_exists($dir)) { + mkdir($dir); + } + + if (isset($this->config['remind.use_memory'])) { + $this->keepListInMemory = (bool) $this->config['remind.use_memory']; + } + + if (isset($this->config['remind.public_reminders'])) { + $this->publicReminders = (int) $this->config['remind.public_reminders']; + $this->publicReminders = max($this->publicReminders, 0); + } + + try { + $this->db = new PDO('sqlite:' . $path); + $this->createTables(); + } catch (PDO_Exception $e) { + throw new Phergie_Plugin_Exception($e->getMessage()); + } + } + + /** + * Intercepts a message and processes any contained recognized commands. + * + * @return void + */ + public function onPrivmsg() + { + $source = $this->getEvent()->getSource(); + $nick = $this->getEvent()->getNick(); + + $this->deliverReminders($source, $nick); + } + + /** + * Handle reminder requests + * + * @param string $recipient recipient of the message + * @param string $message message to tell the recipient + * + * @return void + * @see handleRemind() + */ + public function onCommandTell($recipient, $message) + { + $this->handleRemind($recipient, $message); + } + + /** + * Handle reminder requests + * + * @param string $recipient recipient of the message + * @param string $message message to tell the recipient + * + * @return void + * @see handleRemind() + */ + public function onCommandAsk($recipient, $message) + { + $this->handleRemind($recipient, $message); + } + + /** + * Handle reminder requests + * + * @param string $recipient recipient of the message + * @param string $message message to tell the recipient + * + * @return void + * @see handleRemind() + */ + public function onCommandRemind($recipient, $message) + { + $this->handleRemind($recipient, $message); + } + + /** + * Handles the tell/remind command (stores the message) + * + * @param string $recipient name of the recipient + * @param string $message message to store + * + * @return void + */ + protected function handleRemind($recipient, $message) + { + $source = $this->getEvent()->getSource(); + $nick = $this->getEvent()->getNick(); + + if (!$this->getEvent()->isInChannel()) { + $this->doPrivmsg($source, 'Reminders must be requested in-channel.'); + return; + } + + $q = $this->db->prepare( + 'INSERT INTO remind + ( + time, + channel, + recipient, + sender, + message + ) + VALUES + ( + :time, + :channel, + :recipient, + :sender, + :message + )' + ); + try { + $q->execute( + array( + 'time' => date(DATE_RFC822), + 'channel' => $source, + 'recipient' => strtolower($recipient), + 'sender' => strtolower($nick), + 'message' => $message + ) + ); + } catch (PDOException $e) { + } + + if ($rowid = $this->db->lastInsertId()) { + $this->doPrivmsg($source, 'ok, ' . $nick . ', message stored'); + } else { + $this->doPrivmsg( + $source, + $nick . ': bad things happened. Message not saved.' + ); + return; + } + + if ($this->keepListInMemory) { + $this->msgStorage[$source][strtolower($recipient)] = $rowid; + } + } + + /** + * Determines if the user has pending reminders, and if so, delivers them. + * + * @param string $channel channel to check + * @param string $nick nick to check + * + * @return void + */ + protected function deliverReminders($channel, $nick) + { + if ($channel[0] != '#') { + // private message, not a channel, so don't check + return; + } + + // short circuit if there's no message in memory (if allowed) + if ($this->keepListInMemory + && !isset($this->msgStorage[$channel][strtolower($nick)]) + ) { + return; + } + + // fetch and deliver messages + $reminders = $this->fetchMessages($channel, $nick); + if (count($reminders) > $this->publicReminders) { + $msgs = array_slice($reminders, 0, $this->publicReminders); + $privmsgs = array_slice($reminders, $this->publicReminders); + } else { + $msgs = $reminders; + $privmsgs = false; + } + + foreach ($msgs as $msg) { + $ts = $this->plugins->time->getCountdown($msg['time']); + $formatted = sprintf( + '%s: (from %s, %s ago) %s', + $nick, $msg['sender'], $ts, $msg['message'] + ); + $this->doPrivmsg($channel, $formatted); + $this->deleteMessage($msg['rowid'], $channel, $nick); + } + + if ($privmsgs) { + foreach ($privmsgs as $msg) { + $ts = $this->plugins->time->getCountdown($msg['time']); + $formatted = sprintf( + 'from %s, %s ago: %s', + $msg['sender'], $ts, $msg['message'] + ); + $this->doPrivmsg($nick, $formatted); + $this->deleteMessage($msg['rowid'], $channel, $nick); + } + $formatted = sprintf( + '%s: (%d more messages sent in private.)', + $nick, count($privmsgs) + ); + $this->doPrivmsg($channel, $formatted); + } + } + + /** + * Get pending messages (for a specific channel/recipient) + * + * @param string $channel channel on which to check for pending messages + * @param string $recipient user for which to check pending messages + * + * @return array of records + */ + protected function fetchMessages($channel = null, $recipient = null) + { + if ($channel) { + $qClause = 'WHERE channel = :channel AND recipient LIKE :recipient'; + $params = compact('channel', 'recipient'); + } else { + $qClause = ''; + $params = array(); + } + $q = $this->db->prepare( + 'SELECT rowid, channel, sender, recipient, time, message + FROM remind ' . $qClause + ); + $q->execute($params); + return $q->fetchAll(); + } + + /** + * Deletes a delivered message + * + * @param int $rowid ID of the message to delete + * @param string $channel message's channel + * @param string $nick message's recipient + * + * @return void + */ + protected function deleteMessage($rowid, $channel, $nick) + { + $nick = strtolower($nick); + $q = $this->db->prepare('DELETE FROM remind WHERE rowid = :rowid'); + $q->execute(array('rowid' => $rowid)); + + if ($this->keepListInMemory) { + if (isset($this->msgStorage[$channel][$nick]) + && $this->msgStorage[$channel][$nick] == $rowid + ) { + unset($this->msgStorage[$channel][$nick]); + } + } + } + + /** + * Determines if a table exists + * + * @param string $name Table name + * + * @return bool + */ + protected function haveTable($name) + { + $sql = 'SELECT COUNT(*) FROM sqlite_master WHERE name = ' + . $this->db->quote($name); + return (bool) $this->db->query($sql)->fetchColumn(); + } + + /** + * Creates the database table(s) (if they don't exist) + * + * @return void + */ + protected function createTables() + { + if (!$this->haveTable('remind')) { + $this->db->exec( + 'CREATE TABLE + remind + ( + time INTEGER, + channel TEXT, + recipient TEXT, + sender TEXT, + message TEXT + )' + ); + } + } + + /** + * Populates the in-memory cache of pending reminders + * + * @return void + */ + protected function populateMemory() + { + if (!$this->keepListInMemory) { + return; + } + foreach ($this->fetchMessages() as $msg) { + $this->msgStorage[$msg['channel']][$msg['recipient']] = $msg['rowid']; + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Serve.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Serve.php new file mode 100755 index 0000000000..cdb8f7f919 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Serve.php @@ -0,0 +1,160 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Serve + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Serve + */ + +/** + * Processes requests to serve a user something from a database. + * + * @category Phergie + * @package Phergie_Plugin_Serve + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Serve + * @uses extension pdo + * @uses extension pdo_sqlite + */ +class Phergie_Plugin_Serve extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) { + $this->fail('PDO and pdo_sqlite extensions must be installed'); + } + } + + /** + * Retrieves a random item from the database table. + * + * @param string $database Path to the SQLite database file + * @param string $table Name of the database table + * @param array $request Parsed request + * + * @return object Retrieved item + */ + protected function getItem($database, $table, array $request) + { + $db = new PDO('sqlite:' . $database); + if (!empty($request['suggestion'])) { + $query = 'SELECT * FROM ' . $table . ' WHERE name LIKE ? ORDER BY RANDOM() LIMIT 1'; + $stmt = $db->prepare($query); + $stmt->execute(array('%' . $request['suggestion'] . '%')); + $item = $stmt->fetchObject(); + if (!$item) { + $item = new stdClass; + $item->name = $request['suggestion']; + $item->link = null; + } + } else { + $query = 'SELECT * FROM ' . $table . ' ORDER BY RANDOM() LIMIT 1'; + $stmt = $db->query($query); + $item = $stmt->fetchObject(); + } + return $item; + } + + /** + * Processes a request to serve a user something. + * + * @param string $database Path to the SQLite database file + * @param string $table Name of the database table + * @param string $format Format of the response where %target%, + * %item%, %article%', and %link will be replaced with their + * respective data + * @param string $request Request string including the target and an + * optional suggestion of the item to fetch + * @param boolean $censor TRUE to integrate with the Censor plugin, + * defaults to FALSE + * + * @return boolean TRUE if the request was processed successfully, FALSE + * otherwise + */ + public function serve($database, $table, $format, $request, $censor = false) + { + // Parse the request + $result = preg_match( + '/(?P<target>[^\s]+)(\s+an?\s+)?(?P<suggestion>.*)?/', + $request, + $match + ); + + if (!$result) { + return false; + } + + // Resolve the target + $target = $match['target']; + if ($target == 'me') { + $target = $this->event->getNick(); + } + + // Process the request + $item = $this->getItem($database, $table, $match); + + // Reprocess the request for censorship if required + if ($this->plugins->hasPlugin('Censor')) { + $plugin = $this->plugins->getPlugin('Censor'); + $attempts = 0; + while ($censor && $attempts < 3) { + $clean = $plugin->cleanString($item->name); + if ($item->name != $clean) { + $attempts++; + $item = $this->getItem($database, $table, $match); + } else { + $censor = false; + } + } + if ($censor && $attempts == 3) { + $this->doAction($this->event->getSource(), 'shrugs.'); + } + } + + // Derive the proper article for the item + if (preg_match('/^[aeiou]/i', $item->name)) { + $article = 'an'; + } else { + $article = 'a'; + } + + // Format the message + $replacements = array( + 'target' => $target, + 'item' => $item->name, + 'link' => $item->link, + 'article' => $article + ); + + $msg = $format; + foreach ($replacements as $placeholder => $value) { + $msg = str_replace( + '%' . $placeholder . '%', + $value, + $msg + ); + } + + // Send the message + $this->doAction($this->event->getSource(), $msg); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/SpellCheck.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/SpellCheck.php new file mode 100644 index 0000000000..b731cffc87 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/SpellCheck.php @@ -0,0 +1,118 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_TerryChay + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_TerryChay + */ + +/** + * Handles requests for checking spelling of specified words and returning + * either confirmation of correctly spelled words or potential correct + * spellings for misspelled words. + * + * @category Phergie + * @package Phergie_Plugin_SpellCheck + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_TerryChay + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses extension pspell + */ +class Phergie_Plugin_SpellCheck extends Phergie_Plugin_Abstract +{ + /** + * Spell check dictionary handler + * + * @var resource + */ + protected $pspell; + + /** + * Limit on the number of potential correct spellings returned + * + * @var int + */ + protected $limit; + + /** + * Check for dependencies. + * + * @return void + */ + public function onLoad() + { + if (!extension_loaded('pspell')) { + $this->fail('pspell php extension is required'); + } + + if (!$this->getConfig('spellcheck.lang')) { + $this->fail('Setting spellcheck.lang must be filled-in'); + } + + $this->plugins->getPlugin('Command'); + + set_error_handler(array($this, 'loadDictionaryError')); + $this->pspell = pspell_new($this->getConfig('spellcheck.lang')); + restore_error_handler(); + + $this->limit = $this->getConfig('spellcheck.limit', 5); + } + + /** + * Intercepts and handles requests for spell checks. + * + * @param string $word the string to perform checks against + * + * @return void + */ + public function onCommandSpell($word) + { + $source = $this->event->getSource(); + $target = $this->event->getNick(); + + $message = $target . ': The word "' . $word; + $message .= '" seems to be spelled correctly.'; + if (!pspell_check($this->pspell, $word)) { + $suggestions = pspell_suggest($this->pspell, $word); + + $message = $target; + $message .= ': I could not find any suggestions for "' . $word . '".'; + if (!empty($suggestions)) { + $suggestions = array_splice($suggestions, 0, $this->limit); + $message = $target . ': Suggestions for "'; + $message .= $word . '": ' . implode(', ', $suggestions) . '.'; + } + } + + $this->doPrivmsg($source, $message); + } + + /** + * Handle any errors from loading dictionary + * + * @param integer $errno Error code + * @param string $errstr Error message + * @param string $errfile File that errored + * @param integer $errline Line where the error happened + * + * @return void + */ + protected function loadDictionaryError($errno, $errstr, $errfile, $errline) + { + $this->fail($errstr); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Statusnet.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Statusnet.php new file mode 100644 index 0000000000..dc2680a6df --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Statusnet.php @@ -0,0 +1,143 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * + * 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/>. + * + * Talks to the Statusnet IM architecture to enqueue incoming message messages + * and notify result of nickname registration checks + * + * @category Phergie + * @package Phergie_Plugin_Statusnet + * @author Luke Fitzgerald <lw.fitzgerald@googlemail.com> + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class Phergie_Plugin_Statusnet extends Phergie_Plugin_Abstract { + /** + * Message callback details + * + * @var array + */ + protected $messageCallback; + + /** + * Registration check callback details + * + * @var array + */ + protected $regCallback; + + /** + * Connection established callback details + * + * @var array + */ + protected $connectedCallback; + + /** + * Load callback from config + */ + public function onLoad() { + $messageCallback = $this->config['statusnet.messagecallback']; + if (is_callable($messageCallback)) { + $this->messageCallback = $messageCallback; + } else { + $this->messageCallback = NULL; + } + + $regCallback = $this->config['statusnet.regcallback']; + if (is_callable($regCallback)) { + $this->regCallback = $regCallback; + } else { + $this->regCallback = NULL; + } + + $connectedCallback = $this->config['statusnet.connectedcallback']; + if (is_callable($connectedCallback)) { + $this->connectedCallback = $connectedCallback; + } else { + $this->connectedCallback = NULL; + } + + $this->unregRegexp = $this->getConfig('statusnet.unregregexp', '/\x02(.*?)\x02 (?:isn\'t|is not) registered/i'); + $this->regRegexp = $this->getConfig('statusnet.regregexp', '/(?:\A|\x02)(\w+?)\x02? (?:\(account|is \w+?\z)/i'); + } + + /** + * Passes incoming messages to StatusNet + * + * @return void + */ + public function onPrivmsg() { + if ($this->messageCallback !== NULL) { + $event = $this->getEvent(); + $source = $event->getSource(); + $sender = $event->getNick(); + $message = trim($event->getText()); + + if (strpos($source, '#') === 0) { + $botNick = $this->getConnection()->getNick(); + $nickPos = strpos($message, $botNick); + $nickLen = strlen($botNick); + $colonPos = strpos($message, ':', $nickLen); + $commandStr = trim(substr($message, $colonPos+1)); + if ($nickPos === 0 && $colonPos == $nickLen && !empty($commandStr)) { + call_user_func($this->messageCallback, array('source' => $source, 'sender' => $sender, 'message' => $commandStr)); + } + } else { + call_user_func($this->messageCallback, array('source' => $source, 'sender' => $sender, 'message' => $message)); + } + } + } + + /** + * Catches the response from NickServ + * + * @return void + */ + public function onNotice() { + if ($this->regCallback !== NULL) { + $event = $this->getEvent(); + if ($event->getNick() == 'NickServ') { + $message = $event->getArgument(1); + if (preg_match($this->unregRegexp, $message, $groups)) { + $screenname = $groups[1]; + call_user_func($this->regCallback, array('screenname' => $screenname, 'registered' => false)); + } elseif (preg_match($this->regRegexp, $message, $groups)) { + $screenname = $groups[1]; + call_user_func($this->regCallback, array('screenname' => $screenname, 'registered' => true)); + } + } + } + } + + /** + * Intercepts the end of the "message of the day" response and tells + * StatusNet we're connected + * + * @return void + */ + public function onResponse() { + switch ($this->getEvent()->getCode()) { + case Phergie_Event_Response::RPL_ENDOFMOTD: + case Phergie_Event_Response::ERR_NOMOTD: + if ($this->connectedCallback !== NULL) { + call_user_func($this->connectedCallback); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Tea.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tea.php new file mode 100644 index 0000000000..c6453566c7 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tea.php @@ -0,0 +1,69 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Tea + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Tea + */ + +/** + * Processes requests to serve users tea. + * + * @category Phergie + * @package Phergie_Plugin_Tea + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Tea + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Serve pear.phergie.org + */ +class Phergie_Plugin_Tea extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Command'); + $plugins->getPlugin('Serve'); + } + + /** + * Processes requests to serve a user tea. + * + * @param string $request Request including the target and an optional + * suggestion of what tea to serve + * + * @return void + */ + public function onCommandTea($request) + { + $format = $this->getConfig( + 'tea.format', + 'serves %target% a cup of %item% tea.' + ); + + $this->plugins->getPlugin('Serve')->serve( + dirname(__FILE__) . '/Tea/tea.db', + 'tea', + $format, + $request + ); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Tea/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tea/db.php new file mode 100644 index 0000000000..21fe1950d1 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tea/db.php @@ -0,0 +1,49 @@ +<?php + +if (!defined('__DIR__')) { + define('__DIR__', dirname(__FILE__)); +} + +// Create database schema +echo 'Creating database', PHP_EOL; +$file = __DIR__ . '/tea.db'; +if (file_exists($file)) { + unlink($file); +} +$db = new PDO('sqlite:' . $file); +$db->exec('CREATE TABLE tea (name VARCHAR(255), link VARCHAR(255))'); +$db->exec('CREATE UNIQUE INDEX tea_name ON tea (name)'); +$insert = $db->prepare('INSERT INTO tea (name, link) VALUES (:name, :link)'); + +// Get raw teacuppa.com data set +echo 'Downloading teacuppa.com data set', PHP_EOL; +$file = __DIR__ . '/tea-list.html'; +if (!file_exists($file)) { + copy('http://www.teacuppa.com/tea-list.asp', $file); +} +$contents = file_get_contents($file); + +// Extract data from data set +echo 'Processing teacuppa.com data', PHP_EOL; +$contents = tidy_repair_string($contents); +libxml_use_internal_errors(true); +$doc = new DOMDocument; +$doc->loadHTML($contents); +libxml_clear_errors(); +$xpath = new DOMXPath($doc); +$teas = $xpath->query('//p[@class="page_title"]/following-sibling::table//a'); +$db->beginTransaction(); +foreach ($teas as $tea) { + $name = preg_replace( + array('/\s*\v+\s*/', '/\s+tea\s*$/i'), + array(' ', ''), + $tea->textContent + ); + $link = 'http://teacuppa.com/' . $tea->getAttribute('href'); + $insert->execute(array($name, $link)); +} +$db->commit(); + +// Clean up +echo 'Cleaning up', PHP_EOL; +unlink($file); diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Temperature.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Temperature.php new file mode 100644 index 0000000000..541fd85cff --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Temperature.php @@ -0,0 +1,81 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Temperature + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Temperature + */ + +/** + * Performs temperature calculations for other plugins. + * + * @category Phergie + * @package Phergie_Plugin_Temperature + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Temperature + */ +class Phergie_Plugin_Temperature extends Phergie_Plugin_Abstract +{ + /** + * Converts a temperature in Celsius to Fahrenheit. + * + * @param int $temp Temperature in Celsius + * + * @return int Temperature converted to Fahrenheit + */ + public function convertCelsiusToFahrenheit($temp) + { + return round(((((int) $temp * 9) / 5) + 32)); + } + + /** + * Converts a temperature in Fahrenheit to Celsius. + * + * @param int $temp Temperature in Fahrenheit + * + * @return int Temperature converted to Celsius + */ + public function convertFahrenheitToCelsius($temp) + { + return round(((((int) $temp - 32) * 5) / 9)); + } + + /** + * Calculates the heat index (i.e. "feels like" temperature) based on + * temperature and relative humidity. + * + * @param int $temperature Temperature in degrees Fahrenheit + * @param int $humidity Relative humidity (ex: 68) + * @return int Heat index in degrees Fahrenheit + */ + public function getHeatIndex($temperature, $humidity) + { + $temperature2 = $temperature * $temperature; + $humidity2 = $humidity * $humidity; + return round( + -42.379 + + (2.04901523 * $temperature) + + (10.14333127 * $humidity) - + (0.22475541 * $temperature * $humidity) - + (0.00683783 * $temperature2) - + (0.05481717 * $humidity2) + + (0.00122874 * $temperature2 * $humidity) + + (0.00085282 * $temperature * $humidity2) - + (0.00000199 * $temperature2 * $humidity2) + ); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/TerryChay.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/TerryChay.php new file mode 100644 index 0000000000..246cfc3986 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/TerryChay.php @@ -0,0 +1,94 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_TerryChay + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_TerryChay + */ + +/** + * Parses incoming messages for the words "Terry Chay" or tychay and responds + * with a random Terry fact retrieved from the Chayism web service. + * + * @category Phergie + * @package Phergie_Plugin_TerryChay + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_TerryChay + * @uses Phergie_Plugin_Http pear.phergie.org + */ +class Phergie_Plugin_TerryChay extends Phergie_Plugin_Abstract +{ + /** + * URL to the web service + * + * @const string + */ + const URL = 'http://phpdoc.info/chayism/'; + + /** + * HTTP plugin + * + * @var Phergie_Plugin_Http + */ + protected $http; + + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $this->getPluginHandler()->getPlugin('Http'); + } + + /** + * Fetches a chayism. + * + * @return string|bool Fetched chayism or FALSE if the operation failed + */ + public function getChayism() + { + return $this + ->getPluginHandler() + ->getPlugin('Http') + ->get(self::URL) + ->getContent(); + } + + /** + * Parses incoming messages for "Terry Chay" and related variations and + * responds with a chayism. + * + * @return void + */ + public function onPrivmsg() + { + $event = $this->getEvent(); + $source = $event->getSource(); + $message = $event->getText(); + $pattern + = '{^(' . preg_quote($this->getConfig('command.prefix')) . + '\s*)?.*(terry\s+chay|tychay)}ix'; + + if (preg_match($pattern, $message)) { + if($fact = $this->getChayism()) { + $this->doPrivmsg($source, 'Fact: ' . $fact); + } + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/TheFuckingWeather.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/TheFuckingWeather.php new file mode 100644 index 0000000000..8559426b61 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/TheFuckingWeather.php @@ -0,0 +1,144 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_TheFuckingWeather + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_TheFuckingWeather + */ + +/** + * Detects and responds to requests for current weather conditions in a + * particular location using data from a web service. + * + * @category Phergie + * @package Phergie_Plugin_TheFuckingWeather + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_TheFuckingWeather + * @link http://thefuckingweather.com + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Http pear.phergie.org + */ + +class Phergie_Plugin_TheFuckingWeather extends Phergie_Plugin_Abstract +{ + /** + * HTTP plugin + * + * @var Phergie_Plugin_Http + */ + protected $http = null; + + /** + * Base API URL + * + * @var string + */ + protected $url = 'http://www.thefuckingweather.com/?zipcode='; + + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $pluginHandler = $this->getPluginHandler(); + $pluginHandler->getPlugin('Command'); + $this->http = $pluginHandler->getPlugin('Http'); + } + + /** + * Returns the weather from the specified location. + * + * @param string $location Location term + * + * @return void + * @todo Implement use of URL shortening here + */ + public function onCommandThefuckingweather($location) + { + $source = $this->getEvent()->getSource(); + $target = $this->getEvent()->getNick(); + $out = $this->getWeather($location); + if (!$out) { + $this->doNotice($source, $out); + } else { + $this->doPrivmsg($source, $target . ': ' . $out); + } + } + + /** + * Alias for TheFuckingWeather command. + * + * @param string $location Location term + * + * @return void + */ + public function onCommandTfw($location) + { + $this->onCommandThefuckingweather($location); + } + + /** + * Get the necessary content and returns the search result. + * + * @param string $location Location term + * + * @return string|bool Search result or FALSE if none is found + * @todo Try to optimize pregs + */ + protected function getWeather($location) + { + $url = $this->url . urlencode($location); + $response = $this->http->get($url); + $content = $response->getContent(); + + preg_match_all( + '#<div><span class="small">(.*?)<\/span><\/div>#im', + $content, $matches + ); + $location = $matches[1][0]; + + if (!empty($location)) { + preg_match_all( + '#<div class="large" >(.*?)<br \/>#im', + $content, $matches + ); + $temp_numb = (int) $matches[1][0]; + $temp_numb .= ' F / ' . round(($temp_numb - 32) / 1.8, 0) . ' C?!'; + + preg_match_all( + '#<br \/>(.*?)<\/div><div id="remark"><br \/>#im', + $content, $matches + ); + $temp_desc = $matches[1][0]; + + preg_match_all( + '#<div id="remark"><br \/>\n<span>(.*?)<\/span><\/div>#im', + $content, $matches + ); + $remark = $matches[1][0]; + + $result = "{$location}: {$temp_numb} {$temp_desc} ({$remark})"; + $result = preg_replace('/</', ' <', $result); + $result = strip_tags($result); + return html_entity_decode($result); + } else { + return 'No fucking clue where that is.'; + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Time.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Time.php new file mode 100644 index 0000000000..0d90bd8a68 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Time.php @@ -0,0 +1,72 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Time + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Time + */ + +/** + * Helper plugin to assist other plugins with time manipulation, display. + * + * Any shared time-related code should go into this class. + * + * @category Phergie + * @package Phergie_Plugin_Time + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Time + */ +class Phergie_Plugin_Time extends Phergie_Plugin_Abstract +{ + /** + * Returns the time interval between the current time and a given + * timestamp. + * + * @param string $timestamp Timestamp compatible with strtotime() + * + * @return string + */ + public function getCountdown($timestamp) + { + $time = time() - strtotime($timestamp); + $return = array(); + + $days = floor($time / 86400); + if ($days > 0) { + $return[] = $days . 'd'; + $time %= 86400; + } + + $hours = floor($time / 3600); + if ($hours > 0) { + $return[] = $hours . 'h'; + $time %= 3600; + } + + $minutes = floor($time / 60); + if ($minutes > 0) { + $return[] = $minutes . 'm'; + $time %= 60; + } + + if ($time > 0 || count($return) <= 0) { + $return[] = ($time > 0 ? $time : '0') . 's'; + } + + return implode(' ', $return); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Tld.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tld.php new file mode 100644 index 0000000000..d7d64a4717 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tld.php @@ -0,0 +1,148 @@ +<?php + +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Url + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Url + */ + +/** + * Responds to a request for a TLD (formatted as .tld where tld is the TLD to + * be looked up) with its corresponding description. + * + * @category Phergie + * @package Phergie_Plugin_Tld + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Tld + * @uses extension PDO + * @uses extension pdo_sqlite + */ +class Phergie_Plugin_Tld extends Phergie_Plugin_Abstract +{ + /** + * Connection to the database + * + * @var PDO + */ + protected $db; + + /** + * Prepared statement for selecting a single TLD + * + * @var PDOStatement + */ + protected $select; + + /** + * Prepared statement for selecting all TLDs + * + * @var PDOStatement + */ + protected $selectAll; + + /** + * Checks for dependencies and sets up the database and hard-coded values. + * + * @return void + */ + public function onLoad() + { + if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) { + $this->fail('PDO and pdo_sqlite extensions must be installed'); + } + + $dbFile = dirname(__FILE__) . '/Tld/tld.db'; + try { + $this->db = new PDO('sqlite:' . $dbFile); + + $this->select = $this->db->prepare(' + SELECT type, description + FROM tld + WHERE LOWER(tld) = LOWER(:tld) + '); + + $this->selectAll = $this->db->prepare(' + SELECT tld, type, description + FROM btld + '); + } catch (PDOException $e) { + $this->getPluginHandler()->removePlugin($this); + } + } + + /** + * takes a tld in the format '.tld' and returns its related data + * + * @param string $tld tld to process + * + * @return null + */ + public function onCommandTld($tld) + { + $tld = ltrim($tld, '.'); + $description = $this->getTld($tld); + $this->doPrivmsg( + $this->event->getSource(), + "{$this->getEvent()->getNick()}: .{$tld} -> " + . ($description ? $description : 'Unknown TLD') + ); + } + + /** + * Retrieves the definition for a given TLD if it exists + * + * @param string $tld TLD to search for + * + * @return mixed Definition of the given TLD as a string or false if unknown + */ + public function getTld($tld) + { + $tld = trim(strtolower($tld)); + if ($this->select->execute(array('tld' => $tld))) { + $tlds = $this->select->fetch(); + if (is_array($tlds)) { + return '(' . $tlds['type'] . ') ' . $tlds['description']; + } + } + return false; + } + + /** + * Retrieves a list of all the TLDs and their definitions + * + * @return mixed Array of all the TLDs and their definitions or FALSE on + * failure + */ + public function getTlds() + { + if ($this->selectAll->execute()) { + $tlds = $this->selectAll->fetchAll(); + if (is_array($tlds)) { + $tldinfo = array(); + foreach ($tlds as $key => $tld) { + if (!empty($tld['tld'])) { + $tldinfo[$tld['tld']] = "({$tld['type']}) " + . $tld['description']; + } + } + return $tldinfo; + } + } + return false; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Tld/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tld/db.php new file mode 100644 index 0000000000..28f963ad10 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Tld/db.php @@ -0,0 +1,68 @@ +<?php + +$dbFile = 'tld.db'; + +if (file_exists($dbFile)) { + exit; +} + +$db = new PDO('sqlite:' . dirname(__FILE__) . '/' . $dbFile); + +$query = ' + CREATE TABLE tld ( + tld VARCHAR(20), + type VARCHAR(20), + description VARCHAR(255) + ) +'; +$db->exec($query); + +$insert = $db->prepare(' + INSERT INTO tld (tld, type, description) + VALUES (:tld, :type, :description) +'); + +$contents = file_get_contents( + 'http://www.iana.org/domains/root/db/' +); + +libxml_use_internal_errors(true); +$doc = new DOMDocument; +$doc->loadHTML($contents); +libxml_clear_errors(); + +$descriptions = array( + 'com' => 'Commercial', + 'info' => 'Information', + 'net' => 'Network', + 'org' => 'Organization', + 'edu' => 'Educational', + 'name' => 'Individuals, by name' +); + +$xpath = new DOMXPath($doc); +$rows = $xpath->query('//tr[contains(@class, "iana-group")]'); +foreach (range(0, $rows->length - 1) as $index) { + $row = $rows->item($index); + $tld = strtolower(ltrim($row->childNodes->item(0)->textContent, '.')); + $type = $row->childNodes->item(1)->nodeValue; + if (isset($descriptions[$tld])) { + $description = $descriptions[$tld]; + } else { + $description = $row->childNodes->item(2)->textContent; + $regex = '{(^(?:Reserved|Restricted)\s*(?:exclusively\s*)?' + . '(?:for|to)\s*(?:members of\s*)?(?:the|support)?' + . '\s*|\s*as advised.*$)}i'; + $description = preg_replace($regex, '', $description); + $description = ucfirst(trim($description)); + } + $data = array_map( + 'html_entity_decode', + array( + 'tld' => $tld, + 'type' => $type, + 'description' => $description + ) + ); + $insert->execute($data); +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter.php new file mode 100644 index 0000000000..4a77d1e418 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter.php @@ -0,0 +1,206 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Twitter + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Twitter + */ + +/** + * These requires are for library code, so they don't fit Autoload's normal + * conventions. + * + * @link http://github.com/scoates/simpletweet + */ +require dirname(__FILE__) . '/Twitter/twitter.class.php'; +require dirname(__FILE__) . '/Twitter/laconica.class.php'; + +/** + * Twitter plugin; Allows tweet (if configured) and twitter commands + * + * Usage: + * tweet text to tweet + * (sends a message to twitter and Phergie will give you the link) + * twitter username + * (fetches and displays the last tweet by @username) + * twitter username 3 + * (fetches and displays the third last tweet by @username) + * twitter 1234567 + * (fetches and displays tweet number 1234567) + * http://twitter.com/username/statuses/1234567 + * (same as `twitter 1234567`) + * + * @category Phergie + * @package Phergie_Plugin_Twitter + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Twitter + * @uses Phergie_Plugin_Time pear.phergie.org + */ +class Phergie_Plugin_Twitter extends Phergie_Plugin_Abstract +{ + /** + * Twitter object (from Simpletweet) + */ + protected $twitter; + + /** + * Twitter user + */ + protected $twitteruser = null; + + /** + * Password + */ + protected $twitterpassword = null; + + /** + * Register with the URL plugin, if possible + * + * @return void + */ + public function onConnect() + { + if ($url = $this->getPluginHandler()->getPlugin('Url')) { + $url->registerRenderer($this); + } + } + + /** + * Initialize (set up configuration vars) + * + * @return void + */ + public function onLoad() + { + if (!isset($this->config['twitter.class']) + || !$twitterClass = $this->config['twitter.class'] + ) { + $twitterClass = 'Twitter'; + } + + $this->twitteruser = $this->config['twitter.user']; + $this->twitterpassword = $this->config['twitter.password']; + $url = $this->config['twitter.url']; + + $this->twitter = new $twitterClass( + $this->twitteruser, + $this->twitterpassword, + $url + ); + + } + + /** + * Fetches the associated tweet and relays it to the channel + * + * @param string $tweeter if numeric the tweet number/id, otherwise the + * twitter user name (optionally prefixed with @) + * @param int $num optional tweet number for this user (number of + * tweets ago) + * + * @return void + */ + public function onCommandTwitter($tweeter = null, $num = 1) + { + $source = $this->getEvent()->getSource(); + if (is_numeric($tweeter)) { + $tweet = $this->twitter->getTweetByNum($tweeter); + } else if (is_null($tweeter) && $this->twitteruser) { + $tweet = $this->twitter->getLastTweet($this->twitteruser, 1); + } else { + $tweet = $this->twitter->getLastTweet(ltrim($tweeter, '@'), $num); + } + if ($tweet) { + $this->doPrivmsg($source, $this->formatTweet($tweet)); + } + } + + /** + * Sends a tweet to Twitter as the configured user + * + * @param string $txt the text to tweet + * + * @return void + */ + public function onCommandTweet($txt) + { + $nick = $this->getEvent()->getNick(); + if (!$this->twitteruser) { + return; + } + $source = $this->getEvent()->getSource(); + if ($tweet = $this->twitter->sendTweet($txt)) { + $this->doPrivmsg( + $source, 'Tweeted: ' + . $this->twitter->getUrlOutputStatus($tweet) + ); + } else { + $this->doNotice($nick, 'Tweet failed'); + } + } + + /** + * Formats a Tweet into a message suitable for output + * + * @param object $tweet JSON-decoded tweet object from Twitter + * @param bool $includeUrl whether or not to include the URL in the + * formatted output + * + * @return string + */ + protected function formatTweet(StdClass $tweet, $includeUrl = true) + { + $ts = $this->plugins->time->getCountDown($tweet->created_at); + $out = '<@' . $tweet->user->screen_name .'> '. $tweet->text + . ' - ' . $ts . ' ago'; + if ($includeUrl) { + $out .= ' (' . $this->twitter->getUrlOutputStatus($tweet) . ')'; + } + return $out; + } + + /** + * Renders a URL + * + * @param array $parsed parse_url() output for the URL to render + * + * @return bool + */ + public function renderUrl(array $parsed) + { + if ($parsed['host'] != 'twitter.com' + && $parsed['host'] != 'www.twitter.com' + ) { + // unable to render non-twitter URLs + return false; + } + + $source = $this->getEvent()->getSource(); + + if (preg_match('#^/(.*?)/status(es)?/([0-9]+)$#', $parsed['path'], $matches) + ) { + $tweet = $this->twitter->getTweetByNum($matches[3]); + if ($tweet) { + $this->doPrivmsg($source, $this->formatTweet($tweet, false)); + } + return true; + } + + // if we get this far, we haven't satisfied the URL, so bail: + return false; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter/laconica.class.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter/laconica.class.php new file mode 100644 index 0000000000..e411991dbe --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter/laconica.class.php @@ -0,0 +1,41 @@ +<?php +/** + * Sean's Simple Twitter Library - Laconica extension + * + * Copyright 2008, Sean Coates + * Usage of the works is permitted provided that this instrument is retained + * with the works, so that any entity that uses the works is notified of this + * instrument. + * DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY. + * ( Fair License - http://www.opensource.org/licenses/fair.php ) + * Short license: do whatever you like with this. + * + */ +class Twitter_Laconica extends Twitter { + + /** + * Constructor; sets up configuration. + * + * @param string $user Laconica user name; null for limited read-only access + * @param string $pass Laconica password; null for limited read-only access + * @param string $baseUrl Base URL of Laconica install. Defaults to identi.ca + */ + public function __construct($user=null, $pass=null, $baseUrl = 'http://identi.ca/') { + $this->baseUrl = $baseUrl; + parent::__construct($user, $pass); + } + + /** + * Returns the base API URL + */ + protected function getUrlApi() { + return $this->baseUrlFull . 'api/'; + } + + /** + * Output URL: status + */ + public function getUrlOutputStatus(StdClass $tweet) { + return $this->baseUrl . 'notice/' . urlencode($tweet->id); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter/twitter.class.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter/twitter.class.php new file mode 100644 index 0000000000..31173a6d08 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Twitter/twitter.class.php @@ -0,0 +1,287 @@ +<?php +/** + * Sean's Simple Twitter Library + * + * Probably a little more or a little less than you need. + * + * Copyright 2008, Sean Coates + * Usage of the works is permitted provided that this instrument is retained + * with the works, so that any entity that uses the works is notified of this + * instrument. + * DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY. + * ( Fair License - http://www.opensource.org/licenses/fair.php ) + * Short license: do whatever you like with this. + * + * komode: le=unix language=php codepage=utf8 tab=4 notabs indent=4 + */ +class Twitter { + + /** + * Base URL for Twitter API + * + * Do not specify user/password in URL + */ + protected $baseUrl = 'http://twitter.com/'; + + /** + * Full base URL (includes user/pass) + * + * (created in Init) + */ + protected $baseUrlFull = null; + + /** + * Twitter API user + */ + protected $user; + + /** + * Twitter API password + */ + protected $pass; + + /** + * Constructor; sets up configuration. + * + * @param string $user Twitter user name; null for limited read-only access + * @param string $pass Twitter password; null for limited read-only access + */ + public function __construct($user=null, $pass=null) { + $this->baseUrlFull = $this->baseUrl; + if (null !== $user) { + // user is defined, so use it in the URL + $this->user = $user; + $this->pass = $pass; + $parsed = parse_url($this->baseUrl); + $this->baseUrlFull = $parsed['scheme'] . '://' . $this->user . ':' . + $this->pass . '@' . $parsed['host']; + // port (optional) + if (isset($parsed['port']) && is_numeric($parsed['port'])) { + $this->baseUrlFull .= ':' . $parsed['port']; + } + // append path (default: /) + if (isset($parsed['path'])) { + $this->baseUrlFull .= $parsed['path']; + } else { + $this->baseUrlFull .= '/'; + } + } + } + + /** + * Fetches a tweet by its number/id + * + * @param int $num the tweet id/number + * @return string (null on failure) + */ + public function getTweetByNum($num) { + if (!is_numeric($num)) { + return; + } + $tweet = json_decode(file_get_contents($this->getUrlStatus($num))); + return $tweet; + } + + /** + * Reads [last] tweet from user + * + * @param string $tweeter the tweeter username + * @param int $num this many tweets ago (1 = current tweet) + * @return string (false on failure) + */ + public function getLastTweet($tweeter, $num = 1) + { + $source = json_decode(file_get_contents($this->getUrlUserTimeline($tweeter))); + if ($num > count($source)) { + return false; + } + $tweet = $source[$num - 1]; + if (!isset($tweet->user->screen_name) || !$tweet->user->screen_name) { + return false; + } + return $tweet; + } + + /** + * fetches mentions for a user + */ + public function getMentions($sinceId=null, $count=20) { + return json_decode(file_get_contents($this->getUrlMentions($sinceId, $count))); + } + + /** + * Fetches followers for a user + */ + public function getFollowers($cursor=-1) { + return json_decode(file_get_contents($this->getUrlFollowers($cursor))); + } + + /** + * Follow a userid + */ + public function follow($userId) { + $params = array( + 'http' => array( + 'method' => 'POST', + 'content' => array(), + 'header' => 'Content-type: application/x-www-form-urlencoded', + ) + ); + $ctx = stream_context_create($params); + $fp = fopen($this->getUrlFollow($userId), 'rb', false, $ctx); + if (!$fp) { + return false; + } + $response = stream_get_contents($fp); + if ($response === false) { + return false; + } + $response = json_decode($response); + return $response; + } + + /** + * fetches DMs for a user + */ + public function getDMs($sinceId=null, $count=20, $page=1) { + return json_decode(file_get_contents($this->getUrlDMs($sinceId, $count, $page))); + } + + /** + * Send DM + */ + public function sendDM($screenName, $text) { + $data = http_build_query(array('screen_name'=>$screenName, 'text'=>$text)); + $params = array( + 'http' => array( + 'method' => 'POST', + 'content' => $data, + 'header' => 'Content-type: application/x-www-form-urlencoded', + ) + ); + $ctx = stream_context_create($params); + $fp = fopen($this->getUrlSendDM(), 'rb', false, $ctx); + if (!$fp) { + return false; + } + $response = stream_get_contents($fp); + if ($response === false) { + return false; + } + $response = json_decode($response); + return $response; + } + + /** + * Sends a tweet + * + * @param string $txt the tweet text to send + * @return string URL of tweet (or false on failure) + */ + public function sendTweet($txt, $limit=true) { + if ($limit) { + $txt = substr($txt, 0, 140); // twitter message size limit + } + $data = 'status=' . urlencode($txt); + $params = array( + 'http' => array( + 'method' => 'POST', + 'content' => $data, + 'header' => 'Content-type: application/x-www-form-urlencoded', + ) + ); + $ctx = stream_context_create($params); + $fp = fopen($this->getUrlTweetPost(), 'rb', false, $ctx); + if (!$fp) { + return false; + } + $response = stream_get_contents($fp); + if ($response === false) { + return false; + } + $response = json_decode($response); + return $response; + } + + /** + * Returns the base API URL + */ + protected function getUrlApi() { + return $this->baseUrlFull; + } + + /** + * Returns the status URL + * + * @param int $num the tweet number + */ + protected function getUrlStatus($num) { + return $this->getUrlApi() . 'statuses/show/'. urlencode($num) .'.json'; + } + + /** + * Returns the user timeline URL + */ + protected function getUrlUserTimeline($user) { + return $this->getUrlApi() . 'statuses/user_timeline/'. urlencode($user) .'.json'; + } + + /** + * Returns the tweet posting URL + */ + protected function getUrlTweetPost() { + return $this->getUrlApi() . 'statuses/update.json'; + } + + /** + * Output URL: status + */ + public function getUrlOutputStatus(StdClass $tweet) { + return $this->baseUrl . urlencode($tweet->user->screen_name) . '/statuses/' . urlencode($tweet->id); + } + + /** + * Return mentions URL + */ + public function getUrlMentions($sinceId=null, $count=20) { + $url = $this->baseUrlFull . 'statuses/mentions.json?count=' . urlencode($count); + if ($sinceId !== null) { + $url .= '&since_id=' . urlencode($sinceId); + } + return $url; + } + + /** + * Returns the followers URL + */ + public function getUrlFollowers($cursor=-1) { + return $this->baseUrlFull . 'statuses/followers.json?cursor=' . ((int)$cursor); + } + + /** + * Returns the follow-user URL + */ + public function getUrlFollow($userid) { + return $this->baseUrlFull . 'friendships/create/' . ((int) $userid) . '.json'; + } + + /** + * Returns the get DMs URL + */ + public function getUrlDMs($sinceId=null, $count=20, $page=1) { + $url = $this->baseUrlFull . 'direct_messages.json?'; + if ($sinceId !== null) { + $url .= 'since_id=' . urlencode($sinceId); + } + $url .= "&page={$page}"; + $url .= "&count={$count}"; + return $url; + } + + /** + * Returns the send DM URL + */ + public function getURLSendDM() { + return $this->baseUrlFull . 'direct_messages/new.json'; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Url.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Url.php new file mode 100644 index 0000000000..bac115b1b9 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Url.php @@ -0,0 +1,638 @@ +<?php +/** + * Phergie + * + * PHP version 5 + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. + * It is also available through the world-wide-web at this URL: + * http://phergie.org/license + * + * @category Phergie + * @package Phergie_Plugin_Url + * @author Phergie Development Team <team@phergie.org> + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Url + */ + +/** + * Monitors incoming messages for instances of URLs and responds with messages + * containing relevant information about detected URLs. + * + * Has an utility method accessible via + * $this->getPlugin('Url')->getTitle('http://foo..'). + * + * @category Phergie + * @package Phergie_Plugin_Url + * @author Phergie Development Team <team@phergie.org> + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Url + * @uses Phergie_Plugin_Encoding pear.phergie.org + * @uses Phergie_Plugin_Http pear.phergie.org + * @uses Phergie_Plugin_Tld pear.phergie.org + */ +class Phergie_Plugin_Url extends Phergie_Plugin_Abstract +{ + /** + * Links output format + * + * Can use the variables %nick%, %title% and %link% in it to display + * page titles and links + * + * @var string + */ + protected $baseFormat = '%message%'; + protected $messageFormat = '[ %link% ] %title%'; + + /** + * Flag indicating whether a single response should be sent for a single + * message containing multiple links + * + * @var bool + */ + protected $mergeLinks = true; + + /** + * Max length of the fetched URL title + * + * @var int + */ + protected $titleLength = 40; + + /** + * Url cache to prevent spamming, especially with multiple bots on the + * same channel + * + * @var array + */ + protected $urlCache = array(); + protected $shortCache = array(); + + /** + * Time in seconds to store the cached entries + * + * Setting it to 0 or below disables the cache expiration + * + * @var int + */ + protected $expire = 1800; + + /** + * Number of entries to keep in the cache at one time per channel + * + * Setting it to 0 or below disables the cache limit + * + * @var int + */ + protected $limit = 10; + + /** + * Flag that determines if the plugin will fall back to using an HTTP + * stream when a URL using SSL is detected and OpenSSL support isn't + * available in the PHP installation in use + * + * @var bool + */ + protected $sslFallback = true; + + /** + * Flag that is set to true by the custom error handler if an HTTP error + * code has been received + * + * @var boolean + */ + protected $errorStatus = false; + protected $errorMessage = null; + + /** + * Flag indicating whether or not to display error messages as the title + * if a link posted encounters an error + * + * @var boolean + */ + protected $showErrors = true; + + /** + * Flag indicating whether to detect schemeless URLS (i.e. "example.com") + * + * @var boolean + */ + protected $detectSchemeless = false; + + /** + * Shortener object + */ + protected $shortener; + + /** + * Array of renderers + */ + protected $renderers = array(); + + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Encoding'); + $plugins->getPlugin('Http'); + $plugins->getPlugin('Tld'); + + // make the shortener configurable + $shortener = $this->getConfig('url.shortener', 'Trim'); + $shortener = "Phergie_Plugin_Url_Shorten_{$shortener}"; + $this->shortener = new $shortener($this->plugins->getPlugin('Http')); + + if (!$this->shortener instanceof Phergie_Plugin_Url_Shorten_Abstract) { + $this->fail("Declared shortener class {$shortener} is not of proper ancestry"); + } + + // load config (a bit ugly, but focusing on porting): + foreach ( + array( + 'detect_schemeless' => 'detectSchemeless', + 'base_format' => 'baseFormat', + 'message_format' => 'messageFormat', + 'merge_links' => 'mergeLinks', + 'title_length' => 'titleLength', + 'show_errors' => 'showErrors', + 'expire' => 'expire', + ) as $config => $local) { + if (isset($this->config["url.{$config}"])) { + $this->$local = $this->config["uri.{$config}"]; + } + } + } + + /** + * Checks an incoming message for the presence of a URL and, if one is + * found, responds with its title if it is an HTML document and the + * shortened equivalent of its original URL if it meets length requirements. + * + * @todo Update this to pull configuration settings from $this->config + * rather than caching them as class properties + * @return void + */ + public function onPrivmsg() + { + $this->handleMsg(); + } + + /** + * Checks an incoming message for the presence of a URL and, if one is + * found, responds with its title if it is an HTML document and the + * shortened equivalent of its original URL if it meets length requirements. + * + * @todo Update this to pull configuration settings from $this->config + * rather than caching them as class properties + * @return void + */ + public function onAction() + { + $this->handleMsg(); + } + + /** + * Handles message events and responds with url titles. + * + * @return void + */ + protected function handleMsg() + { + $source = $this->getEvent()->getSource(); + $user = $this->getEvent()->getNick(); + + $responses = array(); + $urls = $this->findUrls($this->getEvent()->getArgument(1)); + + foreach ($urls as $parsed) { + $url = $parsed['glued']; + + // allow out-of-class renderers to handle this URL + foreach ($this->renderers as $renderer) { + if ($renderer->renderUrl($parsed) === true) { + // renderers should return true if they've fully + // rendered the passed URL (they're responsible + // for their own output) + $this->debug('Handled by renderer: ' . get_class($renderer)); + continue 2; + } + } + + // Convert url + $shortenedUrl = $this->shortener->shorten($url); + if (!$shortenedUrl) { + $this->debug('Invalid Url: Unable to shorten. (' . $url . ')'); + $shortenedUrl = $url; + } + + // Prevent spamfest + if ($this->checkUrlCache($url, $shortenedUrl)) { + $this->debug('Invalid Url: URL is in the cache. (' . $url . ')'); + continue; + } + + $title = $this->getTitle($url); + if (!empty($title)) { + $responses[] = str_replace( + array( + '%title%', + '%link%', + '%nick%' + ), array( + $title, + $shortenedUrl, + $user + ), $this->messageFormat + ); + } + + // Update cache + $this->updateUrlCache($url, $shortenedUrl); + unset($title, $shortenedUrl, $title); + } + + // Check to see if there were any URL responses, format them and handle if they + // get merged into one message or not + if (count($responses) > 0) { + if ($this->mergeLinks) { + $message = str_replace( + array( + '%message%', + '%nick%' + ), array( + implode('; ', $responses), + $user + ), $this->baseFormat + ); + $this->doPrivmsg($source, $message); + } else { + foreach ($responses as $response) { + $message = str_replace( + array( + '%message%', + '%nick%' + ), array( + implode('; ', $responses), + $user + ), $this->baseFormat + ); + $this->doPrivmsg($source, $message); + } + } + } + } + + /** + * Detect URLs in a given string. + * + * @param string $message the string to detect urls in + * + * @return array the array of urls found + */ + public function findUrls($message) + { + $pattern = '#'.($this->detectSchemeless ? '' : 'https?://').'(?:([0-9]{1,3}(?:\.[0-9]{1,3}){3})(?![^/]) | (' + .($this->detectSchemeless ? '(?<!http:/|https:/)[@/\\\]' : '').')?(?:(?:[a-z0-9_-]+\.?)+\.[a-z0-9]{1,6}))[^\s]*#xis'; + $urls = array(); + + // URL Match + if (preg_match_all($pattern, $message, $matches, PREG_SET_ORDER)) { + foreach ($matches as $m) { + $url = trim(rtrim($m[0], ', ].?!;')); + + // Check to see if the URL was from an email address, is a directory, etc + if (!empty($m[2])) { + $this->debug('Invalid Url: URL is either an email or a directory path. (' . $url . ')'); + continue; + } + + // Parse the given URL + if (!$parsed = $this->parseUrl($url)) { + $this->debug('Invalid Url: Could not parse the URL. (' . $url . ')'); + continue; + } + + // Check to see if the given IP/Host is valid + if (!empty($m[1]) and !$this->checkValidIP($m[1])) { + $this->debug('Invalid Url: ' . $m[1] . ' is not a valid IP address. (' . $url . ')'); + continue; + } + + // Process TLD if it's not an IP + if (empty($m[1])) { + // Get the TLD from the host + $pos = strrpos($parsed['host'], '.'); + $parsed['tld'] = ($pos !== false ? substr($parsed['host'], ($pos+1)) : ''); + + // Check to see if the URL has a valid TLD + if ($this->plugins->tld->getTld($parsed['tld']) === false) { + $this->debug('Invalid Url: ' . $parsed['tld'] . ' is not a supported TLD. (' . $url . ')'); + continue; + } + } + + // Check to see if the URL is to a secured site or not and handle it accordingly + if ($parsed['scheme'] == 'https' && !extension_loaded('openssl')) { + if (!$this->sslFallback) { + $this->debug('Invalid Url: HTTPS is an invalid scheme, OpenSSL isn\'t available. (' . $url . ')'); + continue; + } else { + $parsed['scheme'] = 'http'; + } + } + + if (!in_array($parsed['scheme'], array('http', 'https'))) { + $this->debug('Invalid Url: ' . $parsed['scheme'] . ' is not a supported scheme. (' . $url . ')'); + continue; + } + + $urls[] = $parsed + array('glued' => $this->glueURL($parsed)); + } + } + + return $urls; + } + + /** + * Checks a given URL (+shortened) against the cache to verify if they were + * previously posted on the channel. + * + * @param string $url The URL to check against + * @param string $shortenedUrl The shortened URL to check against + * + * @return bool + */ + protected function checkUrlCache($url, $shortenedUrl) + { + $source = $this->getEvent()->getSource(); + + /** + * Transform the URL (+shortened) into a HEX CRC32 checksum to prevent potential problems + * and minimize the size of the cache for less cache bloat. + */ + $url = $this->getUrlChecksum($url); + $shortenedUrl = $this->getUrlChecksum($shortenedUrl); + + $cache = array( + 'url' => isset($this->urlCache[$source][$url]) ? $this->urlCache[$source][$url] : null, + 'shortened' => isset($this->shortCache[$source][$shortenedUrl]) ? $this->shortCache[$source][$shortenedUrl] : null + ); + + $expire = $this->expire; + $this->debug("Cache expire: {$expire}"); + /** + * If cache expiration is enabled, check to see if the given url has expired in the cache + * If expire is disabled, simply check to see if the url is listed + */ + if (($expire > 0 && (($cache['url'] + $expire) > time() || ($cache['shortened'] + $expire) > time())) + || ($expire <= 0 && (isset($cache['url']) || isset($cache['shortened']))) + ) { + unset($cache, $url, $shortenedUrl, $expire); + return true; + } + unset($cache, $url, $shortenedUrl, $expire); + return false; + } + + /** + * Updates the cache and adds the given URL (+shortened) to the cache. It + * also handles cleaning the cache of old entries as well. + * + * @param string $url The URL to add to the cache + * @param string $shortenedUrl The shortened to add to the cache + * + * @return bool + */ + protected function updateUrlCache($url, $shortenedUrl) + { + $source = $this->getEvent()->getSource(); + + /** + * Transform the URL (+shortened) into a HEX CRC32 checksum to prevent potential problems + * and minimize the size of the cache for less cache bloat. + */ + $url = $this->getUrlChecksum($url); + $shortenedUrl = $this->getUrlChecksum($shortenedUrl); + $time = time(); + + // Handle the URL cache and remove old entries that surpass the limit if enabled + $this->urlCache[$source][$url] = $time; + if ($this->limit > 0 && count($this->urlCache[$source]) > $this->limit) { + asort($this->urlCache[$source], SORT_NUMERIC); + array_shift($this->urlCache[$source]); + } + + // Handle the shortened cache and remove old entries that surpass the limit if enabled + $this->shortCache[$source][$shortenedUrl] = $time; + if ($this->limit > 0 && count($this->shortCache[$source]) > $this->limit) { + asort($this->shortCache[$source], SORT_NUMERIC); + array_shift($this->shortCache[$source]); + } + unset($url, $shortenedUrl, $time); + } + + /** + * Transliterates a UTF-8 string into corresponding ASCII characters and + * truncates and appends an ellipsis to the string if it exceeds a given + * length. + * + * @param string $str String to decode + * @param int $trim Maximum string length, optional + * + * @return string + */ + protected function decode($str, $trim = null) + { + $out = $this->plugins->encoding->transliterate($str); + if ($trim > 0) { + $out = substr($out, 0, $trim) . (strlen($out) > $trim ? '...' : ''); + } + return $out; + } + + /** + * Takes a url, parses and cleans the URL without of all the junk + * and then return the hex checksum of the url. + * + * @param string $url url to checksum + * + * @return string the hex checksum of the cleaned url + */ + protected function getUrlChecksum($url) + { + $checksum = strtolower(urldecode($this->glueUrl($url, true))); + $checksum = preg_replace('#\s#', '', $this->plugins->encoding->transliterate($checksum)); + return dechex(crc32($checksum)); + } + + /** + * Parses a given URI and procceses the output to remove redundant + * or missing values. + * + * @param string $url the url to parse + * + * @return array the url components + */ + protected function parseUrl($url) + { + if (is_array($url)) return $url; + + $url = trim(ltrim($url, ' /@\\')); + if (!preg_match('&^(?:([a-z][-+.a-z0-9]*):)&xis', $url, $matches)) { + $url = 'http://' . $url; + } + $parsed = parse_url($url); + + if (!isset($parsed['scheme'])) { + $parsed['scheme'] = 'http'; + } + $parsed['scheme'] = strtolower($parsed['scheme']); + + if (isset($parsed['path']) && !isset($parsed['host'])) { + $host = $parsed['path']; + $path = ''; + if (strpos($parsed['path'], '/') !== false) { + list($host, $path) = array_pad(explode('/', $parsed['path'], 2), 2, null); + } + $parsed['host'] = $host; + $parsed['path'] = $path; + } + + return $parsed; + } + + /** + * Parses a given URI and then glues it back together in the proper format. + * If base is set, then it chops off the scheme, user and pass and fragment + * information to return a more unique base URI. + * + * @param string $uri uri to rebuild + * @param string $base set to true to only return the base components + * + * @return string the rebuilt uri + */ + protected function glueUrl($uri, $base = false) + { + $parsed = $uri; + if (!is_array($parsed)) { + $parsed = $this->parseUrl($parsed); + } + + if (is_array($parsed)) { + $uri = ''; + if (!$base) { + $uri .= (!empty($parsed['scheme']) ? $parsed['scheme'] . ':' . + ((strtolower($parsed['scheme']) == 'mailto') ? '' : '//') : ''); + $uri .= (!empty($parsed['user']) ? $parsed['user'] . + (!empty($parsed['pass']) ? ':' . $parsed['pass'] : '') . '@' : ''); + } + if ($base && !empty($parsed['host'])) { + $parsed['host'] = trim($parsed['host']); + if (substr($parsed['host'], 0, 4) == 'www.') { + $parsed['host'] = substr($parsed['host'], 4); + } + } + $uri .= (!empty($parsed['host']) ? $parsed['host'] : ''); + if (!empty($parsed['port']) + && (($parsed['scheme'] == 'http' && $parsed['port'] == 80) + || ($parsed['scheme'] == 'https' && $parsed['port'] == 443)) + ) { + unset($parsed['port']); + } + $uri .= (!empty($parsed['port']) ? ':' . $parsed['port'] : ''); + if (!empty($parsed['path']) && (!$base || $base && $parsed['path'] != '/')) { + $uri .= (substr($parsed['path'], 0, 1) == '/') ? $parsed['path'] : ('/' . $parsed['path']); + } + $uri .= (!empty($parsed['query']) ? '?' . $parsed['query'] : ''); + if (!$base) { + $uri .= (!empty($parsed['fragment']) ? '#' . $parsed['fragment'] : ''); + } + } + return $uri; + } + + /** + * Checks the given string to see if its a valid IP4 address + * + * @param string $ip the ip to validate + * + * @return bool + */ + protected function checkValidIP($ip) + { + return long2ip(ip2long($ip)) === $ip; + } + + /** + * Returns the title of the given page + * + * @param string $url url to the page + * + * @return string title + */ + public function getTitle($url) + { + $http = $this->plugins->getPlugin('Http'); + $options = array( + 'timeout' => 3.5, + 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12' + ); + + $response = $http->head($url, array(), $options); + $header = $response->getHeaders('Content-Type'); + + if (!preg_match('#^(text/x?html|application/xhtml+xml)(?:;.*)?$#', $header)) { + $title = $header; + } else { + $response = $http->get($url, array(), $options); + $content = $response->getContent(); + if (preg_match('#<title[^>]*>(.*?)#is', $content, $match)) { + $title = preg_replace('/[\s\v]+/', ' ', trim($match[1])); + } + } + $encoding = $this->plugins->getPlugin('Encoding'); + $title = $encoding->decodeEntities($title); + + if (empty($title)) { + if ($response->isError()) { + $title = $response->getCodeAsString(); + } else { + $title = 'No Title'; + } + } + + return $title; + } + + /** + * Output a debug message + * + * @param string $msg the message to output + * + * @return void + */ + protected function debug($msg) + { + echo "(DEBUG:Url) $msg\n"; + } + + /** + * Add a renderer to the stack + * + * @param object $obj the renderer to add + * + * @return void + */ + public function registerRenderer($obj) + { + $this->renderers[spl_object_hash($obj)] = $obj; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Url/Shorten/Abstract.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Url/Shorten/Abstract.php new file mode 100644 index 0000000000..607d1654c4 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Url/Shorten/Abstract.php @@ -0,0 +1,105 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + */ + +/** + * URL shortener abstract class + * + * @category Phergie + * @package Phergie_Plugin_Url + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Url + * @uses Phergie_Plugin_Http pear.phergie.org + */ +abstract class Phergie_Plugin_Url_Shorten_Abstract +{ + protected $http; + + /** + * Constructor + * + * @param Phergie_Plugin_Http $http instance of the http plugin + */ + public function __construct(Phergie_Plugin_Http $http) + { + $this->http = $http; + } + + /** + * Returns an array of request parameters given a url to shorten. The + * following keys are valid request parameters: + * + * * 'uri': the URI for the request (required) + * * 'query': an array of key-value pairs sent in a GET request + * * 'post': an array of key-value pairs sent in a POST request + * * 'callback': to be called after the request is finished. Should accept + * a Phergie_Plugin_Http_Response object and return either the shortened + * url or false if an error has occured. + * + * If the 'post' key is present a POST request shall be made; otherwise + * a GET request will be made. The 'post' key can be an empty array and + * a post request will still be made. + * + * If no callback is provided the contents of the response will be returned. + * + * @param string $url the url to shorten + * + * @return array the request parameters + */ + protected abstract function getRequestParams($url); + + /** + * Shortens a given url. + * + * @param string $url the url to shorten + * + * @return string the shortened url or false on a failure + */ + public function shorten($url) + { + $defaults = array('get' => array(), 'post' => array(), 'callback' => null); + $options = array('timeout' => 2); + $params = $this->getRequestParams($url) + $defaults; + + // Should some kind of notice be thrown? Maybe just if getRequestParams does not return an array? + if (!is_array($params) || empty($params['uri'])) { + return $url; + } + + if (!empty($params['post'])) { + $response = $this->http->post($params['uri'], $params['get'], $params['post'], $options); + } else { + $response = $this->http->get($params['uri'], $params['get'], $options); + } + + if (is_callable($params['callback'])) { + return call_user_func($params['callback'], $response); + } + + $code = $response->getCode(); + $content = trim($response->getContent); + if ($code < 200 || $code >= 300 || empty($content)) { + return false; + } + + return $response->getContent(); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Url/Shorten/Trim.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Url/Shorten/Trim.php new file mode 100644 index 0000000000..af7e8a514f --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Url/Shorten/Trim.php @@ -0,0 +1,64 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Php + */ + +/** + * Shortens urls via the tr.im service + * + * @category Phergie + * @package Phergie_Plugin_Url + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Url + */ +class Phergie_Plugin_Url_Shorten_Trim extends Phergie_Plugin_Url_Shorten_Abstract +{ + /** + * Returns an array of request parameters given a url to shorten. The + * following keys are valid request parameters: + * + * @param string $url the url to shorten + * + * @return array the request parameters + */ + protected function getRequestParams($url) + { + return array( + 'uri' => 'http://api.tr.im/v1/trim_simple?url=' . rawurlencode($url), + 'callback' => array($this, 'onComplete') + ); + } + + /** + * Callback for when the URL has been shortened. Checks for error messages. + * + * @param Phergie_Plugin_Http_Response $response the response object + * + * @return string|bool the shortened url or false on failure + */ + protected function onComplete($response) + { + if (strpos($response->getContent(), 'Error: ') === 0) { + return false; + } + + return $response->getContent(); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/UserInfo.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/UserInfo.php new file mode 100644 index 0000000000..9437073d8f --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/UserInfo.php @@ -0,0 +1,413 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_UserInfo + */ + +/** + * Provides an API for querying information on users. + * + * @category Phergie + * @package Phergie_Plugin_UserInfo + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_UserInfo + */ +class Phergie_Plugin_UserInfo extends Phergie_Plugin_Abstract +{ + const REGULAR = 1; + const VOICE = 2; + const HALFOP = 4; + const OP = 8; + const ADMIN = 16; + const OWNER = 32; + + /** + * An array containing all the user information for a given channel + * + * @var array + */ + protected $store = array(); + + /** + * Tracks mode changes + * + * @return void + */ + public function onMode() + { + $args = $this->event->getArguments(); + + if (count($args) != 3) { + return; + } + + list($chan, $modes, $nicks) = $args; + + if (!preg_match('/(?:\+|-)[hovaq+-]+/i', $modes)) { + return; + } + + $chan = trim(strtolower($chan)); + $modes = str_split(trim(strtolower($modes)), 1); + $nicks = explode(' ', trim(strtolower($nicks))); + $operation = array_shift($modes); // + or - + + while ($char = array_shift($modes)) { + $nick = array_shift($nicks); + $mode = null; + + switch ($char) { + case 'q': + $mode = self::OWNER; + break; + case 'a': + $mode = self::ADMIN; + break; + case 'o': + $mode = self::OP; + break; + case 'h': + $mode = self::HALFOP; + break; + case 'v': + $mode = self::VOICE; + break; + } + + if (!empty($mode)) { + if ($operation == '+') { + $this->store[$chan][$nick] |= $mode; + } else if ($operation == '-') { + $this->store[$chan][$nick] ^= $mode; + } + } + } + } + + /** + * Tracks users joining a channel + * + * @return void + */ + public function onJoin() + { + $chan = trim(strtolower($this->event->getArgument(0))); + $nick = trim(strtolower($this->event->getNick())); + + $this->store[$chan][$nick] = self::REGULAR; + } + + /** + * Tracks users leaving a channel + * + * @return void + */ + public function onPart() + { + $chan = trim(strtolower($this->event->getArgument(0))); + $nick = trim(strtolower($this->event->getNick())); + + if (isset($this->store[$chan][$nick])) { + unset($this->store[$chan][$nick]); + } + } + + /** + * Tracks users quitting a server + * + * @return void + */ + public function onQuit() + { + $nick = trim(strtolower($this->event->getNick())); + + foreach ($this->store as $chan => $store) { + if (isset($store[$nick])) { + unset($this->store[$chan][$nick]); + } + } + } + + /** + * Tracks users changing nicks + * + * @return void + */ + public function onNick() + { + $nick = trim(strtolower($this->event->getNick())); + $newNick = trim(strtolower($this->event->getArgument(0))); + + foreach ($this->store as $chan => $store) { + if (isset($store[$nick])) { + $this->store[$chan][$newNick] = $store[$nick]; + unset($this->store[$chan][$nick]); + } + } + } + + /** + * Populates the internal user listing for a channel when the bot joins it. + * + * @return void + */ + public function onResponse() + { + if ($this->event->getCode() != Phergie_Event_Response::RPL_NAMREPLY) { + return; + } + + $desc = preg_split('/[@*=]\s*/', $this->event->getDescription(), 2); + list($chan, $users) = array_pad(explode(' :', trim($desc[1])), 2, null); + $users = explode(' ', trim($users)); + + $chan = trim(strtolower($chan)); + + foreach ($users as $user) { + if (empty($user)) { + continue; + } + + $user = trim(strtolower($user)); + $flag = self::REGULAR; + + if ($user[0] == '~') { + $flag |= self::OWNER; + } else if ($user[0] == '&') { + $flag |= self::ADMIN; + } else if ($user[0] == '@') { + $flag |= self::OP; + } else if ($user[0] == '%') { + $flag |= self::HALFOP; + } else if ($user[0] == '+') { + $flag |= self::VOICE; + } + + if ($flag != self::REGULAR) { + $user = substr($user, 1); + } + + $this->store[$chan][$user] = $flag; + } + } + + /** + * Debugging function + * + * @return void + */ + public function onPrivmsg() + { + if ($this->getConfig('debug', false) == false) { + return; + } + + list($target, $msg) = array_pad($this->event->getArguments(), 2, null); + + if (preg_match('#^ishere (\S+)$#', $msg, $m)) { + $this->doPrivmsg($target, $this->isIn($m[1], $target) ? 'true' : 'false'); + } elseif (preg_match('#^isowner (\S+)$#', $msg, $m)) { + $this->doPrivmsg($target, $this->isOwner($m[1], $target) ? 'true' : 'false'); + } elseif (preg_match('#^isadmin (\S+)$#', $msg, $m)) { + $this->doPrivmsg($target, $this->isAdmin($m[1], $target) ? 'true' : 'false'); + } elseif (preg_match('#^isop (\S+)$#', $msg, $m)) { + $this->doPrivmsg($target, $this->isOp($m[1], $target) ? 'true' : 'false'); + } elseif (preg_match('#^ishop (\S+)$#', $msg, $m)) { + $this->doPrivmsg($target, $this->isHalfop($m[1], $target) ? 'true' : 'false'); + } elseif (preg_match('#^isvoice (\S+)$#', $msg, $m)) { + $this->doPrivmsg($target, $this->isVoice($m[1], $target) ? 'true' : 'false'); + } elseif (preg_match('#^channels (\S+)$#', $msg, $m)) { + $channels = $this->getChannels($m[1]); + $this->doPrivmsg($target, $channels ? join(', ', $channels) : 'unable to find nick'); + } elseif (preg_match('#^users (\S+)$#', $msg, $m)) { + $nicks = $this->getUsers($m[1]); + $this->doPrivmsg($target, $nicks ? join(', ', $nicks) : 'unable to find channel'); + } elseif (preg_match('#^random (\S+)$#', $msg, $m)) { + $nick = $this->getrandomuser($m[1]); + $this->doPrivmsg($target, $nick ? $nick : 'unable to find channel'); + } + } + + /** + * Checks whether or not a given user has a mode + * + * @param int $mode A numeric mode (identified by the class constants) + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function is($mode, $nick, $chan) + { + $chan = trim(strtolower($chan)); + $nick = trim(strtolower($nick)); + + if (!isset($this->store[$chan][$nick])) { + return false; + } + + return ($this->store[$chan][$nick] & $mode) != 0; + } + + /** + * Checks whether or not a given user has owner (~) status + * + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function isOwner($nick, $chan) + { + return $this->is(self::OWNER, $nick, $chan); + } + + /** + * Checks whether or not a given user has admin (&) status + * + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function isAdmin($nick, $chan) + { + return $this->is(self::ADMIN, $nick, $chan); + } + + /** + * Checks whether or not a given user has operator (@) status + * + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function isOp($nick, $chan) + { + return $this->is(self::OP, $nick, $chan); + } + + /** + * Checks whether or not a given user has halfop (%) status + * + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function isHalfop($nick, $chan) + { + return $this->is(self::HALFOP, $nick, $chan); + } + + /** + * Checks whether or not a given user has voice (+) status + * + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function isVoice($nick, $chan) + { + return $this->is(self::VOICE, $nick, $chan); + } + + /** + * Checks whether or not a given user is in a channel + * + * @param string $nick The nick to check + * @param string $chan The channel to check in + * + * @return bool + */ + public function isIn($nick, $chan) + { + return $this->is(self::REGULAR, $nick, $chan); + } + + /** + * Returns the entire user list for a channel or false if the bot is not + * in the channel. + * + * @param string $chan The channel name + * + * @return array|bool + */ + public function getUsers($chan) + { + $chan = trim(strtolower($chan)); + if (isset($this->store[$chan])) { + return array_keys($this->store[$chan]); + } + return false; + } + + /** + * Returns the nick of a random user present in a given channel or false + * if the bot is not present in the channel. + * + * @param string $chan The channel name + * + * @return array|bool + */ + public function getRandomUser($chan) + { + $chan = trim(strtolower($chan)); + + if (isset($this->store[$chan])) { + $ignore = array('chanserv', 'q', 'l', 's'); + + do { + $nick = array_rand($this->store[$chan], 1); + } while (in_array($nick, $ignore)); + + return $nick; + } + + return false; + } + + /** + * Returns a list of channels in which a given user is present. + * + * @param string $nick Nick of the user (optional, defaults to the bot's + * nick) + * + * @return array|bool + */ + public function getChannels($nick = null) + { + if (empty($nick)) { + $nick = $this->connection->getNick(); + } + + $nick = trim(strtolower($nick)); + $channels = array(); + + foreach ($this->store as $chan => $store) { + if (isset($store[$nick])) { + $channels[] = $chan; + } + } + + return $channels; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Weather.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Weather.php new file mode 100644 index 0000000000..7d4f85a19d --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Weather.php @@ -0,0 +1,149 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Weather + */ + +/** + * Detects and responds to requests for current weather conditions in a + * particular location using data from a web service. Requires registering + * with weather.com to obtain authentication credentials, which must be + * stored in the configuration settings weather.partner_id and + * weather.license_key for the plugin to function. + * + * @category Phergie + * @package Phergie_Plugin_Weather + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Weather + * @link http://www.weather.com/services/xmloap.html + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Http pear.phergie.org + * @uses Phergie_Plugin_Temperature pear.phergie.org + * @uses extension SimpleXML + */ +class Phergie_Plugin_Weather extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Command'); + $plugins->getPlugin('Http'); + $plugins->getPlugin('Temperature'); + + if (empty($this->config['weather.partner_id']) + || empty($this->config['weather.license_key'])) { + $this->fail('weather.partner_id and weather.license_key must be specified'); + } + } + + /** + * Returns a weather report for a specified location. + * + * @param string $location Zip code or city/state/country specification + * + * @return void + */ + public function onCommandWeather($location) + { + $response = $this->plugins->http->get( + 'http://xoap.weather.com/search/search', + array('where' => $location) + ); + + if ($response->isError()) { + $this->doNotice( + $this->event->getNick(), + 'ERROR: ' . $response->getCode() . ' ' . $response->getMessage() + ); + return; + } + + $nick = $this->event->getNick(); + + $xml = $response->getContent(); + if (count($xml->loc) == 0) { + $this->doNotice($nick, 'No results for that location.'); + return; + } + + $where = (string) $xml->loc[0]['id']; + $response = $this->plugins->http->get( + 'http://xoap.weather.com/weather/local/' . $where, + array( + 'cc' => '*', + 'link' => 'xoap', + 'prod' => 'xoap', + 'par' => $this->config['weather.partner_id'], + 'key' => $this->config['weather.license_key'], + ) + ); + + if ($response->isError()) { + $this->doNotice( + $this->event->getNick(), + 'ERROR: ' . $response->getCode() . ' ' . $response->getMessage() + ); + return; + } + + $temperature = $this->plugins->getPlugin('Temperature'); + $xml = $response->getContent(); + $weather = 'Weather for ' . (string) $xml->loc->dnam . ' - '; + switch ($xml->head->ut) { + case 'F': + $tempF = $xml->cc->tmp; + $tempC = $temperature->convertFahrenheitToCelsius($tempF); + break; + case 'C': + $tempC = $xml->cc->tmp; + $tempF = $temperature->convertCelsiusToFahrenheit($tempC); + break; + default: + $this->doNotice( + $this->event->getNick(), + 'ERROR: No scale information given.'); + break; + } + $r = $xml->cc->hmid; + $hiF = $temperature->getHeatIndex($tempF, $r); + $hiC = $temperature->convertFahrenheitToCelsius($hiF); + $weather .= 'Temperature: ' . $tempF . 'F/' . $tempC . 'C'; + $weather .= ', Humidity: ' . (string) $xml->cc->hmid . '%'; + if ($hiF > $tempF || $hiC > $tempC) { + $weather .= ', Heat Index: ' . $hiF . 'F/' . $hiC . 'C'; + } + $weather .= + ', Conditions: ' . (string) $xml->cc->t . + ', Updated: ' . (string) $xml->cc->lsup . + ' [ http://weather.com/weather/today/' . + str_replace( + array('(', ')', ',', ' '), + array('', '', '', '+'), + (string) $xml->loc->dnam + ) . + ' ]'; + + $this->doPrivmsg($this->event->getSource(), $nick . ': ' . $weather); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Wine.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Wine.php new file mode 100644 index 0000000000..9aa0845a6a --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Wine.php @@ -0,0 +1,69 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Wine + */ + +/** + * Processes requests to serve users wine. + * + * @category Phergie + * @package Phergie_Plugin_Wine + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Wine + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Serve pear.phergie.org + */ +class Phergie_Plugin_Wine extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->plugins; + $plugins->getPlugin('Command'); + $plugins->getPlugin('Serve'); + } + + /** + * Processes requests to serve a user a wine. + * + * @param string $request Request including the target and an optional + * suggestion of what wine to serve + * + * @return void + */ + public function onCommandWine($request) + { + $format = $this->getConfig( + 'wine.format', + 'serves %target% a glass of %item%.' + ); + + $this->plugins->getPlugin('Serve')->serve( + dirname(__FILE__) . '/Wine/wine.db', + 'wine', + $format, + $request + ); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Wine/db.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Wine/db.php new file mode 100644 index 0000000000..ce01c2d983 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Wine/db.php @@ -0,0 +1,53 @@ +exec('CREATE TABLE wine (name VARCHAR(255), link VARCHAR(255))'); +$db->exec('CREATE UNIQUE INDEX wine_name ON wine (name)'); +$insert = $db->prepare('INSERT INTO wine (name, link) VALUES (:name, :link)'); + +// Get and decompress lcboapi.com data set +$outer = __DIR__ . '/current.zip'; +if (!file_exists($outer)) { + echo 'Downloading lcboapi.com data set', PHP_EOL; + copy('http://lcboapi.com/download/current.zip', $outer); +} + +echo 'Decompressing lcboapi.com data set', PHP_EOL; +$zip = new ZipArchive; +$zip->open($outer); +$stat = $zip->statIndex(0); +$inner = __DIR__ . '/' . $stat['name']; +$zip->extractTo(__DIR__); +$zip->close(); +$zip = new ZipArchive; +$zip->open($inner); +$stat = $zip->statIndex(0); +$file = __DIR__ . '/' . $stat['name']; +$zip->extractTo(__DIR__); +$zip->close(); + +// Aggregate data set into the database +$lcbo = new PDO('sqlite:' . $file); +$result = $lcbo->query('SELECT product_no, name FROM products WHERE primary_category = "Wine"'); +$wines = $result->fetchAll(); +echo 'Processing lcboapi.com data - ', number_format(count($wines), 0), ' records', PHP_EOL; +$db->beginTransaction(); +foreach ($wines as $wine) { + $name = $wine['name']; + $link = 'http://lcboapi.com/products/' . $wine['product_no']; + $insert->execute(array($name, $link)); +} +$db->commit(); + +// Clean up +echo 'Cleaning up', PHP_EOL; +unset($lcbo); +unlink($outer); +unlink($inner); +unlink($file); diff --git a/plugins/Irc/extlib/phergie/Phergie/Plugin/Youtube.php b/plugins/Irc/extlib/phergie/Phergie/Plugin/Youtube.php new file mode 100644 index 0000000000..e06ea5640b --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Plugin/Youtube.php @@ -0,0 +1,168 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Youtube + */ + +/** + * Provides commands used to access several services offered by Google + * including search, translation, weather, maps, and currency and general + * value unit conversion. + * + * @category Phergie + * @package Phergie_Plugin_Youtube + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Plugin_Youtube + * @uses Phergie_Plugin_Command pear.phergie.org + * @uses Phergie_Plugin_Http pear.phergie.org + */ +class Phergie_Plugin_Youtube extends Phergie_Plugin_Abstract +{ + /** + * Checks for dependencies. + * + * @return void + */ + public function onLoad() + { + $plugins = $this->getPluginHandler(); + $plugins->getPlugin('Command'); + $plugins->getPlugin('Http'); + if ($url = $plugins->getPlugin('Url')) { + $url->registerRenderer($this); + } + } + + /** + * Queries the YouTube video search web service, processes the first + * result, and sends a message back to the current event source. + * + * @param string $query Search term + * + * @return object YouTube result object + */ + protected function queryYoutube($query) + { + $url = 'http://gdata.youtube.com/feeds/api/videos'; + $params = array( + 'max-results' => '1', + 'alt' => 'json', + 'q' => $query + ); + $http = $this->plugins->getPlugin('Http'); + $response = $http->get($url, $params); + $json = $response->getContent(); + + $entries = $json->feed->entry; + if (!$entries) { + $this->doNotice($this->event->getNick(), 'Query returned no results'); + return; + } + $entry = reset($entries); + + $nick = $this->event->getNick(); + $link = $entry->link[0]->href; + $title = $entry->title->{'$t'}; + $author = $entry->author[0]->name->{'$t'}; + $seconds = $entry->{'media$group'}->{'yt$duration'}->seconds; + $published = $entry->published->{'$t'}; + $views = $entry->{'yt$statistics'}->viewCount; + $rating = $entry->{'gd$rating'}->average; + + $minutes = floor($seconds / 60); + $seconds = str_pad($seconds % 60, 2, '0', STR_PAD_LEFT); + $parsed_link = parse_url($link); + parse_str($parsed_link['query'], $parsed_query); + $link = 'http://youtu.be/' . $parsed_query['v']; + $published = date('n/j/y g:i A', strtotime($published)); + $views = number_format($views, 0); + $rating = round($rating, 2); + + $format = $this->getConfig('youtube.format'); + if (!$format) { + $format = '%nick%:' + . ' [ %link% ]' + . ' "%title%" by %author%,' + . ' Length %minutes%:%seconds%,' + . ' Published %published%,' + . ' Views %views%,' + . ' Rating %rating%'; + } + + $replacements = array( + 'nick' => $nick, + 'link' => $link, + 'title' => $title, + 'author' => $author, + 'minutes' => $minutes, + 'seconds' => $seconds, + 'published' => $published, + 'views' => $views, + 'rating' => $rating + ); + + $msg = $format; + foreach ($replacements as $from => $to) { + $msg = str_replace('%' . $from . '%', $to, $msg); + } + $this->doPrivmsg($this->event->getSource(), $msg); + } + + /** + * Returns the first result of a YouTube search. + * + * @param string $query Search query + * + * @return void + */ + public function onCommandYoutube($query) + { + $this->queryYoutube($query); + } + + /** + * Renders YouTube URLs. + * + * @param array $parsed parse_url() output for the URL to render + * + * @return boolean TRUE if the URL was rendered successfully, FALSE + * otherwise + */ + public function renderUrl(array $parsed) + { + switch ($parsed['host']) { + case 'youtu.be': + $v = ltrim($parsed['path'], '/'); + break; + case 'youtube.com': + case 'www.youtube.com': + parse_str($parsed['query'], $parsed_query); + if (!empty($parsed_query['v'])) { + $v = $parsed_query['v']; + break; + } + default: + return false; + } + + $this->queryYoutube($v); + + return true; + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Process/Abstract.php b/plugins/Irc/extlib/phergie/Phergie/Process/Abstract.php new file mode 100755 index 0000000000..0ec3569feb --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Process/Abstract.php @@ -0,0 +1,130 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Base class for obtaining and processing incoming events. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +abstract class Phergie_Process_Abstract +{ + /** + * Current driver instance + * + * @var Phergie_Driver_Abstract + */ + protected $driver; + + /** + * Current connection handler instance + * + * @var Phergie_Connection_Handler + */ + protected $connections; + + /** + * Current plugin handler instance + * + * @var Phergie_Plugin_Handler + */ + protected $plugins; + + /** + * Current event handler instance + * + * @var Phergie_Event_Handler + */ + protected $events; + + /** + * Current end-user interface instance + * + * @var Phergie_Ui_Abstract + */ + protected $ui; + + /** + * List of arguments for use within the instance + * + * @var array + */ + protected $options = array(); + + /** + * Gets the required class refences from Phergie_Bot. + * + * @param Phergie_Bot $bot Current bot instance in use + * @param array $options Optional processor arguments + * + * @return void + */ + public function __construct(Phergie_Bot $bot, array $options = array()) + { + $this->driver = $bot->getDriver(); + $this->plugins = $bot->getPluginHandler(); + $this->connections = $bot->getConnectionHandler(); + $this->events = $bot->getEventHandler(); + $this->ui = $bot->getUi(); + $this->options = $options; + } + + /** + * Sends resulting outgoing events from ealier processing in handleEvents. + * + * @param Phergie_Connection $connection Active connection + * + * @return void + */ + protected function processEvents(Phergie_Connection $connection) + { + $this->plugins->preDispatch(); + if (count($this->events)) { + foreach ($this->events as $event) { + $this->ui->onCommand($event, $connection); + + $method = 'do' . ucfirst(strtolower($event->getType())); + call_user_func_array( + array($this->driver, $method), + $event->getArguments() + ); + } + } + $this->plugins->postDispatch(); + + if ($this->events->hasEventOfType(Phergie_Event_Request::TYPE_QUIT)) { + $this->ui->onQuit($connection); + $this->connections->removeConnection($connection); + } + + $this->events->clearEvents(); + } + + /** + * Obtains and processes incoming events. + * + * @return void + */ + public abstract function handleEvents(); +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Process/Async.php b/plugins/Irc/extlib/phergie/Phergie/Process/Async.php new file mode 100644 index 0000000000..78d5959144 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Process/Async.php @@ -0,0 +1,157 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Connection data processor which polls to handle input in an + * asynchronous manner. Will also cause the application tick at + * the user-defined wait time. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Process_Async extends Phergie_Process_Abstract +{ + /** + * Length of time to poll for stream activity (seconds) + * + * @var int + */ + protected $sec = 0; + + /** + * Length of time to poll for stream activity (microseconds) + * + * @var int + */ + protected $usec = 200000; + + /** + * Length of time to wait between ticks. + * + * @var int + */ + protected $wait = 0; + + /** + * Records when the application last performed a tick + * + * @var int + */ + protected $lastTick = 0; + + /** + * Overrides the parent class to set the poll time. + * + * @param Phergie_Bot $bot Main bot class + * @param array $options Processor arguments + * + * @return void + */ + public function __construct(Phergie_Bot $bot, array $options) + { + if (!$bot->getDriver() instanceof Phergie_Driver_Streams) { + throw new Phergie_Process_Exception( + 'The Async event processor requires the Streams driver' + ); + } + + foreach (array('sec', 'usec') as $var) { + if (isset($options[$var])) { + if (!is_int($options[$var])) { + throw new Phergie_Process_Exception( + 'Processor option "' . $var . '" must be an integer' + ); + } + $this->$var = $options[$var]; + } + } + + if (!isset($this->sec) && !isset($this->usec)) { + throw new Phergie_Process_Exception( + 'One of the processor options "sec" or "usec" must be specified' + ); + } + + parent::__construct($bot, $options); + } + + /** + * Waits for stream activity and performs event processing on + * connections with data to read. + * + * @return void + */ + protected function handleEventsAsync() + { + $hostmasks = $this->driver->getActiveReadSockets($this->sec, $this->usec); + if (!$hostmasks) { + return; + } + $connections = $this->connections->getConnections($hostmasks); + foreach ($connections as $connection) { + $this->driver->setConnection($connection); + $this->plugins->setConnection($connection); + $this->plugins->onTick(); + + if ($event = $this->driver->getEvent()) { + $this->ui->onEvent($event, $connection); + $this->plugins->setEvent($event); + $this->plugins->preEvent(); + $this->plugins->{'on' . ucfirst($event->getType())}(); + } + + $this->processEvents($connection); + } + } + + /** + * Perform application tick event on all plugins and connections. + * + * @return void + */ + protected function doTick() + { + foreach ($this->connections as $connection) { + $this->plugins->setConnection($connection); + $this->plugins->onTick(); + $this->processEvents($connection); + } + } + + /** + * Obtains and processes incoming events, then sends resulting outgoing + * events. + * + * @return void + */ + public function handleEvents() + { + $time = time(); + if ($this->lastTick == 0 || ($this->lastTick + $this->wait <= $time)) { + $this->doTick(); + $this->lastTick = $time; + } + $this->handleEventsAsync(); + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Process/Exception.php b/plugins/Irc/extlib/phergie/Phergie/Process/Exception.php new file mode 100755 index 0000000000..f964443c66 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Process/Exception.php @@ -0,0 +1,33 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Exception related to event processor operations. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Process_Exception extends Phergie_Exception +{ +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Process/Standard.php b/plugins/Irc/extlib/phergie/Phergie/Process/Standard.php new file mode 100644 index 0000000000..24adbaf991 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Process/Standard.php @@ -0,0 +1,57 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Connection data processor which reads all connections looking + * for a response. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Process_Standard extends Phergie_Process_Abstract +{ + /** + * Obtains and processes incoming events, then sends resulting outgoing + * events. + * + * @return void + */ + public function handleEvents() + { + foreach ($this->connections as $connection) { + $this->driver->setConnection($connection); + $this->plugins->setConnection($connection); + $this->plugins->onTick(); + + if ($event = $this->driver->getEvent()) { + $this->ui->onEvent($event, $connection); + $this->plugins->setEvent($event); + $this->plugins->preEvent(); + $this->plugins->{'on' . ucfirst($event->getType())}(); + } + + $this->processEvents($connection); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/StatusnetBot.php b/plugins/Irc/extlib/phergie/Phergie/StatusnetBot.php new file mode 100644 index 0000000000..9c1b3a6f18 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/StatusnetBot.php @@ -0,0 +1,98 @@ +. + * + * Extends the bot class (Phergie_Bot) to allow connection and access to + * sockets and to allow StatusNet to 'drive' the bot + * + * @category Phergie + * @package Phergie_StatusnetBot + * @author Luke Fitzgerald + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ +class Phergie_StatusnetBot extends Phergie_Bot { + /** + * Set up bot and connect to servers + * + * @return void + */ + public function connect() { + $ui = $this->getUi(); + $ui->setEnabled($this->getConfig('ui.enabled')); + + $this->loadPlugins(); + $this->loadConnections(); + } + + /** + * Transmit raw command to server using driver + * + * Handles construction of command strings and their transmission to the + * server. + * + * @param string $command Command to send + * @param string|array $args Optional string or array of sequential + * arguments + * + * @return string Command string that was sent + * @throws Phergie_Driver_Exception + */ + public function send($command, $args = '') { + return $this->getDriver()->send($command, $args); + } + + /** + * Handle incoming data on the socket using the handleEvents + * method of the Processor + * + * @return void + */ + public function handleEvents() { + $this->getProcessor()->handleEvents(); + } + + /** + * Close the current connection and reconnect to the server + * + * @return void + */ + public function reconnect() { + $driver = $this->getDriver(); + $sockets = $driver->getSockets(); + + // Close any existing connections + try { + $driver->forceQuit(); + } catch (Phergie_Driver_Exception $e){} + try { + $driver->doConnect(); + } catch (Phergie_Driver_Exception $e){ + $driver->forceQuit(); + throw $e; + } + } + + /** + * Get the sockets used by the bot + * + * @return array Array of socket resources + */ + public function getSockets() { + return $this->getDriver()->getSockets(); + } +} \ No newline at end of file diff --git a/plugins/Irc/extlib/phergie/Phergie/Tools/LogViewer/INSTALL b/plugins/Irc/extlib/phergie/Phergie/Tools/LogViewer/INSTALL new file mode 100755 index 0000000000..dfc9857561 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Tools/LogViewer/INSTALL @@ -0,0 +1,24 @@ +----------------------------------------------------------------------------- +-- About LogViewer +----------------------------------------------------------------------------- + +The purpose of this tool is to make an HTML display of the Logs made by the +Logging plugin for Phergie stored in SQLite database. + +----------------------------------------------------------------------------- +-- Installation +----------------------------------------------------------------------------- + +To install this, simply copy the contents of this directory into whatever +directory you want this to run under. + +----------------------------------------------------------------------------- +-- Configuration +----------------------------------------------------------------------------- + +The only configuration needed at this point in time is to edit the $database +variable in the top of the index.php to point to the appropriate Phergie +log file. + +Stuff may get more complicated in the future ;) But this is meant to be +simple for now. \ No newline at end of file diff --git a/plugins/Irc/extlib/phergie/Phergie/Tools/LogViewer/index.php b/plugins/Irc/extlib/phergie/Phergie/Tools/LogViewer/index.php new file mode 100755 index 0000000000..fc27fa2942 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Tools/LogViewer/index.php @@ -0,0 +1,368 @@ + + **/ +function show_channels(PDO $db) { + // Begin the HTML page: + template_header('Channels'); + echo "\nChannels:\n
    \n"; + + // Loop through the database reading in each channel, and echoing out a
  • for it. + // only grab actual channels that start with # ... also pre-lowercase everything. + // this allows us to 'deal' with variable caps in how the channels were logged. + $channels = $db->query(" + select distinct lower(chan) as c + from logs + where chan like '#%' + "); + foreach ($channels as $row) { + $html = utf8specialchars($row['c']); + $url = urlencode($row['c']); + echo "
  • {$html}
  • \n"; + } + + // Finish off the page: + echo "\n
\n"; + template_footer(); +} + +/** + * show_days + * + * Create a calendar view of all days available for this particular channel + * + * NOTE: May get unwieldy if large log files. Perhaps consider in the future + * making a paginated version of this? by year? Or a separate 'which year' page + * before this? Not to worry about now. + * + * @param PDO A PDO object referring to the database + * @return void + * @author Eli White + **/ +function show_days(PDO $db) { + $channel = $_GET['w']; + $url = urlencode($channel); + + // Begin the HTML page: + template_header('Daily Logs for Channel: ' . utf8specialchars($channel)); + echo "\n
    \n"; + + // Query the database to discover all days that are available for this channel: + $data = array(); + $prepared = $db->prepare(" + select distinct date(tstamp) as day + from logs + where lower(chan) = :chan + "); + $prepared->execute(array(':chan' => $channel)); + foreach ($prepared as $row) { + list($y, $m, $d) = explode('-', $row['day']); + $data[$y][$m][$d] = "{$y}-{$m}-{$d}"; + } + + // For now, just loop over them all and provide a list: + ksort($data); + foreach ($data as $year => $months) { + ksort($months); + foreach ($months as $month => $days) { + // Figure out a few facts about this month: + $stamp = mktime(0, 0, 0, $month, 1, $year); + $first_weekday = idate('w', $stamp); + $days_in_month = idate('t', $stamp); + $name = date('F', $stamp); + + // We have a month ... start a new table: + echo << + + + +EOTABLE; + // Now we need to start looping through the days in this month: + echo ''; + $rowmod = 0; + // Loop through all day entries, no matter how many blanks we need: + for ($d = (-$first_weekday + 1); $d < $days_in_month + 1; $d++) { + if (!($rowmod++ % 7)) { + // Stop/start a new row: + echo ''; + } + echo ''; + } + // Finish off any blanks needed for a complete table row: + while ($rowmod++ % 7) { + echo ''; + } + echo "
    {$name} {$year}
    SunMonTueWedThuFriSat
    '; + // If this day is pre or post actual month days, make it blank: + if (($d < 1) || ($d > $days_in_month)) { + echo ' '; + } elseif (isset($days[$d])) { + // Make a link to the day's log: + echo "{$d}"; + } else { + // Just a dead number: + echo $d; + } + echo ' 
    \n"; + } + } + + // Finish off the page: + echo "\n
\n"; + template_footer(); +} + +/** + * show_log + * + * Actually show the log for this specific day + * + * @param PDO A PDO object referring to the database + * @return void + * @author Eli White + **/ +function show_log(PDO $db) { + $channel = $_GET['w']; + $day = $_GET['d']; + $parts = explode('-', $day); + $formatted_date = "{$parts[0]}-{$parts[1]}-{$parts[2]}"; + + // Begin the HTML page: + template_header('Date: ' . utf8specialchars($formatted_date) . + ' - Channel: ' . utf8specialchars($channel)); + + // Query the database to get all log lines for this date: + $prepared = $db->prepare(" + select time(tstamp) as t, type, nick, message + from logs + where lower(chan) = :chan and date(tstamp) = :day + order by tstamp asc + "); + $prepared->execute(array( + ':chan' => $channel, + ':day' => $day, + )); + + // Loop through each line, + foreach ($prepared as $row) { + // Prepare some basic details for output: + $color = nick_color($row['nick']); + $time = utf8specialchars($row['t']); + $msg = utf8specialchars($row['message']); + $nick = utf8specialchars($row['nick']); + $type = false; + + // Now change the format of the line based upon the type: + switch ($row['type']) { + case 4: // PRIVMSG (A Regular Message) + echo "[$time] <{$nick}> {$msg}
\n"; + break; + case 5: // ACTION (emote) + echo "[$time] *{$nick} {$msg}
\n"; + break; + case 1: // JOIN + echo "[$time] -> {$nick} joined the room.
\n"; + break; + case 2: // PART (leaves channel) + echo "[$time] -> {$nick} left the room: {$msg}
\n"; + break; + case 3: // QUIT (quits the server) + echo "[$time] -> {$nick} left the server: {$msg}
\n"; + break; + case 6: // NICK (changes their nickname) + echo "[$time] -> {$nick} is now known as: {$msg}
\n"; + break; + case 7: // KICK (booted) + echo "[$time] -> {$nick} boots {$msg} from the room.
\n"; + break; + case 8: // MODE (changed their mode) + $type = 'MODE'; + case 9: // TOPIC (changed the topic) + $type = $type ? $type : 'TOPIC'; + echo "[$time] -> {$nick}: :{$type}: {$msg}
\n"; + } + } + + // Finish up the page: + template_footer(); +} + +/** + * nick_color + * + * Uses a silly little algorithm to pick a consistent but unique(ish) color for + * any given username. NOTE: Augment this in the future to make it not generate + * 'close to white' ones, also maybe to ensure uniqueness? (Not allow two to have + * colors that are close to each other?) + * + * @return string A CSS valid hex color string + * @author Eli White + **/ +function nick_color($user) { + static $colors = array(); + + if (!isset($colors[$user])) { + $colors[$user] = substr(md5($user), 0, 6); + } + + return $colors[$user]; +} + +/** + * utf8specialchars + * + * Just a quick wrapper around htmlspecialchars + * + * @param string The UTF8 string to escape + * @return string An escaped and ready for HTML use string + * @author Eli White + **/ +function utf8specialchars($string) { + return htmlspecialchars($string, ENT_COMPAT, 'UTF-8'); +} + + +/********** TEMPLATES **********/ + +/** + * template_header + * + * Echo out the header for each HTML page + * + * @param $title string The title to be used for this page. + * @return void + * @author Eli White + **/ +function template_header($title) { + $css = template_css(); + echo << + + + + Phergie LogViewer - {$title} + + + +

Phergie LogViewer - {$title}

+EOHTML; +} + +/** + * template_footer + * + * Echo out the bottom of each HTML page + * + * @return void + * @author Eli White + **/ +function template_footer() { + echo << + +EOHTML; +} + +/** + * template_css + * + * Generate the CSS used by these HTML pages & return it. + * + * @return string The CSS in question: + * @author Eli White + **/ +function template_css() { + return << + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * Base class for end-user interfaces. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +abstract class Phergie_Ui_Abstract +{ + /** + * Handler for when a server connection is attempted. + * + * @param string $host Server hostname + * + * @return void + */ + public function onConnect($host) + { + } + + /** + * Handler for when an attempt is made to load a plugin. + * + * @param string $plugin Short name of the plugin + * + * @return void + */ + public function onPluginLoad($plugin) + { + } + + /** + * Handler for when a plugin fails to load. + * + * @param string $plugin Short name of the plugin + * @param string $message Message describing the reason for the failure + * + * @return void + */ + public function onPluginFailure($plugin, $message) + { + } + + /** + * Handler for when the bot receives an IRC event. + * + * @param Phergie_Event_Abstract $event Received event + * @param Phergie_Connection $connection Connection on which the event + * was received + * + * @return void + */ + public function onEvent(Phergie_Event_Abstract $event, + Phergie_Connection $connection + ) { + } + + /** + * Handler for when the bot sends a command to a server. + * + * @param Phergie_Event_Command $event Event representing the command + * being sent + * @param Phergie_Connection $connection Connection on which the command + * is being sent + * + * @return void + */ + public function onCommand(Phergie_Event_Command $event, + Phergie_Connection $connection + ) { + } + + /** + * Handler for when the bot terminates a connection to a server. + * + * @param Phergie_Connection $connection Terminated connection + * + * @return void + */ + public function onQuit(Phergie_Connection $connection) + { + } + + /** + * Handler for when the bot shuts down after terminating all server + * connections. + * + * @return void + */ + public function onShutdown() + { + } +} diff --git a/plugins/Irc/extlib/phergie/Phergie/Ui/Console.php b/plugins/Irc/extlib/phergie/Phergie/Ui/Console.php new file mode 100644 index 0000000000..a0a528b3f2 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Phergie/Ui/Console.php @@ -0,0 +1,223 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * End-user interface that produces console output when running the bot from + * a shell. + * + * @category Phergie + * @package Phergie + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ +class Phergie_Ui_Console extends Phergie_Ui_Abstract +{ + /** + * Flag that toggles all console output + * + * @var bool + */ + protected $enabled; + + /** + * Format for timestamps included in console output + * + * @var string + * @link http://php.net/date + */ + protected $format; + + /** + * Constructor to initialize object properties. + * + * @return void + */ + public function __construct() + { + $this->enabled = true; + $this->format = 'H:i:s'; + } + + /** + * Outputs a timestamped line to the console if console output is enabled. + * + * @param string $line Line to output + * + * @return void + */ + protected function console($line) + { + if ($this->enabled) { + echo date($this->format), ' ', $line, PHP_EOL; + } + } + + /** + * Returns whether console output is enabled. + * + * @return bool TRUE if console output is enabled, FALSE otherwise + */ + public function isEnabled() + { + return $this->enabled; + } + + /** + * Sets whether console output is enabled. + * + * @param bool $enabled TRUE to enable console output, FALSE otherwise, + * defaults to TRUE + * + * @return Phergie_Ui_Console Provides a fluent interface + */ + public function setEnabled($enabled = true) + { + $this->enabled = (bool) $enabled; + return $this; + } + + /** + * Returns the format used for timestamps in console output. + * + * @return string + * @link http://php.net/date + */ + public function getFormat() + { + return $this->format; + } + + /** + * Sets the format used for timestamps in console output, overwriting + * any previous format used. + * + * @param string $format Timestamp format + * + * @return Phergie_Ui_Console Provides a fluent interface + * @link http://php.net/date + */ + public function setFormat($format) + { + $this->format = (string) $format; + return $this; + } + + /** + * Outputs a prompt when a server connection is attempted. + * + * @param string $host Server hostname + * + * @return void + */ + public function onConnect($host) + { + $this->console('Connecting to ' . $host); + } + + /** + * Outputs a prompt when a plugin is loaded successfully. + * + * @param string $plugin Short name of the plugin + * + * @return void + */ + public function onPluginLoad($plugin) + { + $this->console('Loaded plugin ' . $plugin); + } + + /** + * Outputs a prompt when a plugin fails to load. + * + * @param string $plugin Short name of the plugin + * @param string $message Message describing the reason for the failure + * + * @return void + */ + public function onPluginFailure($plugin, $message) + { + $this->console('Unable to load plugin ' . $plugin . ' - ' . $message); + } + + /** + * Outputs a prompt when the bot receives an IRC event. + * + * @param Phergie_Event_Abstract $event Received event + * @param Phergie_Connection $connection Connection on which the + * event was received + * + * @return void + */ + public function onEvent(Phergie_Event_Abstract $event, + Phergie_Connection $connection + ) { + $host = $connection->getHostmask()->getHost(); + $this->console($host . ' <- ' . $event->getRawData()); + } + + /** + * Outputs a prompt when the bot sends a command to a server. + * + * @param Phergie_Event_Command $event Event representing the + * command being sent + * @param Phergie_Connection $connection Connection on which the + * command is being sent + * + * @return void + */ + public function onCommand(Phergie_Event_Command $event, + Phergie_Connection $connection + ) { + $plugin = $event->getPlugin()->getName(); + $host = $connection->getHostmask()->getHost(); + $type = strtoupper($event->getType()); + $args = implode(' ', $event->getArguments()); + $this->console( + $plugin . ' plugin: ' . + $host . ' -> ' . $type . ' ' . $args + ); + } + + /** + * Outputs a prompt when the bot terminates a connection to a server. + * + * @param Phergie_Connection $connection Terminated connection + * + * @return void + */ + public function onQuit(Phergie_Connection $connection) + { + $host = $connection->getHostmask()->getHost(); + $this->console('Disconnecting from ' . $host); + } + + /** + * Outputs a prompt when the bot shuts down after terminating all server + * connections. + * + * @return void + */ + public function onShutdown() + { + $this->console('Shutting down'); + } +} diff --git a/plugins/Irc/extlib/phergie/PhergiePackageTask.php b/plugins/Irc/extlib/phergie/PhergiePackageTask.php new file mode 100644 index 0000000000..dfc760a16d --- /dev/null +++ b/plugins/Irc/extlib/phergie/PhergiePackageTask.php @@ -0,0 +1,110 @@ +pkg->addMaintainer('lead', 'team', 'Phergie Development Team', 'team@phergie.org'); + + $path = str_replace('_', '/', $this->package) . '.php'; + if (file_exists($path)) { + $contents = file_get_contents($path); + preg_match_all('#/\*\*(.*)\*/#Ums', $contents, $matches, PREG_SET_ORDER); + $doc = $matches[1][1]; + + $have_summary = false; + $have_description = false; + foreach ($this->options as $option) { + switch ($option->getName()) { + case 'summary': + $have_summary = true; + break; + case 'description': + $have_descripion = true; + break; + } + } + + if (!$have_summary || !$have_description) { + $description = substr($doc, 0, strpos($doc, '@')); + $description = trim(preg_replace(array('#^[\h*]*|[\h*]*$#m', '#[\h]+#m'), array('', ' '), $description)); + $split = preg_split('/\v\v+/', $description); + $summary = trim(array_shift($split)); + if (!$have_summary) { + $this->pkg->setSummary(htmlentities($summary, ENT_QUOTES)); + } + if (!$have_description) { + $this->pkg->setDescription(htmlentities($description, ENT_QUOTES)); + } + } + + $doc = preg_split('/\v+/', $doc); + $doc = preg_grep('/@uses/', $doc); + $doc = preg_replace('/\s*\* @uses\s+|\s+$/', '', $doc); + foreach ($doc as $line) { + if (strpos($line, 'extension') === 0) { + $line = explode(' ', $line); + $name = $line[1]; + $optional = 'required'; + if (isset($line[2])) { + $optional = $line[2]; + } + $this->pkg->addExtensionDep( + $optional, + $name + ); + } else { + $line = explode(' ', $line); + $name = $line[0]; + $channel = $line[1]; + $optional = 'required'; + if (isset($line[2])) { + $optional = $line[2]; + } + $this->pkg->addPackageDepWithChannel( + $optional, + $name, + $channel + ); + } + } + } + + $newmap = array(); + foreach ($this->mappings as $key => $map) { + switch ($map->getName()) { + case 'releases': + $releases = $map->getValue(); + foreach ($releases as $release) { + $this->pkg->addRelease(); + if (isset($release['installconditions'])) { + if (isset($release['installconditions']['os'])) { + $this->pkg->setOsInstallCondition($release['installconditions']['os']); + } + } + if (isset($release['filelist'])) { + if (isset($release['filelist']['install'])) { + foreach ($release['filelist']['install'] as $file => $as) { + $this->pkg->addInstallAs($file, $as); + } + } + if (isset($release['filelist']['ignore'])) { + foreach ($release['filelist']['ignore'] as $file) { + $this->pkg->addIgnoreToRelease($file); + } + } + } + } + break; + + default: + $newmap[] = $map; + } + } + $this->mappings = $newmap; + + parent::setOptions(); + } +} diff --git a/plugins/Irc/extlib/phergie/README b/plugins/Irc/extlib/phergie/README new file mode 100644 index 0000000000..d97ce05242 --- /dev/null +++ b/plugins/Irc/extlib/phergie/README @@ -0,0 +1,11 @@ +Phergie is an IRC bot written for PHP 5.2. + +Main project web site: http://phergie.org + +Instructions for running your own instance of Phergie: http://phergie.org/users/ + +Architectural overview for plugin developers: http://phergie.org/developers/ + +Support: http://phergie.org/support/ + +Bug reports/feature requests: http://github.com/elazar/phergie/issues diff --git a/plugins/Irc/extlib/phergie/Settings.php.dist b/plugins/Irc/extlib/phergie/Settings.php.dist new file mode 100755 index 0000000000..87b4a95c68 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Settings.php.dist @@ -0,0 +1,98 @@ + array( + // Ex: All connection info for the Freenode network + array( + 'host' => 'irc.freenode.net', + 'port' => 6667, + 'username' => 'Elazar', + 'realname' => 'Matthew Turland', + 'nick' => 'Phergie2', + // 'password' => 'password goes here if needed', + // 'transport' => 'ssl', // uncomment to connect using SSL + // 'encoding' => 'UTF8', // uncomment if using UTF8 + ) + ), + + 'processor' => 'async', + 'processor.options' => array('usec' => 200000), + // Time zone. See: http://www.php.net/manual/en/timezones.php + 'timezone' => 'UTC', + + // Whitelist of plugins to load + 'plugins' => array( + // To enable a plugin, simply add a string to this array containing + // the short name of the plugin as shown below. + + // 'ShortPluginName', + + // Below is an example of enabling the AutoJoin plugin, for which + // the corresponding PEAR package is Phergie_Plugin_AutoJoin. This + // plugin allows you to set a list of channels in this configuration + // file that the bot will automatically join when it connects to a + // server. If you'd like to enable this plugin, simply install it, + // uncomment the line below, and set a value for the setting + // autojoin.channels (examples for which are located further down in + // this file). + + // 'AutoJoin', + + // A few other recommended plugins: + + // Servers randomly send PING events to clients to ensure that + // they're still connected and will eventually terminate the + + // connection if a PONG response is not received. The Pong plugin + // handles sending these responses. + + // 'Pong', + + // It's sometimes difficult to distinguish between a lack of + // activity on a server and the client not receiving data even + // though a connection remains open. The Ping plugin performs a self + // CTCP PING sporadically to ensure that its connection is still + // functioning and, if not, terminates the bot. + + // 'Ping', + + // Sometimes it's desirable to have the bot disconnect gracefully + // when issued a command to do so via a PRIVMSG event. The Quit + // plugin implements this using the Command plugin to intercept the + // command. + + // 'Quit', + ), + + // If set to true, this allows any plugin dependencies for plugins + // listed in the 'plugins' option to be loaded even if they are not + // explicitly included in that list + 'plugins.autoload' => true, + + // Enables shell output describing bot events via Phergie_Ui_Console + 'ui.enabled' => true, + + // Examples of supported values for autojoins.channel: + // 'autojoin.channels' => '#channel1,#channel2', + // 'autojoin.channels' => array('#channel1', '#channel2'), + // 'autojoin.channels' => array( + // 'host1' => '#channel1,#channel2', + // 'host2' => array('#channel3', '#channel4') + // ), + + // Examples of setting values for Ping plugin settings + + // This is the amount of time in seconds that the Ping plugin will wait + // to receive an event from the server before it initiates a self-ping + + // 'ping.event' => 300, // 5 minutes + + // This is the amount of time in seconds that the Ping plugin will wait + // following a self-ping attempt before it assumes that a response will + // never be received and terminates the connection + + // 'ping.ping' => 10, // 10 seconds + +); diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/ConnectionTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/ConnectionTest.php new file mode 100644 index 0000000000..ba94cd0ea6 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/ConnectionTest.php @@ -0,0 +1,262 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Connection. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_ConnectionTest extends PHPUnit_Framework_TestCase +{ + /** + * Associative array containing an option-to-value mapping + * + * @var array + */ + private $options = array( + 'host' => 'example.com', + 'port' => 4080, + 'transport' => 'udp', + 'encoding' => 'ASCII', + 'nick' => 'MyNick', + 'username' => 'MyUsername', + 'realname' => 'MyRealName', + 'password' => 'MyPassword', + ); + + /** + * Data provider for testGetOptionReturnsDefault(). + * + * @return array Enumerated array of enumerated arrays each containing a + * set of parameters for a single call to + * testGetOptionReturnsDefault() + */ + public function dataProviderTestGetOptionReturnsDefault() + { + return array( + array('transport', 'tcp'), + array('encoding', 'ISO-8859-1'), + array('port', 6667), + array('password', null), + ); + } + + /** + * Tests that a default values are used for some options. + * + * @param string $option Name of the option with a default value + * @param mixed $value Default value of the option + * + * @return void + * @dataProvider dataProviderTestGetOptionReturnsDefault + */ + public function testGetOptionReturnsDefault($option, $value) + { + $connection = new Phergie_Connection; + $this->assertEquals($value, $connection->{'get' . ucfirst($option)}()); + } + + /** + * Tests that a default encoding is used if one isn't specified. + * + * @return void + */ + public function testGetEncodingReturnsDefault() + { + $connection = new Phergie_Connection; + $this->assertEquals('ISO-8859-1', $connection->getEncoding()); + } + + /** + * Tests that options can be set via the constructor. + * + * @return void + */ + public function testSetOptionsViaConstructor() + { + $connection = new Phergie_Connection($this->options); + foreach ($this->options as $key => $value) { + $this->assertEquals($value, $connection->{'get' . ucfirst($key)}()); + } + } + + /** + * Data provider for testGetHostmaskMissingDataGeneratesException(). + * + * @return array Enumerated array of enumerated arrays each containing a + * set of parameters for a single call to + * testGetHostmaskMissingDataGeneratesException() + */ + public function dataProviderTestGetHostmaskMissingDataGeneratesException() + { + return array( + array(null, $this->options['username'], $this->options['host']), + array($this->options['nick'], null, $this->options['host']), + array($this->options['nick'], $this->options['username'], null), + ); + } + + /** + * Tests that attempting to retrieve a hostmask without option values + * for all of its constituents generates an exception. + * + * @param string $nick Bot nick + * @param string $username Bot username + * @param string $host Server hostname + * + * @return void + * @dataProvider dataProviderTestGetHostmaskMissingDataGeneratesException + */ + public function testGetHostmaskMissingDataGeneratesException($nick, $username, $host) + { + $options = array( + 'nick' => $nick, + 'username' => $username, + 'host' => $host, + ); + + $connection = new Phergie_Connection($options); + + try { + $hostmask = $connection->getHostmask(); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Connection_Exception $e) { + return; + } catch (Exception $e) { + $this->fail('Unexpected exception was thrown'); + } + } + + /** + * Tests that attempting to retrieve a hostmask with all required + * options is successful. + * + * @return void + */ + public function testGetHostmaskWithValidData() + { + $options = array( + 'nick' => 'MyNick', + 'username' => 'MyUsername', + 'host' => 'example.com' + ); + + $connection = new Phergie_Connection($options); + $hostmask = $connection->getHostmask(); + $this->assertType('Phergie_Hostmask', $hostmask); + } + + /** + * Data provider for testGetRequiredOptionsWithoutValuesSet(). + * + * @return array Enumerated array of enumerated arrays each containing a + * set of parameters for a single call to + * testGetRequiredOptionsWithoutValuesSet() + */ + public function dataProviderTestGetRequiredOptionsWithoutValuesSet() + { + return array( + array('host'), + array('nick'), + array('username'), + array('realname'), + ); + } + + /** + * Tests that attempting to retrieve values of required options when no + * values are set results in an exception. + * + * @param string $option Option name + * + * @return void + * @dataProvider dataProviderTestGetRequiredOptionsWithoutValuesSet + */ + public function testGetRequiredOptionsWithoutValuesSet($option) + { + try { + $connection = new Phergie_Connection; + $value = $connection->{'get' . ucfirst($option)}(); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Connection_Exception $e) { + return; + } catch (Exception $e) { + $this->fail('Unexpected exception was thrown'); + } + } + + /** + * Tests that attempting to set an invalid value for the transport + * results in an exception. + * + * @return void + */ + public function testSetTransportWithInvalidValue() + { + $connection = new Phergie_Connection; + try { + $connection->setTransport('blah'); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Connection_Exception $e) { + return; + } catch (Exception $e) { + $this->fail('Unexpected exception was thrown'); + } + } + + /** + * Tests that attempting to set an invalid value for the encoding + * results in an exception. + * + * @return void + */ + public function testSetEncodingWithInvalidValue() + { + $connection = new Phergie_Connection; + try { + $connection->setEncoding('blah'); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Connection_Exception $e) { + return; + } catch (Exception $e) { + $this->fail('Unexpected exception was thrown'); + } + } + + /** + * Tests that options can be set collectively after the connection is + * instantiated. + * + * @return void + */ + public function testSetOptions() + { + $connection = new Phergie_Connection; + $connection->setOptions($this->options); + foreach ($this->options as $key => $value) { + $this->assertEquals($value, $connection->{'get' . ucfirst($key)}()); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/HandlerTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/HandlerTest.php new file mode 100644 index 0000000000..9ecdd327ae --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/HandlerTest.php @@ -0,0 +1,837 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_Handler. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_HandlerTest extends PHPUnit_Framework_TestCase +{ + /** + * Plugin handler instance being tested + * + * @var Phergie_Plugin_Handler + */ + protected $handler; + + /** + * Mock Phergie_Config instance passed to the plugin handler constructor + * + * @var Phergie_Config + */ + protected $config; + + /** + * Mock Phergie_Event_Handler instance passed to the plugin handler + * constructor + * + * @var Phergie_Event_Handler + */ + protected $events; + + /** + * Returns a mock plugin instance. + * + * @param string $name Optional short name for the mock plugin, defaults + * to 'TestPlugin' + * @param array $methods Optional list of methods to override + * + * @return Phergie_Plugin_Abstract + */ + protected function getMockPlugin($name = 'TestPlugin', array $methods = array()) + { + $methods[] = 'getName'; + $plugin = $this->getMock('Phergie_Plugin_Abstract', $methods); + $plugin + ->expects($this->any()) + ->method('getName') + ->will($this->returnValue($name)); + return $plugin; + } + + /** + * Sets up a new handler instance before each test. + * + * @return void + */ + public function setUp() + { + $this->config = $this->getMock('Phergie_Config'); + $this->events = $this->getMock('Phergie_Event_Handler'); + $this->handler = new Phergie_Plugin_Handler( + $this->config, + $this->events + ); + } + + /** + * Tests iterability of the plugin handler. + * + * @return void + */ + public function testImplementsIteratorAggregate() + { + $reflection = new ReflectionObject($this->handler); + + $this->assertTrue( + $reflection->implementsInterface('IteratorAggregate'), + 'Handler does not implement IteratorAggregate' + ); + + $this->assertType( + 'Iterator', + $this->handler->getIterator(), + 'getIterator() must return an iterator' + ); + } + + /** + * Tests that a default iterator is returned if none is explicitly set. + * + * @return void + */ + public function testGetIteratorReturnsDefault() + { + $this->assertType( + 'Phergie_Plugin_Iterator', + $this->handler->getIterator() + ); + } + + /** + * Tests the ability to change the handler's iterator class when a valid + * class is specified. + * + * @return void + */ + public function testSetIteratorClassWithValidClass() + { + eval(' + class DummyIterator extends FilterIterator { + public function accept() { + return true; + } + } + '); + + $this->handler->setIteratorClass('DummyIterator'); + + $this->assertType( + 'DummyIterator', + $this->handler->getIterator() + ); + } + + /** + * Tests that a failure occurs when a nonexistent iterator class is + * specified. + * + * @return void + */ + public function testSetIteratorClassWithNonexistentClass() + { + try { + $this->handler->setIteratorClass('FooIterator'); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Plugin_Exception $e) { + return; + } + $this->fail('Unexpected exception was thrown'); + } + + /** + * Tests that a failure occurs when a class that is not a subclass of + * FilterIterator is specified. + * + * @return void + */ + public function testSetIteratorClassWithNonFilterIteratorClass() + { + try { + $this->handler->setIteratorClass('ArrayIterator'); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Plugin_Exception $e) { + return; + } + $this->fail('Unexpected exception was thrown'); + } + + /** + * Tests countability of the plugin handler. + * + * @return void + */ + public function testImplementsCountable() + { + $reflection = new ReflectionObject($this->handler); + + $this->assertTrue( + $reflection->implementsInterface('Countable'), + 'Handler does not implement Countable' + ); + + $this->assertType( + 'int', + count($this->handler), + 'count() must return an integer' + ); + } + + /** + * Tests the plugin handler exposing added plugins as instance + * properties of the handler via isset(). + * + * @return void + */ + public function testImplementsIsset() + { + $pluginName = 'TestPlugin'; + $this->assertFalse(isset($this->handler->{$pluginName})); + $plugin = $this->getMockPlugin($pluginName); + $this->handler->addPlugin($plugin); + $this->assertTrue(isset($this->handler->{$pluginName})); + } + + /** + * Tests the plugin handler exposing added plugins as instance + * properties of the handler. + * + * @depends testImplementsIsset + * @return void + */ + public function testImplementsGet() + { + $plugin = $this->getMockPlugin(); + $this->handler->addPlugin($plugin); + $name = $plugin->getName(); + $getPlugin = $this->handler->getPlugin($name); + $this->assertTrue(isset($this->handler->$name)); + $get = $this->handler->$name; + $this->assertSame($getPlugin, $get); + } + + /** + * Tests the plugin handler allowing for plugin removal via unset(). + * + * @depends testImplementsGet + * @return void + */ + public function testImplementsUnset() + { + $plugin = $this->getMockPlugin(); + $this->handler->addPlugin($plugin); + unset($this->handler->{$plugin->getName()}); + $this->assertFalse($this->handler->hasPlugin($plugin->getName())); + } + + /** + * Tests the plugin handler executing a callback on all contained + * plugins. + * + * @return void + */ + public function testImplementsCall() + { + foreach (range(1, 2) as $index) { + $plugin = $this->getMockPlugin('TestPlugin' . $index, array('callback')); + $plugin + ->expects($this->once()) + ->method('callback'); + $this->handler->addPlugin($plugin); + } + + $this->assertTrue($this->handler->callback()); + } + + /** + * Tests a newly instantiated handler not having plugins associated with + * it. + * + * @depends testImplementsCountable + * @return void + */ + public function testEmptyHandlerHasNoPlugins() + { + $this->assertEquals(0, count($this->handler)); + } + + /** + * Tests a newly instantiated handler not having autoloading enabled by + * default. + * + * @return void + */ + public function testGetAutoloadDefaultsToNotAutoload() + { + $this->assertFalse($this->handler->getAutoload()); + } + + /** + * Tests setAutoload(). + * + * @depends testGetAutoloadDefaultsToNotAutoload + * @return void + */ + public function testSetAutoload() + { + $this->assertSame( + $this->handler->setAutoload(true), + $this->handler, + 'setAutoload() does not provide a fluent interface' + ); + + $this->assertTrue( + $this->handler->getAutoload(), + 'setAutoload() had no effect on getAutoload()' + ); + } + + /** + * Tests addPath() providing a fluent interface. + * + * @return void + */ + public function testAddPathProvidesFluentInterface() + { + $handler = $this->handler->addPath(dirname(__FILE__)); + $this->assertSame($this->handler, $handler); + } + + /** + * Tests addPath() throwing an exception when it cannot read the + * directory. + * + * @return void + */ + public function testAddPathThrowsExceptionOnUnreadableDirectory() + { + try { + $this->handler->addPath('/an/unreadable/directory/path'); + } catch(Phergie_Plugin_Exception $e) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_DIRECTORY_NOT_READABLE, + $e->getCode() + ); + return; + } + + $this->fail('An expected exception has not been raised'); + } + + /** + * Tests adding a path to the plugin handler. + * + * @return void + */ + public function testAddPath() + { + $pluginName = 'Mock'; + + try { + $this->handler->addPlugin($pluginName); + } catch(Phergie_Plugin_Exception $e) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_CLASS_NOT_FOUND, + $e->getCode() + ); + } + + if (!isset($e)) { + $this->fail('Plugin loaded, path was already present'); + } + + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + + try { + $this->handler->addPlugin($pluginName); + } catch(Phergie_Plugin_Exception $e) { + $this->fail('Added path, plugin still not found'); + } + } + + /** + * Tests addPlugin() returning an added plugin instance. + * + * @return void + */ + public function testAddPluginByInstanceReturnsPluginInstance() + { + $plugin = $this->getMockPlugin(); + $returnedPlugin = $this->handler->addPlugin($plugin); + $this->assertSame( + $returnedPlugin, + $plugin, + 'addPlugin() does not return the instance passed to it' + ); + } + + /** + * Tests adding a plugin to the handler using the plugin's short name. + * + * @return void + */ + public function testAddPluginByShortName() + { + $pluginName = 'Mock'; + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + + $returnedPlugin = $this->handler->addPlugin($pluginName); + $this->assertTrue($this->handler->hasPlugin($pluginName)); + + $this->assertType( + 'Phergie_Plugin_Mock', + $this->handler->getPlugin($pluginName) + ); + + $this->assertSame( + $this->handler->getPlugin($pluginName), + $returnedPlugin, + 'Handler does not contain added plugin' + ); + } + + + /** + * Tests adding a plugin instance to the handler. + * + * @return void + */ + public function testAddPluginByInstance() + { + $plugin = $this->getMockPlugin(); + $returnedPlugin = $this->handler->addPlugin($plugin); + $this->assertTrue($this->handler->hasPlugin('TestPlugin')); + + $this->assertSame( + $plugin, + $returnedPlugin, + 'addPlugin() does not return added plugin instance' + ); + + $this->assertSame( + $plugin, + $this->handler->getPlugin('TestPlugin'), + 'getPlugin() does not return added plugin instance' + ); + } + + /** + * Tests addPlugin() throwing an exception when the plugin class file + * can't be found. + * + * @return void + */ + public function testAddPluginThrowsExceptionWhenPluginFileNotFound() + { + try { + $this->handler->addPlugin('TestPlugin'); + } catch(Phergie_Plugin_Exception $e) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_CLASS_NOT_FOUND, + $e->getCode() + ); + return; + } + + $this->fail('An expected exception has not been raised'); + } + + /** + * Recursively removes all files and subdirectories in a directory. + * + * @param string $path Directory path + * @return void + */ + private function removeDirectory($path) + { + if (file_exists($path)) { + $it = new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($path), + RecursiveIteratorIterator::CHILD_FIRST + ); + foreach ($it as $entry) { + if ($it->isDot()) { + continue; + } + if ($entry->isDir()) { + rmdir($entry->getPathname()); + } else { + unlink($entry->getPathname()); + } + } + } + } + + /** + * Tests addPlugin() throwing an exception when the plugin class file is + * found, but does not contain the plugin class as expected. + * + * @return void + */ + public function testAddPluginThrowsExceptionWhenPluginClassNotFound() + { + $path = sys_get_temp_dir() . '/Phergie/Plugin'; + $this->removeDirectory(dirname($path)); + mkdir($path, 0777, true); + touch($path . '/TestPlugin.php'); + $this->handler->addPath($path, 'Phergie_Plugin_'); + + try { + $this->handler->addPlugin('TestPlugin'); + } catch(Phergie_Plugin_Exception $e) { } + + if (isset($e)) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_CLASS_NOT_FOUND, + $e->getCode() + ); + } else { + $this->fail('An expected exception has not been raised'); + } + + $this->removeDirectory(dirname($path)); + } + + /** + * Tests addPlugin() throwing an exception when trying to instantiate a + * class that doesn't extend Phergie_Plugin_Abstract. + * + * @return void + */ + public function testAddPluginThrowsExceptionIfRequestingNonPlugin() + { + try { + $this->handler->addPlugin('Handler'); + } catch(Phergie_Plugin_Exception $e) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_INCORRECT_BASE_CLASS, + $e->getCode() + ); + return; + } + + $this->fail('An expected exception has not been raised'); + } + + /** + * Tests addPlugin() throwing an exception when trying to instantiate a + * class that can't be instantiated. + * + * @return void + */ + public function testAddPluginThrowsExceptionIfPluginNotInstantiable() + { + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + try { + $this->handler->addPlugin('TestNonInstantiablePluginFromFile'); + } catch(Phergie_Plugin_Exception $e) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_CLASS_NOT_INSTANTIABLE, + $e->getCode() + ); + return; + } + + $this->fail('An expected exception has not been raised'); + } + + /** + * Tests adding a plugin by its short name with arguments passed to the + * plugin constructor. + * + * @return void + */ + public function testAddPluginShortNamePassesArgsToConstructor() + { + $pluginName = 'Mock'; + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + + $arguments = array('a', 'b', 'c'); + $plugin = $this->handler->addPlugin($pluginName, $arguments); + + $this->assertAttributeSame( + $arguments, + 'arguments', + $plugin, + 'Arguments do not match' + ); + } + + /** + * Tests addPlugin() passing Phergie_Config to an instantiated plugin. + * + * @return void + */ + public function testAddPluginPassesConstructorArguments() + { + $pluginName = 'Mock'; + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + $plugin = $this->handler->addPlugin($pluginName); + + $this->assertSame( + $this->config, + $plugin->getConfig(), + 'Phergie_Config instances do not match' + ); + + $this->assertSame( + $this->events, + $plugin->getEventHandler(), + 'Phergie_Event_Handler instances do not match' + ); + } + + /** + * Tests addPlugin() calling onLoad() on an instantiated plugin. + * + * @return void + */ + public function testAddPluginCallsOnLoadOnInstantiatedPlugin() + { + $plugin = $this->getMockPlugin(null, array('onLoad')); + $plugin + ->expects($this->once()) + ->method('onLoad'); + $this->handler->addPlugin($plugin); + } + + /** + * Tests addPlugin() returning the same plugin when called twice. + * + * @return void + */ + public function testAddPluginReturnsSamePluginWhenAskedTwice() + { + $pluginName = 'Mock'; + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + $plugin1 = $this->handler->addPlugin($pluginName); + $plugin2 = $this->handler->addPlugin($pluginName); + $this->assertSame($plugin1, $plugin2); + } + + /** + * Tests getPlugin() throwing an exception when trying to get an + * unloaded plugin with autoload disabled. + * + * @depends testGetAutoloadDefaultsToNotAutoload + * @return void + */ + public function testExceptionThrownWhenLoadingPluginWithoutAutoload() + { + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + + try { + $this->handler->getPlugin('Mock'); + } catch (Phergie_Plugin_Exception $expected) { + $this->assertEquals( + Phergie_Plugin_Exception::ERR_PLUGIN_NOT_LOADED, + $expected->getCode() + ); + return; + } + + $this->fail('An expected exception has not been raised'); + } + + /** + * Tests addPlugins() with a plugin short name and no plugin constructor + * arguments. + * + * @depends testAddPluginByShortName + * @depends testAddPluginByInstance + * @return void + */ + public function testAddPluginsWithoutArguments() + { + $prefix = 'Phergie_Plugin_'; + $this->handler->addPath(dirname(__FILE__), $prefix); + + $plugin = 'Mock'; + $this->handler->addPlugins(array($plugin)); + $returnedPlugin = $this->handler->getPlugin($plugin); + $this->assertContains( + get_class($returnedPlugin), + $prefix . $plugin, + 'Short name plugin not of expected class' + ); + } + + /** + * Tests addPlugins() with a plugin short name and plugin constructor + * arguments. + * + * @depends testAddPluginByShortName + * @depends testAddPluginByInstance + * @return void + */ + public function testAddPluginsWithArguments() + { + $prefix = 'Phergie_Plugin_'; + $this->handler->addPath(dirname(__FILE__), $prefix); + + $arguments = array(1, 2, 3); + $plugin = array('Mock', $arguments); + $this->handler->addPlugins(array($plugin)); + $returnedPlugin = $this->handler->getPlugin('Mock'); + $this->assertEquals( + $arguments, + $returnedPlugin->getArguments(), + 'Constructor arguments for instance plugin do not match' + ); + } + + /** + * Tests removePlugin() with a plugin instance. + * + * @depends testAddPluginByInstance + * @return void + */ + public function testRemovePluginByInstance() + { + $plugin = $this->getMockPlugin(); + $this->handler->addPlugin($plugin); + $this->handler->removePlugin($plugin); + $this->assertFalse( + $this->handler->hasPlugin($plugin->getName()), + 'Plugin was not removed' + ); + } + + /** + * Tests removePlugin() with a plugin short name. + * + * @depends testAddPluginByShortName + * @return void + */ + public function testRemovePluginByShortName() + { + $plugin = 'Mock'; + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + + $this->handler->addPlugin($plugin); + $this->handler->removePlugin($plugin); + $this->assertFalse( + $this->handler->hasPlugin($plugin), + 'Plugin was not removed' + ); + } + + /** + * Tests getPlugin() when the plugin is not already loaded and + * autoloading is disabled. + * + * @depends testSetAutoload + * @return void + */ + public function testGetPluginWithAutoloadEnabled() + { + $this->handler->setAutoload(true); + $this->handler->addPath(dirname(__FILE__), 'Phergie_Plugin_'); + $plugin = $this->handler->getPlugin('Mock'); + $this->assertType( + 'Phergie_Plugin_Mock', + $plugin, + 'Retrieved plugin not of expected class' + ); + } + + /** + * Tests getPlugins(). + * + * @depends testGetPluginWithAutoloadEnabled + * @return void + */ + public function testGetPlugins() + { + $plugin1 = $this->getMockPlugin('TestPlugin1'); + $this->handler->addPlugin($plugin1); + + $plugin2 = $this->getMockPlugin('TestPlugin2'); + $this->handler->addPlugin($plugin2); + + $expected = array( + 'testplugin1' => $plugin1, + 'testplugin2' => $plugin2, + ); + + $actual = $this->handler->getPlugins(); + $this->assertEquals($expected, $actual); + + $actual = $this->handler->getPlugins(array('testplugin1', 'testplugin2')); + $this->assertEquals($expected, $actual); + } + + /** + * Tests that multiple plugin iterators can be used concurrently. + * + * @return void + */ + public function testUseMultiplePluginIteratorsConcurrently() + { + $plugin1 = $this->getMockPlugin('TestPlugin1'); + $this->handler->addPlugin($plugin1); + + $plugin2 = $this->getMockPlugin('TestPlugin2'); + $this->handler->addPlugin($plugin2); + + $iterator1 = $this->handler->getIterator(); + $iterator1->next(); + $this->assertSame($plugin2, $iterator1->current()); + + $iterator2 = $this->handler->getIterator(); + $this->assertSame($plugin1, $iterator2->current()); + } + + /** + * Tests adding plugin paths via configuration. + * + * @return void + */ + public function testAddPluginPathsViaConfiguration() + { + $dir = dirname(__FILE__); + $prefix = 'Phergie_Plugin_'; + $paths = array($dir => $prefix); + $this->config + ->expects($this->any()) + ->method('offsetExists') + ->will($this->returnValue(true)); + $this->config + ->expects($this->any()) + ->method('offsetGet') + ->will($this->returnValue($paths)); + + // Reinitialize the handler so the configuration change takes effect + // within the constructor + $this->handler = new Phergie_Plugin_Handler( + $this->config, + $this->events + ); + + $this->handler->setAutoload(true); + $this->handler->getPlugin('Mock'); + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/IteratorTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/IteratorTest.php new file mode 100644 index 0000000000..336b25d355 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/IteratorTest.php @@ -0,0 +1,151 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_Iterator. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_IteratorTest extends PHPUnit_Framework_TestCase +{ + /** + * Iterator instance being tested + * + * @var Phergie_Plugin_Iterator + */ + protected $iterator; + + /** + * List of mock plugin instances to be iterated + * + * @var array + */ + protected $plugins; + + /** + * Initializes the iterator instance being tested. + * + * @return void + */ + public function setUp() + { + $this->plugins = array(); + foreach (range(0, 4) as $index) { + $plugin = $this->getMock('Phergie_Plugin_Abstract'); + $plugin + ->expects($this->any()) + ->method('getName') + ->will($this->returnValue($index)); + $this->plugins[] = $plugin; + } + + $this->iterator = new Phergie_Plugin_Iterator( + new ArrayIterator($this->plugins) + ); + } + + /** + * Tests that all plugins are iterated when no filters are applied. + */ + public function testIteratesAllPluginsWithNoFilters() + { + $expected = range(0, 4); + $actual = array(); + foreach ($this->iterator as $plugin) { + $actual[] = $plugin->getName(); + } + $this->assertEquals($expected, $actual); + } + + /** + * Tests that appropriate plugins are iterated when plugin name filters + * are applied. + */ + public function testIteratesPluginsWithNameFilters() + { + // Test acceptance of strings and fluent interface implementation + $returned = $this->iterator->addPluginFilter('0'); + $this->assertSame($this->iterator, $returned); + + // Test acceptance of arrays + $this->iterator->addPluginFilter(array('1', '3')); + + // Test application of filters to iteration + $expected = array('2', '4'); + $actual = array(); + foreach ($this->iterator as $plugin) { + $actual[] = $plugin->getName(); + } + $this->assertEquals($expected, $actual); + } + + /** + * Tests that appropriate plugins are iterated when method name filters + * are applied. + * + * The same method name is used in all cases here because mocked methods + * of mock objects do not appear to be detected by method_exists() or + * ReflectionClass, so filtering by a method defined in the base plugin + * class seems the easiest way to test that method filtering really + * works. + */ + public function testIteratesPluginsWithMethodFilters() + { + // Tests acceptance of strings and fluent interface implementation + $returned = $this->iterator->addMethodFilter('getName'); + $this->assertSame($this->iterator, $returned); + + // Test acceptance of arrays + $this->iterator->addMethodFilter(array('getName', 'getName')); + + // Test application of filters to iteration + $expected = array(); + $actual = array(); + foreach ($this->iterator as $plugin) { + $actual[] = $plugin->getName(); + } + $this->assertEquals($expected, $actual); + } + + /** + * Tests that all plugins are iterated after filters are cleared. + * + * @depends testIteratesPluginsWithNameFilters + * @depends testIteratesPluginsWithMethodFilters + */ + public function testIteratesPluginsAfterClearingFilters() + { + $this->iterator->addPluginFilter('0'); + $this->iterator->addMethodFilter('method1'); + $this->iterator->clearFilters(); + + $expected = range(0, 4); + $actual = array(); + foreach ($this->iterator as $plugin) { + $actual[] = $plugin->getName(); + } + $this->assertEquals($expected, $actual); + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/KarmaTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/KarmaTest.php new file mode 100644 index 0000000000..6b72316743 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/KarmaTest.php @@ -0,0 +1,335 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_Karma. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_KarmaTest extends Phergie_Plugin_TestCase +{ + /** + * Skips tests if the SQLite PDO driver is not available. + * + * @return void + */ + public function setUp() + { + if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) { + $this->markTestSkipped('PDO or pdo_sqlite extension is required'); + } + + parent::setUp(); + } + + /** + * Configures the plugin to use a temporary copy of the database. + * + * @return PDO Connection to the temporary database + */ + private function createMockDatabase() + { + $dbPath = $this->getPluginsPath('Karma/karma.db'); + $db = $this->getMockDatabase($dbPath); + $this->plugin->setDb($db); + return $db; + } + + /** + * Tests the requirement of the Command plugin. + * + * @return void + */ + public function testRequiresCommandPlugin() + { + $this->assertRequiresPlugin('Command'); + $this->plugin->onLoad(); + } + + /** + * Initiates a karma event with a specified term. + * + * @param string $term Karma term + * + * @return Phergie_Event_Request Initiated mock event + */ + private function initiateKarmaEvent($term) + { + $args = array( + 'receiver' => $this->source, + 'text' => 'karma ' . $term + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); + return $event; + } + + /** + * Checks for an expected karma response. + * + * @param Phergie_Event_Request $event Event containing the karma + * request + * @param string $term Karma term + * @param string $response Portion of the response + * message following the term + * from the original event + * + * @return void + */ + private function checkForKarmaResponse($event, $term, $response) + { + $text = $event->getNick() . ': ' . $response; + $this->assertEmitsEvent('privmsg', array($event->getSource(), $text)); + $this->plugin->onCommandKarma($term); + } + + /** + * Tests that a default database is used when none is specified. + * + * @return void + */ + public function testGetDb() + { + $db = $this->plugin->getDb(); + $this->assertType('PDO', $db); + } + + /** + * Tests specifying a custom database for the plugin to use. + * + * @return void + */ + public function testSetDb() + { + $db = $this->createMockDatabase(); + $this->assertSame($db, $this->plugin->getDb()); + } + + /** + * Tests that issuing the karma command with an unknown term returns a + * neutral rating. + * + * @return void + */ + public function testKarmaCommandOnUnknownTerm() + { + $term = 'foo'; + $this->createMockDatabase(); + $event = $this->initiateKarmaEvent($term); + $this->checkForKarmaResponse($event, $term, $term . ' has neutral karma.'); + } + + /** + * Tests that issuing the karma command with the term "me" returns the + * the karma rating for the initiating user. + * + * @return void + */ + public function testKarmaCommandOnUser() + { + $term = 'me'; + $this->createMockDatabase(); + $event = $this->initiateKarmaEvent($term); + $this->checkForKarmaResponse($event, $term, 'You have neutral karma.'); + } + + /** + * Tests that issuing the karma command with a term that has a fixed + * karma rating results in that rating being returned. + * + * @return void + */ + public function testKarmaCommandWithFixedKarmaTerm() + { + $term = 'phergie'; + $this->createMockDatabase(); + $event = $this->initiateKarmaEvent($term); + $this->checkForKarmaResponse($event, $term, 'phergie has karma of awesome.'); + } + + /** + * Supporting method that tests the result of a karma term rating change. + * + * @param string $term Karma term for which the rating is being + * changed + * @param string $operation ++ or -- + * @param int $karma Expected karma rating after the change is + * applied + */ + private function checkForKarmaRatingChange($term, $operation, $karma) + { + $args = array( + 'receiver' => $this->source, + 'text' => $term . $operation + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); + $this->plugin->onPrivmsg(); + $event = $this->initiateKarmaEvent($term); + $this->checkForKarmaResponse($event, $term, $term . ' has karma of ' . $karma . '.'); + } + + /** + * Tests incrementing the karma rating of a new term. + * + * @return void + */ + public function testIncrementingKarmaRating() + { + $this->createMockDatabase(); + $this->checkForKarmaRatingChange('foo', '++', 1); + } + + /** + * Tests decrementing the karma rating of a new term. + * + * @return void + */ + public function testDecrementingKarmaRating() + { + $this->createMockDatabase(); + $this->checkForKarmaRatingChange('foo', '--', -1); + } + + /** + * Tests modifying the karma rating of an existing term. + * + * @return void + */ + public function testChangingExistingKarmaRating() + { + $term = 'foo'; + $this->createMockDatabase(); + $this->checkForKarmaRatingChange($term, '++', 1); + $this->checkForKarmaRatingChange($term, '++', 2); + } + + /** + * Tests resetting the karma rating of an existing term to 0. + * + * @return void + */ + public function testResettingExistingKarmaRating() + { + $term = 'foo'; + $this->createMockDatabase(); + $this->checkForKarmaRatingChange($term, '++', 1); + $this->plugin->onCommandReincarnate($term); + $event = $this->initiateKarmaEvent($term); + $this->checkForKarmaResponse($event, $term, $term . ' has neutral karma.'); + } + + /** + * Data provider for testKarmaComparisons(). + * + * @return array Enumerated array of enumerated arrays each containing a + * set of parameter values for a single call to + * testKarmaComparisons() + */ + public function dataProviderTestKarmaComparisons() + { + $term1 = 'foo'; + $term2 = 'bar'; + + $positive = 'True that.'; + $negative = 'No sir, not at all.'; + + return array( + array($term1, $term2, 1, 0, '>', $positive), + array($term1, $term2, 0, 1, '>', $negative), + array($term1, $term2, 1, 1, '>', $negative), + array($term1, $term2, 1, 0, '<', $negative), + array($term1, $term2, 0, 1, '<', $positive), + array($term1, $term2, 1, 1, '<', $negative), + array($term1, 'phergie', 1, 0, '>', $positive), + array('phergie', $term2, 0, 1, '<', $positive), + array($term1, 'everything', 0, 0, '>', $positive), + array('everything', $term2, 0, 0, '>', $positive), + ); + } + + /** + * Tests comparing the karma ratings of two terms. + * + * @param string $term1 First term + * @param string $term2 Second term + * @param int $karma1 Karma rating of the first time, 0 or 1 + * @param int $karma2 Karma rating of the second term, 0 or 1 + * @param string $operator Comparison operator, > or < + * @param string $response Response to check for + * + * @return void + * @dataProvider dataProviderTestKarmaComparisons + */ + public function testKarmaComparisons($term1, $term2, $karma1, $karma2, + $operator, $response + ) { + $db = $this->createMockDatabase(); + + // Reduce answer tables to expected response + $stmt = $db->prepare('DELETE FROM positive_answers WHERE answer != ?'); + $stmt->execute(array($response)); + $stmt = $db->prepare('DELETE FROM negative_answers WHERE answer != ?'); + $stmt->execute(array($response)); + + if ($karma1) { + $this->checkForKarmaRatingChange($term1, '++', 1); + } + + if ($karma2) { + $this->checkForKarmaRatingChange($term2, '++', 1); + } + + $args = array( + 'receiver' => $this->source, + 'text' => $term1 . ' ' . $operator . ' ' . $term2 + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); + + // Test lack of a response for terms with fixed karma ratings + if ($term1 == 'phergie' || $term2 == 'phergie') { + $callback = 'assertDoesNotEmitEvent'; + } else { + $callback = 'assertEmitsEvent'; + } + + $this->$callback('privmsg', array($event->getSource(), $response)); + $this->plugin->onPrivmsg(); + + // Test for karma changes when one term is "everything" + if ($term1 == 'everything' || $term2 == 'everything') { + if ($term1 == 'everything') { + $term = $term2; + $karma = ($operator == '>') ? -1 : 1; + } else { + $term = $term1; + $karma = ($operator == '>') ? 1 : -1; + } + $event = $this->initiateKarmaEvent($term); + $this->checkForKarmaResponse($event, $term, $term . ' has karma of ' . $karma . '.'); + } + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/Mock.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/Mock.php new file mode 100755 index 0000000000..44a5d11c7c --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/Mock.php @@ -0,0 +1,61 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Creates a plugin on the filesystem that can be used by + * Phergie_Plugin_Handler::addPath() to be located and loaded. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_Mock extends Phergie_Plugin_Abstract +{ + /** + * Arguments passed to the constructor + * + * @var array + */ + protected $arguments; + + /** + * Stores all arguments for later use. + * + * @return void + */ + public function __construct() + { + $this->arguments = func_get_args(); + } + + /** + * Returns all constructor arguments. + * + * @return array Enumerated array containing the arguments passed to the + * constructor in order + */ + public function getArguments() + { + return $this->arguments; + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/PingTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/PingTest.php new file mode 100644 index 0000000000..ac30d46ffe --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/PingTest.php @@ -0,0 +1,164 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_Ping. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_PingTest extends Phergie_Plugin_TestCase +{ + /** + * Tests that the last ping and event are initialized on connection to + * the server. + * + * @return void + */ + public function testOnConnect() + { + $this->plugin->onConnect(); + + $expected = time(); + $actual = $this->plugin->getLastEvent(); + $this->assertEquals($expected, $actual); + + $expected = null; + $actual = $this->plugin->getLastPing(); + $this->assertEquals($expected, $actual); + } + + /** + * Tests that the last event is reset when an event occurs. + * + * @return void + */ + public function testPreEvent() + { + $this->plugin->preEvent(); + + $expected = time(); + $actual = $this->plugin->getLastEvent(); + $this->assertEquals($expected, $actual); + } + + /** + * Tests that the last ping is reset when a ping is received. + * + * @return void + */ + public function testOnPingResponse() + { + $this->plugin->onPingResponse(); + + $expected = null; + $actual = $this->plugin->getLastPing(); + $this->assertEquals($expected, $actual); + } + + /** + * Tests that the test suite is able to manipulate the value of the last + * event. + * + * @return void + */ + public function testSetLastEvent() + { + $expected = time() + 1; + $this->plugin->setLastEvent($expected); + $actual = $this->plugin->getLastEvent(); + $this->assertEquals($expected, $actual); + + $this->plugin->setLastEvent(); + $expected = time(); + $actual = $this->plugin->getLastEvent(); + $this->assertEquals($expected, $actual); + + try { + $this->plugin->setLastEvent('foo'); + $this->fail('Expected exception was not thrown'); + } catch (Exception $e) { } + } + + /** + * Tests that the test suite is able to manipulate the value of the last + * ping. + * + * @return void + */ + public function testSetLastPing() + { + $expected = time() + 1; + $this->plugin->setLastPing($expected); + $actual = $this->plugin->getLastPing(); + $this->assertEquals($expected, $actual); + + $this->plugin->setLastPing(); + $expected = time(); + $actual = $this->plugin->getLastPing(); + $this->assertEquals($expected, $actual); + + try { + $this->plugin->setLastPing('foo'); + $this->fail('Expected exception was not thrown'); + } catch (Exception $e) { } + } + + /** + * Tests that a ping event is sent after the appropriate time period has + * lapsed since receiving an event. + * + * @depends testSetLastEvent + * @return void + */ + public function testPing() + { + $pingEvent = 10; + $this->setConfig('ping.event', $pingEvent); + $lastEvent = time() - ($pingEvent + 1); + $this->plugin->setLastEvent($lastEvent); + $expected = time(); + $this->assertEmitsEvent('ping', array($this->nick, $expected)); + $this->plugin->onTick(); + $actual = $this->plugin->getLastPing(); + $this->assertEquals($expected, $actual); + } + + /** + * Tests that a quit event is sent after the appropriate time period has + * lapsed since sending a ping event. + * + * @depends testPing + * @return void + */ + public function testQuit() + { + $pingPing = 10; + $this->setConfig('ping.ping', $pingPing); + $lastPing = time() - ($pingPing + 1); + $this->plugin->setLastPing($lastPing); + $this->assertEmitsEvent('quit'); + $this->plugin->onTick(); + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/PongTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/PongTest.php new file mode 100644 index 0000000000..e8351fef24 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/PongTest.php @@ -0,0 +1,46 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_Pong. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_PongTest extends Phergie_Plugin_TestCase +{ + /** + * Test that a pong event is sent when a ping event is received. + * + * @return void + */ + public function testPong() + { + $expected = 'irc.freenode.net'; + $event = $this->getMockEvent('ping', array($expected)); + $this->plugin->setEvent($event); + $this->assertEmitsEvent('pong', array($expected)); + $this->plugin->onPing(); + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php new file mode 100644 index 0000000000..369a0c6444 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/SpellCheckTest.php @@ -0,0 +1,166 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_SpellCheck. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_SpellCheckTest extends Phergie_Plugin_TestCase +{ + /** + * Checks for the pspell extension. + * + * @return void + */ + public function setUp() + { + parent::setUp(); + + if (!extension_loaded('pspell')) { + $this->markTestSkipped('pspell extension not available'); + } + } + + /** + * Tests for the plugin failing to load when the language setting is not + * specified. + * + * @return void + */ + public function testLanguageSettingNotSet() + { + try { + $this->plugin->onLoad(); + $this->fail('Expected exception was not thrown'); + } catch (Phergie_Plugin_Exception $e) { + return; + } + $this->fail('Unexpected exception was thrown'); + } + + /** + * Tests for the plugin requiring the Command plugin as a dependency. + * + * @return void + */ + public function testRequiresCommandPlugin() + { + $this->setConfig('spellcheck.lang', 'en'); + $this->assertRequiresPlugin('Command'); + $this->plugin->onLoad(); + } + + /** + * Tests for the plugin failing to load because of a dictionary error. + * + * @return void + */ + public function testLoadDictionaryError() + { + $this->setConfig('spellcheck.lang', 'foo'); + try { + $this->plugin->onLoad(); + $this->fail('Expected exception not thrown'); + } catch (Phergie_Plugin_Exception $e) { + return; + } + $this->fail('Unexpected exception was thrown'); + } + + /** + * Initializes a spell check event. + * + * @param string $word Word to be checked + * + * @return void + */ + private function initializeSpellCheckEvent($word) + { + $this->setConfig('spellcheck.lang', 'en'); + $this->plugin->onLoad(); + $args = array( + 'receiver' => $this->source, + 'text' => 'spell ' . $word + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); + } + + /** + * Checks for a specified response to a spell check event. + * + * @param string $word Work being checked + * @param string $response Expected response + * + * @return void + */ + private function checkForSpellCheckResponse($word, $response) + { + $this->assertEmitsEvent('privmsg', array($this->source, $response)); + $this->plugin->onCommandSpell($word); + } + + /** + * Tests for the plugin returning a response for a correctly spelled word. + * + * @return void + */ + public function testRespondsForCorrectlySpelledWord() + { + $word = 'test'; + $this->initializeSpellCheckEvent($word); + $response = $this->nick . ': The word "' . $word . '" seems to be spelled correctly.'; + $this->checkForSpellCheckResponse($word, $response); + } + + /** + * Tests for the plugin returning a response when it can't find any + * suggestions for a word. + * + * @return void + */ + public function testRespondsWithoutSuggestions() + { + $word = 'kjlfljlkjljkljlj'; + $this->initializeSpellCheckEvent($word); + $response = $this->nick . ': I could not find any suggestions for "' . $word . '".'; + $this->checkForSpellCheckResponse($word, $response); + } + + /** + * Tests for the plugin returning a response when it is able to find + * suggestions for a word. + * + * @return void + */ + public function testRespondsWithSuggestions() + { + $word = 'teh'; + $this->initializeSpellCheckEvent($word); + $response = $this->nick . ': Suggestions for "' . $word . '": the, Te, tech, Th, eh.'; + $this->checkForSpellCheckResponse($word, $response); + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TerryChayTest.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TerryChayTest.php new file mode 100644 index 0000000000..e58ac6f290 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TerryChayTest.php @@ -0,0 +1,135 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for Pherge_Plugin_TerryChay. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_TerryChayTest extends Phergie_Plugin_TestCase +{ + /** + * Chayism used as a consistent response when related events are + * triggered + * + * @var string + */ + private $chayism = 'Terry Chay doesn\'t need a framework; he already knows everyone\'s code'; + + /** + * Configures the mock plugin handler to return a mock Http plugin with + * a mock response object populated with predetermined content. + * + * @return void + */ + public function setUpHttpClient() + { + $response = $this->getMock('Phergie_Plugin_Http_Response'); + $response + ->expects($this->any()) + ->method('getContent') + ->will($this->returnValue($this->chayism)); + + $plugin = $this->getMock('Phergie_Plugin_Http'); + $plugin + ->expects($this->any()) + ->method('get') + ->will($this->returnValue($response)); + + $this->getMockPluginHandler() + ->expects($this->any()) + ->method('getPlugin') + ->with('Http') + ->will($this->returnValue($plugin)); + } + + /** + * Tests that the plugin requires the Http plugin as a dependency. + * + * @return void + */ + public function testRequiresHttpPlugin() + { + $this->assertRequiresPlugin('Http'); + $this->plugin->onLoad(); + } + + /** + * Data provider for testPrivmsgTriggerReturnsChayism(). + * + * @return array Enumerated array of enumerated arrays each containing + * a set of parameters for a single call to + * testPrivmsgTriggerReturnsChayism() + */ + public function dataProviderTestPrivmsgTriggerReturnsChayism() + { + return array( + array('terry chay'), + array('terry chay'), + array('tychay'), + array('!tychay'), + array('! tychay'), + array('foo tychay bar'), + ); + } + + /** + * Tests that appropriate triggers result in a response with a Chayism. + * + * @return void + * @dataProvider dataProviderTestPrivmsgTriggerReturnsChayism + */ + public function testPrivmsgTriggerReturnsChayism($trigger) + { + $this->setConfig('command.prefix', '!'); + $this->setUpHttpClient(); + $args = array( + 'receiver' => $this->source, + 'text' => $trigger + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); + $this->assertEmitsEvent('privmsg', array($this->source, 'Fact: ' . $this->chayism)); + $this->plugin->onPrivmsg(); + } + + /** + * Tests that lack of an appropriate trigger results in no response with + * a Chayism. + * + * @return void + */ + public function testNoPrivmsgTriggerDoesNotReturnChayism() + { + $args = array( + 'receiver' => $this->source, + 'text' => 'foo bar baz' + ); + $event = $this->getMockEvent('privmsg', $args); + $this->plugin->setEvent($event); + $this->assertDoesNotEmitEvent('privmsg', array($this->source, 'Fact: ' . $this->chayism)); + $this->plugin->onPrivmsg(); + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TestCase.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TestCase.php new file mode 100644 index 0000000000..941e7cb410 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TestCase.php @@ -0,0 +1,435 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Unit test suite for plugin classes. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +abstract class Phergie_Plugin_TestCase extends PHPUnit_Framework_TestCase +{ + /** + * Mock configuration + * + * @var Phergie_Config + */ + protected $config; + + /** + * Associative array for configuration setting values, accessed by the + * mock configuration object using a callback + * + * @var array + */ + protected $settings = array(); + + /** + * Mock connection + * + * @var Phergie_Connection + */ + protected $connection; + + /** + * Mock event handler + * + * @var Phergie_Event_Handler + */ + protected $events; + + /** + * Mock plugin handler + * + * @var Phergie_Plugin_Handler + */ + protected $plugins; + + /** + * Plugin instance being tested + * + * @var Phergie_Plugin_Abstract + */ + protected $plugin; + + /** + * Full name of the plugin class being tested, may be explicitly + * specified in subclasses but is otherwise automatically derived from + * the test case class name + * + * @var string + */ + protected $pluginClass; + + /** + * User nick used in any events requiring one + * + * @var string + */ + protected $nick = 'nick'; + + /** + * Event source used in any events requiring one + * + * @var string + */ + protected $source = '#channel'; + + /** + * Initializes instance properties. + * + * @return void + */ + public function setUp() + { + if (empty($this->pluginClass)) { + $this->pluginClass = preg_replace('/Test$/', '', get_class($this)); + } + + if (empty($this->plugin)) { + $this->plugin = new $this->pluginClass; + } + + $this->plugin->setConfig($this->getMockConfig()); + $this->plugin->setConnection($this->getMockConnection()); + $this->plugin->setEventHandler($this->getMockEventHandler()); + $this->plugin->setPluginHandler($this->getMockPluginHandler()); + } + + /** + * Destroys all initialized instance properties. + * + * @return void + */ + public function tearDown() + { + unset( + $this->plugins, + $this->events, + $this->connection, + $this->config, + $this->plugin + ); + } + + /** + * Returns a mock configuration object. + * + * @return Phergie_Config + */ + protected function getMockConfig() + { + if (empty($this->config)) { + $this->config = $this->getMock('Phergie_Config', array('offsetExists', 'offsetGet')); + $this->config + ->expects($this->any()) + ->method('offsetExists') + ->will($this->returnCallback(array($this, 'configOffsetExists'))); + $this->config + ->expects($this->any()) + ->method('offsetGet') + ->will($this->returnCallback(array($this, 'configOffsetGet'))); + } + return $this->config; + } + + /** + * Returns whether a specific configuration setting has a value. Only + * intended for use by this class, but must be public for PHPUnit to + * call them. + * + * @param string $name Name of the setting + * + * @return boolean TRUE if the setting has a value, FALSE otherwise + */ + public function configOffsetExists($name) + { + return isset($this->settings[$name]); + } + + /** + * Returns the value of a specific configuration setting. Only intended + * for use by this class, but must be public for PHPUnit to call them. + * + * @param string $name Name of the setting + * + * @return mixed Value of the setting + */ + public function configOffsetGet($name) + { + return $this->settings[$name]; + } + + /** + * Returns a mock connection object. + * + * @return Phergie_Connection + */ + protected function getMockConnection() + { + if (empty($this->connection)) { + $this->connection = $this->getMock('Phergie_Connection'); + $this->connection + ->expects($this->any()) + ->method('getNick') + ->will($this->returnValue($this->nick)); + } + return $this->connection; + } + + /** + * Returns a mock event handler object. + * + * @return Phergie_Event_Handler + */ + protected function getMockEventHandler() + { + if (empty($this->events)) { + $this->events = $this->getMock('Phergie_Event_Handler', array('addEvent')); + } + return $this->events; + } + + /** + * Returns a mock plugin handler object. + * + * @return Phergie_Plugin_Handler + */ + protected function getMockPluginHandler() + { + if (empty($this->plugins)) { + $config = $this->getMockConfig(); + $events = $this->getMockEventHandler(); + $this->plugins = $this->getMock( + 'Phergie_Plugin_Handler', + array(), // mock everything + array($config, $events) + ); + } + return $this->plugins; + } + + /** + * Returns a mock event object. + * + * @param string $type Event type + * @param array $args Optional associative array of event arguments + * @param string $nick Optional user nick to associate with the event + * @param string $source Optional user nick or channel name to associate + * with the event as its source + * + * @return Phergie_Event_Request + */ + protected function getMockEvent($type, array $args = array(), + $nick = null, $source = null + ) { + $methods = array('getNick', 'getSource'); + foreach (array_keys($args) as $arg) { + if (is_int($arg) || ctype_digit($arg)) { + $methods[] = 'getArgument'; + } else { + $methods[] = 'get' . ucfirst($arg); + } + } + + $event = $this->getMock( + 'Phergie_Event_Request', + $methods + ); + + $nick = $nick ? $nick : $this->nick; + $event + ->expects($this->any()) + ->method('getNick') + ->will($this->returnValue($nick)); + + $source = $source ? $source : $this->source; + $event + ->expects($this->any()) + ->method('getSource') + ->will($this->returnValue($source)); + + foreach ($args as $key => $value) { + if (is_int($key) || ctype_digit($key)) { + $event + ->expects($this->any()) + ->method('getArgument') + ->with($key) + ->will($this->returnValue($value)); + } else { + $event + ->expects($this->any()) + ->method('get' . ucfirst($key)) + ->will($this->returnValue($value)); + } + } + + return $event; + } + + /** + * Sets the value of a configuration setting. + * + * @param string $setting Name of the setting + * @param mixed $value Value for the setting + * + * @return void + */ + protected function setConfig($setting, $value) + { + $this->settings[$setting] = $value; + } + + /** + * Returns the absolute path to the Phergie/Plugin directory. Useful in + * conjunction with getMockDatabase(). + * + * @param string $subpath Optional path to append to the directory path + * + * @return string Directory path + */ + protected function getPluginsPath($subpath = null) + { + $path = realpath(dirname(__FILE__) . '/../../../Phergie/Plugin'); + if (!empty($subpath)) { + $path .= '/' . ltrim($subpath, '/'); + } + return $path; + } + + /** + * Modifies the event handler to include an expectation of an event + * being added by the plugin being tested. Note that this must be called + * BEFORE executing the plugin code intended to initiate the event. + * + * @param string $type Event type + * @param array $args Optional enumerated array of event arguments + * + * @return void + */ + protected function assertEmitsEvent($type, array $args = array()) + { + $this->events + ->expects($this->at(0)) + ->method('addEvent') + ->with($this->plugin, $type, $args); + } + + /** + * Modifies the event handler to include an expectation of an event NOT + * being added by the plugin being tested. Note that this must be called + * BEFORE executing plugin code that may initiate the event. + * + * @param string $type Event type + * @param array $args Optional enumerated array of event arguments + * + * @return void + */ + protected function assertDoesNotEmitEvent($type, array $args = array()) + { + // Ugly hack to get around an issue in PHPUnit + // @link http://github.com/sebastianbergmann/phpunit-mock-objects/issues/issue/5#issue/5/comment/343524 + $callback = create_function( + '$plugin, $type, $args', + 'if (get_class($plugin) == "' . $this->pluginClass . '" + && $type == "' . $type . '" + && $args == "' . var_export($args, true) . '") { + trigger_error("Instance of ' . $this->pluginClass + . ' unexpectedly emitted event of type ' . $type + . '", E_USER_ERROR); + }' + ); + + $this->events + ->expects($this->any()) + ->method('addEvent') + ->will($this->returnCallback($callback)); + } + + /** + * Modifies the plugin handler to include an expectation of a plugin + * being retrieved, indicating a dependency. Note that this must be + * called BEFORE executing the plugin code that may load that plugin + * dependency, which is usually located in onLoad(). + * + * @param string $name Short name of the plugin required as a dependency + * + * @return void + */ + public function assertRequiresPlugin($name) + { + $this->plugins + ->expects($this->atLeastOnce()) + ->method('getPlugin') + ->with($name); + } + + /** + * Creates an in-memory copy of a specified SQLite database file and + * returns a connection to it. + * + * @param string $path Path to the SQLite file to copy + * + * @return PDO Connection to the database copy + */ + public function getMockDatabase($path) + { + $original = new PDO('sqlite:' . $path); + $copy = new PDO('sqlite::memory:'); + + $result = $original->query('SELECT sql FROM sqlite_master'); + while ($sql = $result->fetchColumn()) { + $copy->exec($sql); + } + + $tables = array(); + $result = $original->query('SELECT name FROM sqlite_master WHERE type = "table"'); + while ($table = $result->fetchColumn()) { + $tables[] = $table; + } + + foreach ($tables as $table) { + $result = $original->query('SELECT * FROM ' . $table); + $insert = null; + $copy->beginTransaction(); + while ($row = $result->fetch(PDO::FETCH_ASSOC)) { + $columns = array_keys($row); + if (empty($insert)) { + $insert = $copy->prepare( + 'INSERT INTO "' . $table . '" (' . + '"' . implode('", "', $columns) . '"' . + ') VALUES (' . + ':' . implode(', :', $columns) . + ')' + ); + } + $insert->execute($row); + } + $copy->commit(); + unset($insert); + } + + return $copy; + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TestNonInstantiablePluginFromFile.php b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TestNonInstantiablePluginFromFile.php new file mode 100755 index 0000000000..f9bddd1516 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/Phergie/Plugin/TestNonInstantiablePluginFromFile.php @@ -0,0 +1,43 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +/** + * Creates a plugin on the filesystem that can be used by + * Phergie_Plugin_Handler's addPath utility to be located and loaded. + * + * @category Phergie + * @package Phergie_Tests + * @author Phergie Development Team + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ +class Phergie_Plugin_TestNonInstantiablePluginFromFile +extends Phergie_Plugin_Abstract +{ + /** + * Private constructor to ensure that this class is not instantiable. + * + * @return void + */ + private function __construct() + { + } +} diff --git a/plugins/Irc/extlib/phergie/Tests/TestHelper.php b/plugins/Irc/extlib/phergie/Tests/TestHelper.php new file mode 100644 index 0000000000..e70af44562 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/TestHelper.php @@ -0,0 +1,26 @@ + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie_Tests + */ + +error_reporting(E_ALL | E_STRICT); + +// Phergie components require Phergie_Autoload to function correctly. +require_once dirname(__FILE__) . '/../Phergie/Autoload.php'; +Phergie_Autoload::registerAutoloader(); diff --git a/plugins/Irc/extlib/phergie/Tests/phpunit.xml b/plugins/Irc/extlib/phergie/Tests/phpunit.xml new file mode 100644 index 0000000000..b96589e4a1 --- /dev/null +++ b/plugins/Irc/extlib/phergie/Tests/phpunit.xml @@ -0,0 +1,26 @@ + + + + ./ + + diff --git a/plugins/Irc/extlib/phergie/build.xml b/plugins/Irc/extlib/phergie/build.xml new file mode 100644 index 0000000000..7510c75a15 --- /dev/null +++ b/plugins/Irc/extlib/phergie/build.xml @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/Irc/extlib/phergie/phergie.bat b/plugins/Irc/extlib/phergie/phergie.bat new file mode 100644 index 0000000000..4eec11d5c7 --- /dev/null +++ b/plugins/Irc/extlib/phergie/phergie.bat @@ -0,0 +1,14 @@ +@echo off +REM Phergie +REM +REM PHP version 5 +REM +REM LICENSE +REM +REM This source file is subject to the new BSD license that is bundled +REM with this package in the file LICENSE. +REM It is also available through the world-wide-web at this URL: +REM http://phergie.org/license + +set PHPBIN="@php_bin@" +%PHPBIN% "@bin_dir@\phergie" %* diff --git a/plugins/Irc/extlib/phergie/phergie.php b/plugins/Irc/extlib/phergie/phergie.php new file mode 100755 index 0000000000..f0b9f6ced5 --- /dev/null +++ b/plugins/Irc/extlib/phergie/phergie.php @@ -0,0 +1,54 @@ +#!/usr/bin/env php + + * @copyright 2008-2010 Phergie Development Team (http://phergie.org) + * @license http://phergie.org/license New BSD License + * @link http://pear.phergie.org/package/Phergie + */ + +/** + * @see Phergie_Autoload + */ +require 'Phergie/Autoload.php'; +Phergie_Autoload::registerAutoloader(); + +$bot = new Phergie_Bot; + +if (!isset($argc)) { + echo + 'The PHP setting register_argc_argv must be enabled for Phergie ', + 'configuration files to be specified using command line arguments; ', + 'defaulting to Settings.php in the current working directory', + PHP_EOL; +} else if ($argc > 0) { + // Skip the current file for manual installations + // ex: php phergie.php Settings.php + if (realpath($argv[0]) == __FILE__) { + array_shift($argv); + } + + // If configuration files were specified, override default behavior + if (count($argv) > 0) { + $config = new Phergie_Config; + foreach ($argv as $file) { + $config->read($file); + } + $bot->setConfig($config); + } +} + +$bot->run(); diff --git a/plugins/Irc/ircmanager.php b/plugins/Irc/ircmanager.php new file mode 100644 index 0000000000..6066293311 --- /dev/null +++ b/plugins/Irc/ircmanager.php @@ -0,0 +1,357 @@ +. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * IRC background connection manager for IRC-using queue handlers, + * allowing them to send outgoing messages on the right connection. + * + * Input is handled during socket select loop, Any incoming messages will be handled. + * + * In a multi-site queuedaemon.php run, one connection will be instantiated + * for each site being handled by the current process that has IRC enabled. + */ + +class IrcManager extends ImManager { + protected $conn = null; + protected $lastPing = null; + protected $messageWaiting = true; + protected $lastMessage = null; + + protected $regChecks = array(); + protected $regChecksLookup = array(); + + protected $connected = false; + + /** + * Initialize connection to server. + * + * @return boolean true on success + */ + public function start($master) { + if (parent::start($master)) { + $this->connect(); + return true; + } else { + return false; + } + } + + /** + * Return any open sockets that the run loop should listen + * for input on. + * + * @return array Array of socket resources + */ + public function getSockets() { + $this->connect(); + if ($this->conn) { + return $this->conn->getSockets(); + } else { + return array(); + } + } + + /** + * Request a maximum timeout for listeners before the next idle period. + * + * @return integer Maximum timeout + */ + public function timeout() { + if ($this->messageWaiting) { + return 1; + } else { + return $this->plugin->pinginterval; + } + } + + /** + * Idle processing for io manager's execution loop. + * + * @return void + */ + public function idle() { + // Send a ping if necessary + if (empty($this->lastPing) || time() - $this->lastPing > $this->plugin->pinginterval) { + $this->sendPing(); + } + + if ($this->connected) { + // Send a waiting message if appropriate + if ($this->messageWaiting && time() - $this->lastMessage > 1) { + $wm = Irc_waiting_message::top(); + if ($wm === NULL) { + $this->messageWaiting = false; + return; + } + + $data = unserialize($wm->data); + $wm->incAttempts(); + + if ($this->send_raw_message($data)) { + $wm->delete(); + } else { + if ($wm->attempts <= common_config('queue', 'max_retries')) { + // Try again next idle + $wm->releaseClaim(); + } else { + // Exceeded the maximum number of retries + $wm->delete(); + } + } + } + } + } + + /** + * Process IRC events that have come in over the wire. + * + * @param resource $socket Socket to handle input on + * @return void + */ + public function handleInput($socket) { + common_log(LOG_DEBUG, 'Servicing the IRC queue.'); + $this->stats('irc_process'); + + try { + $this->conn->handleEvents(); + } catch (Phergie_Driver_Exception $e) { + $this->connected = false; + $this->conn->reconnect(); + } + } + + /** + * Initiate connection + * + * @return void + */ + public function connect() { + if (!$this->conn) { + $this->conn = new Phergie_StatusnetBot; + + $config = new Phergie_Config; + $config->readArray( + array( + 'connections' => array( + array( + 'host' => $this->plugin->host, + 'port' => $this->plugin->port, + 'username' => $this->plugin->username, + 'realname' => $this->plugin->realname, + 'nick' => $this->plugin->nick, + 'password' => $this->plugin->password, + 'transport' => $this->plugin->transporttype, + 'encoding' => $this->plugin->encoding + ) + ), + + 'driver' => 'statusnet', + + 'processor' => 'async', + 'processor.options' => array('sec' => 0, 'usec' => 0), + + 'plugins' => array( + 'Pong', + 'NickServ', + 'AutoJoin', + 'Statusnet', + ), + + 'plugins.autoload' => true, + + // Uncomment to enable debugging output + //'ui.enabled' => true, + + 'nickserv.password' => $this->plugin->nickservpassword, + 'nickserv.identify_message' => $this->plugin->nickservidentifyregexp, + + 'autojoin.channels' => $this->plugin->channels, + + 'statusnet.messagecallback' => array($this, 'handle_irc_message'), + 'statusnet.regcallback' => array($this, 'handle_reg_response'), + 'statusnet.connectedcallback' => array($this, 'handle_connected'), + 'statusnet.unregregexp' => $this->plugin->unregregexp, + 'statusnet.regregexp' => $this->plugin->regregexp + ) + ); + + $this->conn->setConfig($config); + $this->conn->connect(); + $this->lastPing = time(); + $this->lastMessage = time(); + } + return $this->conn; + } + + /** + * Called via a callback when a message is received + * Passes it back to the queuing system + * + * @param array $data Data + * @return boolean + */ + public function handle_irc_message($data) { + $this->plugin->enqueueIncomingRaw($data); + return true; + } + + /** + * Called via a callback when NickServ responds to + * the bots query asking if a nick is registered + * + * @param array $data Data + * @return void + */ + public function handle_reg_response($data) { + // Retrieve data + $screenname = $data['screenname']; + $nickdata = $this->regChecks[$screenname]; + $usernick = $nickdata['user']->nickname; + + if (isset($this->regChecksLookup[$usernick])) { + if ($data['registered']) { + // Send message + $this->plugin->sendConfirmationCode($screenname, $nickdata['code'], $nickdata['user'], true); + } else { + $this->plugin->sendMessage($screenname, _m('Your nickname is not registered so IRC connectivity cannot be enabled')); + + $confirm = new Confirm_address(); + + $confirm->user_id = $user->id; + $confirm->address_type = $this->plugin->transport; + + if ($confirm->find(true)) { + $result = $confirm->delete(); + + if (!$result) { + common_log_db_error($confirm, 'DELETE', __FILE__); + // TRANS: Server error thrown on database error canceling IM address confirmation. + $this->serverError(_('Couldn\'t delete confirmation.')); + return; + } + } + } + + // Unset lookup value + unset($this->regChecksLookup[$usernick]); + + // Unset data + unset($this->regChecks[$screename]); + } + } + + /** + * Called when the connection is established + * + * @return void + */ + public function handle_connected() { + $this->connected = true; + } + + /** + * Enters a message into the database for sending when ready + * + * @param string $command Command + * @param array $args Arguments + * @return boolean + */ + protected function enqueue_waiting_message($data) { + $wm = new Irc_waiting_message(); + + $wm->data = serialize($data); + $wm->prioritise = $data['prioritise']; + $wm->attempts = 0; + $wm->created = common_sql_now(); + $result = $wm->insert(); + + if (!$result) { + common_log_db_error($wm, 'INSERT', __FILE__); + throw new ServerException('DB error inserting IRC waiting queue item'); + } + + return true; + } + + /** + * Send a message using the daemon + * + * @param $data Message data + * @return boolean true on success + */ + public function send_raw_message($data) { + $this->connect(); + if (!$this->conn) { + return false; + } + + if ($data['type'] != 'delayedmessage') { + if ($data['type'] != 'message') { + // Nick checking + $nickdata = $data['nickdata']; + $usernick = $nickdata['user']->nickname; + $screenname = $nickdata['screenname']; + + // Cancel any existing checks for this user + if (isset($this->regChecksLookup[$usernick])) { + unset($this->regChecks[$this->regChecksLookup[$usernick]]); + } + + $this->regChecks[$screenname] = $nickdata; + $this->regChecksLookup[$usernick] = $screenname; + } + + // If there is a backlog or we need to wait, queue the message + if ($this->messageWaiting || time() - $this->lastMessage < 1) { + $this->enqueue_waiting_message( + array( + 'type' => 'delayedmessage', + 'prioritise' => $data['prioritise'], + 'data' => $data['data'] + ) + ); + $this->messageWaiting = true; + return true; + } + } + + try { + $this->conn->send($data['data']['command'], $data['data']['args']); + } catch (Phergie_Driver_Exception $e) { + $this->connected = false; + $this->conn->reconnect(); + return false; + } + + $this->lastMessage = time(); + return true; + } + + /** + * Sends a ping + * + * @return void + */ + protected function sendPing() { + $this->lastPing = time(); + $this->conn->send('PING', $this->lastPing); + } +} diff --git a/plugins/LdapAuthentication/LdapAuthenticationPlugin.php b/plugins/LdapAuthentication/LdapAuthenticationPlugin.php index 0dfc4c63be..52d326287f 100644 --- a/plugins/LdapAuthentication/LdapAuthenticationPlugin.php +++ b/plugins/LdapAuthentication/LdapAuthenticationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews - * @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/locale/LdapAuthentication.pot b/plugins/LdapAuthentication/locale/LdapAuthentication.pot new file mode 100644 index 0000000000..8f09b1e51e --- /dev/null +++ b/plugins/LdapAuthentication/locale/LdapAuthentication.pot @@ -0,0 +1,23 @@ +# 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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: LdapAuthenticationPlugin.php:146 +msgid "" +"The LDAP Authentication plugin allows for StatusNet to handle authentication " +"through LDAP." +msgstr "" diff --git a/plugins/LdapAuthorization/LdapAuthorizationPlugin.php b/plugins/LdapAuthorization/LdapAuthorizationPlugin.php index 97103d158e..3842385cf9 100644 --- a/plugins/LdapAuthorization/LdapAuthorizationPlugin.php +++ b/plugins/LdapAuthorization/LdapAuthorizationPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews - * @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/locale/LdapAuthorization.pot b/plugins/LdapAuthorization/locale/LdapAuthorization.pot new file mode 100644 index 0000000000..8156f6146f --- /dev/null +++ b/plugins/LdapAuthorization/locale/LdapAuthorization.pot @@ -0,0 +1,23 @@ +# 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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: LdapAuthorizationPlugin.php:124 +msgid "" +"The LDAP Authorization plugin allows for StatusNet to handle authorization " +"through LDAP." +msgstr "" diff --git a/plugins/LdapCommon/LdapCommon.php b/plugins/LdapCommon/LdapCommon.php index ee436d8243..d583e30857 100644 --- a/plugins/LdapCommon/LdapCommon.php +++ b/plugins/LdapCommon/LdapCommon.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews - * @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/ */ @@ -126,11 +126,11 @@ class LdapCommon } throw new Exception('Could not connect to LDAP server: '.$err->getMessage()); } - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { $cacheObj = new MemcacheSchemaCache( array('c'=>$c, - 'cacheKey' => common_cache_key('ldap_schema:' . $config_id))); + 'cacheKey' => Cache::key('ldap_schema:' . $config_id))); $ldap->registerSchemaCache($cacheObj); } self::$ldap_connections[$config_id] = $ldap; diff --git a/plugins/LdapCommon/MemcacheSchemaCache.php b/plugins/LdapCommon/MemcacheSchemaCache.php index 6b91d17d64..4ee2e8e16a 100644 --- a/plugins/LdapCommon/MemcacheSchemaCache.php +++ b/plugins/LdapCommon/MemcacheSchemaCache.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews - * @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 cdff9f4e65..06ea49ff57 100644 --- a/plugins/LilUrl/LilUrlPlugin.php +++ b/plugins/LilUrl/LilUrlPlugin.php @@ -22,7 +22,7 @@ * @category Plugin * @package StatusNet * @author Craig Andrews - * @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/locale/LilUrl.pot b/plugins/LilUrl/locale/LilUrl.pot new file mode 100644 index 0000000000..47ed367277 --- /dev/null +++ b/plugins/LilUrl/locale/LilUrl.pot @@ -0,0 +1,22 @@ +# 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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: LilUrlPlugin.php:68 +#, php-format +msgid "Uses %1$s URL-shortener service." +msgstr "" diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index 868933fd43..e7240a6449 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 e73aa76e8e..5dab670e26 100644 --- a/plugins/Mapstraction/allmap.php +++ b/plugins/Mapstraction/allmap.php @@ -38,6 +38,7 @@ if (!defined('STATUSNET')) { * @package StatusNet * @author Evan Prodromou * @author Craig Andrews + * @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/locale/Mapstraction.pot b/plugins/Mapstraction/locale/Mapstraction.pot index 1dd5dbbcc9..764bf7b291 100644 --- a/plugins/Mapstraction/locale/Mapstraction.pot +++ b/plugins/Mapstraction/locale/Mapstraction.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,24 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: allmap.php:71 -#, php-format -msgid "%s friends map" -msgstr "" - -#: allmap.php:74 -#, php-format -msgid "%s friends map, page %d" -msgstr "" - -#: map.php:72 -msgid "No such user." -msgstr "" - -#: map.php:79 -msgid "User has no profile." -msgstr "" - #: MapstractionPlugin.php:182 msgid "Map" msgstr "" @@ -48,6 +30,24 @@ msgid "" "mapstraction.com/\">Mapstraction JavaScript library." msgstr "" +#: map.php:72 +msgid "No such user." +msgstr "" + +#: map.php:79 +msgid "User has no profile." +msgstr "" + +#: allmap.php:71 +#, php-format +msgid "%s friends map" +msgstr "" + +#: allmap.php:74 +#, php-format +msgid "%s friends map, page %d" +msgstr "" + #: usermap.php:71 #, php-format msgid "%s map, page %d" diff --git a/plugins/Mapstraction/map.php b/plugins/Mapstraction/map.php index b809c1b8e2..7dab8e10a9 100644 --- a/plugins/Mapstraction/map.php +++ b/plugins/Mapstraction/map.php @@ -38,6 +38,7 @@ if (!defined('STATUSNET')) { * @package StatusNet * @author Evan Prodromou * @author Craig Andrews + * @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 4b7a6c26b4..53cfe6bb0c 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('' + n['user']['screen_name'] + '' + ' ' + n['html'] + '
'+ n['created_at'] + ''); diff --git a/plugins/Mapstraction/usermap.php b/plugins/Mapstraction/usermap.php index ff47b6adaf..094334f605 100644 --- a/plugins/Mapstraction/usermap.php +++ b/plugins/Mapstraction/usermap.php @@ -38,6 +38,7 @@ if (!defined('STATUSNET')) { * @package StatusNet * @author Evan Prodromou * @author Craig Andrews + * @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 707e6db9aa..77b989b951 100644 --- a/plugins/MemcachedPlugin.php +++ b/plugins/MemcachedPlugin.php @@ -22,8 +22,10 @@ * * @category Cache * @package StatusNet - * @author Evan Prodromou , Craig Andrews + * @author Evan Prodromou + * @author Craig Andrews * @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 , Craig Andrews + * @author Evan Prodromou + * @author Craig Andrews * @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 5600d5fcc0..ec8c9e217c 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 69def60641..afe6edf5fd 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 + * @copyright 2009 Free Software Foundation, Inc http://www.fsf.org */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } @@ -118,9 +119,9 @@ class MinifyPlugin extends Plugin function onStartInlineScriptElement($action,&$code,&$type) { if($this->minifyInlineJs && $type=='text/javascript'){ - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cacheKey = common_cache_key(self::cacheKey . ':' . crc32($code)); + $cacheKey = Cache::key(self::cacheKey . ':' . crc32($code)); $out = $c->get($cacheKey); } if(empty($out)) { @@ -138,9 +139,9 @@ class MinifyPlugin extends Plugin function onStartStyleElement($action,&$code,&$type,&$media) { if($this->minifyInlineCss && $type=='text/css'){ - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cacheKey = common_cache_key(self::cacheKey . ':' . crc32($code)); + $cacheKey = Cache::key(self::cacheKey . ':' . crc32($code)); $out = $c->get($cacheKey); } if(empty($out)) { diff --git a/plugins/Minify/locale/Minify.pot b/plugins/Minify/locale/Minify.pot new file mode 100644 index 0000000000..6f7372d405 --- /dev/null +++ b/plugins/Minify/locale/Minify.pot @@ -0,0 +1,23 @@ +# 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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: MinifyPlugin.php:179 +msgid "" +"The Minify plugin minifies your CSS and Javascript, removing whitespace and " +"comments." +msgstr "" diff --git a/plugins/Minify/minify.php b/plugins/Minify/minify.php index 64727f5e7e..bac1df8e2d 100644 --- a/plugins/Minify/minify.php +++ b/plugins/Minify/minify.php @@ -74,9 +74,9 @@ class MinifyAction extends Action { parent::handle($args); - $c = common_memcache(); + $c = Cache::instance(); if (!empty($c)) { - $cacheKey = common_cache_key(MinifyPlugin::cacheKey . ':' . $this->file . '?v=' . empty($this->v)?'':$this->v); + $cacheKey = Cache::key(MinifyPlugin::cacheKey . ':' . $this->file . '?v=' . empty($this->v)?'':$this->v); $out = $c->get($cacheKey); } if(empty($out)) { diff --git a/plugins/MobileProfile/MobileProfilePlugin.php b/plugins/MobileProfile/MobileProfilePlugin.php index 1c61b4fe52..72a6a04fbd 100644 --- a/plugins/MobileProfile/MobileProfilePlugin.php +++ b/plugins/MobileProfile/MobileProfilePlugin.php @@ -138,6 +138,7 @@ class MobileProfilePlugin extends WAP20Plugin 'vodafone', 'wap1', 'wap2', + 'webos', 'windows ce' ); @@ -240,7 +241,7 @@ class MobileProfilePlugin extends WAP20Plugin return true; } - $action->cssLink('css/display.css'); + $action->primaryCssLink(); if (file_exists(Theme::file('css/mp-screen.css'))) { $action->cssLink('css/mp-screen.css', null, 'screen'); @@ -254,6 +255,10 @@ class MobileProfilePlugin extends WAP20Plugin $action->cssLink('plugins/MobileProfile/mp-handheld.css',null,'handheld'); } + // Allow other plugins to load their styles. + Event::handle('EndShowStatusNetStyles', array($action)); + Event::handle('EndShowLaconicaStyles', array($action)); + return false; } diff --git a/plugins/MobileProfile/locale/MobileProfile.pot b/plugins/MobileProfile/locale/MobileProfile.pot new file mode 100644 index 0000000000..9495e975b9 --- /dev/null +++ b/plugins/MobileProfile/locale/MobileProfile.pot @@ -0,0 +1,21 @@ +# 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 , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: MobileProfilePlugin.php:424 +msgid "XHTML MobileProfile output for supporting user agents." +msgstr "" diff --git a/plugins/MobileProfile/mp-screen.css b/plugins/MobileProfile/mp-screen.css index 0fc801612b..1f70b5612d 100644 --- a/plugins/MobileProfile/mp-screen.css +++ b/plugins/MobileProfile/mp-screen.css @@ -2,7 +2,7 @@ * * @package StatusNet * @author Sarven Capadisli - * @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/Msn/MsnPlugin.php b/plugins/Msn/MsnPlugin.php new file mode 100644 index 0000000000..187486eedc --- /dev/null +++ b/plugins/Msn/MsnPlugin.php @@ -0,0 +1,216 @@ +. + * + * @category IM + * @package StatusNet + * @author Luke Fitzgerald + * @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); +} +// We bundle the phpmsnclass library... +set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . '/extlib/phpmsnclass'); + +/** + * Plugin for MSN + * + * @category Plugin + * @package StatusNet + * @author Luke Fitzgerald + * @copyright 2010 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 + * @link http://status.net/ + */ + +class MsnPlugin extends ImPlugin { + public $user = null; + public $password = null; + public $nickname = null; + public $transport = 'msn'; + + /** + * Get the internationalized/translated display name of this IM service + * + * @return string Name of service + */ + public function getDisplayName() { + return _m('MSN'); + } + + /** + * Normalize a screenname for comparison + * + * @param string $screenname screenname to normalize + * @return string an equivalent screenname in normalized form + */ + public function normalize($screenname) { + $screenname = str_replace(" ","", $screenname); + return strtolower($screenname); + } + + /** + * Get the screenname of the daemon that sends and receives messages + * + * @return string Screenname + */ + public function daemonScreenname() { + return $this->user; + } + + /** + * Validate (ensure the validity of) a screenname + * + * @param string $screenname screenname to validate + * @return boolean + */ + public function validate($screenname) { + return Validate::email($screenname, common_config('email', 'check_domain')); + } + + /** + * 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. + */ + public function onAutoload($cls) { + $dir = dirname(__FILE__); + + switch ($cls) { + case 'MSN': + require_once(INSTALLDIR.'/plugins/Msn/extlib/phpmsnclass/msn.class.php'); + return false; + case 'MsnManager': + case 'Msn_waiting_message': + include_once $dir . '/'.strtolower($cls).'.php'; + return false; + default: + return true; + } + } + + /* + * Start manager on daemon start + * + * @return boolean + */ + public function onStartImDaemonIoManagers(&$classes) { + parent::onStartImDaemonIoManagers(&$classes); + $classes[] = new MsnManager($this); // handles sending/receiving + return true; + } + + /** + * Ensure the database table is present + * + */ + public function onCheckSchema() { + $schema = Schema::get(); + + // For storing messages while sessions become ready + $schema->ensureTable('msn_waiting_message', + array(new ColumnDef('id', 'integer', null, + false, 'PRI', null, null, true), + new ColumnDef('screenname', 'varchar', 255, false), + new ColumnDef('message', 'text', null, false), + new ColumnDef('created', 'datetime', null, false), + new ColumnDef('claimed', 'datetime'))); + + return true; + } + + /** + * Get a microid URI for the given screenname + * + * @param string $screenname + * @return string microid URI + */ + public function microiduri($screenname) { + return 'msnim:' . $screenname; + } + + /** + * Send a message to a given screenname + * + * @param string $screenname Screenname to send to + * @param string $body Text to send + * @return boolean success value + */ + public function sendMessage($screenname, $body) { + $this->enqueueOutgoingRaw(array('to' => $screenname, 'message' => $body)); + return true; + } + + /** + * Accept a queued input message. + * + * @param array $data Data + * @return true if processing completed, false if message should be reprocessed + */ + public function receiveRawMessage($data) { + $this->handleIncoming($data['sender'], $data['message']); + return true; + } + + /** + * Initialize plugin + * + * @return boolean + */ + public function initialize() { + if (!isset($this->user)) { + throw new Exception("Must specify a user"); + } + if (!isset($this->password)) { + throw new Exception("Must specify a password"); + } + if (!isset($this->nickname)) { + throw new Exception("Must specify a nickname"); + } + + return true; + } + + /** + * Get plugin information + * + * @param array $versions array to insert information into + * @return void + */ + public function onPluginVersion(&$versions) { + $versions[] = array( + 'name' => 'MSN', + 'version' => STATUSNET_VERSION, + 'author' => 'Luke Fitzgerald', + 'homepage' => 'http://status.net/wiki/Plugin:MSN', + 'rawdescription' => + _m('The MSN plugin allows users to send and receive notices over the MSN network.') + ); + return true; + } +} diff --git a/plugins/Msn/README b/plugins/Msn/README new file mode 100644 index 0000000000..fa7bc2fb22 --- /dev/null +++ b/plugins/Msn/README @@ -0,0 +1,32 @@ +The MSN plugin allows users to send and receive notices over the MSN network. + +Required PHP extensions: +curl pcre mhash mcrypt bcmath + +Installation +============ +add "addPlugin('msn', + array('setting'=>'value', 'setting2'=>'value2', ...);" +to the bottom of your config.php + +scripts/imdaemon.php included with StatusNet must be running. It will be started by +the plugin along with their other daemons when you run scripts/startdaemons.sh. +See the StatusNet README for more about queuing and daemons. + +Settings +======== +user*: username (screenname) to use when logging into MSN +password*: password for that user +nickname*: nickname for the bot + +* required +default values are in (parenthesis) + +Example +======= +addPlugin('msn', array( + 'user' => '...', + 'password' => '...', + 'nickname' => '...' +)); + diff --git a/plugins/Msn/extlib/phpmsnclass/msn.class.php b/plugins/Msn/extlib/phpmsnclass/msn.class.php new file mode 100644 index 0000000000..996c5571c2 --- /dev/null +++ b/plugins/Msn/extlib/phpmsnclass/msn.class.php @@ -0,0 +1,3210 @@ + + +Based on MSN class ver 2.0 by Tommy Wu, Ricky Su +License: GPL + +Documentation on the MSN protocol can be found at: http://msnpiki.msnfanatic.com/index.php/Main_Page + +This class uses MSNP15. + +In addition to PHP5, the additional php modules required are: +curl pcre mcrypt bcmath + +*/ + +class MSN { + const PROTOCOL = 'MSNP15'; + const PASSPORT_URL = 'https://login.live.com/RST.srf'; + const BUILDVER = '8.1.0178'; + const PROD_KEY = 'PK}_A_0N_K%O?A9S'; + const PROD_ID = 'PROD0114ES4Z%Q5W'; + const LOGIN_METHOD = 'SSO'; + + const OIM_SEND_URL = 'https://ows.messenger.msn.com/OimWS/oim.asmx'; + const OIM_SEND_SOAP = 'http://messenger.live.com/ws/2006/09/oim/Store2'; + + const OIM_MAILDATA_URL = 'https://rsi.hotmail.com/rsi/rsi.asmx'; + const OIM_MAILDATA_SOAP = 'http://www.hotmail.msn.com/ws/2004/09/oim/rsi/GetMetadata'; + const OIM_READ_URL = 'https://rsi.hotmail.com/rsi/rsi.asmx'; + const OIM_READ_SOAP = 'http://www.hotmail.msn.com/ws/2004/09/oim/rsi/GetMessage'; + const OIM_DEL_URL = 'https://rsi.hotmail.com/rsi/rsi.asmx'; + const OIM_DEL_SOAP = 'http://www.hotmail.msn.com/ws/2004/09/oim/rsi/DeleteMessages'; + + const MEMBERSHIP_URL = 'https://contacts.msn.com/abservice/SharingService.asmx'; + const MEMBERSHIP_SOAP = 'http://www.msn.com/webservices/AddressBook/FindMembership'; + + const ADDMEMBER_URL = 'https://contacts.msn.com/abservice/SharingService.asmx'; + const ADDMEMBER_SOAP = 'http://www.msn.com/webservices/AddressBook/AddMember'; + + const DELMEMBER_URL = 'https://contacts.msn.com/abservice/SharingService.asmx'; + const DELMEMBER_SOAP = 'http://www.msn.com/webservices/AddressBook/DeleteMember'; + + // the message length (include header) is limited (maybe since WLM 8.5 released) + // for WLM: 1664 bytes + // for YIM: 518 bytes + const MAX_MSN_MESSAGE_LEN = 1664; + const MAX_YAHOO_MESSAGE_LEN = 518; + + private $debug; + private $timeout; + + private $id; + private $ticket; + private $user = ''; + private $password = ''; + private $NSfp = false; + private $passport_policy = ''; + private $alias; + private $psm; + private $retry_wait; + private $update_pending; + private $PhotoStickerFile = false; + private $Emotions = false; + private $XFRReqTimeout = 60; + private $SBStreamTimeout = 2; + private $MsnObjArray = array(); + private $MsnObjMap = array(); + private $ABAuthHeader; + private $ABService; + private $Contacts; + + private $server = 'messenger.hotmail.com'; + private $port = 1863; + + private $clientid = ''; + + private $error = ''; + + private $authed = false; + + private $oim_try = 3; + + private $font_fn = 'Arial'; + private $font_co = '333333'; + private $font_ef = ''; + + // Begin added for StatusNet + + private $aContactList = array(); + private $aADL = array(); + + /** + * Holds session information indexed by screenname if + * session has no socket or socket if socket present + * + * @var array + */ + private $switchBoardSessions = array(); + + /** + * Holds sockets indexed by screenname + * + * @var array + */ + private $switchBoardSessionLookup = array(); + + /** + * Holds references to sessions waiting for XFR + * + * @var array + */ + private $waitingForXFR = array(); + + /** + * Event Handler Functions + */ + private $myEventHandlers = array(); + + // End added for StatusNet + + /** + * Constructor method + * + * @param array $Configs Array of configuration options + * 'user' - Username + * 'password' - Password + * 'alias' - Bot nickname + * 'psm' - Bot personal status message + * 'retry_wait' - Time to wait before trying to reconnect + * 'update_pending' - Whether to update pending contacts + * 'PhotoSticker' - Photo file to use (?) + * 'debug' - Enable/Disable debugging mode + * @param integer $timeout Connection timeout + * @param integer $client_id Client id (hexadecimal) + * @return MSN + */ + public function __construct ($Configs = array(), $timeout = 15, $client_id = 0x7000800C) { + $this->user = $Configs['user']; + $this->password = $Configs['password']; + $this->alias = isset($Configs['alias']) ? $Configs['alias'] : ''; + $this->psm = isset($Configs['psm']) ? $Configs['psm'] : ''; + $this->retry_wait = isset($Configs['retry_wait']) ? $Configs['retry_wait'] : 30; + $this->update_pending = isset($Configs['update_pending']) ? $Configs['update_pending'] : true; + $this->PhotoStickerFile=isset($Configs['PhotoSticker']) ? $Configs['PhotoSticker'] : false; + + if ($this->Emotions = isset($Configs['Emotions']) ? $Configs['Emotions']:false) { + foreach($this->Emotions as $EmotionFilePath) + $this->MsnObj($EmotionFilePath,$Type=2); + } + $this->debug = isset($Configs['debug']) ? $Configs['debug'] : false; + $this->timeout = $timeout; + + // Check support + if (!function_exists('curl_init')) throw new Exception("curl module not found!\n"); + if (!function_exists('preg_match')) throw new Exception("pcre module not found!\n"); + if (!function_exists('mcrypt_cbc')) throw new Exception("mcrypt module not found!\n"); + if (!function_exists('bcmod')) throw new Exception("bcmath module not found!\n"); + + /* + http://msnpiki.msnfanatic.com/index.php/Client_ID + Client ID for MSN: + normal MSN 8.1 clientid is: + 01110110 01001100 11000000 00101100 + = 0x764CC02C + + we just use following: + * 0x04: Your client can send/receive Ink (GIF format) + * 0x08: Your client can send/recieve Ink (ISF format) + * 0x8000: This means you support Winks receiving (If not set the official Client will warn with 'contact has an older client and is not capable of receiving Winks') + * 0x70000000: This is the value for MSNC7 (WL Msgr 8.1) + = 0x7000800C; + */ + $this->clientid = $client_id; + $this->ABService = new SoapClient(realpath(dirname(__FILE__)).'/soap/msnab_sharingservice.wsdl', array('trace' => 1)); + } + + /** + * Signon methods + */ + + /** + * Connect to the NS server + * + * @param String $user Username + * @param String $password Password + * @param String $redirect_server Redirect server + * @param Integer $redirect_port Redirect port + * @return Boolean Returns true if successful + */ + private function connect($user, $password, $redirect_server = '', $redirect_port = 1863) { + $this->id = 1; + if ($redirect_server === '') { + $this->NSfp = @fsockopen($this->server, $this->port, $errno, $errstr, $this->timeout); + if (!$this->NSfp) { + $this->error = "!!! Could not connect to $this->server:$this->port, error => $errno, $errstr"; + return false; + } + } + else { + $this->NSfp = @fsockopen($redirect_server, $redirect_port, $errno, $errstr, $this->timeout); + if (!$this->NSfp) { + $this->error = "!!! Could not connect to $redirect_server:$redirect_port, error => $errno, $errstr"; + return false; + } + } + $this->authed = false; + // MSNP9 + // NS: >> VER {id} MSNP9 CVR0 + // MSNP15 + // NS: >>> VER {id} MSNP15 CVR0 + $this->ns_writeln("VER $this->id ".self::PROTOCOL.' CVR0'); + + $start_tm = time(); + while (!self::socketcheck($this->NSfp)) { + $data = $this->ns_readln(); + // no data? + if ($data === false) { + // logout now + // NS: >>> OUT + $this->ns_writeln("OUT"); + @fclose($this->NSfp); + $this->error = 'Timeout, maybe protocol changed!'; + return false; + } + + $code = substr($data, 0, 3); + $start_tm = time(); + + switch ($code) { + case 'VER': + // MSNP9 + // NS: <<< VER {id} MSNP9 CVR0 + // NS: >>> CVR {id} 0x0409 winnt 5.1 i386 MSMSGS 6.0.0602 msmsgs {user} + // MSNP15 + // NS: <<< VER {id} MSNP15 CVR0 + // NS: >>> CVR {id} 0x0409 winnt 5.1 i386 MSMSGS 8.1.0178 msmsgs {user} + $this->ns_writeln("CVR $this->id 0x0409 winnt 5.1 i386 MSMSGS ".self::BUILDVER." msmsgs $user"); + break; + + case 'CVR': + // MSNP9 + // NS: <<< CVR {id} {ver_list} {download_serve} .... + // NS: >>> USR {id} TWN I {user} + // MSNP15 + // NS: <<< CVR {id} {ver_list} {download_serve} .... + // NS: >>> USR {id} SSO I {user} + $this->ns_writeln("USR $this->id ".self::LOGIN_METHOD." I $user"); + break; + + case 'USR': + // already login for passport site, finish the login process now. + // NS: <<< USR {id} OK {user} {verify} 0 + if ($this->authed) return true; + // max. 16 digits for password + if (strlen($password) > 16) + $password = substr($password, 0, 16); + + $this->user = $user; + $this->password = $password; + // NS: <<< USR {id} SSO S {policy} {nonce} + @list(/* USR */, /* id */, /* SSO */, /* S */, $policy, $nonce) = @explode(' ', $data); + + $this->passport_policy = $policy; + $aTickets = $this->get_passport_ticket(); + if (!$aTickets || !is_array($aTickets)) { + // logout now + // NS: >>> OUT + $this->ns_writeln("OUT"); + @fclose($this->NSfp); + $this->error = 'Passport authentication failed!'; + return false; + } + + $ticket = $aTickets['ticket']; + $secret = $aTickets['secret']; + $this->ticket = $aTickets; + $login_code = $this->generateLoginBLOB($secret, $nonce); + + // NS: >>> USR {id} SSO S {ticket} {login_code} + $this->ns_writeln("USR $this->id ".self::LOGIN_METHOD." S $ticket $login_code"); + $this->authed = true; + break; + + case 'XFR': + // main login server will redirect to anther NS after USR command + // MSNP9 + // NS: <<< XFR {id} NS {server} 0 {server} + // MSNP15 + // NS: <<< XFR {id} NS {server} U D + @list(/* XFR */, /* id */, $Type, $server) = @explode(' ', $data); + if ($Type!='NS') break; + @list($ip, $port) = @explode(':', $server); + // this connection will close after XFR + @fclose($this->NSfp); + + $this->NSfp = @fsockopen($ip, $port, $errno, $errstr, $this->timeout); + if (!$this->NSfp) { + $this->error = "Can't connect to $ip:$port, error => $errno, $errstr"; + return false; + } + + // MSNP9 + // NS: >> VER {id} MSNP9 CVR0 + // MSNP15 + // NS: >>> VER {id} MSNP15 CVR0 + $this->ns_writeln("VER $this->id ".self::PROTOCOL.' CVR0'); + break; + + case 'GCF': + // return some policy data after 'USR {id} SSO I {user}' command + // NS: <<< GCF 0 {size} + @list(/* GCF */, /* 0 */, $size) = @explode(' ', $data); + // we don't need the data, just read it and drop + if (is_numeric($size) && $size > 0) + $this->ns_readdata($size); + break; + + default: + // we'll quit if got any error + if (is_numeric($code)) { + // logout now + // NS: >>> OUT + $this->ns_writeln("OUT"); + @fclose($this->NSfp); + $this->error = "Error code: $code, please check the detail information from: http://msnpiki.msnfanatic.com/index.php/Reference:Error_List"; + return false; + } + // unknown response from server, just ignore it + break; + } + } + // never goto here + } + + /** + * Sign onto the NS server and retrieve the address book + * + * @return void + */ + public function signon() { + /* FIXME Don't implement the signon as a loop or we could hang + * the queue handler! */ + $this->debug_message('*** Trying to connect to MSN network'); + + // Remove any remaining switchboard sessions + $this->switchBoardSessions = array(); + $this->switchBoardSessionLookup = array(); + + while (true) { + // Connect + if (!$this->connect($this->user, $this->password)) { + $this->signonFailure("!!! Could not connect to server: $this->error"); + continue; + } + + // Update contacts + if ($this->UpdateContacts() === false) { + $this->signonFailure(''); + continue; + } + + // Get membership lists + if (($this->aContactList = $this->getMembershipList()) === false) { + $this->signonFailure('!!! Get membership list failed'); + continue; + } + + if ($this->update_pending) { + if (is_array($this->aContactList)) { + $pending = 'Pending'; + foreach ($this->aContactList as $u_domain => $aUserList) { + foreach ($aUserList as $u_name => $aNetworks) { + foreach ($aNetworks as $network => $aData) { + if (isset($aData[$pending])) { + // pending list + $cnt = 0; + foreach (array('Allow', 'Reverse') as $list) { + if (isset($aData[$list])) + $cnt++; + else { + if ($this->addMemberToList($u_name.'@'.$u_domain, $network, $list)) { + $this->aContactList[$u_domain][$u_name][$network][$list] = false; + $cnt++; + } + } + } + if ($cnt >= 2) { + $id = $aData[$pending]; + // we can delete it from pending now + if ($this->delMemberFromList($id, $u_name.'@'.$u_domain, $network, $pending)) + unset($this->aContactList[$u_domain][$u_name][$network][$pending]); + } + } + else { + // sync list + foreach (array('Allow', 'Reverse') as $list) { + if (!isset($aData[$list])) { + if ($this->addMemberToList($u_name.'@'.$u_domain, $network, $list)) + $this->aContactList[$u_domain][$u_name][$network][$list] = false; + } + } + } + } + } + } + } + } + $n = 0; + $sList = ''; + $len = 0; + if (is_array($this->aContactList)) { + foreach ($this->aContactList as $u_domain => $aUserList) { + $str = ''; + $len += strlen($str); + if ($len > 7400) { + $this->aADL[$n] = ''.$sList.''; + $n++; + $sList = ''; + $len = strlen($str); + } + $sList .= $str; + foreach ($aUserList as $u_name => $aNetworks) { + foreach ($aNetworks as $network => $status) { + $str = ''; + $len += strlen($str); + // max: 7500, but is 19, + // so we use 7475 + if ($len > 7475) { + $sList .= ''; + $this->aADL[$n] = ''.$sList.''; + $n++; + $sList = ''.$str; + $len = strlen($sList); + } + else + $sList .= $str; + } + } + $sList .= ''; + } + } + $this->aADL[$n] = ''.$sList.''; + // NS: >>> BLP {id} BL + $this->ns_writeln("BLP $this->id BL"); + foreach ($this->aADL as $str) { + $len = strlen($str); + // NS: >>> ADL {id} {size} + $this->ns_writeln("ADL $this->id $len"); + $this->ns_writedata($str); + } + // NS: >>> PRP {id} MFN name + if ($this->alias == '') $this->alias = $user; + $aliasname = rawurlencode($this->alias); + $this->ns_writeln("PRP $this->id MFN $aliasname"); + //設定個人大頭貼 + //$MsnObj=$this->PhotoStckObj(); + // NS: >>> CHG {id} {status} {clientid} {msnobj} + $this->ns_writeln("CHG $this->id NLN $this->clientid"); + if ($this->PhotoStickerFile !== false) + $this->ns_writeln("CHG $this->id NLN $this->clientid ".rawurlencode($this->MsnObj($this->PhotoStickerFile))); + // NS: >>> UUX {id} length + $str = ''.htmlspecialchars($this->psm).''; + $len = strlen($str); + $this->ns_writeln("UUX $this->id $len"); + $this->ns_writedata($str); + if (!self::socketcheck($this->NSfp)) { + $this->debug_message('*** Connected, waiting for commands'); + break; + } else { + $this->NSRetryWait($this->retry_wait); + } + } + } + + /** + * Called if there is an error during signon + * + * @param string $message Error message to log + * @return void + */ + private function signonFailure($message) { + if(!empty($message)) { + $this->debug_message($message); + } + $this->callHandler('ConnectFailed', $message); + $this->NSRetryWait($this->retry_wait); + } + + /** + * Log out and close the NS connection + * + * @return void + */ + private function nsLogout() { + if (is_resource($this->NSfp) && !feof($this->NSfp)) { + // logout now + // NS: >>> OUT + $this->ns_writeln("OUT"); + fclose($this->NSfp); + $this->NSfp = false; + $this->debug_message("*** Logged out"); + } + } + + /** + * NS and SB command handling methods + */ + + /** + * Read and handle incoming command from NS + * + * @return void + */ + private function nsReceive() { + // Sign in again if not signed in or socket failed + if (!is_resource($this->NSfp) || self::socketcheck($this->NSfp)) { + $this->callHandler('Reconnect'); + $this->NSRetryWait($this->retry_wait); + $this->signon(); + return; + } + + $data = $this->ns_readln(); + if ($data === false) { + // There was no data / an error when reading from the socket so reconnect + $this->callHandler('Reconnect'); + $this->NSRetryWait($this->retry_wait); + $this->signon(); + return; + } + + switch (substr($data, 0, 3)) { + case 'SBS': + // after 'USR {id} OK {user} {verify} 0' response, the server will send SBS and profile to us + // NS: <<< SBS 0 null + break; + + case 'RFS': + // FIXME: + // NS: <<< RFS ??? + // refresh ADL, so we re-send it again + if (is_array($this->aADL)) { + foreach ($this->aADL as $str) { + $len = strlen($str); + // NS: >>> ADL {id} {size} + $this->ns_writeln("ADL $this->id $len"); + $this->ns_writedata($str); + } + } + break; + + case 'LST': + // NS: <<< LST {email} {alias} 11 0 + @list(/* LST */, $email) = @explode(' ', $data); + @list($u_name, $u_domain) = @explode('@', $email); + if (!isset($this->aContactList[$u_domain][$u_name][1])) { + $this->aContactList[$u_domain][$u_name][1]['Allow'] = 'Allow'; + $this->debug_message("*** Added to contact list: $u_name@$u_domain"); + } + break; + + case 'ADL': + // randomly, we get ADL command, someone add us to their contact list for MSNP15 + // NS: <<< ADL 0 {size} + @list(/* ADL */, /* 0 */, $size) = @explode(' ', $data); + if (is_numeric($size) && $size > 0) { + $data = $this->ns_readdata($size); + preg_match('##', $data, $matches); + if (is_array($matches) && count($matches) > 0) { + $u_domain = $matches[1]; + $u_name = $matches[2]; + $network = $matches[4]; + if (isset($this->aContactList[$u_domain][$u_name][$network])) + $this->debug_message("*** Someone (network: $network) added us to their list (but already in our list): $u_name@$u_domain"); + else { + $re_login = false; + $cnt = 0; + foreach (array('Allow', 'Reverse') as $list) { + if (!$this->addMemberToList($u_name.'@'.$u_domain, $network, $list)) { + if ($re_login) { + $this->debug_message("*** Could not add $u_name@$u_domain (network: $network) to $list list"); + continue; + } + $aTickets = $this->get_passport_ticket(); + if (!$aTickets || !is_array($aTickets)) { + // failed to login? ignore it + $this->debug_message("*** Could not re-login, something wrong here"); + $this->debug_message("*** Could not add $u_name@$u_domain (network: $network) to $list list"); + continue; + } + $re_login = true; + $this->ticket = $aTickets; + $this->debug_message("**** Got new ticket, trying again"); + if (!$this->addMemberToList($u_name.'@'.$u_domain, $network, $list)) { + $this->debug_message("*** Could not add $u_name@$u_domain (network: $network) to $list list"); + continue; + } + } + $this->aContactList[$u_domain][$u_name][$network][$list] = false; + $cnt++; + } + $this->debug_message("*** Someone (network: $network) added us to their list: $u_name@$u_domain"); + } + $str = ''; + $len = strlen($str); + + $this->callHandler('AddedToList', array('screenname' => $u_name.'@'.$u_domain, 'network' => $network)); + } + else + $this->debug_message("*** Someone added us to their list: $data"); + } + break; + + case 'RML': + // randomly, we get RML command, someome remove us to their contact list for MSNP15 + // NS: <<< RML 0 {size} + @list(/* RML */, /* 0 */, $size) = @explode(' ', $data); + if (is_numeric($size) && $size > 0) { + $data = $this->ns_readdata($size); + preg_match('##', $data, $matches); + if (is_array($matches) && count($matches) > 0) { + $u_domain = $matches[1]; + $u_name = $matches[2]; + $network = $matches[4]; + if (isset($this->aContactList[$u_domain][$u_name][$network])) { + $aData = $this->aContactList[$u_domain][$u_name][$network]; + + foreach ($aData as $list => $id) + $this->delMemberFromList($id, $u_name.'@'.$u_domain, $network, $list); + + unset($this->aContactList[$u_domain][$u_name][$network]); + $this->debug_message("*** Someone (network: $network) removed us from their list: $u_name@$u_domain"); + } + else + $this->debug_message("*** Someone (network: $network) removed us from their list (but not in our list): $u_name@$u_domain"); + + $this->callHandler('RemovedFromList', array('screenname' => $u_name.'@'.$u_domain, 'network' => $network)); + } + else + $this->debug_message("*** Someone removed us from their list: $data"); + } + break; + + case 'MSG': + // randomly, we get MSG notification from server + // NS: <<< MSG Hotmail Hotmail {size} + @list(/* MSG */, /* Hotmail */, /* Hotmail */, $size) = @explode(' ', $data); + if (is_numeric($size) && $size > 0) { + $data = $this->ns_readdata($size); + $aLines = @explode("\n", $data); + $header = true; + $ignore = false; + $maildata = ''; + foreach ($aLines as $line) { + $line = rtrim($line); + if ($header) { + if ($line === '') { + $header = false; + continue; + } + if (strncasecmp($line, 'Content-Type:', 13) == 0) { + if (strpos($line, 'text/x-msmsgsinitialmdatanotification') === false && strpos($line, 'text/x-msmsgsoimnotification') === false) { + // we just need text/x-msmsgsinitialmdatanotification + // or text/x-msmsgsoimnotification + $ignore = true; + break; + } + } + continue; + } + if (strncasecmp($line, 'Mail-Data:', 10) == 0) { + $maildata = trim(substr($line, 10)); + break; + } + } + if ($ignore) { + $this->debug_message("*** Ignoring MSG for: $line"); + break; + } + if ($maildata == '') { + $this->debug_message("*** Ignoring MSG not for OIM"); + break; + } + $re_login = false; + if (strcasecmp($maildata, 'too-large') == 0) { + $this->debug_message("*** Large mail-data, need to get the data via SOAP"); + $maildata = $this->getOIM_maildata(); + if ($maildata === false) { + $this->debug_message("*** Could not get mail-data via SOAP"); + + // maybe we need to re-login again + $aTickets = $this->get_passport_ticket(); + if (!$aTickets || !is_array($aTickets)) { + // failed to login? ignore it + $this->debug_message("*** Could not re-login, something wrong here, ignoring this OIM"); + break; + } + $re_login = true; + $this->ticket = $aTickets; + $this->debug_message("*** Got new ticket, trying again"); + $maildata = $this->getOIM_maildata(); + if ($maildata === false) { + $this->debug_message("*** Could not get mail-data via SOAP, and re-login already attempted, ignoring this OIM"); + break; + } + } + } + // could be a lots of ..., so we can't use preg_match here + $p = $maildata; + $aOIMs = array(); + while (1) { + $start = strpos($p, ''); + $end = strpos($p, ''); + if ($start === false || $end === false || $start > $end) break; + $end += 4; + $sOIM = substr($p, $start, $end - $start); + $aOIMs[] = $sOIM; + $p = substr($p, $end); + } + if (count($aOIMs) == 0) { + $this->debug_message("*** Ignoring empty OIM"); + break; + } + foreach ($aOIMs as $maildata) { + // T: 11 for MSN, 13 for Yahoo + // S: 6 for MSN, 7 for Yahoo + // RT: the datetime received by server + // RS: already read or not + // SZ: size of message + // E: sender + // I: msgid + // F: always 00000000-0000-0000-0000-000000000009 + // N: sender alias + preg_match('#(.*)#', $maildata, $matches); + if (count($matches) == 0) { + $this->debug_message("*** Ignoring OIM maildata without type"); + continue; + } + $oim_type = $matches[1]; + if ($oim_type = 13) + $network = 32; + else + $network = 1; + preg_match('#(.*)#', $maildata, $matches); + if (count($matches) == 0) { + $this->debug_message("*** Ignoring OIM maildata without sender"); + continue; + } + $oim_sender = $matches[1]; + preg_match('#(.*)#', $maildata, $matches); + if (count($matches) == 0) { + $this->debug_message("*** Ignoring OIM maildata without msgid"); + continue; + } + $oim_msgid = $matches[1]; + preg_match('#(.*)#', $maildata, $matches); + $oim_size = (count($matches) == 0) ? 0 : $matches[1]; + preg_match('#(.*)#', $maildata, $matches); + $oim_time = (count($matches) == 0) ? 0 : $matches[1]; + $this->debug_message("*** OIM received from $oim_sender, Time: $oim_time, MSGID: $oim_msgid, size: $oim_size"); + $sMsg = $this->getOIM_message($oim_msgid); + if ($sMsg === false) { + $this->debug_message("*** Could not get OIM, msgid = $oim_msgid"); + if ($re_login) { + $this->debug_message("*** Could not get OIM via SOAP, and re-login already attempted, ignoring this OIM"); + continue; + } + $aTickets = $this->get_passport_ticket(); + if (!$aTickets || !is_array($aTickets)) { + // failed to login? ignore it + $this->debug_message("*** Could not re-login, something wrong here, ignoring this OIM"); + continue; + } + $re_login = true; + $this->ticket = $aTickets; + $this->debug_message("*** get new ticket, try it again"); + $sMsg = $this->getOIM_message($oim_msgid); + if ($sMsg === false) { + $this->debug_message("*** Could not get OIM via SOAP, and re-login already attempted, ignoring this OIM"); + continue; + } + } + $this->debug_message("*** MSG (Offline) from $oim_sender (network: $network): $sMsg"); + $this->callHandler('IMin', array('sender' => $oim_sender, 'message' => $sMsg, 'network' => $network, 'offline' => true)); + } + } + break; + + case 'UBM': + // randomly, we get UBM, this is the message from other network, like Yahoo! + // NS: <<< UBM {email} $network $type {size} + @list(/* UBM */, $from_email, $network, $type, $size) = @explode(' ', $data); + if (is_numeric($size) && $size > 0) { + $data = $this->ns_readdata($size); + $aLines = @explode("\n", $data); + $header = true; + $ignore = false; + $sMsg = ''; + foreach ($aLines as $line) { + $line = rtrim($line); + if ($header) { + if ($line === '') { + $header = false; + continue; + } + if (strncasecmp($line, 'TypingUser:', 11) == 0) { + $ignore = true; + break; + } + continue; + } + $aSubLines = @explode("\r", $line); + foreach ($aSubLines as $str) { + if ($sMsg !== '') + $sMsg .= "\n"; + $sMsg .= $str; + } + } + if ($ignore) { + $this->debug_message("*** Ignoring message from $from_email: $line"); + break; + } + $this->debug_message("*** MSG from $from_email (network: $network): $sMsg"); + $this->callHandler('IMin', array('sender' => $from_email, 'message' => $sMsg, 'network' => $network, 'offline' => false)); + } + break; + + case 'UBX': + // randomly, we get UBX notification from server + // NS: <<< UBX email {network} {size} + @list(/* UBX */, /* email */, /* network */, $size) = @explode(' ', $data); + // we don't need the notification data, so just ignore it + if (is_numeric($size) && $size > 0) + $this->ns_readdata($size); + break; + + case 'CHL': + // randomly, we'll get challenge from server + // NS: <<< CHL 0 {code} + @list(/* CHL */, /* 0 */, $chl_code) = @explode(' ', $data); + $fingerprint = $this->getChallenge($chl_code); + // NS: >>> QRY {id} {product_id} 32 + // NS: >>> fingerprint + $this->ns_writeln("QRY $this->id ".self::PROD_ID.' 32'); + $this->ns_writedata($fingerprint); + $this->ns_writeln("CHG $this->id NLN $this->clientid"); + if ($this->PhotoStickerFile !== false) + $this->ns_writeln("CHG $this->id NLN $this->clientid ".rawurlencode($this->MsnObj($this->PhotoStickerFile))); + break; + case 'CHG': + // NS: <<< CHG {id} {status} {code} + // ignore it + // change our status to online first + break; + + case 'XFR': + // sometimes, NS will redirect to another NS + // MSNP9 + // NS: <<< XFR {id} NS {server} 0 {server} + // MSNP15 + // NS: <<< XFR {id} NS {server} U D + // for normal switchboard XFR + // NS: <<< XFR {id} SB {server} CKI {cki} U messenger.msn.com 0 + @list(/* XFR */, /* {id} */, $server_type, $server, /* CKI */, $cki_code) = @explode(' ', $data); + @list($ip, $port) = @explode(':', $server); + if ($server_type != 'SB') { + // maybe exit? + // this connection will close after XFR + $this->nsLogout(); + continue; + } + + $this->debug_message("NS: <<< XFR SB"); + $session = array_shift($this->waitingForXFR); + $this->connectToSBSession('Active', $ip, $port, $session['to'], array('cki' => $cki_code)); + break; + case 'QNG': + // NS: <<< QNG {time} + @list(/* QNG */, $ping_wait) = @explode(' ', $data); + $this->callHandler('Pong', $ping_wait); + break; + + case 'RNG': + if ($this->PhotoStickerFile !== false) + $this->ns_writeln("CHG $this->id NLN $this->clientid ".rawurlencode($this->MsnObj($this->PhotoStickerFile))); + else + $this->ns_writeln("CHG $this->id NLN $this->clientid"); + // someone is trying to talk to us + // NS: <<< RNG {session_id} {server} {auth_type} {ticket} {email} {alias} U {client} 0 + $this->debug_message("NS: <<< RNG $data"); + @list(/* RNG */, $sid, $server, /* auth_type */, $ticket, $email, $name) = @explode(' ', $data); + @list($sb_ip, $sb_port) = @explode(':', $server); + $this->debug_message("*** RING from $email, $sb_ip:$sb_port"); + $this->addContact($email, 1, $email, true); + $this->connectToSBSession('Passive', $sb_ip, $sb_port, $email, array('sid' => $sid, 'ticket' => $ticket)); + break; + + case 'NLN': + // NS: <<< NLN {status} {email} {networkid} {nickname} {clientid} {dpobj} + @list(/* NLN */, $status, $email, $network, $nickname) = @explode(' ', $data); + $this->callHandler('StatusChange', array('screenname' => $email, 'status' => $status, 'network' => $network, 'nickname' => $nickname)); + break; + + case 'OUT': + // force logout from NS + // NS: <<< OUT xxx + $this->debug_message("*** LOGOUT from NS"); + return $this->nsLogout(); + + default: + $code = substr($data,0,3); + if (is_numeric($code)) { + $this->error = "Error code: $code, please check the detail information from: http://msnpiki.msnfanatic.com/index.php/Reference:Error_List"; + $this->debug_message("*** NS: $this->error"); + + return $this->nsLogout(); + } + break; + } + } + + /** + * Read and handle incoming command/message from + * a switchboard session socket + */ + private function sbReceive($socket) { + $intsocket = (int) $socket; + $session = &$this->switchBoardSessions[$intsocket]; + + if (feof($socket)) { + // Unset session lookup value + unset($this->switchBoardSessionLookup[$session['to']]); + + // Unset session itself + unset($this->switchBoardSessions[$intsocket]); + return; + } + + $id = &$session['id']; + + $data = $this->sb_readln($socket); + $code = substr($data, 0, 3); + switch($code) { + case 'IRO': + // SB: <<< IRO {id} {rooster} {roostercount} {email} {alias} {clientid} + @list(/* IRO */, /* id */, $cur_num, $total, $email, $alias, $clientid) = @explode(' ', $data); + $this->debug_message("*** $email joined session"); + if ($email == $session['to']) { + $session['joined'] = true; + $this->callHandler('SessionReady', array('to' => $email)); + } + break; + case 'BYE': + $this->debug_message("*** Quit for BYE"); + $this->endSBSession($socket); + break; + case 'USR': + // SB: <<< USR {id} OK {user} {alias} + // we don't need the data, just ignore it + // request user to join this switchboard + // SB: >>> CAL {id} {user} + $this->sb_writeln($socket, $id, "CAL $id ".$session['to']); + break; + case 'CAL': + // SB: <<< CAL {id} RINGING {?} + // we don't need this, just ignore, and wait for other response + $session['id']++; + break; + case 'JOI': + // SB: <<< JOI {user} {alias} {clientid?} + // someone join us + @list(/* JOI */, $email) = @explode(' ', $data); + if ($email == $session['to']) { + $session['joined'] = true; + $this->callHandler('SessionReady', array('to' => $email)); + } + break; + case 'MSG': + // SB: <<< MSG {email} {alias} {len} + @list(/* MSG */, $from_email, /* alias */, $len) = @explode(' ', $data); + $len = trim($len); + $data = $this->sb_readdata($socket, $len); + $aLines = @explode("\n", $data); + $header = true; + $ignore = false; + $is_p2p = false; + $sMsg = ''; + foreach ($aLines as $line) { + $line = rtrim($line); + if ($header) { + if ($line === '') { + $header = false; + continue; + } + if (strncasecmp($line, 'TypingUser:', 11) == 0) { + // typing notification, just ignore + $ignore = true; + break; + } + if (strncasecmp($line, 'Chunk:', 6) == 0) { + // we don't handle any split message, just ignore + $ignore = true; + break; + } + if (strncasecmp($line, 'Content-Type: application/x-msnmsgrp2p', 38) == 0) { + // p2p message, ignore it, but we need to send acknowledgement for it... + $is_p2p = true; + $p = strstr($data, "\n\n"); + $sMsg = ''; + if ($p === false) { + $p = strstr($data, "\r\n\r\n"); + if ($p !== false) + $sMsg = substr($p, 4); + } + else + $sMsg = substr($p, 2); + break; + } + if (strncasecmp($line, 'Content-Type: application/x-', 28) == 0) { + // ignore all application/x-... message + // for example: + // application/x-ms-ink => ink message + $ignore = true; + break; + } + if (strncasecmp($line, 'Content-Type: text/x-', 21) == 0) { + // ignore all text/x-... message + // for example: + // text/x-msnmsgr-datacast => nudge, voice clip.... + // text/x-mms-animemoticon => customized animemotion word + $ignore = true; + break; + } + continue; + } + if ($sMsg !== '') + $sMsg .= "\n"; + $sMsg .= $line; + } + if ($ignore) { + $this->debug_message("*** Ignoring SB data from $from_email: $line"); + break; + } + if ($is_p2p) { + // we will ignore any p2p message after sending acknowledgement + $ignore = true; + $len = strlen($sMsg); + $this->debug_message("*** p2p message from $from_email, size $len"); + // header = 48 bytes + // content >= 0 bytes + // footer = 4 bytes + // so it need to >= 52 bytes + /*if ($len < 52) { + $this->debug_message("*** p2p: size error, less than 52!"); + break; + }*/ + $aDwords = @unpack("V12dword", $sMsg); + if (!is_array($aDwords)) { + $this->debug_message("*** p2p: header unpack error!"); + break; + } + $this->debug_message("*** p2p: dump received message:\n".$this->dump_binary($sMsg)); + $hdr_SessionID = $aDwords['dword1']; + $hdr_Identifier = $aDwords['dword2']; + $hdr_DataOffsetLow = $aDwords['dword3']; + $hdr_DataOffsetHigh = $aDwords['dword4']; + $hdr_TotalDataSizeLow = $aDwords['dword5']; + $hdr_TotalDataSizeHigh = $aDwords['dword6']; + $hdr_MessageLength = $aDwords['dword7']; + $hdr_Flag = $aDwords['dword8']; + $hdr_AckID = $aDwords['dword9']; + $hdr_AckUID = $aDwords['dword10']; + $hdr_AckSizeLow = $aDwords['dword11']; + $hdr_AckSizeHigh = $aDwords['dword12']; + $this->debug_message("*** p2p: header SessionID = $hdr_SessionID"); + $this->debug_message("*** p2p: header Inentifier = $hdr_Identifier"); + $this->debug_message("*** p2p: header Data Offset Low = $hdr_DataOffsetLow"); + $this->debug_message("*** p2p: header Data Offset High = $hdr_DataOffsetHigh"); + $this->debug_message("*** p2p: header Total Data Size Low = $hdr_TotalDataSizeLow"); + $this->debug_message("*** p2p: header Total Data Size High = $hdr_TotalDataSizeHigh"); + $this->debug_message("*** p2p: header MessageLength = $hdr_MessageLength"); + $this->debug_message("*** p2p: header Flag = $hdr_Flag"); + $this->debug_message("*** p2p: header AckID = $hdr_AckID"); + $this->debug_message("*** p2p: header AckUID = $hdr_AckUID"); + $this->debug_message("*** p2p: header AckSize Low = $hdr_AckSizeLow"); + $this->debug_message("*** p2p: header AckSize High = $hdr_AckSizeHigh"); + if ($hdr_Flag == 2) { + //This is an ACK from SB ignore.... + $this->debug_message("*** p2p: //This is an ACK from SB ignore....:\n"); + break; + } + $MsgBody = $this->linetoArray(substr($sMsg, 48, -4)); + $this->debug_message("*** p2p: body".print_r($MsgBody, true)); + if (($MsgBody['EUF-GUID']=='{A4268EEC-FEC5-49E5-95C3-F126696BDBF6}')&&($PictureFilePath=$this->GetPictureFilePath($MsgBody['Context']))) { + while (true) { + if ($this->sb_readln($socket) === false) break; + } + $this->debug_message("*** p2p: Inv hdr:\n".$this->dump_binary(substr($sMsg, 0, 48))); + preg_match('/{([0-9A-F\-]*)}/i', $MsgBody['Via'], $Matches); + $BranchGUID = $Matches[1]; + //it's an invite to send a display picture. + $new_id = ~$hdr_Identifier; + $hdr = pack( + "LLLLLLLLLLLL", $hdr_SessionID, + $new_id, + 0, 0, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh, + 0, + 2, + $hdr_Identifier, + $hdr_AckID, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh + ); + $footer = pack("L", 0); + $message = "MIME-Version: 1.0\r\nContent-Type: application/x-msnmsgrp2p\r\nP2P-Dest: $from_email\r\n\r\n$hdr$footer"; + $len = strlen($message); + $this->sb_writeln($socket, $id, "MSG $id D $len"); + $this->sb_writedata($socket, $message); + $this->debug_message("*** p2p: send display picture acknowledgement for $hdr_SessionID"); + $this->debug_message("*** p2p: Invite ACK message:\n".$this->dump_binary($message)); + $this->sb_readln($socket); // Read ACK; + $this->debug_message("*** p2p: Invite ACK Hdr:\n".$this->dump_binary($hdr)); + $new_id -= 3; + //Send 200 OK message + $MessageContent="SessionID: ".$MsgBody['SessionID']."\r\n\r\n".pack("C", 0); + $MessagePayload= + "MSNSLP/1.0 200 OK\r\n". + "To: \r\n". + "From: user.">\r\n". + "Via: ".$MsgBody['Via']."\r\n". + "CSeq: ".($MsgBody['CSeq']+1)."\r\n". + "Call-ID: ".$MsgBody['Call-ID']."\r\n". + "Max-Forwards: 0\r\n". + "Content-Type: application/x-msnmsgr-sessionreqbody\r\n". + "Content-Length: ".strlen($MessageContent)."\r\n\r\n". + $MessageContent; + $hdr_TotalDataSizeLow=strlen($MessagePayload); + $hdr_TotalDataSizeHigh=0; + $hdr = pack( + "LLLLLLLLLLLL", $hdr_SessionID, + $new_id, + 0, 0, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh, + strlen($MessagePayload), + 0, + rand(), + 0, + 0, 0 + ); + + $message = + "MIME-Version: 1.0\r\n". + "Content-Type: application/x-msnmsgrp2p\r\n". + "P2P-Dest: $from_email\r\n\r\n$hdr$MessagePayload$footer"; + $this->sb_writeln($socket, $id, "MSG $id D ".strlen($message)); + $this->sb_writedata($socket, $message); + $this->debug_message("*** p2p: dump 200 ok message:\n".$this->dump_binary($message)); + $this->sb_readln($socket); // Read ACK; + + $this->debug_message("*** p2p: 200 ok:\n".$this->dump_binary($hdr)); + // send data preparation message + // send 4 null bytes as data + $hdr_TotalDataSizeLow = 4; + $hdr_TotalDataSizeHigh = 0 ; + $new_id++; + $hdr = pack( + "LLLLLLLLLLLL", + $MsgBody['SessionID'], + $new_id, + 0, 0, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh, + $hdr_TotalDataSizeLow, + 0, + rand(), + 0, + 0, 0 + ); + $message = + "MIME-Version: 1.0\r\n". + "Content-Type: application/x-msnmsgrp2p\r\n". + "P2P-Dest: $from_email\r\n\r\n$hdr".pack('L', 0)."$footer"; + $this->sb_writeln($socket, $id, "MSG $id D ".strlen($message)); + $this->sb_writedata($socket, $message); + $this->debug_message("*** p2p: dump send Data preparation message:\n".$this->dump_binary($message)); + $this->debug_message("*** p2p: Data Prepare Hdr:\n".$this->dump_binary($hdr)); + $this->sb_readln($socket); // Read ACK; + + // send Data Content.. + $footer=pack('N',1); + $new_id++; + $FileSize=filesize($PictureFilePath); + if ($hTitle=fopen($PictureFilePath,'rb')) { + $Offset = 0; + //$new_id++; + while (!feof($hTitle)) { + $FileContent = fread($hTitle, 1024); + $FileContentSize = strlen($FileContent); + $hdr = pack( + "LLLLLLLLLLLL", + $MsgBody['SessionID'], + $new_id, + $Offset, 0, + $FileSize, 0, + $FileContentSize, + 0x20, + rand(), + 0, + 0, 0 + ); + $message = + "MIME-Version: 1.0\r\n". + "Content-Type: application/x-msnmsgrp2p\r\n". + "P2P-Dest: $from_email\r\n\r\n$hdr$FileContent$footer"; + $this->sb_writeln($socket, $id, "MSG $id D ".strlen($message)); + $this->sb_writedata($socket, $message); + $this->debug_message("*** p2p: dump send Data Content message $Offset / $FileSize :\n".$this->dump_binary($message)); + $this->debug_message("*** p2p: Data Content Hdr:\n".$this->dump_binary($hdr)); + //$this->SB_readln($socket);//Read ACK; + $Offset += $FileContentSize; + } + } + //Send Bye + /* + $MessageContent="\r\n".pack("C", 0); + $MessagePayload= + "BYE MSNMSGR:MSNSLP/1.0\r\n". + "To: \r\n". + "From: user.">\r\n". + "Via: MSNSLP/1.0/TLP ;branch={".$BranchGUID."}\r\n". + "CSeq: 0\r\n". + "Call-ID: ".$MsgBody['Call-ID']."\r\n". + "Max-Forwards: 0\r\n". + "Content-Type: application/x-msnmsgr-sessionclosebody\r\n". + "Content-Length: ".strlen($MessageContent)."\r\n\r\n".$MessageContent; + $footer=pack('N',0); + $hdr_TotalDataSizeLow=strlen($MessagePayload); + $hdr_TotalDataSizeHigh=0; + $new_id++; + $hdr = pack("LLLLLLLLLLLL", + 0, + $new_id, + 0, 0, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh, + 0, + 0, + rand(), + 0, + 0,0); + $message = + "MIME-Version: 1.0\r\n". + "Content-Type: application/x-msnmsgrp2p\r\n". + "P2P-Dest: $from_email\r\n\r\n$hdr$MessagePayload$footer"; + $this->sb_writeln($socket, $id, "MSG $id D ".strlen($message)); + $id++; + $this->sb_writedata($socket, $message); + $this->debug_message("*** p2p: dump send BYE message :\n".$this->dump_binary($message)); + */ + break; + } + //TODO: + //if ($hdr_Flag == 2) { + // just send ACK... + // $this->sb_writeln($socket, $id, "ACK $id"); + // break; + //} + if ($hdr_SessionID == 4) { + // ignore? + $this->debug_message("*** p2p: ignore flag 4"); + break; + } + $finished = false; + if ($hdr_TotalDataSizeHigh == 0) { + // only 32 bites size + if (($hdr_MessageLength + $hdr_DataOffsetLow) == $hdr_TotalDataSizeLow) + $finished = true; + } + else { + // we won't accept any file transfer + // so I think we won't get any message size need to use 64 bits + // 64 bits size here, can't count directly... + $totalsize = base_convert(sprintf("%X%08X", $hdr_TotalDataSizeHigh, $hdr_TotalDataSizeLow), 16, 10); + $dataoffset = base_convert(sprintf("%X%08X", $hdr_DataOffsetHigh, $hdr_DataOffsetLow), 16, 10); + $messagelength = base_convert(sprintf("%X", $hdr_MessageLength), 16, 10); + $now_size = bcadd($dataoffset, $messagelength); + if (bccomp($now_size, $totalsize) >= 0) + $finished = true; + } + if (!$finished) { + // ignore not finished split packet + $this->debug_message("*** p2p: ignore split packet, not finished"); + break; + } + //$new_id = ~$hdr_Identifier; + /* + $new_id++; + $hdr = pack("LLLLLLLLLLLL", $hdr_SessionID, + $new_id, + 0, 0, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh, + 0, + 2, + $hdr_Identifier, + $hdr_AckID, + $hdr_TotalDataSizeLow, $hdr_TotalDataSizeHigh); + $footer = pack("L", 0); + $message = "MIME-Version: 1.0\r\nContent-Type: application/x-msnmsgrp2p\r\nP2P-Dest: $from_email\r\n\r\n$hdr$footer"; + $len = strlen($message); + $this->sb_writeln($socket, $id, "MSG $id D $len"); + $id++; + $this->sb_writedata($socket, $message); + $this->debug_message("*** p2p: send acknowledgement for $hdr_SessionID"); + $this->debug_message("*** p2p: dump sent message:\n".$this->dump_binary($hdr.$footer)); + */ + break; + } + $this->debug_message("*** MSG from $from_email: $sMsg"); + $this->callHandler('IMin', array('sender' => $from_email, 'message' => $sMsg, 'network' => 1, 'offline' => false)); + break; + case '217': + $this->debug_message('*** User '.$session['to'].' is offline. Trying OIM.'); + $session['offline'] = true; + break; + default: + if (is_numeric($code)) { + $this->error = "Error code: $code, please check the detail information from: http://msnpiki.msnfanatic.com/index.php/Reference:Error_List"; + $this->debug_message("*** SB: $this->error"); + } + break; + } + } + + /** + * Checks for new data and calls appropriate methods + * + * This method is usually called in an infinite loop to keep checking for new data + * + * @return void + */ + public function receive() { + // First, get an array of sockets that have data that is ready to be read + $ready = array(); + $ready = $this->getSockets(); + $numrdy = stream_select($ready, $w = NULL, $x = NULL, NULL); + + // Now that we've waited for something, go through the $ready + // array and read appropriately + + foreach ($ready as $socket) { + if ($socket == $this->NSfp) { + $this->nsReceive(); + } else { + $this->sbReceive($socket); + } + } + } + + /** + * Switchboard related methods + */ + + /** + * Send a request for a switchboard session + * + * @param string $to Target email for switchboard session + */ + private function reqSBSession($to) { + $this->debug_message("*** Request SB for $to"); + $this->ns_writeln("XFR $this->id SB"); + + // Add to the queue of those waiting for a switchboard session reponse + $this->switchBoardSessions[$to] = array( + 'to' => $to, + 'socket' => NULL, + 'id' => 1, + 'joined' => false, + 'offline' => false, + 'XFRReqTime' => time() + ); + $this->waitingForXFR[$to] = &$this->switchBoardSessions[$to]; + } + + /** + * Following an XFR or RNG, connect to the switchboard session + * + * @param string $mode Mode, either 'Active' (in the case of XFR) or 'Passive' (in the case of RNG) + * @param string $ip IP of Switchboard + * @param integer $port Port of Switchboard + * @param string $to User on other end of Switchboard + * @param array $param Array of parameters - 'cki', 'ticket', 'sid' + * @return boolean true if successful + */ + private function connectToSBSession($mode, $ip, $port, $to, $param) { + $this->debug_message("*** SB: Trying to connect to switchboard server $ip:$port"); + + $socket = @fsockopen($ip, $port, $errno, $errstr, $this->timeout); + if (!$socket) { + $this->debug_message("*** SB: Can't connect to $ip:$port, error => $errno, $errstr"); + return false; + } + + // Store the socket in the lookup array + $this->switchBoardSessionLookup[$to] = $socket; + + // Store the socket in the sessions array + $this->switchBoardSessions[$to] = array( + 'to' => $to, + 'socket' => $socket, + 'id' => 1, + 'joined' => false, + 'offline' => false, + 'XFRReqTime' => time() + ); + + // Change the index of the session to the socket + $intsocket = (int) $socket; + $this->switchBoardSessions[$intsocket] = $this->switchBoardSessions[$to]; + unset($this->switchBoardSessions[$to]); + + $id = &$this->switchBoardSessions[$intsocket]['id']; + + if ($mode == 'Active') { + $cki_code = $param['cki']; + + // SB: >>> USR {id} {user} {cki} + $this->sb_writeln($socket, $id, "USR $id $this->user $cki_code"); + } else { + // Passive + $ticket = $param['ticket']; + $sid = $param['sid']; + + // SB: >>> ANS {id} {user} {ticket} {session_id} + $this->sb_writeln($socket, $id, "ANS $id $this->user $ticket $sid"); + } + } + + /** + * Called when we want to end a switchboard session + * or a switchboard session ends + * + * @param resource $socket Socket + * @param boolean $killsession Whether to delete the session + * @return void + */ + private function endSBSession($socket) { + if (!self::socketcheck($socket)) { + $this->sb_writeln($socket, $fake = 0, 'OUT'); + } + @fclose($socket); + + // Unset session lookup value + $intsocket = (int) $socket; + unset($this->switchBoardSessionLookup[$this->switchBoardSessions[$intsocket]['to']]); + + // Unset session itself + unset($this->switchBoardSessions[$intsocket]); + } + + /** + * Send a message via an existing SB session + * + * @param string $to Recipient for message + * @param string $message Message + * @return boolean true on success + */ + private function sendMessageViaSB($to, $message) { + $socket = $this->switchBoardSessionLookup[$to]; + if (self::socketcheck($socket)) { + return false; + } + + $id = &$this->switchBoardSessions[(int) $socket]['id']; + + $aMessage = $this->getMessage($message); + // CheckEmotion... + $MsnObjDefine = $this->GetMsnObjDefine($aMessage); + if ($MsnObjDefine !== '') { + $SendString = "MIME-Version: 1.0\r\nContent-Type: text/x-mms-emoticon\r\n\r\n$MsnObjDefine"; + $len = strlen($SendString); + + if ($this->sb_writeln($socket, $id, "MSG $id N $len") === false || + $this->sb_writedata($socket, $SendString) === false) { + $this->endSBSession($socket); + return false; + } + } + $len = strlen($aMessage); + + if ($this->sb_writeln($socket, $id, "MSG $id N $len") === false || + $this->sb_writedata($socket, $aMessage) === false) { + $this->endSBSession($socket); + return false; + } + + // Don't close the SB session, we might as well leave it open + return true; + } + + /** + * Send a message to a user on another network + * + * @param string $to Intended recipient + * @param string $message Message + * @param integer $network Network + * @return void + */ + private function sendOtherNetworkMessage($to, $message, $network) { + $message = $this->getMessage($message, $network); + $len = strlen($message); + if ($this->ns_writeln("UUM $this->id $to $network 1 $len") === false || + $this->ns_writedata($Message) === false) { + return false; + } + $this->debug_message("*** Sent to $to (network: $network):\n$Message"); + return true; + } + + /** + * Send a message + * + * @param string $to To address in form user@host.com(@network) + * where network is 1 for MSN, 32 for Yahoo + * and 'Offline' for offline messages + * @param string $message Message + * @param boolean &$waitForSession Boolean passed by reference, + * if set to true on return, message + * did not fail to send but is + * waiting for a valid session + * + * @return boolean true on success + */ + public function sendMessage($to, $message, &$waitForSession) { + if ($message != '') { + $toParts = explode('@', $to); + if(count($toParts) < 3) { + list($name, $host) = $toParts; + $network = 1; + } else { + list($name, $host, $network) = $toParts; + } + + $recipient = $name.'@'.$host; + + if ($network === 1) { + if (!isset($this->switchBoardSessionLookup[$recipient])) { + if (!isset($this->switchBoardSessions[$recipient]) || time() - $this->switchBoardSessions[$recipient]['XFRReqTime'] > $this->XFRReqTimeout) { + $this->debug_message("*** No existing SB session or request has timed out"); + $this->reqSBSession($recipient); + } + + $waitForSession = true; + return false; + } else { + $socket = $this->switchBoardSessionLookup[$recipient]; + $intsocket = (int) $socket; + if ($this->switchBoardSessions[$intsocket]['offline']) { + $this->debug_message("*** Contact ($recipient) offline, sending OIM"); + $this->endSBSession($socket); + $waitForSession = false; + return $this->sendMessage($recipient.'@Offline', $message); + } else { + if ($this->switchBoardSessions[$intsocket]['joined'] !== true) { + $this->debug_message("*** Recipient has not joined session, returning false"); + $waitForSession = true; + return false; + } + + $this->debug_message("*** Attempting to send message to $recipient using existing SB session"); + + if ($this->sendMessageViaSB($recipient, $message)) { + $this->debug_message('*** Message sent successfully'); + return true; + } + + $waitForSession = false; + return false; + } + } + } elseif ($network == 'Offline') { + //Send OIM + //FIXME: 修正Send OIM + $lockkey = ''; + $re_login = false; + for ($i = 0; $i < $this->oim_try; $i++) { + if (($oim_result = $this->sendOIM($recipient, $message, $lockkey)) === true) break; + if (is_array($oim_result) && $oim_result['challenge'] !== false) { + // need challenge lockkey + $this->debug_message("*** Need challenge code for ".$oim_result['challenge']); + $lockkey = $this->getChallenge($oim_result['challenge']); + continue; + } + if ($oim_result === false || $oim_result['auth_policy'] !== false) { + if ($re_login) { + $this->debug_message("*** Can't send OIM, but we already re-logged-in again, so returning false"); + return false; + } + $this->debug_message("*** Can't send OIM, maybe ticket expired, trying to login again"); + + // Maybe we need to re-login again + if (!$this->get_passport_ticket()) { + $this->debug_message("*** Can't re-login, something went wrong here, returning false"); + return false; + } + $this->debug_message("*** Getting new ticket and trying again"); + continue; + } + } + return true; + } else { + // Other network + return $this->sendOtherNetworkMessage($recipient, $message, $network); + } + } + return true; + } + + /** + * OIM methods + */ + + /** + * Get OIM mail data + * + * @return string mail data or false on failure + */ + function getOIM_maildata() { + preg_match('#t=(.*)&p=(.*)#', $this->ticket['web_ticket'], $matches); + if (count($matches) == 0) { + $this->debug_message('*** No web ticket?'); + return false; + } + $t = htmlspecialchars($matches[1]); + $p = htmlspecialchars($matches[2]); + $XML = ' + + + + '.$t.' +

'.$p.'

+
+
+ + + +
'; + + $header_array = array( + 'SOAPAction: '.self::OIM_MAILDATA_SOAP, + 'Content-Type: text/xml; charset=utf-8', + 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Messenger '.self::BUILDVER.')' + ); + + $this->debug_message('*** URL: '.self::OIM_MAILDATA_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::OIM_MAILDATA_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) { + $this->debug_message("*** Could not get OIM maildata! http code: $http_code"); + return false; + } + + // See #XML_Data + preg_match('#]*)>(.*)#', $data, $matches); + if (count($matches) == 0) { + $this->debug_message('*** Could not get OIM maildata'); + return false; + } + return $matches[2]; + } + + /** + * Fetch OIM message with given id + * + * @param string $msgid + * @return string Message or false on failure + */ + function getOIM_message($msgid) { + preg_match('#t=(.*)&p=(.*)#', $this->ticket['web_ticket'], $matches); + if (count($matches) == 0) { + $this->debug_message('*** No web ticket?'); + return false; + } + $t = htmlspecialchars($matches[1]); + $p = htmlspecialchars($matches[2]); + + // read OIM + $XML = ' + + + + '.$t.' +

'.$p.'

+
+
+ + + '.$msgid.' + false + + +
'; + + $header_array = array( + 'SOAPAction: '.self::OIM_READ_SOAP, + 'Content-Type: text/xml; charset=utf-8', + 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Messenger '.self::BUILDVER.')' + ); + + $this->debug_message('*** URL: '.self::OIM_READ_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::OIM_READ_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) { + $this->debug_message("*** Can't get OIM: $msgid, http code = $http_code"); + return false; + } + + // why can't use preg_match('#(.*)#', $data, $matches)? + // multi-lines? + $start = strpos($data, ''); + $end = strpos($data, ''); + if ($start === false || $end === false || $start > $end) { + $this->debug_message("*** Can't get OIM: $msgid"); + return false; + } + $lines = substr($data, $start + 18, $end - $start); + $aLines = @explode("\n", $lines); + $header = true; + $ignore = false; + $sOIM = ''; + foreach ($aLines as $line) { + $line = rtrim($line); + if ($header) { + if ($line === '') { + $header = false; + continue; + } + continue; + } + // stop at empty lines + if ($line === '') break; + $sOIM .= $line; + } + $sMsg = base64_decode($sOIM); + //$this->debug_message("*** we get OIM ($msgid): $sMsg"); + + // delete OIM + $XML = ' + + + + '.$t.' +

'.$p.'

+
+
+ + + + '.$msgid.' + + + +
'; + + $header_array = array( + 'SOAPAction: '.self::OIM_DEL_SOAP, + 'Content-Type: text/xml; charset=utf-8', + 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Messenger '.self::BUILDVER.')' + ); + + $this->debug_message('*** URL: '.self::OIM_DEL_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::OIM_DEL_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) + $this->debug_message("*** Could not delete OIM: $msgid, http code = $http_code"); + else + $this->debug_message("*** OIM ($msgid) deleted"); + return $sMsg; + } + + /** + * Send offline message + * + * @param string $to Intended recipient + * @param string $sMessage Message + * @param string $lockkey Lock key + * @return mixed true on success or error data + */ + private function sendOIM($to, $sMessage, $lockkey) { + $XML = ' + + + + + + + http://messenger.msn.com + 1 + + + + text + MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: base64 +X-OIM-Message-Type: OfflineMessage +X-OIM-Run-Id: {DAB68CFA-38C9-449B-945E-38AFA51E50A7} +X-OIM-Sequence-Num: 1 + +'.chunk_split(base64_encode($sMessage)).' + + +'; + + $header_array = array( + 'SOAPAction: '.self::OIM_SEND_SOAP, + 'Content-Type: text/xml', + 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Messenger '.self::BUILDVER.')' + ); + + $this->debug_message('*** URL: '.self::OIM_SEND_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::OIM_SEND_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code == 200) { + $this->debug_message("*** OIM sent for $to"); + return true; + } + + $challenge = false; + $auth_policy = false; + // the lockkey is invalid, authenticated fail, we need challenge it again + // 364763969 + preg_match("#(.*)#", $data, $matches); + if (count($matches) != 0) { + // yes, we get new LockKeyChallenge + $challenge = $matches[2]; + $this->debug_message("*** OIM need new challenge ($challenge) for $to"); + } + // auth policy error + // MBI_SSL + preg_match("#(.*)#", $data, $matches); + if (count($matches) != 0) { + $auth_policy = $matches[2]; + $this->debug_message("*** OIM need new auth policy ($auth_policy) for $to"); + } + if ($auth_policy === false && $challenge === false) { + //q0:AuthenticationFailed + preg_match("#(.*)#", $data, $matches); + if (count($matches) == 0) { + // no error, we assume the OIM is sent + $this->debug_message("*** OIM sent for $to"); + return true; + } + $err_code = $matches[2]; + //Exception of type 'System.Web.Services.Protocols.SoapException' was thrown. + preg_match("#(.*)#", $data, $matches); + if (count($matches) > 0) + $err_msg = $matches[1]; + else + $err_msg = ''; + $this->debug_message("*** OIM failed for $to"); + $this->debug_message("*** OIM Error code: $err_code"); + $this->debug_message("*** OIM Error Message: $err_msg"); + return false; + } + return array('challenge' => $challenge, 'auth_policy' => $auth_policy); + } + + /** + * Contact / Membership list methods + */ + + /** + * Fetch contact list + * + * @return boolean true on success + */ + private function UpdateContacts() { + $ABApplicationHeaderArray = array( + 'ABApplicationHeader' => array( + ':' => array('xmlns' => 'http://www.msn.com/webservices/AddressBook'), + 'ApplicationId' => 'CFE80F9D-180F-4399-82AB-413F33A1FA11', + 'IsMigration' => false, + 'PartnerScenario' => 'ContactSave' + ) + ); + + $ABApplicationHeader = new SoapHeader('http://www.msn.com/webservices/AddressBook', 'ABApplicationHeader', $this->Array2SoapVar($ABApplicationHeaderArray)); + $ABFindAllArray = array( + 'ABFindAll' => array( + ':' => array('xmlns'=>'http://www.msn.com/webservices/AddressBook'), + 'abId' => '00000000-0000-0000-0000-000000000000', + 'abView' => 'Full', + 'lastChange' => '0001-01-01T00:00:00.0000000-08:00', + ) + ); + $ABFindAll = new SoapParam($this->Array2SoapVar($ABFindAllArray), 'ABFindAll'); + $this->ABService->__setSoapHeaders(array($ABApplicationHeader, $this->ABAuthHeader)); + $this->Contacts = array(); + try { + $this->debug_message('*** Updating Contacts...'); + $Result = $this->ABService->ABFindAll($ABFindAll); + $this->debug_message("*** Result:\n".print_r($Result, true)."\n".$this->ABService->__getLastResponse()); + foreach($Result->ABFindAllResult->contacts->Contact as $Contact) + $this->Contacts[$Contact->contactInfo->passportName] = $Contact; + } catch(Exception $e) { + $this->debug_message("*** Update Contacts Error \nRequest:".$this->ABService->__getLastRequest()."\nError:".$e->getMessage()); + return false; + } + return true; + } + + /** + * Add contact + * + * @param string $email + * @param integer $network + * @param string $display + * @param boolean $sendADL + * @return boolean true on success + */ + private function addContact($email, $network, $display = '', $sendADL = false) { + if ($network != 1) return true; + if (isset($this->Contacts[$email])) return true; + + $ABContactAddArray = array( + 'ABContactAdd' => array( + ':' => array('xmlns' => 'http://www.msn.com/webservices/AddressBook'), + 'abId' => '00000000-0000-0000-0000-000000000000', + 'contacts' => array( + 'Contact' => array( + ':' => array('xmlns' => 'http://www.msn.com/webservices/AddressBook'), + 'contactInfo' => array( + 'contactType' => 'LivePending', + 'passportName' => $email, + 'isMessengerUser' => true, + 'MessengerMemberInfo' => array( + 'DisplayName' => $email + ) + ) + ) + ), + 'options' => array( + 'EnableAllowListManagement' => true + ) + ) + ); + $ABContactAdd = new SoapParam($this->Array2SoapVar($ABContactAddArray), 'ABContactAdd'); + try { + $this->debug_message("*** Adding Contact $email..."); + $this->ABService->ABContactAdd($ABContactAdd); + } catch(Exception $e) { + $this->debug_message("*** Add Contact Error \nRequest:".$this->ABService->__getLastRequest()."\nError:".$e->getMessage()); + return false; + } + if ($sendADL && !feof($this->NSfp)) { + @list($u_name, $u_domain) = @explode('@', $email); + foreach (array('1', '2') as $l) { + $str = ''; + $len = strlen($str); + // NS: >>> ADL {id} {size} + $this->ns_writeln("ADL $this->id $len"); + $this->ns_writedata($str); + } + } + $this->UpdateContacts(); + return true; + } + + /** + * Remove contact from list + * + * @param integer $memberID + * @param string $email + * @param integer $network + * @param string $list + */ + function delMemberFromList($memberID, $email, $network, $list) { + if ($network != 1 && $network != 32) return true; + if ($memberID === false) return true; + $user = $email; + $ticket = htmlspecialchars($this->ticket['contact_ticket']); + if ($network == 1) + $XML = ' + + + + 996CDE1E-AA53-4477-B943-2BE802EA6166 + false + ContactMsgrAPI + + + false + '.$ticket.' + + + + + + 0 + Messenger + + + + + '.$list.' + + + Passport + '.$memberID.' + Accepted + + + + + + +'; + else + $XML = ' + + + + 996CDE1E-AA53-4477-B943-2BE802EA6166 + false + ContactMsgrAPI + + + false + '.$ticket.' + + + + + + 0 + Messenger + + + + + '.$list.' + + + Email + '.$memberID.' + Accepted + + + + + + +'; + + $header_array = array( + 'SOAPAction: '.self::DELMEMBER_SOAP, + 'Content-Type: text/xml; charset=utf-8', + 'User-Agent: MSN Explorer/9.0 (MSN 8.0; TmstmpExt)' + ); + + $this->debug_message('*** URL: '.self::DELMEMBER_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::DELMEMBER_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) { + preg_match('#(.*)(.*)#', $data, $matches); + if (count($matches) == 0) { + $this->debug_message("*** Could not delete member (network: $network) $email ($memberID) from $list list"); + return false; + } + $faultcode = trim($matches[1]); + $faultstring = trim($matches[2]); + if (strcasecmp($faultcode, 'soap:Client') || stripos($faultstring, 'Member does not exist') === false) { + $this->debug_message("*** Could not delete member (network: $network) $email ($memberID) from $list list, error code: $faultcode, $faultstring"); + return false; + } + $this->debug_message("*** Could not delete member (network: $network) $email ($memberID) from $list list, not present in list"); + return true; + } + $this->debug_message("*** Member successfully deleted (network: $network) $email ($memberID) from $list list"); + return true; + } + + /** + * Add contact to list + * + * @param string $email + * @param integer $network + * @param string $list + */ + function addMemberToList($email, $network, $list) { + if ($network != 1 && $network != 32) return true; + $ticket = htmlspecialchars($this->ticket['contact_ticket']); + $user = $email; + + if ($network == 1) + $XML = ' + + + + 996CDE1E-AA53-4477-B943-2BE802EA6166 + false + ContactMsgrAPI + + + false + '.$ticket.' + + + + + + 0 + Messenger + + + + + '.$list.' + + + Passport + Accepted + '.$user.' + + + + + + +'; + else + $XML = ' + + + + 996CDE1E-AA53-4477-B943-2BE802EA6166 + false + ContactMsgrAPI + + + false + '.$ticket.' + + + + + + 0 + Messenger + + + + + '.$list.' + + + Email + Accepted + '.$user.' + + + MSN.IM.BuddyType + 32:YAHOO + + + + + + + + +'; + $header_array = array( + 'SOAPAction: '.self::ADDMEMBER_SOAP, + 'Content-Type: text/xml; charset=utf-8', + 'User-Agent: MSN Explorer/9.0 (MSN 8.0; TmstmpExt)' + ); + + $this->debug_message('*** URL: '.self::ADDMEMBER_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::ADDMEMBER_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) { + preg_match('#(.*)(.*)#', $data, $matches); + if (count($matches) == 0) { + $this->debug_message("*** Could not add member (network: $network) $email to $list list"); + return false; + } + $faultcode = trim($matches[1]); + $faultstring = trim($matches[2]); + if (strcasecmp($faultcode, 'soap:Client') || stripos($faultstring, 'Member already exists') === false) { + $this->debug_message("*** Could not add member (network: $network) $email to $list list, error code: $faultcode, $faultstring"); + return false; + } + $this->debug_message("*** Could not add member (network: $network) $email to $list list, already present"); + return true; + } + $this->debug_message("*** Member successfully added (network: $network) $email to $list list"); + return true; + } + + /** + * Get membership lists + * + * @param mixed $returnData Membership list or false on failure + */ + function getMembershipList($returnData = false) { + $ticket = htmlspecialchars($this->ticket['contact_ticket']); + $XML = ' + + + + 996CDE1E-AA53-4477-B943-2BE802EA6166 + false + Initial + + + false + '.$ticket.' + + + + + + + Messenger + Invitation + SocialNetwork + Space + Profile + + + + +'; + $header_array = array( + 'SOAPAction: '.self::MEMBERSHIP_SOAP, + 'Content-Type: text/xml; charset=utf-8', + 'User-Agent: MSN Explorer/9.0 (MSN 8.0; TmstmpExt)' + ); + $this->debug_message('*** URL: '.self::MEMBERSHIP_URL); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, self::MEMBERSHIP_URL); + curl_setopt($curl, CURLOPT_HTTPHEADER, $header_array); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) return false; + $p = $data; + $aMemberships = array(); + while (1) { + //$this->debug_message("search p = $p"); + $start = strpos($p, ''); + $end = strpos($p, ''); + if ($start === false || $end === false || $start > $end) break; + //$this->debug_message("start = $start, end = $end"); + $end += 13; + $sMembership = substr($p, $start, $end - $start); + $aMemberships[] = $sMembership; + //$this->debug_message("add sMembership = $sMembership"); + $p = substr($p, $end); + } + //$this->debug_message("aMemberships = ".var_export($aMemberships, true)); + + $aContactList = array(); + foreach ($aMemberships as $sMembership) { + //$this->debug_message("sMembership = $sMembership"); + if (isset($matches)) unset($matches); + preg_match('#(.*)#', $sMembership, $matches); + if (count($matches) == 0) continue; + $sMemberRole = $matches[1]; + //$this->debug_message("MemberRole = $sMemberRole"); + if ($sMemberRole != 'Allow' && $sMemberRole != 'Reverse' && $sMemberRole != 'Pending') continue; + $p = $sMembership; + if (isset($aMembers)) unset($aMembers); + $aMembers = array(); + while (1) { + //$this->debug_message("search p = $p"); + $start = strpos($p, 'debug_message("add sMember = $sMember"); + $p = substr($p, $end); + } + //$this->debug_message("aMembers = ".var_export($aMembers, true)); + foreach ($aMembers as $sMember) { + //$this->debug_message("sMember = $sMember"); + if (isset($matches)) unset($matches); + preg_match('##', $sMember, $matches); + if (count($matches) == 0) continue; + $sMemberType = $matches[1]; + //$this->debug_message("MemberType = $sMemberType"); + $network = -1; + preg_match('#(.*)#', $sMember, $matches); + if (count($matches) == 0) continue; + $id = $matches[1]; + if ($sMemberType == 'PassportMember') { + if (strpos($sMember, 'Passport') === false) continue; + $network = 1; + preg_match('#(.*)#', $sMember, $matches); + } + else if ($sMemberType == 'EmailMember') { + if (strpos($sMember, 'Email') === false) continue; + // Value is 32: or 32:YAHOO + preg_match('#MSN.IM.BuddyType(.*):(.*)#', $sMember, $matches); + if (count($matches) == 0) continue; + if ($matches[1] != 32) continue; + $network = 32; + preg_match('#(.*)#', $sMember, $matches); + } + if ($network == -1) continue; + if (count($matches) > 0) { + $email = $matches[1]; + @list($u_name, $u_domain) = @explode('@', $email); + if ($u_domain == NULL) continue; + $aContactList[$u_domain][$u_name][$network][$sMemberRole] = $id; + $this->debug_message("*** Adding new contact (network: $network, status: $sMemberRole): $u_name@$u_domain ($id)"); + } + } + } + return $aContactList; + } + + /** + * MsnObj related methods + */ + + /** + * + * @param $FilePath 圖檔路徑 + * @param $Type 檔案類型 3=>大頭貼,2表情圖案 + * @return array + */ + private function MsnObj($FilePath, $Type = 3) { + if (!($FileSize=filesize($FilePath))) return ''; + $Location = md5($FilePath); + $Friendly = md5($FilePath.$Type); + if (isset($this->MsnObjMap[$Location])) return $this->MsnObjMap[$Location]; + $sha1d = base64_encode(sha1(file_get_contents($FilePath), true)); + $sha1c = base64_encode(sha1("Creator".$this->user."Size$FileSize"."Type$Type"."Location$Location"."Friendly".$Friendly."SHA1D$sha1d", true)); + $this->MsnObjArray[$Location] = $FilePath; + $MsnObj = ''; + $this->MsnObjMap[$Location] = $MsnObj; + $this->debug_message("*** p2p: addMsnObj $FilePath::$MsnObj\n"); + return $MsnObj; + } + + private function GetPictureFilePath($Context) { + $MsnObj = base64_decode($Context); + if (preg_match('/location="(.*?)"/i', $MsnObj, $Match)) + $location = $Match[1]; + $this->debug_message("*** p2p: PictureFile[$location] ::All".print_r($this->MsnObjArray,true)."\n"); + if ($location && isset($this->MsnObjArray[$location])) + return $this->MsnObjArray[$location]; + return false; + } + + private function GetMsnObjDefine($Message) { + $DefineString = ''; + if (is_array($this->Emotions)) + foreach ($this->Emotions as $Pattern => $FilePath) { + if (strpos($Message, $Pattern) !== false) + $DefineString .= "$Pattern\t".$this->MsnObj($FilePath, 2)."\t"; + } + return $DefineString; + } + + /** + * Socket methods + */ + + /** + * Read data of specified size from NS socket + * + * @param integer $size Size to read + * @return string Data read + */ + private function ns_readdata($size) { + $data = ''; + $count = 0; + while (!feof($this->NSfp)) { + $buf = @fread($this->NSfp, $size - $count); + $data .= $buf; + $count += strlen($buf); + if ($count >= $size) break; + } + $this->debug_message("NS: data ($size/$count) <<<\n$data"); + return $data; + } + + /** + * Read line from the NS socket + * + * @return string Data read + */ + private function ns_readln() { + $data = @fgets($this->NSfp, 4096); + if ($data !== false) { + $data = trim($data); + $this->debug_message("NS: <<< $data"); + } + return $data; + } + + /** + * Write line to NS socket + * + * Also increments id + * + * @param string $data Line to write to socket + * @return mixed Bytes written or false on failure + */ + private function ns_writeln($data) { + $result = @fwrite($this->NSfp, $data."\r\n"); + if ($result !== false) { + $this->debug_message("NS: >>> $data"); + $this->id++; + } + return $result; + } + + /** + * Write data to NS socket + * + * @param string $data Data to write to socket + * @return mixed Bytes written or false on failure + */ + private function ns_writedata($data) { + $result = @fwrite($this->NSfp, $data); + if ($result !== false) { + $this->debug_message("NS: >>> $data"); + } + return $result; + } + + /** + * Read data of specified size from given SB socket + * + * @param resource $socket SB socket + * @param integer $size Size to read + * @return string Data read + */ + private function sb_readdata($socket, $size) { + $data = ''; + $count = 0; + while (!feof($socket)) { + $buf = @fread($socket, $size - $count); + $data .= $buf; + $count += strlen($buf); + if ($count >= $size) break; + } + $this->debug_message("SB: data ($size/$count) <<<\n$data"); + return $data; + } + + /** + * Read line from given SB socket + * + * @param resource $socket SB Socket + * @return string Line read + */ + private function sb_readln($socket) { + $data = @fgets($socket, 4096); + if ($data !== false) { + $data = trim($data); + $this->debug_message("SB: <<< $data"); + } + return $data; + } + + /** + * Write line to given SB socket + * + * Also increments id + * + * @param resource $socket SB socket + * @param integer $id Reference to SB id + * @param string $data Line to write + * @return mixed Bytes written or false on error + */ + private function sb_writeln($socket, &$id, $data) { + $result = @fwrite($socket, $data."\r\n"); + if ($result !== false) { + $this->debug_message("SB: >>> $data"); + $id++; + } + return $result; + } + + /** + * Write data to given SB socket + * + * @param resource $socket SB socket + * @param $data Data to write to socket + * @return mixed Bytes written or false on error + */ + private function sb_writedata($socket, $data) { + $result = @fwrite($socket, $data); + if ($result !== false) { + $this->debug_message("SB: >>> $data"); + } + return $result; + } + + /** + * Get all the sockets currently in use + * + * @return array Array of socket resources + */ + public function getSockets() { + return array_merge(array($this->NSfp), $this->switchBoardSessionLookup); + } + + /** + * Checks socket for end of file + * + * @param resource $socket Socket to check + * @return boolean true if end of file (socket) + */ + private static function socketcheck($socket){ + $info = stream_get_meta_data($socket); + return $info['eof']; + } + + /** + * Key generation methods + */ + + private function derive_key($key, $magic) { + $hash1 = $this->mhash_sha1($magic, $key); + $hash2 = $this->mhash_sha1($hash1.$magic, $key); + $hash3 = $this->mhash_sha1($hash1, $key); + $hash4 = $this->mhash_sha1($hash3.$magic, $key); + return $hash2.substr($hash4, 0, 4); + } + + private function generateLoginBLOB($key, $challenge) { + $key1 = base64_decode($key); + $key2 = $this->derive_key($key1, 'WS-SecureConversationSESSION KEY HASH'); + $key3 = $this->derive_key($key1, 'WS-SecureConversationSESSION KEY ENCRYPTION'); + + // get hash of challenge using key2 + $hash = $this->mhash_sha1($challenge, $key2); + + // get 8 bytes random data + $iv = substr(base64_encode(rand(1000,9999).rand(1000,9999)), 2, 8); + + $cipher = mcrypt_cbc(MCRYPT_3DES, $key3, $challenge."\x08\x08\x08\x08\x08\x08\x08\x08", MCRYPT_ENCRYPT, $iv); + + $blob = pack('LLLLLLL', 28, 1, 0x6603, 0x8004, 8, 20, 72); + $blob .= $iv; + $blob .= $hash; + $blob .= $cipher; + + return base64_encode($blob); + } + + /** + * Generate challenge response + * + * @param string $code + * @return string challenge response code + */ + private function getChallenge($code) { + // MSNP15 + // http://msnpiki.msnfanatic.com/index.php/MSNP11:Challenges + // Step 1: The MD5 Hash + $md5Hash = md5($code.self::PROD_KEY); + $aMD5 = @explode("\0", chunk_split($md5Hash, 8, "\0")); + for ($i = 0; $i < 4; $i++) { + $aMD5[$i] = implode('', array_reverse(@explode("\0", chunk_split($aMD5[$i], 2, "\0")))); + $aMD5[$i] = (0 + base_convert($aMD5[$i], 16, 10)) & 0x7FFFFFFF; + } + + // Step 2: A new string + $chl_id = $code.self::PROD_ID; + $chl_id .= str_repeat('0', 8 - (strlen($chl_id) % 8)); + + $aID = @explode("\0", substr(chunk_split($chl_id, 4, "\0"), 0, -1)); + for ($i = 0; $i < count($aID); $i++) { + $aID[$i] = implode('', array_reverse(@explode("\0", chunk_split($aID[$i], 1, "\0")))); + $aID[$i] = 0 + base_convert(bin2hex($aID[$i]), 16, 10); + } + + // Step 3: The 64 bit key + $magic_num = 0x0E79A9C1; + $str7f = 0x7FFFFFFF; + $high = 0; + $low = 0; + for ($i = 0; $i < count($aID); $i += 2) { + $temp = $aID[$i]; + $temp = bcmod(bcmul($magic_num, $temp), $str7f); + $temp = bcadd($temp, $high); + $temp = bcadd(bcmul($aMD5[0], $temp), $aMD5[1]); + $temp = bcmod($temp, $str7f); + + $high = $aID[$i+1]; + $high = bcmod(bcadd($high, $temp), $str7f); + $high = bcadd(bcmul($aMD5[2], $high), $aMD5[3]); + $high = bcmod($high, $str7f); + + $low = bcadd(bcadd($low, $high), $temp); + } + + $high = bcmod(bcadd($high, $aMD5[1]), $str7f); + $low = bcmod(bcadd($low, $aMD5[3]), $str7f); + + $new_high = bcmul($high & 0xFF, 0x1000000); + $new_high = bcadd($new_high, bcmul($high & 0xFF00, 0x100)); + $new_high = bcadd($new_high, bcdiv($high & 0xFF0000, 0x100)); + $new_high = bcadd($new_high, bcdiv($high & 0xFF000000, 0x1000000)); + // we need integer here + $high = 0+$new_high; + + $new_low = bcmul($low & 0xFF, 0x1000000); + $new_low = bcadd($new_low, bcmul($low & 0xFF00, 0x100)); + $new_low = bcadd($new_low, bcdiv($low & 0xFF0000, 0x100)); + $new_low = bcadd($new_low, bcdiv($low & 0xFF000000, 0x1000000)); + // we need integer here + $low = 0+$new_low; + + // we just use 32 bits integer, don't need the key, just high/low + // $key = bcadd(bcmul($high, 0x100000000), $low); + + // Step 4: Using the key + $md5Hash = md5($code.self::PROD_KEY); + $aHash = @explode("\0", chunk_split($md5Hash, 8, "\0")); + + $hash = ''; + $hash .= sprintf("%08x", (0 + base_convert($aHash[0], 16, 10)) ^ $high); + $hash .= sprintf("%08x", (0 + base_convert($aHash[1], 16, 10)) ^ $low); + $hash .= sprintf("%08x", (0 + base_convert($aHash[2], 16, 10)) ^ $high); + $hash .= sprintf("%08x", (0 + base_convert($aHash[3], 16, 10)) ^ $low); + + return $hash; + } + + /** + * Utility methods + */ + + private function Array2SoapVar($Array, $ReturnSoapVarObj = true, $TypeName = null, $TypeNameSpace = null) { + $ArrayString = ''; + foreach($Array as $Key => $Val) { + if ($Key{0} == ':') continue; + $Attrib = ''; + if (is_array($Val[':'])) { + foreach ($Val[':'] as $AttribName => $AttribVal) + $Attrib .= " $AttribName = '$AttribVal'"; + } + if ($Key{0} == '!') { + //List Type Define + $Key = substr($Key,1); + foreach ($Val as $ListKey => $ListVal) { + if ($ListKey{0} == ':') continue; + if (is_array($ListVal)) $ListVal = $this->Array2SoapVar($ListVal, false); + elseif (is_bool($ListVal)) $ListVal = $ListVal ? 'true' : 'false'; + $ArrayString .= "<$Key$Attrib>$ListVal"; + } + continue; + } + if (is_array($Val)) $Val = $this->Array2SoapVar($Val, false); + elseif (is_bool($Val)) $Val = $Val ? 'true' : 'false'; + $ArrayString .= "<$Key$Attrib>$Val"; + } + if ($ReturnSoapVarObj) return new SoapVar($ArrayString, XSD_ANYXML, $TypeName, $TypeNameSpace); + return $ArrayString; + } + + private function linetoArray($lines) { + $lines = str_replace("\r", '', $lines); + $lines = explode("\n", $lines); + foreach ($lines as $line) { + if (!isset($line{3})) continue; + list($Key, $Val) = explode(':', $line); + $Data[trim($Key)] = trim($Val); + } + return $Data; + } + + /** + * Get Passport ticket + * + * @param string $url URL string (Optional) + * @return mixed Array of tickets or false on failure + */ + private function get_passport_ticket($url = '') { + $user = $this->user; + $password = htmlspecialchars($this->password); + + if ($url === '') + $passport_url = self::PASSPORT_URL; + else + $passport_url = $url; + + $XML = ' + +
+ + {7108E71A-9926-4FCB-BCC9-9A9D3F32E423} + 4 + 1 + + AQAAAAIAAABsYwQAAAAxMDMz + + + + '.$user.' + '.$password.' + + +
+ + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + http://Passport.NET/tb + + + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + messengerclear.live.com + + + + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + messenger.msn.com + + + + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + contacts.msn.com + + + + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + messengersecure.live.com + + + + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + spaces.live.com + + + + + + http://schemas.xmlsoap.org/ws/2004/04/security/trust/Issue + + + storage.msn.com + + + + + + +
'; + + $this->debug_message("*** URL: $passport_url"); + $this->debug_message("*** Sending SOAP:\n$XML"); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $passport_url); + if ($this->debug) curl_setopt($curl, CURLOPT_HEADER, 1); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $XML); + $data = curl_exec($curl); + $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + curl_close($curl); + $this->debug_message("*** Get Result:\n$data"); + + if ($http_code != 200) { + // sometimes, redirect to another URL + // MSNP15 + //psf:Redirect + //https://msnia.login.live.com/pp450/RST.srf + //Authentication Failure + if (strpos($data, 'psf:Redirect') === false) { + $this->debug_message("*** Could not get passport ticket! http code = $http_code"); + return false; + } + preg_match("#(.*)#", $data, $matches); + if (count($matches) == 0) { + $this->debug_message('*** Redirected, but could not get redirect URL!'); + return false; + } + $redirect_url = $matches[1]; + if ($redirect_url == $passport_url) { + $this->debug_message('*** Redirected, but to same URL!'); + return false; + } + $this->debug_message("*** Redirected to $redirect_url"); + return $this->get_passport_ticket($redirect_url); + } + + // sometimes, redirect to another URL, also return 200 + // MSNP15 + //psf:Redirect + //https://msnia.login.live.com/pp450/RST.srf + //Authentication Failure + if (strpos($data, 'psf:Redirect') !== false) { + preg_match("#(.*)#", $data, $matches); + if (count($matches) != 0) { + $redirect_url = $matches[1]; + if ($redirect_url == $passport_url) { + $this->debug_message('*** Redirected, but to same URL!'); + return false; + } + $this->debug_message("*** Redirected to $redirect_url"); + return $this->get_passport_ticket($redirect_url); + } + } + + // no Redurect faultcode or URL + // we should get the ticket here + + // we need ticket and secret code + // RST1: messengerclear.live.com + // t=tick&p= + // binary secret + // RST2: messenger.msn.com + // t=tick + // RST3: contacts.msn.com + // t=tick&p= + // RST4: messengersecure.live.com + // t=tick&p= + // RST5: spaces.live.com + // t=tick&p= + // RST6: storage.msn.com + // t=tick&p= + preg_match("#". + "(.*)(.*)". + "(.*)(.*)". + "(.*)(.*)". + "(.*)(.*)". + "(.*)(.*)". + "(.*)(.*)". + "(.*)(.*)". + "#", + $data, $matches); + + // no ticket found! + if (count($matches) == 0) { + $this->debug_message('*** Could not get passport ticket!'); + return false; + } + + //$this->debug_message(var_export($matches, true)); + // matches[0]: all data + // matches[1]: RST1 (messengerclear.live.com) ticket + // matches[2]: ... + // matches[3]: RST1 (messengerclear.live.com) binary secret + // matches[4]: ... + // matches[5]: RST2 (messenger.msn.com) ticket + // matches[6]: ... + // matches[7]: RST3 (contacts.msn.com) ticket + // matches[8]: ... + // matches[9]: RST4 (messengersecure.live.com) ticket + // matches[10]: ... + // matches[11]: RST5 (spaces.live.com) ticket + // matches[12]: ... + // matches[13]: RST6 (storage.live.com) ticket + // matches[14]: ... + + // so + // ticket => $matches[1] + // secret => $matches[3] + // web_ticket => $matches[5] + // contact_ticket => $matches[7] + // oim_ticket => $matches[9] + // space_ticket => $matches[11] + // storage_ticket => $matches[13] + + // yes, we get ticket + $aTickets = array( + 'ticket' => html_entity_decode($matches[1]), + 'secret' => html_entity_decode($matches[3]), + 'web_ticket' => html_entity_decode($matches[5]), + 'contact_ticket' => html_entity_decode($matches[7]), + 'oim_ticket' => html_entity_decode($matches[9]), + 'space_ticket' => html_entity_decode($matches[11]), + 'storage_ticket' => html_entity_decode($matches[13]) + ); + $this->ticket = $aTickets; + //$this->debug_message(var_export($aTickets, true)); + $ABAuthHeaderArray = array( + 'ABAuthHeader' => array( + ':' => array('xmlns' => 'http://www.msn.com/webservices/AddressBook'), + 'ManagedGroupRequest' => false, + 'TicketToken' => htmlspecialchars($this->ticket['contact_ticket']), + ) + ); + $this->ABAuthHeader = new SoapHeader('http://www.msn.com/webservices/AddressBook', 'ABAuthHeader', $this->Array2SoapVar($ABAuthHeaderArray)); + return $aTickets; + } + + /** + * Generate the data to send a message + * + * @param string $sMessage Message + * @param integer $network Network + * @return string Message data + */ + private function getMessage($sMessage, $network = 1) { + $msg_header = "MIME-Version: 1.0\r\nContent-Type: text/plain; charset=UTF-8\r\nX-MMS-IM-Format: FN=$this->font_fn; EF=$this->font_ef; CO=$this->font_co; CS=0; PF=22\r\n\r\n"; + $msg_header_len = strlen($msg_header); + if ($network == 1) + $maxlen = self::MAX_MSN_MESSAGE_LEN - $msg_header_len; + else + $maxlen = self::MAX_YAHOO_MESSAGE_LEN - $msg_header_len; + $sMessage = str_replace("\r", '', $sMessage); + $msg = substr($sMessage, 0, $maxlen); + return $msg_header.$msg; + } + + /** + * Sleep for the given number of seconds + * + * @param integer $wait Number of seconds to sleep for + */ + private function NSRetryWait($wait) { + $this->debug_message("*** Sleeping for $wait seconds before retrying"); + sleep($wait); + } + + /** + * Sends a ping command + * + * Should be called about every 50 seconds + * + * @return void + */ + public function sendPing() { + // NS: >>> PNG + $this->ns_writeln("PNG"); + } + + /** + * Methods to add / call callbacks + */ + + /** + * Calls User Handler + * + * Calls registered handler for a specific event. + * + * @param string $event Command (event) name (Rvous etc) + * @param array $data Data + * @see registerHandler + * @return void + */ + private function callHandler($event, $data = NULL) { + if (isset($this->myEventHandlers[$event])) { + if ($data !== NULL) { + call_user_func($this->myEventHandlers[$event], $data); + } else { + call_user_func($this->myEventHandlers[$event]); + } + } + } + + /** + * Registers a user handler + * + * Handler List + * IMIn, SessionReady, Pong, ConnectFailed, Reconnect, + * AddedToList, RemovedFromList, StatusChange + * + * @param string $event Event name + * @param string $handler User function to call + * @see callHandler + * @return boolean true if successful + */ + public function registerHandler($event, $handler) { + if (is_callable($handler)) { + $this->myEventHandlers[$event] = $handler; + return true; + } else { + return false; + } + } + + /** + * Debugging methods + */ + + /** + * Print message if debugging is enabled + * + * @param string $str Message to print + */ + private function debug_message($str) { + if (!$this->debug) return; + echo $str."\n"; + } + + /** + * Dump binary data + * + * @param string $str Data string + * @return Binary data + */ + private function dump_binary($str) { + $buf = ''; + $a_str = ''; + $h_str = ''; + $len = strlen($str); + for ($i = 0; $i < $len; $i++) { + if (($i % 16) == 0) { + if ($buf !== '') { + $buf .= "$h_str $a_str\n"; + } + $buf .= sprintf("%04X:", $i); + $a_str = ''; + $h_str = ''; + } + $ch = ord($str[$i]); + if ($ch < 32) + $a_str .= '.'; + else + $a_str .= chr($ch); + $h_str .= sprintf(" %02X", $ch); + } + if ($h_str !== '') + $buf .= "$h_str $a_str\n"; + return $buf; + } + + function mhash_sha1($data, $key) + { + if (extension_loaded("mhash")) + return mhash(MHASH_SHA1, $data, $key); + + if (function_exists("hash_hmac")) + return hash_hmac('sha1', $data, $key, true); + + // RFC 2104 HMAC implementation for php. Hacked by Lance Rushing + $b = 64; + if (strlen($key) > $b) + $key = pack("H*", sha1($key)); + $key = str_pad($key, $b, chr(0x00)); + $ipad = str_pad("", $b, chr(0x36)); + $opad = str_pad("", $b, chr(0x5c)); + $k_ipad = $key ^ $ipad ; + $k_opad = $key ^ $opad; + + $sha1_value = sha1($k_opad . pack("H*", sha1($k_ipad . $data))); + + $hash_data = ''; + $str = join('',explode('\x', $sha1_value)); + $len = strlen($str); + for ($i = 0; $i < $len; $i += 2) + $hash_data .= chr(hexdec(substr($str, $i, 2))); + return $hash_data; + } +} diff --git a/plugins/Msn/extlib/phpmsnclass/msnbot.php b/plugins/Msn/extlib/phpmsnclass/msnbot.php new file mode 100755 index 0000000000..7a9f66ca2e --- /dev/null +++ b/plugins/Msn/extlib/phpmsnclass/msnbot.php @@ -0,0 +1,63 @@ +#!/usr/bin/php +End(); + return; + } +} + +// network: +// 1: WLM/MSN +// 2: LCS +// 4: Mobile Phones +// 32: Yahoo! +function getNetworkName($network) +{ + switch ($network) + { + case 1: + return 'WLM/MSN'; + case 2: + return 'LCS'; + case 4: + return 'Mobile Phones'; + case 32: + return 'Yahoo!'; + } + return "Unknown ($network)"; +} + + +require_once('config.php'); +include_once('msn.class.php'); + +$msn = new MSN(array( + 'user' => 'xxx@hotmail.com', + 'password' => 'mypassword', + 'alias' => 'myalias', + 'psm' => 'psm', +// 'PhotoSticker' => 'msntitle.jpg', + 'debug'=> true, +/* 'Emotions' => array( + 'aaa' => 'emotion.gif' + ),*/ +)); + +$fp=fopen(MSN_CLASS_LOG_DIR.DIRECTORY_SEPARATOR.'msnbot.pid', 'wt'); +if($fp) +{ + fputs($fp,posix_getpid()); + fclose($fp); +} +declare(ticks = 1); +$msn->Run(); +$msn->log_message("done!"); +@unlink(dirname($_SERVER['argv'][0]).DIRECTORY_SEPARATOR.'log'.DIRECTORY_SEPARATOR.'msnbot.pid'); diff --git a/plugins/Msn/extlib/phpmsnclass/soap/msnab_datatypes.xsd b/plugins/Msn/extlib/phpmsnclass/soap/msnab_datatypes.xsd new file mode 100644 index 0000000000..46fc23f911 --- /dev/null +++ b/plugins/Msn/extlib/phpmsnclass/soap/msnab_datatypes.xsd @@ -0,0 +1,832 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A space (ASCII #32) separated list of properties that + have changed as part of an update request. The property + names don't always match the name of the associated + element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indicates whether the contact has a Windows Live + Space or not. + + + + + + + + + + + + + Seen is YYYY/MM/DD format. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A space (ASCII #32) separated list of properties that + have changed as part of an update request. The property + names don't always match the name of the associated + element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/Msn/extlib/phpmsnclass/soap/msnab_servicetypes.xsd b/plugins/Msn/extlib/phpmsnclass/soap/msnab_servicetypes.xsd new file mode 100644 index 0000000000..3fa9798b62 --- /dev/null +++ b/plugins/Msn/extlib/phpmsnclass/soap/msnab_servicetypes.xsd @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/Msn/extlib/phpmsnclass/soap/msnab_sharingservice.wsdl b/plugins/Msn/extlib/phpmsnclass/soap/msnab_sharingservice.wsdl new file mode 100644 index 0000000000..7ec87f90c9 --- /dev/null +++ b/plugins/Msn/extlib/phpmsnclass/soap/msnab_sharingservice.wsdl @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/Msn/msn_waiting_message.php b/plugins/Msn/msn_waiting_message.php new file mode 100644 index 0000000000..0af7c4f3ec --- /dev/null +++ b/plugins/Msn/msn_waiting_message.php @@ -0,0 +1,132 @@ + DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'screenname' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, + 'message' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, + 'created' => DB_DATAOBJECT_TIME + DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, + 'claimed' => DB_DATAOBJECT_TIME + DB_DATAOBJECT_STR); + } + + /** + * return key definitions for DB_DataObject + * + * DB_DataObject needs to know about keys that the table has, since it + * won't appear in StatusNet's own keys list. In most cases, this will + * simply reference your keyTypes() function. + * + * @return array list of key field names + */ + public 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. This key information is used to store and clear + * cached data, so be sure to list any key that will be used for static + * lookups. + * + * @return array associative array of key definitions, field name to type: + * 'K' for primary key: for compound keys, add an entry for each component; + * 'U' for unique keys: compound keys are not well supported here. + */ + public function keyTypes() { + return array('id' => 'K'); + } + + /** + * Magic formula for non-autoincrementing integer primary keys + * + * If a table has a single integer column as its primary key, DB_DataObject + * assumes that the column is auto-incrementing and makes a sequence table + * to do this incrementation. Since we don't need this for our class, we + * overload this method and return the magic formula that DB_DataObject needs. + * + * @return array magic three-false array that stops auto-incrementing. + */ + function sequenceKey() { + return array(false, false, false); + } + + /** + * @param string $screenname screenname or array of screennames to pull from + * If not specified, checks all queues in the system. + */ + public static function top($screenname = null) { + $wm = new Msn_waiting_message(); + if ($screenname) { + if (is_array($screenname)) { + // @fixme use safer escaping + $list = implode("','", array_map('addslashes', $screenname)); + $wm->whereAdd("screenname in ('$list')"); + } else { + $wm->screenname = $screenname; + } + } + $wm->orderBy('created'); + $wm->whereAdd('claimed is null'); + + $wm->limit(1); + + $cnt = $wm->find(true); + + if ($cnt) { + # XXX: potential race condition + # can we force it to only update if claimed is still null + # (or old)? + common_log(LOG_INFO, 'claiming msn waiting message id = ' . $wm->id); + $orig = clone($wm); + $wm->claimed = common_sql_now(); + $result = $wm->update($orig); + if ($result) { + common_log(LOG_INFO, 'claim succeeded.'); + return $wm; + } else { + common_log(LOG_INFO, 'claim failed.'); + } + } + $wm = null; + return null; + } + + /** + * Release a claimed item. + */ + public function releaseClaim() { + // DB_DataObject doesn't let us save nulls right now + $sql = sprintf("UPDATE msn_waiting_message SET claimed=NULL WHERE id=%d", $this->id); + $this->query($sql); + + $this->claimed = null; + $this->encache(); + } +} diff --git a/plugins/Msn/msnmanager.php b/plugins/Msn/msnmanager.php new file mode 100644 index 0000000000..a8996ecafa --- /dev/null +++ b/plugins/Msn/msnmanager.php @@ -0,0 +1,275 @@ +. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * MSN background connection manager for MSN-using queue handlers, + * allowing them to send outgoing messages on the right connection. + * + * Input is handled during socket select loop, keepalive pings during idle. + * Any incoming messages will be handled. + * + * In a multi-site queuedaemon.php run, one connection will be instantiated + * for each site being handled by the current process that has MSN enabled. + */ + +class MsnManager extends ImManager { + public $conn = null; + protected $lastPing = null; + protected $pingInterval; + + /** + * Initialise connection to server. + * + * @return boolean true on success + */ + public function start($master) { + if (parent::start($master)) { + $this->requeue_waiting_messages(); + $this->connect(); + return true; + } else { + return false; + } + } + + /** + * Return any open sockets that the run loop should listen + * for input on. + * + * @return array Array of socket resources + */ + public function getSockets() { + $this->connect(); + if ($this->conn) { + return $this->conn->getSockets(); + } else { + return array(); + } + } + + /** + * Idle processing for io manager's execution loop. + * Send keepalive pings to server. + * + * @return void + */ + public function idle($timeout = 0) { + if (empty($this->lastPing) || time() - $this->lastPing > $this->pingInterval) { + $this->send_ping(); + } + } + + /** + * Message pump is triggered on socket input, so we only need an idle() + * call often enough to trigger our outgoing pings. + */ + public function timeout() { + return $this->pingInterval; + } + + /** + * Process MSN events that have come in over the wire. + * + * @param resource $socket Socket ready + * @return void + */ + public function handleInput($socket) { + common_log(LOG_DEBUG, 'Servicing the MSN queue.'); + $this->stats('msn_process'); + $this->conn->receive(); + } + + /** + * Initiate connection + * + * @return void + */ + public function connect() { + if (!$this->conn) { + $this->conn = new MSN( + array( + 'user' => $this->plugin->user, + 'password' => $this->plugin->password, + 'alias' => $this->plugin->nickname, + 'psm' => 'Send me a message to post a notice', + 'debug' => false + ) + ); + $this->conn->registerHandler('IMin', array($this, 'handle_msn_message')); + $this->conn->registerHandler('SessionReady', array($this, 'handle_session_ready')); + $this->conn->registerHandler('Pong', array($this, 'update_ping_time')); + $this->conn->registerHandler('ConnectFailed', array($this, 'handle_connect_failed')); + $this->conn->registerHandler('Reconnect', array($this, 'handle_reconnect')); + $this->conn->signon(); + $this->lastPing = time(); + } + return $this->conn; + } + + /** + * Called by the idle process to send a ping + * when necessary + * + * @return void + */ + protected function send_ping() { + $this->connect(); + if (!$this->conn) { + return false; + } + + $this->conn->sendPing(); + $this->lastPing = time(); + $this->pingInterval = 50; + return true; + } + + /** + * Update the time till the next ping + * + * @param $data Time till next ping + * @return void + */ + public function update_ping_time($data) { + $this->pingInterval = $data; + } + + /** + * Called via a callback when a message is received + * + * Passes it back to the queuing system + * + * @param array $data Data + * @return boolean + */ + public function handle_msn_message($data) { + $this->plugin->enqueueIncomingRaw($data); + return true; + } + + /** + * Called via a callback when a session becomes ready + * + * @param array $data Data + */ + public function handle_session_ready($data) { + $sessionFailed = false; + $wm = Msn_waiting_message::top($data['to']); + while ($wm != NULL) { + if ($sessionFailed) { + $this->plugin->sendMessage($wm->screenname, $wm->message); + $sessionFailed = true; + } elseif (!$this->conn->sendMessage($wm->screenname, $wm->message, $ignore)) { + $this->plugin->sendMessage($wm->screenname, $wm->message); + } + + $wm->delete(); + $wm = Msn_waiting_message::top($data['to']); + } + } + + /** + * Requeue messages from the waiting table so we try + * to send them again + * + * @return void + */ + protected function requeue_waiting_messages() { + $wm = Msn_waiting_message::top(); + while ($wm != NULL) { + $this->plugin->sendMessage($wm->screenname, $wm->message); + $wm->delete(); + $wm = Msn_waiting_message::top(); + } + } + + /** + * Called by callback to log failure during connect + * + * @param string $message error message reported + * @return void + */ + public function handle_connect_failed($message) { + common_log(LOG_NOTICE, 'MSN connect failed, retrying: ' . $message); + } + + /** + * Called by callback to log reconnection + * + * @param void $data Not used (there to keep callback happy) + * @return void + */ + public function handle_reconnect($data) { + common_log(LOG_NOTICE, 'MSN reconnecting'); + // Requeue messages waiting in the DB + $this->requeue_waiting_messages(); + } + + /** + * Enters a message into the database for sending via a callback + * when the session is established + * + * @param string $to Intended recipient + * @param string $message Message + */ + protected function enqueue_waiting_message($to, $message) { + $wm = new Msn_waiting_message(); + + $wm->screenname = $to; + $wm->message = $message; + $wm->created = common_sql_now(); + $result = $wm->insert(); + + if (!$result) { + common_log_db_error($wm, 'INSERT', __FILE__); + throw new ServerException('DB error inserting queue item'); + } + + return true; + } + + /** + * Send a message using the daemon + * + * @param $data Message data + * @return boolean true on success + */ + public function send_raw_message($data) { + $this->connect(); + if (!$this->conn) { + return false; + } + + $waitForSession = false; + if (!$this->conn->sendMessage($data['to'], $data['message'], $waitForSession)) { + if ($waitForSession) { + $this->enqueue_waiting_message($data['to'], $data['message']); + } else { + return false; + } + } + + // Sending a command updates the time till next ping + $this->lastPing = time(); + $this->pingInterval = 50; + return true; + } +} diff --git a/plugins/NoticeTitle/NoticeTitlePlugin.php b/plugins/NoticeTitle/NoticeTitlePlugin.php new file mode 100644 index 0000000000..9f53173db2 --- /dev/null +++ b/plugins/NoticeTitle/NoticeTitlePlugin.php @@ -0,0 +1,331 @@ +. + * + * @category NoticeTitle + * @package StatusNet + * @author Evan Prodromou + * @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 + * @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; + } + + /** + * If a notice has a title, show it in the element + * + * @param Action $action Action being executed + * + * @return boolean hook value + */ + + function onStartShowHeadTitle($action) + { + $actionName = $action->trimmed('action'); + + if ($actionName == 'shownotice') { + $title = Notice_title::fromNotice($action->notice); + if (!empty($title)) { + $action->element('title', null, + // TRANS: Page title. %1$s is the title, %2$s is the site name. + sprintf(_("%1\$s - %2\$s"), + $title, + common_config('site', 'name'))); + } + } + + return true; + } + + /** + * If a notice has a title, show it in the <h1> element + * + * @param Action $action Action being executed + * + * @return boolean hook value + */ + + function onStartShowPageTitle($action) + { + $actionName = $action->trimmed('action'); + + if ($actionName == 'shownotice') { + $title = Notice_title::fromNotice($action->notice); + if (!empty($title)) { + $action->element('h1', null, $title); + return false; + } + } + + return true; + } +} + diff --git a/plugins/NoticeTitle/Notice_title.php b/plugins/NoticeTitle/Notice_title.php new file mode 100644 index 0000000000..b66ea9901b --- /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 f183bc7aea..dd15099542 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 @@ -41,8 +50,6 @@ class OStatusPlugin extends Plugin function onRouterInitialized($m) { // Discovery actions - $m->connect('.well-known/host-meta', - array('action' => 'hostmeta')); $m->connect('main/xrd', array('action' => 'userxrd')); $m->connect('main/ownerxrd', @@ -87,6 +94,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 +111,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 +165,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)); } @@ -231,17 +245,6 @@ class OStatusPlugin extends Plugin return true; } - /** - * Check if we've got remote replies to send via Salmon. - * - * @fixme push webfinger lookup & sending to a background queue - * @fixme also detect short-form name for remote subscribees where not ambiguous - */ - - function onEndNoticeSave($notice) - { - } - /** * Find any explicit remote mentions. Accepted forms: * Webfinger: @user@example.com @@ -257,7 +260,7 @@ class OStatusPlugin extends Plugin $matches = array(); // Webfinger matches: @user@example.com - if (preg_match_all('!(?:^|\s+)@((?:\w+\.)*\w+@(?:\w+\.)*\w+(?:\w+\-\w+)*\.\w+)!', + if (preg_match_all('!(?:^|\s+)@((?:\w+\.)*\w+@(?:\w+\-?\w+\.)*\w+(?:\w+\-\w+)*\.\w+)!', $text, $wmatches, PREG_OFFSET_CAPTURE)) { @@ -452,6 +455,7 @@ class OStatusPlugin extends Plugin return false; } } + return true; } /** @@ -471,6 +475,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. @@ -540,7 +562,9 @@ class OStatusPlugin extends Plugin $act->time = time(); $act->title = _("Follow"); - $act->content = sprintf(_("%s is now following %s."), + // TRANS: Success message for subscribe to user attempt through OStatus. + // TRANS: %1$s is the subscriber name, %2$s is the subscribed user's name. + $act->content = sprintf(_("%1$s is now following %2$s."), $subscriber->getBestName(), $other->getBestName()); @@ -588,7 +612,9 @@ class OStatusPlugin extends Plugin $act->time = time(); $act->title = _("Unfollow"); - $act->content = sprintf(_("%s stopped following %s."), + // TRANS: Success message for unsubscribe from user attempt through OStatus. + // TRANS: %1$s is the unsubscriber's name, %2$s is the unsubscribed user's name. + $act->content = sprintf(_("%1$s stopped following %2$s."), $profile->getBestName(), $other->getBestName()); @@ -633,7 +659,9 @@ class OStatusPlugin extends Plugin $act->time = time(); $act->title = _m("Join"); - $act->content = sprintf(_m("%s has joined group %s."), + // TRANS: Success message for subscribe to group attempt through OStatus. + // TRANS: %1$s is the member name, %2$s is the subscribed group's name. + $act->content = sprintf(_m("%1$s has joined group %2$s."), $member->getBestName(), $oprofile->getBestName()); @@ -682,7 +710,9 @@ class OStatusPlugin extends Plugin $act->time = time(); $act->title = _m("Leave"); - $act->content = sprintf(_m("%s has left group %s."), + // TRANS: Success message for unsubscribe from group attempt through OStatus. + // TRANS: %1$s is the member name, %2$s is the unsubscribed group's name. + $act->content = sprintf(_m("%1$s has left group %2$s."), $member->getBestName(), $oprofile->getBestName()); @@ -722,7 +752,9 @@ class OStatusPlugin extends Plugin $act->time = time(); $act->title = _("Favor"); - $act->content = sprintf(_("%s marked notice %s as a favorite."), + // TRANS: Success message for adding a favorite notice through OStatus. + // TRANS: %1$s is the favoring user's name, %2$s is URI to the favored notice. + $act->content = sprintf(_("%1$s marked notice %2$s as a favorite."), $profile->getBestName(), $notice->uri); @@ -766,7 +798,9 @@ class OStatusPlugin extends Plugin common_date_iso8601(time())); $act->time = time(); $act->title = _("Disfavor"); - $act->content = sprintf(_("%s marked notice %s as no longer a favorite."), + // TRANS: Success message for remove a favorite notice through OStatus. + // TRANS: %1$s is the unfavoring user's name, %2$s is URI to the no longer favored notice. + $act->content = sprintf(_("%1$s marked notice %2$s as no longer a favorite."), $profile->getBestName(), $notice->uri); @@ -841,7 +875,7 @@ class OStatusPlugin extends Plugin 'class' => 'entity_subscribe')); $action->element('a', array('href' => common_local_url($target), 'class' => 'entity_remote_subscribe') - , _m('Remote')); + , _m('Remote')); // @todo: i18n: Add translator hint for this text. $action->elementEnd('p'); $action->elementEnd('div'); } @@ -881,6 +915,8 @@ class OStatusPlugin extends Plugin common_date_iso8601(time())); $act->time = time(); $act->title = _m("Profile update"); + // TRANS: Ping text for remote profile update through OStatus. + // TRANS: %s is user that updated their profile. $act->content = sprintf(_m("%s has updated their profile page."), $profile->getBestName()); @@ -910,7 +946,7 @@ class OStatusPlugin extends Plugin array('nickname' => $profileUser->nickname)); $output->element('a', array('href' => $url, 'class' => 'entity_remote_subscribe'), - _m('Subscribe')); + _m('Subscribe')); // @todo: i18n: Add context. $output->elementEnd('li'); } } @@ -926,7 +962,7 @@ class OStatusPlugin extends Plugin 'homepage' => 'http://status.net/wiki/Plugin:OStatus', 'rawdescription' => _m('Follow people across social networks that implement '. - '<a href="http://ostatus.org/">OStatus</a>.')); + '<a href="http://ostatus.org/">OStatus</a>.')); // @todo i18n: Add translator hint. return true; } @@ -948,4 +984,38 @@ 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; + } + + function onStartGetProfileFromURI($uri, &$profile) { + + // XXX: do discovery here instead (OStatus_profile::ensureProfileURI($uri)) + + $oprofile = Ostatus_profile::staticGet('uri', $uri); + + if (!empty($oprofile) && !$oprofile->isGroup()) { + $profile = $oprofile->localProfile(); + return false; + } + + return true; + } + + function onStartHostMetaLinks(&$links) { + $url = common_local_url('userxrd'); + $url.= '?uri={uri}'; + $links[] = array('rel' => Discovery::LRDD_REL, + 'template' => $url, + 'title' => array('Resource Descriptor')); + } } diff --git a/plugins/OStatus/README b/plugins/OStatus/README index 3a98b7b256..ea5dfc055f 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 d60725a71b..5094dccf0f 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/ostatusgroup.php b/plugins/OStatus/actions/ostatusgroup.php index f325ba0532..1861e866f2 100644 --- a/plugins/OStatus/actions/ostatusgroup.php +++ b/plugins/OStatus/actions/ostatusgroup.php @@ -74,7 +74,7 @@ class OStatusGroupAction extends OStatusSubAction $this->input('profile', _m('Join group'), $this->profile_uri, - _m("OStatus group's address, like http://example.net/group/nickname")); + _m("OStatus group's address, like http://example.net/group/nickname.")); $this->elementEnd('li'); $this->elementEnd('ul'); @@ -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/ostatusinit.php b/plugins/OStatus/actions/ostatusinit.php index 22aea9f709..0c991aba98 100644 --- a/plugins/OStatus/actions/ostatusinit.php +++ b/plugins/OStatus/actions/ostatusinit.php @@ -45,13 +45,13 @@ class OStatusInitAction extends Action // Local user or group the remote wants to subscribe to $this->nickname = $this->trimmed('nickname'); $this->group = $this->trimmed('group'); - + // Webfinger or profile URL of the remote user $this->profile = $this->trimmed('profile'); return true; } - + function handle($args) { parent::handle($args); @@ -69,7 +69,7 @@ class OStatusInitAction extends Action $this->showForm(); } } - + function showForm($err = null) { $this->err = $err; @@ -109,12 +109,12 @@ class OStatusInitAction extends Action $this->elementStart('ul', 'form_data'); $this->elementStart('li', array('id' => 'ostatus_nickname')); $this->input('nickname', _m('User nickname'), $this->nickname, - _m('Nickname of the user you want to follow')); + _m('Nickname of the user you want to follow.')); $this->hidden('group', $this->group); // pass-through for magic links $this->elementEnd('li'); $this->elementStart('li', array('id' => 'ostatus_profile')); $this->input('profile', _m('Profile Account'), $this->profile, - _m('Your account id (i.e. user@identi.ca)')); + _m('Your account id (e.g. user@identi.ca).')); $this->elementEnd('li'); $this->elementEnd('ul'); $this->submit('submit', $submit); @@ -199,7 +199,7 @@ class OStatusInitAction extends Action function title() { - return _m('OStatus Connect'); + return _m('OStatus Connect'); } - + } diff --git a/plugins/OStatus/actions/ostatussub.php b/plugins/OStatus/actions/ostatussub.php index 994af6e95c..4cbd7d0348 100644 --- a/plugins/OStatus/actions/ostatussub.php +++ b/plugins/OStatus/actions/ostatussub.php @@ -64,11 +64,11 @@ class OStatusSubAction extends Action $this->input('profile', _m('Subscribe to'), $this->profile_uri, - _m("OStatus user's address, like nickname@example.com or http://example.net/nickname")); + _m("OStatus user's address, like nickname@example.com or http://example.net/nickname")); // @todo i18n FIXME: needs context/translator hint. $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('validate', _m('Continue')); + $this->submit('validate', _m('Continue')); // @todo i18n FIXME: needs context/translator hint. $this->elementEnd('fieldset'); @@ -103,10 +103,10 @@ class OStatusSubAction extends Action $this->hidden('profile', $this->profile_uri); if ($this->oprofile->isGroup()) { $this->submit('submit', _m('Join'), 'submit', null, - _m('Join this group')); + _m('Join this group')); // @todo i18n FIXME: needs context/translator hint. } else { $this->submit('submit', _m('Confirm'), 'submit', null, - _m('Subscribe to this user')); + _m('Subscribe to this user')); // @todo i18n FIXME: needs context/translator hint. } $this->elementEnd('fieldset'); $this->elementEnd('form'); @@ -244,13 +244,13 @@ class OStatusSubAction extends Action } else if (Validate::uri($this->profile_uri)) { $this->oprofile = Ostatus_profile::ensureProfileURL($this->profile_uri); } else { - $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname"); + $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); common_debug('Invalid address format.', __FILE__); return false; } return true; } catch (FeedSubBadURLException $e) { - $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname"); + $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); common_debug('Invalid URL or could not reach server.', __FILE__); } catch (FeedSubBadResponseException $e) { $this->error = _m("Sorry, we could not reach that feed. Please try that OStatus address again later."); @@ -269,7 +269,7 @@ class OStatusSubAction extends Action common_debug('Not a recognized feed type.', __FILE__); } catch (Exception $e) { // Any new ones we forgot about - $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname"); + $this->error = _m("Sorry, we could not reach that address. Please make sure that the OStatus address is like nickname@example.com or http://example.net/nickname."); common_debug(sprintf('Bad feed URL: %s %s', get_class($e), $e->getMessage()), __FILE__); } @@ -446,4 +446,18 @@ class OStatusSubAction extends Action { return common_local_url('ostatussub'); } + + /** + * Disable the send-notice form at the top of the page. + * This is really just a hack for the broken CSS in the Cloudy theme, + * I think; copying from other non-notice-navigation pages that do this + * as well. There will be plenty of others also broken. + * + * @fixme fix the cloudy theme + * @fixme do this in a more general way + */ + function showNoticeForm() { + // nop + } + } diff --git a/plugins/OStatus/actions/ownerxrd.php b/plugins/OStatus/actions/ownerxrd.php index 9c141d8c79..3fcb982b87 100644 --- a/plugins/OStatus/actions/ownerxrd.php +++ b/plugins/OStatus/actions/ownerxrd.php @@ -32,7 +32,7 @@ class OwnerxrdAction extends XrdAction function prepare($args) { $this->user = User::siteOwner(); - + if (!$this->user) { $this->clientError(_('No such user.'), 404); return false; @@ -40,7 +40,7 @@ class OwnerxrdAction extends XrdAction $nick = common_canonical_nickname($this->user->nickname); $acct = 'acct:' . $nick . '@' . common_config('site', 'server'); - + $this->xrd = new XRD(); // Check to see if a $config['webfinger']['owner'] has been set diff --git a/plugins/OStatus/actions/pushcallback.php b/plugins/OStatus/actions/pushcallback.php index 9a2067b8ca..6c69787455 100644 --- a/plugins/OStatus/actions/pushcallback.php +++ b/plugins/OStatus/actions/pushcallback.php @@ -37,7 +37,7 @@ class PushCallbackAction extends Action $this->handleGet(); } } - + /** * Handler for POST content updates from the hub */ @@ -46,11 +46,12 @@ class PushCallbackAction extends Action $feedid = $this->arg('feed'); common_log(LOG_INFO, "POST for feed id $feedid"); if (!$feedid) { - throw new ServerException('Empty or invalid feed id', 400); + throw new ServerException('Empty or invalid feed id.', 400); } $feedsub = FeedSub::staticGet('id', $feedid); if (!$feedsub) { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ServerException('Unknown PuSH feed id ' . $feedid, 400); } @@ -70,7 +71,7 @@ class PushCallbackAction extends Action $qm = QueueManager::get(); $qm->enqueue($data, 'pushin'); } - + /** * Handler for GET verification requests from the hub. */ @@ -88,20 +89,24 @@ class PushCallbackAction extends Action $feedsub = FeedSub::staticGet('uri', $topic); if (!$feedsub) { - throw new ClientException("Bad hub.topic feed $topic", 404); + // @todo i18n FIXME: added i18n and use sprintf when using parameters. + throw new ClientException("Bad hub.topic feed $topic.", 404); } if ($feedsub->verify_token !== $verify_token) { - throw new ClientException("Bad hub.verify_token $token for $topic", 404); + // @todo i18n FIXME: added i18n and use sprintf when using parameters. + throw new ClientException("Bad hub.verify_token $token for $topic.", 404); } if ($mode == 'subscribe') { // We may get re-sub requests legitimately. if ($feedsub->sub_state != 'subscribe' && $feedsub->sub_state != 'active') { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Unexpected subscribe request for $topic.", 404); } } else { if ($feedsub->sub_state != 'unsubscribe') { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Unexpected unsubscribe request for $topic.", 404); } } diff --git a/plugins/OStatus/actions/pushhub.php b/plugins/OStatus/actions/pushhub.php index 842d65e7d2..6909b85391 100644 --- a/plugins/OStatus/actions/pushhub.php +++ b/plugins/OStatus/actions/pushhub.php @@ -36,7 +36,6 @@ Things to consider... */ - class PushHubAction extends Action { function arg($arg, $def=null) @@ -63,8 +62,10 @@ class PushHubAction extends Action $this->subunsub($mode); break; case "publish": + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Publishing outside feeds not supported.", 400); default: + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Unrecognized mode '$mode'.", 400); } } @@ -84,16 +85,19 @@ class PushHubAction extends Action $topic = $this->argUrl('hub.topic'); if (!$this->recognizedFeed($topic)) { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Unsupported hub.topic $topic; this hub only serves local user and group Atom feeds."); } $verify = $this->arg('hub.verify'); // @fixme may be multiple if ($verify != 'sync' && $verify != 'async') { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Invalid hub.verify $verify; must be sync or async."); } $lease = $this->arg('hub.lease_seconds', null); if ($mode == 'subscribe' && $lease != '' && !preg_match('/^\d+$/', $lease)) { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Invalid hub.lease $lease; must be empty or positive integer."); } @@ -101,6 +105,7 @@ class PushHubAction extends Action $secret = $this->arg('hub.secret', null); if ($secret != '' && strlen($secret) >= 200) { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Invalid hub.secret $secret; must be under 200 bytes."); } @@ -152,6 +157,7 @@ class PushHubAction extends Action if ($feed == $userFeed) { $user = User::staticGet('id', $id); if (!$user) { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Invalid hub.topic $feed; user doesn't exist."); } else { return true; @@ -160,6 +166,7 @@ class PushHubAction extends Action if ($feed == $groupFeed) { $user = User_group::staticGet('id', $id); if (!$user) { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Invalid hub.topic $feed; group doesn't exist."); } else { return true; @@ -183,6 +190,7 @@ class PushHubAction extends Action if (Validate::uri($url, $params)) { return $url; } else { + // @todo i18n FIXME: added i18n and use sprintf when using parameters. throw new ClientException("Invalid URL passed for $arg: '$url'"); } } @@ -199,4 +207,3 @@ class PushHubAction extends Action return HubSub::staticGet($feed, $callback); } } - diff --git a/plugins/OStatus/actions/usersalmon.php b/plugins/OStatus/actions/usersalmon.php index 6c360c49f9..06a72bf024 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: @@ -71,16 +71,18 @@ 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 + // or c) in reply to a notice to the attention of this user - $context = $this->act->context; + $context = $this->activity->context; if (!empty($context->replyToID)) { $notice = Notice::staticGet('uri', $context->replyToID); if (empty($notice)) { throw new ClientException("In reply to unknown notice"); } - if ($notice->profile_id != $this->user->id) { - throw new ClientException("In reply to a notice not by this user"); + if ($notice->profile_id != $this->user->id && + !in_array($this->user->id, $notice->getReplies())) { + throw new ClientException("In reply to a notice not by this user and not mentioning this user"); } } else if (!empty($context->attention)) { if (!in_array($this->user->uri, $context->attention) && @@ -92,7 +94,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 +145,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 +166,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/actions/userxrd.php b/plugins/OStatus/actions/userxrd.php index 6a6886eb8c..dd720568b4 100644 --- a/plugins/OStatus/actions/userxrd.php +++ b/plugins/OStatus/actions/userxrd.php @@ -33,7 +33,7 @@ class UserxrdAction extends XrdAction $this->uri = $this->trimmed('uri'); $this->uri = Discovery::normalize($this->uri); - + if (Discovery::isWebfinger($this->uri)) { $parts = explode('@', substr(urldecode($this->uri), 5)); if (count($parts) == 2) { diff --git a/plugins/OStatus/classes/FeedSub.php b/plugins/OStatus/classes/FeedSub.php index b10509dae6..6f9e0856ab 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,11 +241,15 @@ 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"); + 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,17 +271,48 @@ 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"); + throw new ServerException("Attempting to end PuSH subscription for feed with no hub."); } } 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'); @@ -450,4 +502,3 @@ class FeedSub extends Memcached_DataObject } } - diff --git a/plugins/OStatus/classes/HubSub.php b/plugins/OStatus/classes/HubSub.php index cdace3c1fc..e01ae4e798 100644 --- a/plugins/OStatus/classes/HubSub.php +++ b/plugins/OStatus/classes/HubSub.php @@ -206,6 +206,7 @@ class HubSub extends Memcached_DataObject if ($status >= 200 && $status < 300) { common_log(LOG_INFO, "Verified $mode of $this->callback:$this->topic"); } else { + // @todo i18n FIXME: add i18n and use sprintf for parameter. throw new ClientException("Hub subscriber verification returned HTTP $status"); } @@ -260,6 +261,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 @@ -273,6 +305,26 @@ class HubSub extends Memcached_DataObject $qm->enqueue($data, 'hubout'); } + /** + * 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. @@ -308,4 +360,3 @@ class HubSub extends Memcached_DataObject } } } - diff --git a/plugins/OStatus/classes/Magicsig.php b/plugins/OStatus/classes/Magicsig.php index f8c56a05f3..e39a6d8f7c 100644 --- a/plugins/OStatus/classes/Magicsig.php +++ b/plugins/OStatus/classes/Magicsig.php @@ -33,21 +33,21 @@ class Magicsig extends Memcached_DataObject { const PUBLICKEYREL = 'magic-public-key'; - + public $__table = 'magicsig'; public $user_id; public $keypair; public $alg; - + public $publicKey; public $privateKey; - + public function __construct($alg = 'RSA-SHA256') { $this->alg = $alg; } - + public /*static*/ function staticGet($k, $v=null) { $obj = parent::staticGet(__CLASS__, $k, $v); @@ -111,7 +111,7 @@ class Magicsig extends Memcached_DataObject public function generate($user_id) { $rsa = new Crypt_RSA(); - + $keypair = $rsa->createKey(); $rsa->loadKey($keypair['privatekey']); @@ -121,7 +121,7 @@ class Magicsig extends Memcached_DataObject $this->publicKey = new Crypt_RSA(); $this->publicKey->loadKey($keypair['publickey']); - + $this->user_id = $user_id; $this->insert(); } @@ -136,13 +136,13 @@ class Magicsig extends Memcached_DataObject $private_exp = '.' . Magicsig::base64_url_encode($this->privateKey->exponent->toBytes()); } - return 'RSA.' . $mod . '.' . $exp . $private_exp; + return 'RSA.' . $mod . '.' . $exp . $private_exp; } - + public static function fromString($text) { $magic_sig = new Magicsig(); - + // remove whitespace $text = preg_replace('/\s+/', '', $text); @@ -150,7 +150,7 @@ class Magicsig extends Memcached_DataObject if (!preg_match('/RSA\.([^\.]+)\.([^\.]+)(.([^\.]+))?/', $text, $matches)) { return false; } - + $mod = $matches[1]; $exp = $matches[2]; if (!empty($matches[4])) { @@ -184,7 +184,7 @@ class Magicsig extends Memcached_DataObject $this->publicKey = $rsa; } } - + public function getName() { return $this->alg; @@ -199,7 +199,7 @@ class Magicsig extends Memcached_DataObject } } - + public function sign($bytes) { $sig = $this->privateKey->sign($bytes); @@ -223,5 +223,3 @@ class Magicsig extends Memcached_DataObject return base64_decode(strtr($input, '-_', '+/')); } } - - diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index e3b3daa2c5..19fe5169b4 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -188,9 +188,11 @@ class Ostatus_profile extends Memcached_DataObject } else if ($this->group_id && !$this->profile_id) { return true; } else if ($this->group_id && $this->profile_id) { - throw new ServerException("Invalid ostatus_profile state: both group and profile IDs set for $this->uri"); + // @todo i18n FIXME: use sprintf and add i18n. + throw new ServerException("Invalid ostatus_profile state: both group and profile IDs set for $this->uri."); } else { - throw new ServerException("Invalid ostatus_profile state: both group and profile IDs empty for $this->uri"); + // @todo i18n FIXME: use sprintf and add i18n. + throw new ServerException("Invalid ostatus_profile state: both group and profile IDs empty for $this->uri."); } } @@ -215,22 +217,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(); } /** @@ -240,6 +233,21 @@ class Ostatus_profile extends Memcached_DataObject * @return boolean */ 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); @@ -247,13 +255,14 @@ class Ostatus_profile extends Memcached_DataObject } 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; } /** @@ -363,7 +372,8 @@ class Ostatus_profile extends Memcached_DataObject } else if ($entry instanceof Notice) { return $preamble . $entry->asAtomEntry(true, true); } else { - throw new ServerException("Invalid type passed to Ostatus_profile::notify; must be XML string or Activity entry"); + // @todo i18n FIXME: use sprintf and add i18n. + throw new ServerException("Invalid type passed to Ostatus_profile::notify; must be XML string or Activity entry."); } } @@ -438,26 +448,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))) { - if ($activity->verb == ActivityVerb::POST) { - $this->processPost($activity, $source); - } else { - common_log(LOG_INFO, "Ignoring activity with unrecognized verb $activity->verb"); + // @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."); + } + + Event::handle('EndHandleFeedEntry', array($activity)); } } @@ -486,8 +502,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; @@ -527,7 +552,8 @@ class Ostatus_profile extends Memcached_DataObject $sourceContent = $note->title; } else { // @fixme fetch from $sourceUrl? - throw new ClientException("No content for notice {$sourceUri}"); + // @todo i18n FIXME: use sprintf and add i18n. + throw new ClientException("No content for notice {$sourceUri}."); } // Get (safe!) HTML and text versions of the content @@ -565,7 +591,7 @@ class Ostatus_profile extends Memcached_DataObject ' class="attachment more"' . ' title="'. htmlspecialchars(_m('Show more')) . '">' . '…' . - '</a>'; + '</a>'; // @todo i18n FIXME: add translator hint/context. } } @@ -668,7 +694,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) { @@ -678,14 +704,16 @@ class Ostatus_profile extends Memcached_DataObject } // Is the recipient a remote group? - $oprofile = Ostatus_profile::staticGet('uri', $recipient); + $oprofile = Ostatus_profile::ensureProfileURI($recipient); + if ($oprofile) { if ($oprofile->isGroup()) { // Deliver to local members of this remote group. // @fixme sender verification? $groups[] = $oprofile->group_id; } else { - common_log(LOG_DEBUG, "Skipping reply to remote profile $recipient"); + // may be canonicalized or something + $replies[] = $oprofile->uri; } continue; } @@ -748,6 +776,7 @@ class Ostatus_profile extends Memcached_DataObject $response = $client->get($profile_url); if (!$response->isOk()) { + // @todo i18n FIXME: use sprintf and add i18n. throw new Exception("Could not reach profile page: " . $profile_url); } @@ -805,6 +834,7 @@ class Ostatus_profile extends Memcached_DataObject return self::ensureFeedURL($feedurl, $hints); } + // @todo i18n FIXME: use sprintf and add i18n. throw new Exception("Could not find a feed URL for profile page " . $finalUrl); } @@ -837,6 +867,7 @@ class Ostatus_profile extends Memcached_DataObject $user = User::staticGet('id', $profile->id); if (!empty($user)) { + // @todo i18n FIXME: use sprintf and add i18n. throw new OStatusShadowException($profile, "'$profile_url' is the profile for local user '{$user->nickname}'."); } @@ -862,12 +893,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(); } @@ -1001,7 +1032,7 @@ class Ostatus_profile extends Memcached_DataObject return; } if (!common_valid_http_url($url)) { - throw new ServerException(_m("Invalid avatar URL %s"), $url); + throw new ServerException(sprintf(_m("Invalid avatar URL %s."), $url)); } if ($this->isGroup()) { @@ -1011,7 +1042,7 @@ class Ostatus_profile extends Memcached_DataObject } if (!$self) { throw new ServerException(sprintf( - _m("Tried to update avatar for unsaved remote profile %s"), + _m("Tried to update avatar for unsaved remote profile %s."), $this->uri)); } @@ -1019,7 +1050,7 @@ class Ostatus_profile extends Memcached_DataObject // ripped from oauthstore.php (for old OMB client) $temp_filename = tempnam(sys_get_temp_dir(), 'listener_avatar'); if (!copy($url, $temp_filename)) { - throw new ServerException(sprintf(_m("Unable to fetch avatar from %s"), $url)); + throw new ServerException(sprintf(_m("Unable to fetch avatar from %s."), $url)); } if ($this->isGroup()) { @@ -1034,6 +1065,14 @@ class Ostatus_profile extends Memcached_DataObject null, common_timestamp()); rename($temp_filename, Avatar::path($filename)); + // @fixme hardcoded chmod is lame, but seems to be necessary to + // keep from accidentally saving images from command-line (queues) + // that can't be read from web server, which causes hard-to-notice + // problems later on: + // + // http://status.net/open-source/issues/2663 + chmod(Avatar::path($filename), 0644); + $self->setOriginal($filename); $orig = clone($this); @@ -1202,7 +1241,7 @@ class Ostatus_profile extends Memcached_DataObject if ($object->link && common_valid_http_url($object->link)) { return $object->link; } - throw new ServerException("No author ID URI found"); + throw new ServerException("No author ID URI found."); } /** @@ -1232,10 +1271,12 @@ class Ostatus_profile extends Memcached_DataObject $user = User::staticGet('uri', $homeuri); if ($user) { + // @todo i18n FIXME: add i18n. throw new Exception("Local user can't be referenced as remote."); } if (OStatusPlugin::localGroupFromUrl($homeuri)) { + // @todo i18n FIXME: add i18n. throw new Exception("Local group can't be referenced as remote."); } @@ -1263,10 +1304,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(); } @@ -1287,7 +1328,8 @@ class Ostatus_profile extends Memcached_DataObject $oprofile->profile_id = $profile->insert(); if (!$oprofile->profile_id) { - throw new ServerException("Can't save local profile"); + // @todo i18n FIXME: add i18n. + throw new ServerException("Can't save local profile."); } } else { $group = new User_group(); @@ -1297,21 +1339,31 @@ class Ostatus_profile extends Memcached_DataObject $oprofile->group_id = $group->insert(); if (!$oprofile->group_id) { - throw new ServerException("Can't save local profile"); + // @todo i18n FIXME: add i18n. + throw new ServerException("Can't save local profile."); } } $ok = $oprofile->insert(); - if ($ok) { - $avatar = self::getActivityObjectAvatar($object, $hints); - if ($avatar) { - $oprofile->updateAvatar($avatar); - } - return $oprofile; - } else { - throw new ServerException("Can't save OStatus profile"); + if (!$ok) { + // @todo i18n FIXME: add i18n. + throw new ServerException("Can't save OStatus profile."); } + + $avatar = self::getActivityObjectAvatar($object, $hints); + + if ($avatar) { + try { + $oprofile->updateAvatar($avatar); + } catch (Exception $ex) { + // Profile is saved, but Avatar is messed up. We're + // just going to continue. + common_log(LOG_WARNING, "Exception saving OStatus profile avatar: ". $ex->getMessage()); + } + } + + return $oprofile; } /** @@ -1330,7 +1382,11 @@ class Ostatus_profile extends Memcached_DataObject } $avatar = self::getActivityObjectAvatar($object, $hints); if ($avatar) { - $this->updateAvatar($avatar); + try { + $this->updateAvatar($avatar); + } catch (Exception $ex) { + common_log(LOG_WARNING, "Exception saving OStatus profile avatar: " . $ex->getMessage()); + } } } @@ -1550,6 +1606,7 @@ class Ostatus_profile extends Memcached_DataObject if ($uri !== false) { if (is_null($uri)) { // Negative cache entry + // @todo i18n FIXME: add i18n. throw new Exception('Not a valid webfinger address.'); } $oprofile = Ostatus_profile::staticGet('uri', $uri); @@ -1577,6 +1634,7 @@ class Ostatus_profile extends Memcached_DataObject // Save negative cache entry so we don't waste time looking it up again. // @fixme distinguish temporary failures? self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), null); + // @todo i18n FIXME: add i18n. throw new Exception('Not a valid webfinger address.'); } @@ -1658,7 +1716,8 @@ class Ostatus_profile extends Memcached_DataObject if (!$profile_id) { common_log_db_error($profile, 'INSERT', __FILE__); - throw new Exception("Couldn't save profile for '$addr'"); + // @todo i18n FIXME: add i18n and use sprintf for parameter. + throw new Exception("Couldn't save profile for '$addr'."); } $oprofile = new Ostatus_profile(); @@ -1676,13 +1735,15 @@ class Ostatus_profile extends Memcached_DataObject if (!$result) { common_log_db_error($oprofile, 'INSERT', __FILE__); - throw new Exception("Couldn't save ostatus_profile for '$addr'"); + // @todo i18n FIXME: add i18n and use sprintf for parameter. + throw new Exception("Couldn't save ostatus_profile for '$addr'."); } self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->uri); return $oprofile; } + // @todo i18n FIXME: add i18n and use sprintf for parameter. throw new Exception("Couldn't find a valid profile for '$addr'"); } @@ -1730,6 +1791,37 @@ class Ostatus_profile extends Memcached_DataObject return $file; } + + static function ensureProfileURI($uri) + { + $oprofile = null; + + // First, try to query it + + $oprofile = Ostatus_profile::staticGet('uri', $uri); + + // If unfound, do discovery stuff + + if (empty($oprofile)) { + if (preg_match("/^(\w+)\:(.*)/", $uri, $match)) { + $protocol = $match[1]; + switch ($protocol) { + case 'http': + case 'https': + $oprofile = Ostatus_profile::ensureProfileURL($uri); + break; + case 'acct': + case 'mailto': + $rest = $match[2]; + $oprofile = Ostatus_profile::ensureWebfinger($rest); + default: + common_log("Unrecognized URI protocol for profile: $protocol ($uri)"); + break; + } + } + } + return $oprofile; + } } /** @@ -1751,4 +1843,3 @@ class OStatusShadowException extends Exception parent::__construct($message); } } - diff --git a/plugins/OStatus/lib/discovery.php b/plugins/OStatus/lib/discovery.php index 7187c1f3e9..04c6727207 100644 --- a/plugins/OStatus/lib/discovery.php +++ b/plugins/OStatus/lib/discovery.php @@ -106,7 +106,8 @@ class Discovery } } - throw new Exception('Unable to find services for '. $id); + // @todo Needs i18n. + throw new Exception('Unable to find services for '. $id . '.'); } public static function getService($links, $service) { @@ -160,7 +161,7 @@ class Discovery_LRDD_Host_Meta implements Discovery_LRDD } else { $domain = parse_url($uri, PHP_URL_HOST); } - + $url = 'http://'. $domain .'/.well-known/host-meta'; $xrd = Discovery::fetchXrd($url); diff --git a/plugins/OStatus/lib/discoveryhints.php b/plugins/OStatus/lib/discoveryhints.php index 80cfbbf15e..fa2ead7320 100644 --- a/plugins/OStatus/lib/discoveryhints.php +++ b/plugins/OStatus/lib/discoveryhints.php @@ -30,6 +30,7 @@ class DiscoveryHints { case Discovery::PROFILEPAGE: $hints['profileurl'] = $link['href']; break; + case Salmon::NS_MENTIONS: case Salmon::NS_REPLIES: $hints['salmon'] = $link['href']; break; @@ -83,7 +84,7 @@ class DiscoveryHints { $hints['fullname'] = implode(' ', $hcard['n']); } - if (array_key_exists('photo', $hcard)) { + if (array_key_exists('photo', $hcard) && count($hcard['photo'])) { $hints['avatar'] = $hcard['photo'][0]; } @@ -113,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 4809f9d35c..8a166a0be5 100644 --- a/plugins/OStatus/lib/feeddiscovery.php +++ b/plugins/OStatus/lib/feeddiscovery.php @@ -87,6 +87,16 @@ class FeedDiscovery return ActivityUtils::getLink($this->root, $rel, $type); } + /** + * 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. @@ -104,7 +114,7 @@ class FeedDiscovery $response = $client->get($url); } catch (HTTP_Request2_Exception $e) { common_log(LOG_ERR, __METHOD__ . " Failure for $url - " . $e->getMessage()); - throw new FeedSubBadURLException($e); + throw new FeedSubBadURLException($e->getMessage()); } if ($htmlOk) { @@ -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/hubconfqueuehandler.php b/plugins/OStatus/lib/hubconfqueuehandler.php index c8e0b72fee..8219f8420e 100644 --- a/plugins/OStatus/lib/hubconfqueuehandler.php +++ b/plugins/OStatus/lib/hubconfqueuehandler.php @@ -51,4 +51,3 @@ class HubConfQueueHandler extends QueueHandler return true; } } - diff --git a/plugins/OStatus/lib/hubprepqueuehandler.php b/plugins/OStatus/lib/hubprepqueuehandler.php new file mode 100644 index 0000000000..0d585938f4 --- /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 f39686b717..bbd4ce17a2 100644 --- a/plugins/OStatus/lib/magicenvelope.php +++ b/plugins/OStatus/lib/magicenvelope.php @@ -32,7 +32,7 @@ class MagicEnvelope const ENCODING = 'base64url'; const NS = 'http://salmon-protocol.org/ns/magic-env'; - + private function normalizeUser($user_id) { if (substr($user_id, 0, 5) == 'http:' || @@ -70,13 +70,13 @@ class MagicEnvelope $keypair = $parts[1]; } } - + if ($keypair) { return $keypair; } } } - throw new Exception('Unable to locate signer public key'); + throw new Exception('Unable to locate signer public key.'); } @@ -92,32 +92,25 @@ class MagicEnvelope 'sig' => $signature_alg->sign($armored_text), 'alg' => $signature_alg->getName() ); - - + } public function toXML($env) { - $dom = new DOMDocument(); + $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'); - $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); - - - return $dom->saveXML(); + $string = $xs->getString(); + common_debug($string); + return $string; } - + public function unfold($env) { $dom = new DOMDocument(); @@ -143,7 +136,7 @@ class MagicEnvelope return $dom->saveXML(); } - + public function getAuthor($text) { $doc = new DOMDocument(); if (!$doc->loadXML($text)) { @@ -160,12 +153,12 @@ class MagicEnvelope } } } - + public function checkAuthor($text, $signer_uri) { return ($this->getAuthor($text) == $signer_uri); } - + public function verify($env) { if ($env['alg'] != 'RSA-SHA256') { @@ -187,14 +180,14 @@ class MagicEnvelope common_log(LOG_DEBUG, "Salmon error: ".$e->getMessage()); return false; } - + $verifier = Magicsig::fromString($keypair); if (!$verifier) { common_log(LOG_DEBUG, "Salmon error: unable to parse keypair"); return false; } - + return $verifier->verify($env['data'], $env['sig']); } @@ -216,13 +209,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 d1e58f1d68..9814cab9f1 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'; @@ -55,6 +67,17 @@ class OStatusQueueHandler extends QueueHandler } } + if (!empty($this->notice->reply_to)) { + $replyTo = Notice::staticGet('id', $this->notice->reply_to); + if (!empty($replyTo)) { + foreach($replyTo->getReplies() as $profile_id) { + $oprofile = Ostatus_profile::staticGet('profile_id', $profile_id); + if ($oprofile) { + $this->pingReply($oprofile); + } + } + } + } return true; } @@ -147,14 +170,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); } } @@ -183,4 +223,3 @@ class OStatusQueueHandler extends QueueHandler } } - diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php index 3d3341bc63..631ebc7d86 100644 --- a/plugins/OStatus/lib/salmon.php +++ b/plugins/OStatus/lib/salmon.php @@ -28,11 +28,13 @@ */ 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"; - + /** * Sign and post the given Atom entry as a Salmon message. * @@ -85,9 +87,10 @@ class Salmon // No keypair yet, let's generate one. $magickey = new Magicsig(); $magickey->generate($user->id); - } + } } else { - throw new Exception("Salmon invalid actor for signing"); + // @todo i18n FIXME: added i18n and use sprintf when using parameters. + throw new Exception("Salmon invalid actor for signing."); } try { @@ -102,7 +105,7 @@ class Salmon public function verifyMagicEnv($text) { $magic_env = new MagicEnvelope(); - + $env = $magic_env->parse($text); return $magic_env->verify($env); diff --git a/plugins/OStatus/lib/salmonaction.php b/plugins/OStatus/lib/salmonaction.php index fa9dc3b1da..5fdb11abe4 100644 --- a/plugins/OStatus/lib/salmonaction.php +++ b/plugins/OStatus/lib/salmonaction.php @@ -42,12 +42,11 @@ class SalmonAction extends Action } if (empty($_SERVER['CONTENT_TYPE']) || $_SERVER['CONTENT_TYPE'] != 'application/magic-envelope+xml') { - $this->clientError(_m('Salmon requires application/magic-envelope+xml')); + $this->clientError(_m('Salmon requires "application/magic-envelope+xml".')); } $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/salmonqueuehandler.php b/plugins/OStatus/lib/salmonqueuehandler.php index 7eeb5f8e9c..56d3c9eff2 100644 --- a/plugins/OStatus/lib/salmonqueuehandler.php +++ b/plugins/OStatus/lib/salmonqueuehandler.php @@ -36,7 +36,7 @@ class SalmonQueueHandler extends QueueHandler assert(is_string($data['entry'])); $actor = Profile::staticGet($data['actor']); - + $salmon = new Salmon(); $salmon->post($data['salmonuri'], $data['entry'], $actor); diff --git a/plugins/OStatus/lib/xrdaction.php b/plugins/OStatus/lib/xrdaction.php index f1a56e0a84..91bb87cc23 100644 --- a/plugins/OStatus/lib/xrdaction.php +++ b/plugins/OStatus/lib/xrdaction.php @@ -26,13 +26,12 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } class XrdAction extends Action { - public $uri; - + public $user; public $xrd; - + function handle() { $nick = $this->user->nickname; @@ -76,6 +75,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 +100,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/locale/OStatus.pot b/plugins/OStatus/locale/OStatus.pot index 7e33a0eed6..97d593eadd 100644 --- a/plugins/OStatus/locale/OStatus.pot +++ b/plugins/OStatus/locale/OStatus.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+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" @@ -16,197 +16,80 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: actions/groupsalmon.php:51 -msgid "Can't accept remote posts for a remote group." -msgstr "" - -#: actions/groupsalmon.php:123 -msgid "Can't read profile to set up group membership." -msgstr "" - -#: actions/groupsalmon.php:126 actions/groupsalmon.php:169 -msgid "Groups can't join groups." -msgstr "" - -#: actions/groupsalmon.php:153 -#, php-format -msgid "Could not join remote user %1$s to group %2$s." -msgstr "" - -#: actions/groupsalmon.php:166 -msgid "Can't read profile to cancel group membership." -msgstr "" - -#: actions/groupsalmon.php:182 -#, php-format -msgid "Could not remove remote user %1$s from group %2$s." -msgstr "" - -#: actions/ostatusinit.php:40 -msgid "You can use the local subscription!" -msgstr "" - -#: actions/ostatusinit.php:61 -msgid "There was a problem with your session token. Try again, please." -msgstr "" - -#: actions/ostatusinit.php:79 actions/ostatussub.php:439 -msgid "Subscribe to user" -msgstr "" - -#: actions/ostatusinit.php:97 -#, php-format -msgid "Subscribe to %s" -msgstr "" - -#: actions/ostatusinit.php:102 -msgid "User nickname" -msgstr "" - -#: actions/ostatusinit.php:103 -msgid "Nickname of the user you want to follow" -msgstr "" - -#: actions/ostatusinit.php:106 -msgid "Profile Account" -msgstr "" - -#: actions/ostatusinit.php:107 -msgid "Your account id (i.e. user@identi.ca)" -msgstr "" - -#: actions/ostatusinit.php:110 actions/ostatussub.php:115 -#: OStatusPlugin.php:205 +#: OStatusPlugin.php:210 OStatusPlugin.php:913 actions/ostatusinit.php:99 msgid "Subscribe" msgstr "" -#: actions/ostatusinit.php:128 -msgid "Must provide a remote profile." -msgstr "" - -#: actions/ostatusinit.php:138 -msgid "Couldn't look up OStatus account profile." -msgstr "" - -#: actions/ostatusinit.php:153 -msgid "Couldn't confirm remote profile address." -msgstr "" - -#: actions/ostatusinit.php:171 -msgid "OStatus Connect" -msgstr "" - -#: actions/ostatussub.php:68 -msgid "Address or profile URL" -msgstr "" - -#: actions/ostatussub.php:70 -msgid "Enter the profile URL of a PubSubHubbub-enabled feed" -msgstr "" - -#: actions/ostatussub.php:74 -msgid "Continue" -msgstr "" - -#: actions/ostatussub.php:112 OStatusPlugin.php:503 +#: OStatusPlugin.php:228 OStatusPlugin.php:635 actions/ostatussub.php:105 +#: actions/ostatusinit.php:96 msgid "Join" msgstr "" -#: actions/ostatussub.php:113 -msgid "Join this group" -msgstr "" - -#: actions/ostatussub.php:116 -msgid "Subscribe to this user" -msgstr "" - -#: actions/ostatussub.php:137 -msgid "You are already subscribed to this user." -msgstr "" - -#: actions/ostatussub.php:165 -msgid "You are already a member of this group." -msgstr "" - -#: actions/ostatussub.php:286 -msgid "Empty remote profile URL!" -msgstr "" - -#: actions/ostatussub.php:297 -msgid "Invalid address format." -msgstr "" - -#: actions/ostatussub.php:302 -msgid "Invalid URL or could not reach server." -msgstr "" - -#: actions/ostatussub.php:304 -msgid "Cannot read feed; server returned error." -msgstr "" - -#: actions/ostatussub.php:306 -msgid "Cannot read feed; server returned an empty page." -msgstr "" - -#: actions/ostatussub.php:308 -msgid "Bad HTML, could not find feed link." -msgstr "" - -#: actions/ostatussub.php:310 -msgid "Could not find a feed linked from this URL." -msgstr "" - -#: actions/ostatussub.php:312 -msgid "Not a recognized feed type." -msgstr "" - -#: actions/ostatussub.php:315 +#: OStatusPlugin.php:451 #, php-format -msgid "Bad feed URL: %s %s" +msgid "Sent from %s via OStatus" msgstr "" -#. TRANS: OStatus remote group subscription dialog error. -#: actions/ostatussub.php:336 -msgid "Already a member!" +#: OStatusPlugin.php:503 +msgid "Could not set up remote subscription." msgstr "" -#. TRANS: OStatus remote group subscription dialog error. -#: actions/ostatussub.php:346 -msgid "Remote group join failed!" +#: OStatusPlugin.php:619 +msgid "Could not set up remote group membership." msgstr "" -#. TRANS: OStatus remote group subscription dialog error. -#: actions/ostatussub.php:350 -msgid "Remote group join aborted!" +#: OStatusPlugin.php:636 +#, php-format +msgid "%s has joined group %s." msgstr "" -#. TRANS: OStatus remote subscription dialog error. -#: actions/ostatussub.php:356 -msgid "Already subscribed!" +#: OStatusPlugin.php:644 +msgid "Failed joining remote group." msgstr "" -#. TRANS: OStatus remote subscription dialog error. -#: actions/ostatussub.php:361 -msgid "Remote subscription failed!" +#: OStatusPlugin.php:684 +msgid "Leave" msgstr "" -#. TRANS: Page title for OStatus remote subscription form -#: actions/ostatussub.php:459 -msgid "Authorize subscription" +#: OStatusPlugin.php:685 +#, php-format +msgid "%s has left group %s." msgstr "" -#: actions/ostatussub.php:470 +#: OStatusPlugin.php:844 +msgid "Remote" +msgstr "" + +#: OStatusPlugin.php:883 +msgid "Profile update" +msgstr "" + +#: OStatusPlugin.php:884 +#, php-format +msgid "%s has updated their profile page." +msgstr "" + +#: OStatusPlugin.php:928 msgid "" -"You can subscribe to users from other supported sites. Paste their address " -"or profile URI below:" +"Follow people across social networks that implement <a href=\"http://ostatus." +"org/\">OStatus</a>." msgstr "" -#: classes/Ostatus_profile.php:789 +#: classes/Ostatus_profile.php:566 +msgid "Show more" +msgstr "" + +#: classes/Ostatus_profile.php:1004 +#, php-format +msgid "Invalid avatar URL %s" +msgstr "" + +#: classes/Ostatus_profile.php:1014 #, php-format msgid "Tried to update avatar for unsaved remote profile %s" msgstr "" -#: classes/Ostatus_profile.php:797 +#: classes/Ostatus_profile.php:1022 #, php-format msgid "Unable to fetch avatar from %s" msgstr "" @@ -263,50 +146,186 @@ msgstr "" msgid "This target doesn't understand leave events." msgstr "" -#: OStatusPlugin.php:319 -#, php-format -msgid "Sent from %s via OStatus" -msgstr "" - -#: OStatusPlugin.php:371 -msgid "Could not set up remote subscription." -msgstr "" - -#: OStatusPlugin.php:487 -msgid "Could not set up remote group membership." -msgstr "" - -#: OStatusPlugin.php:504 -#, php-format -msgid "%s has joined group %s." -msgstr "" - -#: OStatusPlugin.php:512 -msgid "Failed joining remote group." -msgstr "" - -#: OStatusPlugin.php:553 -msgid "Leave" -msgstr "" - -#: OStatusPlugin.php:554 -#, php-format -msgid "%s has left group %s." -msgstr "" - -#: OStatusPlugin.php:685 -msgid "Subscribe to remote user" -msgstr "" - -#: OStatusPlugin.php:726 -msgid "Profile update" -msgstr "" - -#: OStatusPlugin.php:727 -#, php-format -msgid "%s has updated their profile page." -msgstr "" - #: tests/gettext-speedtest.php:57 msgid "Feeds" msgstr "" + +#: actions/ostatusgroup.php:75 +msgid "Join group" +msgstr "" + +#: actions/ostatusgroup.php:77 +msgid "OStatus group's address, like http://example.net/group/nickname" +msgstr "" + +#: actions/ostatusgroup.php:81 actions/ostatussub.php:71 +msgid "Continue" +msgstr "" + +#: actions/ostatusgroup.php:100 +msgid "You are already a member of this group." +msgstr "" + +#. TRANS: OStatus remote group subscription dialog error. +#: actions/ostatusgroup.php:135 +msgid "Already a member!" +msgstr "" + +#. TRANS: OStatus remote group subscription dialog error. +#: actions/ostatusgroup.php:146 +msgid "Remote group join failed!" +msgstr "" + +#. TRANS: OStatus remote group subscription dialog error. +#: actions/ostatusgroup.php:150 +msgid "Remote group join aborted!" +msgstr "" + +#. TRANS: Page title for OStatus remote group join form +#: actions/ostatusgroup.php:163 +msgid "Confirm joining remote group" +msgstr "" + +#: actions/ostatusgroup.php:174 +msgid "" +"You can subscribe to groups from other supported sites. Paste the group's " +"profile URI below:" +msgstr "" + +#: actions/groupsalmon.php:51 +msgid "Can't accept remote posts for a remote group." +msgstr "" + +#: actions/groupsalmon.php:124 +msgid "Can't read profile to set up group membership." +msgstr "" + +#: actions/groupsalmon.php:127 actions/groupsalmon.php:170 +msgid "Groups can't join groups." +msgstr "" + +#: actions/groupsalmon.php:154 +#, php-format +msgid "Could not join remote user %1$s to group %2$s." +msgstr "" + +#: actions/groupsalmon.php:167 +msgid "Can't read profile to cancel group membership." +msgstr "" + +#: actions/groupsalmon.php:183 +#, php-format +msgid "Could not remove remote user %1$s from group %2$s." +msgstr "" + +#: actions/ostatussub.php:65 +msgid "Subscribe to" +msgstr "" + +#: actions/ostatussub.php:67 +msgid "" +"OStatus user's address, like nickname@example.com or http://example.net/" +"nickname" +msgstr "" + +#: actions/ostatussub.php:106 +msgid "Join this group" +msgstr "" + +#. TRANS: Page title for OStatus remote subscription form +#: actions/ostatussub.php:108 actions/ostatussub.php:400 +msgid "Confirm" +msgstr "" + +#: actions/ostatussub.php:109 +msgid "Subscribe to this user" +msgstr "" + +#: actions/ostatussub.php:130 +msgid "You are already subscribed to this user." +msgstr "" + +#: actions/ostatussub.php:247 actions/ostatussub.php:253 +#: actions/ostatussub.php:272 +msgid "" +"Sorry, we could not reach that address. Please make sure that the OStatus " +"address is like nickname@example.com or http://example.net/nickname" +msgstr "" + +#: actions/ostatussub.php:256 actions/ostatussub.php:259 +#: actions/ostatussub.php:262 actions/ostatussub.php:265 +#: actions/ostatussub.php:268 +msgid "" +"Sorry, we could not reach that feed. Please try that OStatus address again " +"later." +msgstr "" + +#. TRANS: OStatus remote subscription dialog error. +#: actions/ostatussub.php:301 +msgid "Already subscribed!" +msgstr "" + +#. TRANS: OStatus remote subscription dialog error. +#: actions/ostatussub.php:306 +msgid "Remote subscription failed!" +msgstr "" + +#: actions/ostatussub.php:380 actions/ostatusinit.php:81 +msgid "Subscribe to user" +msgstr "" + +#: actions/ostatussub.php:411 +msgid "" +"You can subscribe to users from other supported sites. Paste their address " +"or profile URI below:" +msgstr "" + +#: actions/ostatusinit.php:41 +msgid "You can use the local subscription!" +msgstr "" + +#: actions/ostatusinit.php:63 +msgid "There was a problem with your session token. Try again, please." +msgstr "" + +#: actions/ostatusinit.php:95 +#, php-format +msgid "Join group %s" +msgstr "" + +#: actions/ostatusinit.php:98 +#, php-format +msgid "Subscribe to %s" +msgstr "" + +#: actions/ostatusinit.php:111 +msgid "User nickname" +msgstr "" + +#: actions/ostatusinit.php:112 +msgid "Nickname of the user you want to follow" +msgstr "" + +#: actions/ostatusinit.php:116 +msgid "Profile Account" +msgstr "" + +#: actions/ostatusinit.php:117 +msgid "Your account id (i.e. user@identi.ca)" +msgstr "" + +#: actions/ostatusinit.php:138 +msgid "Must provide a remote profile." +msgstr "" + +#: actions/ostatusinit.php:149 +msgid "Couldn't look up OStatus account profile." +msgstr "" + +#: actions/ostatusinit.php:161 +msgid "Couldn't confirm remote profile address." +msgstr "" + +#: actions/ostatusinit.php:202 +msgid "OStatus Connect" +msgstr "" diff --git a/plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po b/plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po deleted file mode 100644 index 0956d2f9b7..0000000000 --- a/plugins/OStatus/locale/fr/LC_MESSAGES/OStatus.po +++ /dev/null @@ -1,109 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-12-07 14:14-0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: FeedSubPlugin.php:77 -msgid "Feeds" -msgstr "Flux" - -#: FeedSubPlugin.php:78 -msgid "Feed subscription options" -msgstr "Préférences pour abonnement flux" - -#: feedmunger.php:215 -#, php-format -msgid "New post: \"%1$s\" %2$s" -msgstr "Nouveau: \"%1$s\" %2$s" - -#: actions/feedsubsettings.php:41 -msgid "Feed subscriptions" -msgstr "Abonnements aux fluxes" - -#: actions/feedsubsettings.php:52 -msgid "" -"You can subscribe to feeds from other sites; updates will appear in your " -"personal timeline." -msgstr "" -"Abonner aux fluxes RSS ou Atom des autres sites web; les temps se trouverair" -"en votre flux personnel." - -#: actions/feedsubsettings.php:96 -msgid "Subscribe" -msgstr "Abonner" - -#: actions/feedsubsettings.php:98 -msgid "Continue" -msgstr "Prochaine" - -#: actions/feedsubsettings.php:151 -msgid "Empty feed URL!" -msgstr "" - -#: actions/feedsubsettings.php:161 -msgid "Invalid URL or could not reach server." -msgstr "" - -#: actions/feedsubsettings.php:164 -msgid "Cannot read feed; server returned error." -msgstr "" - -#: actions/feedsubsettings.php:167 -msgid "Cannot read feed; server returned an empty page." -msgstr "" - -#: actions/feedsubsettings.php:170 -msgid "Bad HTML, could not find feed link." -msgstr "" - -#: actions/feedsubsettings.php:173 -msgid "Could not find a feed linked from this URL." -msgstr "" - -#: actions/feedsubsettings.php:176 -msgid "Not a recognized feed type." -msgstr "" - -#: actions/feedsubsettings.php:180 -msgid "Bad feed URL." -msgstr "" - -#: actions/feedsubsettings.php:188 -msgid "Feed is not PuSH-enabled; cannot subscribe." -msgstr "" - -#: actions/feedsubsettings.php:208 -msgid "Feed subscription failed! Bad response from hub." -msgstr "" - -#: actions/feedsubsettings.php:218 -msgid "Already subscribed!" -msgstr "" - -#: actions/feedsubsettings.php:220 -msgid "Feed subscribed!" -msgstr "" - -#: actions/feedsubsettings.php:222 -msgid "Feed subscription failed!" -msgstr "" - -#: actions/feedsubsettings.php:231 -msgid "Previewing feed:" -msgstr "" - -msgid "Confirm" -msgstr "Confirmer" diff --git a/plugins/OStatus/scripts/fixup-shadow.php b/plugins/OStatus/scripts/fixup-shadow.php index 6522ca240a..4b6ad08a31 100644 --- a/plugins/OStatus/scripts/fixup-shadow.php +++ b/plugins/OStatus/scripts/fixup-shadow.php @@ -77,7 +77,7 @@ while ($oprofile->fetch()) { echo "$uri matched query, but we don't recognize it.\n"; continue; } - + if ($dry) { echo " - skipping\n"; } else { @@ -93,4 +93,3 @@ if ($count && $dry) { } else { echo "done.\n"; } - diff --git a/plugins/OStatus/scripts/resub-feed.php b/plugins/OStatus/scripts/resub-feed.php new file mode 100644 index 0000000000..121d12109a --- /dev/null +++ b/plugins/OStatus/scripts/resub-feed.php @@ -0,0 +1,74 @@ +#!/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_HELP +resub-feed.php [options] http://example.com/atom-feed-url +Reinitialize the PuSH subscription for the given feed. This may help get +things restarted if we and the hub have gotten our states out of sync. + + +END_OF_HELP; + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +if (empty($args[0]) || !Validate::uri($args[0])) { + print "$helptext"; + exit(1); +} + +$feedurl = $args[0]; + + +$sub = FeedSub::staticGet('topic', $feedurl); +if (!$sub) { + print "Feed $feedurl is not subscribed.\n"; + exit(1); +} + +print "Old state:\n"; +showSub($sub); + +print "\n"; +print "Pinging hub $sub->huburi with new subscription for $sub->uri\n"; +$ok = $sub->subscribe(); + +if ($ok) { + print "ok\n"; +} else { + print "Could not confirm.\n"; +} + +$sub2 = FeedSub::staticGet('topic', $feedurl); + +print "\n"; +print "New state:\n"; +showSub($sub2); + +function showSub($sub) +{ + print " Subscription state: $sub->sub_state\n"; + print " Verify token: $sub->verify_token\n"; + print " Signature secret: $sub->secret\n"; + print " Sub start date: $sub->sub_start\n"; + print " Record created: $sub->created\n"; + print " Record modified: $sub->modified\n"; +} diff --git a/plugins/OStatus/scripts/testfeed.php b/plugins/OStatus/scripts/testfeed.php index 5e3ccd433a..82a1c65865 100644 --- a/plugins/OStatus/scripts/testfeed.php +++ b/plugins/OStatus/scripts/testfeed.php @@ -86,4 +86,3 @@ if ($skip || $count) { } Event::handle('StartFeedSubReceive', array($sub, $feed)); - diff --git a/plugins/OStatus/scripts/update-profile.php b/plugins/OStatus/scripts/update-profile.php new file mode 100644 index 0000000000..64afa0f356 --- /dev/null +++ b/plugins/OStatus/scripts/update-profile.php @@ -0,0 +1,147 @@ +#!/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_HELP +update-profile.php [options] http://example.com/profile/url + +Rerun profile and feed info discovery for the given OStatus remote profile, +and reinitialize its PuSH subscription for the given feed. This may help get +things restarted if the hub or feed URLs have changed for the profile. + + +END_OF_HELP; + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +if (empty($args[0]) || !Validate::uri($args[0])) { + print "$helptext"; + exit(1); +} + +$uri = $args[0]; + + +$oprofile = Ostatus_profile::staticGet('uri', $uri); + +if (!$oprofile) { + print "No OStatus remote profile known for URI $uri\n"; + exit(1); +} + +print "Old profile state for $oprofile->uri\n"; +showProfile($oprofile); + +print "\n"; +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->getHubLink(); +$salmonuri = $discover->getAtomLink(Salmon::NS_REPLIES); + +print " Feed URL: $feedurl\n"; +print " Hub URL: $huburi\n"; +print " Salmon URL: $salmonuri\n"; + +if ($feedurl != $oprofile->feeduri || $salmonuri != $oprofile->salmonuri) { + print "\n"; + print "Updating...\n"; + // @fixme update keys :P + #$orig = clone($oprofile); + #$oprofile->feeduri = $feedurl; + #$oprofile->salmonuri = $salmonuri; + #$ok = $oprofile->update($orig); + $ok = $oprofile->query('UPDATE ostatus_profile SET ' . + 'feeduri=\'' . $oprofile->escape($feedurl) . '\',' . + 'salmonuri=\'' . $oprofile->escape($salmonuri) . '\' ' . + 'WHERE uri=\'' . $oprofile->escape($uri) . '\''); + + if (!$ok) { + print "Failed to update profile record...\n"; + exit(1); + } + + $oprofile->decache(); +} else { + print "\n"; + print "Ok, ostatus_profile record unchanged.\n\n"; +} + +$sub = FeedSub::ensureFeed($feedurl); + +if ($huburi != $sub->huburi) { + print "\n"; + print "Updating hub record for feed; was $sub->huburi\n"; + $orig = clone($sub); + $sub->huburi = $huburi; + $ok = $sub->update($orig); + + if (!$ok) { + print "Failed to update sub record...\n"; + exit(1); + } +} else { + print "\n"; + print "Feed record ok, not changing.\n\n"; +} + +print "\n"; +print "Pinging hub $sub->huburi with new subscription for $sub->uri\n"; +$ok = $sub->subscribe(); + +if ($ok) { + print "ok\n"; +} else { + print "Could not confirm.\n"; +} + +$o2 = Ostatus_profile::staticGet('uri', $uri); + +print "\n"; +print "New profile state:\n"; +showProfile($o2); + +print "\n"; +print "New feed state:\n"; +$sub2 = FeedSub::ensureFeed($feedurl); +showSub($sub2); + +function showProfile($oprofile) +{ + print " Feed URL: $oprofile->feeduri\n"; + print " Salmon URL: $oprofile->salmonuri\n"; + print " Avatar URL: $oprofile->avatar\n"; + print " Profile ID: $oprofile->profile_id\n"; + print " Group ID: $oprofile->group_id\n"; + print " Record created: $oprofile->created\n"; + print " Record modified: $oprofile->modified\n"; +} + +function showSub($sub) +{ + print " Subscription state: $sub->sub_state\n"; + print " Verify token: $sub->verify_token\n"; + print " Signature secret: $sub->secret\n"; + print " Sub start date: $sub->sub_start\n"; + print " Record created: $sub->created\n"; + print " Record modified: $sub->modified\n"; +} diff --git a/plugins/OStatus/scripts/updateostatus.php b/plugins/OStatus/scripts/updateostatus.php index 622ded56ab..052cca1467 100644 --- a/plugins/OStatus/scripts/updateostatus.php +++ b/plugins/OStatus/scripts/updateostatus.php @@ -44,14 +44,14 @@ try { if (empty($user)) { throw new Exception("Can't find user with id '$id'."); } - updateProfileURL($user); + updateOStatus($user); } else if (have_option('n', 'nickname')) { $nickname = get_option_value('n', 'nickname'); $user = User::staticGet('nickname', $nickname); if (empty($user)) { - throw new Exception("Can't find user with nickname '$nickname'"); + throw new Exception("Can't find user with nickname '$nickname'."); } - updateProfileURL($user); + updateOStatus($user); } else if (have_option('a', 'all')) { $user = new User(); if ($user->find()) { diff --git a/plugins/OStatus/tests/FeedDiscoveryTest.php b/plugins/OStatus/tests/FeedDiscoveryTest.php index 1c52497012..3be4bf736c 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 { @@ -53,7 +53,7 @@ class FeedDiscoveryTest extends PHPUnit_Framework_TestCase </style> <link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://leuksman.com/log/xmlrpc.php?rsd" /> -<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://leuksman.com/log/wp-includes/wlwmanifest.xml" /> +<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://leuksman.com/log/wp-includes/wlwmanifest.xml" /> <link rel='index' title='leÅ­ksman' href='http://leuksman.com/log' /> <meta name="generator" content="WordPress 2.8.6" /> </head> diff --git a/plugins/OStatus/tests/remote-tests.php b/plugins/OStatus/tests/remote-tests.php index 24b4b1660a..c2c9a5d97b 100644 --- a/plugins/OStatus/tests/remote-tests.php +++ b/plugins/OStatus/tests/remote-tests.php @@ -500,7 +500,7 @@ class SNTestClient extends TestBase $me = $this->getProfileUri(); return $this->checkSubscription($profile_uri, $me); } - + protected function checkSubscription($subscriber, $subscribed) { // Using FOAF as the API methods for checking the social graph @@ -552,4 +552,3 @@ $b = $args[1]; $tester = new OStatusTester($a, $b); $tester->run(); - diff --git a/plugins/OpenExternalLinkTarget/locale/OpenExternalLinkTarget.pot b/plugins/OpenExternalLinkTarget/locale/OpenExternalLinkTarget.pot new file mode 100644 index 0000000000..f9bd4af10e --- /dev/null +++ b/plugins/OpenExternalLinkTarget/locale/OpenExternalLinkTarget.pot @@ -0,0 +1,21 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: OpenExternalLinkTargetPlugin.php:60 +msgid "Opens external links (i.e., with rel=external) on a new window or tab" +msgstr "" diff --git a/plugins/OpenID/OpenIDPlugin.php b/plugins/OpenID/OpenIDPlugin.php index 270e2c624b..e58440fc10 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> - * @copyright 2009 StatusNet, Inc. + * @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/ @@ -45,7 +49,19 @@ if (!defined('STATUSNET')) { class OpenIDPlugin extends Plugin { - public $openidOnly = false; + // Plugin parameter: set true to disallow non-OpenID logins + // If set, overrides the setting in database or $config['site']['openidonly'] + public $openidOnly = null; + + function initialize() + { + parent::initialize(); + if ($this->openidOnly !== null) { + global $config; + $config['site']['openidonly'] = (bool)$this->openidOnly; + } + + } /** * Add OpenID-related paths to the router table @@ -67,6 +83,7 @@ class OpenIDPlugin extends Plugin $m->connect('index.php?action=finishaddopenid', array('action' => 'finishaddopenid')); $m->connect('main/openidserver', array('action' => 'openidserver')); + $m->connect('admin/openid', array('action' => 'openidadminpanel')); return true; } @@ -84,7 +101,7 @@ class OpenIDPlugin extends Plugin function onStartConnectPath(&$path, &$defaults, &$rules, &$result) { - if ($this->openidOnly) { + if (common_config('site', 'openidonly')) { static $block = array('main/login', 'main/register', 'main/recoverpassword', @@ -108,7 +125,7 @@ class OpenIDPlugin extends Plugin function onArgsInitialize($args) { - if ($this->openidOnly) { + if (common_config('site', 'openidonly')) { if (array_key_exists('action', $args)) { $action = trim($args['action']); if (in_array($action, array('login', 'register'))) { @@ -199,19 +216,19 @@ class OpenIDPlugin extends Plugin function onStartPrimaryNav($action) { - if ($this->openidOnly && !common_logged_in()) { + if (common_config('site', 'openidonly') && !common_logged_in()) { // TRANS: Tooltip for main menu option "Login" $tooltip = _m('TOOLTIP', 'Login to the site'); - // TRANS: Main menu option when not logged in to log in $action->menuItem(common_local_url('openidlogin'), + // TRANS: Main menu option when not logged in to log in _m('MENU', 'Login'), $tooltip, false, 'nav_login'); // TRANS: Tooltip for main menu option "Help" $tooltip = _m('TOOLTIP', 'Help me!'); - // TRANS: Main menu option for help on the StatusNet site $action->menuItem(common_local_url('doc', array('title' => 'help')), + // TRANS: Main menu option for help on the StatusNet site _m('MENU', 'Help'), $tooltip, false, @@ -219,8 +236,8 @@ class OpenIDPlugin extends Plugin if (!common_config('site', 'private')) { // TRANS: Tooltip for main menu option "Search" $tooltip = _m('TOOLTIP', 'Search for people or text'); - // TRANS: Main menu option when logged in or when the StatusNet instance is not private $action->menuItem(common_local_url('peoplesearch'), + // TRANS: Main menu option when logged in or when the StatusNet instance is not private _m('MENU', 'Search'), $tooltip, false, 'nav_search'); } Event::handle('EndPrimaryNav', array($action)); @@ -241,7 +258,7 @@ class OpenIDPlugin extends Plugin function onStartLoginGroupNav(&$action) { - if ($this->openidOnly) { + if (common_config('site', 'openidonly')) { $this->showOpenIDLoginTab($action); // Even though we replace this code, we // DON'T run the End* hook, to keep others from @@ -280,7 +297,9 @@ class OpenIDPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('openidlogin'), - _m('OpenID'), + // TRANS: OpenID plugin menu item on site logon page. + _m('MENU', 'OpenID'), + // TRANS: OpenID plugin tooltip for logon menu item. _m('Login or register with OpenID'), $action_name === 'openidlogin'); } @@ -297,7 +316,7 @@ class OpenIDPlugin extends Plugin */ function onStartAccountSettingsPasswordMenuItem($menu, &$unused) { - if ($this->openidOnly) { + if (common_config('site', 'openidonly')) { return false; } return true; @@ -316,7 +335,9 @@ class OpenIDPlugin extends Plugin $action_name = $action->trimmed('action'); $action->menuItem(common_local_url('openidsettings'), - _m('OpenID'), + // TRANS: OpenID plugin menu item on user settings page. + _m('MENU', 'OpenID'), + // TRANS: OpenID plugin tooltip for user settings menu item. _m('Add or remove OpenIDs'), $action_name === 'openidsettings'); @@ -345,13 +366,19 @@ class OpenIDPlugin extends Plugin case 'OpenidsettingsAction': case 'OpenidserverAction': case 'OpenidtrustAction': - require_once INSTALLDIR.'/plugins/OpenID/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; + case 'OpenidadminpanelAction': + require_once dirname(__FILE__) . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; return false; case 'User_openid': - require_once INSTALLDIR.'/plugins/OpenID/User_openid.php'; + require_once dirname(__FILE__) . '/User_openid.php'; return false; case 'User_openid_trustroot': - require_once INSTALLDIR.'/plugins/OpenID/User_openid_trustroot.php'; + require_once dirname(__FILE__) . '/User_openid_trustroot.php'; + return false; + case 'Auth_OpenID_TeamsExtension': + case 'Auth_OpenID_TeamsRequest': + case 'Auth_OpenID_TeamsResponse': + require_once dirname(__FILE__) . '/extlib/teams-extension.php'; return false; default: return true; @@ -442,7 +469,7 @@ class OpenIDPlugin extends Plugin function onRedirectToLogin($action, $user) { - if ($this->openidOnly || (!empty($user) && User_openid::hasOpenID($user->id))) { + if (common_config('site', 'openid_only') || (!empty($user) && User_openid::hasOpenID($user->id))) { common_redirect(common_local_url('openidlogin'), 303); return false; } @@ -577,6 +604,54 @@ class OpenIDPlugin extends Plugin return true; } + /** + * Add an OpenID tab to the admin panel + * + * @param Widget $nav Admin panel nav + * + * @return boolean hook value + */ + + function onEndAdminPanelNav($nav) + { + if (AdminPanelAction::canAdmin('openid')) { + + $action_name = $nav->action->trimmed('action'); + + $nav->out->menuItem( + common_local_url('openidadminpanel'), + _m('OpenID'), + _m('OpenID configuration'), + $action_name == 'openidadminpanel', + 'nav_openid_admin_panel' + ); + } + + return true; + } + + /** + * Add OpenID information to the Account Management Control Document + * Event supplied by the Account Manager plugin + * + * @param array &$amcd Array that expresses the AMCD + * + * @return boolean hook value + */ + + function onEndAccountManagementControlDocument(&$amcd) + { + $amcd['auth-methods']['openid'] = array( + 'connect' => array( + 'method' => 'POST', + 'path' => common_local_url('openidlogin'), + 'params' => array( + 'identity' => 'openid_url' + ) + ) + ); + } + /** * Add our version information to output * @@ -592,6 +667,7 @@ class OpenIDPlugin extends Plugin 'author' => 'Evan Prodromou, Craig Andrews', 'homepage' => 'http://status.net/wiki/Plugin:OpenID', 'rawdescription' => + // TRANS: OpenID plugin description. _m('Use <a href="http://openid.net/">OpenID</a> to login to the site.')); return true; } diff --git a/plugins/OpenID/extlib/README b/plugins/OpenID/extlib/README new file mode 100644 index 0000000000..1fe80d79b6 --- /dev/null +++ b/plugins/OpenID/extlib/README @@ -0,0 +1,6 @@ +team-extension.php + Support for Launchpad's OpenID Teams extension + Maintainer: Canonical + Source: https://code.edge.launchpad.net/wordpress-teams-integration + r27 2010-04-27 + License: AGPLv3 diff --git a/plugins/OpenID/extlib/teams-extension.php b/plugins/OpenID/extlib/teams-extension.php new file mode 100644 index 0000000000..451f2fb194 --- /dev/null +++ b/plugins/OpenID/extlib/teams-extension.php @@ -0,0 +1,175 @@ +<?php +/* + * Wordpress Teams plugin + * Copyright (C) 2009-2010 Canonical Ltd. + * + * 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/>. + */ + +/** + * Provides an example OpenID extension to query user team/group membership + * + * This code is based on code supplied with the openid library for simple + * registration data. + */ + +/** + * Require the Message implementation. + */ +require_once 'Auth/OpenID/Message.php'; +require_once 'Auth/OpenID/Extension.php'; + +/** + * The team/group extension base class + */ +class Auth_OpenID_TeamsExtension extends Auth_OpenID_Extension { + var $ns_uri = 'http://ns.launchpad.net/2007/openid-teams'; + var $ns_alias = 'lp'; + var $request_field = 'query_membership'; + var $response_field = 'is_member'; + + /** + * Get the string arguments that should be added to an OpenID + * message for this extension. + */ + function getExtensionArgs() { + $args = array(); + + if ($this->_teams) { + $args[$this->request_field] = implode(',', $this->_teams); + } + + return $args; + } + + /** + * Add the arguments from this extension to the provided message. + * + * Returns the message with the extension arguments added. + */ + function toMessage(&$message) { + if ($message->namespaces->addAlias($this->ns_uri, $this->ns_alias) === null) { + if ($message->namespaces->getAlias($this->ns_uri) != $this->ns_alias) { + return null; + } + } + + $message->updateArgs($this->ns_uri, $this->getExtensionArgs()); + return $message; + } + + /** + * Extract the team/group namespace URI from the given OpenID message. + * Handles OpenID 1 and 2. + * + * $message: The OpenID message from which to parse team/group data. + * This may be a request or response message. + * + * Returns the sreg namespace URI for the supplied message. + * + * @access private + */ + function _getExtensionNS(&$message) { + $alias = null; + $found_ns_uri = null; + + // See if there exists an alias for the namespace + $alias = $message->namespaces->getAlias($this->ns_uri); + + if ($alias !== null) { + $found_ns_uri = $this->ns_uri; + } + + if ($alias === null) { + // There is no alias for this extension, so try to add one. + $found_ns_uri = Auth_OpenID_TYPE_1_0; + + if ($message->namespaces->addAlias($this->ns_uri, $this->ns_alias) === null) { + // An alias for the string 'lp' already exists, but + // it's defined for something other than team/group membership + return null; + } + } + + return $found_ns_uri; + } +} + +/** + * The team/group extension request class + */ +class Auth_OpenID_TeamsRequest extends Auth_OpenID_TeamsExtension { + function __init($teams) { + if (!is_array($teams)) { + if (!empty($teams)) { + $teams = explode(',', $teams); + } else { + $teams = Array(); + } + } + + $this->_teams = $teams; + } + + function Auth_OpenID_TeamsRequest($teams) { + $this->__init($teams); + } +} + +/** + * The team/group extension response class + */ +class Auth_OpenID_TeamsResponse extends Auth_OpenID_TeamsExtension { + var $_teams = array(); + + function __init(&$resp, $signed_only=true) { + $this->ns_uri = $this->_getExtensionNS($resp->message); + + if ($signed_only) { + $args = $resp->getSignedNS($this->ns_uri); + } else { + $args = $resp->message->getArgs($this->ns_uri); + } + + if ($args === null) { + return null; + } + + // An OpenID 2.0 response will handle the namespaces + if (in_array($this->response_field, array_keys($args)) && !empty($args[$this->response_field])) { + $this->_teams = explode(',', $args[$this->response_field]); + } + + // Piggybacking on a 1.x request, however, won't so the field name will + // be different + elseif (in_array($this->ns_alias.'.'.$this->response_field, array_keys($args)) && !empty($args[$this->ns_alias.'.'.$this->response_field])) { + $this->_teams = explode(',', $args[$this->ns_alias.'.'.$this->response_field]); + } + } + + function Auth_OpenID_TeamsResponse(&$resp, $signed_only=true) { + $this->__init($resp, $signed_only); + } + + /** + * Get the array of teams the user is a member of + * + * @return array + */ + function getTeams() { + return $this->_teams; + } +} + +?> diff --git a/plugins/OpenID/finishaddopenid.php b/plugins/OpenID/finishaddopenid.php index 991e6584ee..47b3f7fb16 100644 --- a/plugins/OpenID/finishaddopenid.php +++ b/plugins/OpenID/finishaddopenid.php @@ -64,6 +64,7 @@ class FinishaddopenidAction extends Action { parent::handle($args); if (!common_logged_in()) { + // TRANS: Client error message $this->clientError(_m('Not logged in.')); } else { $this->tryLogin(); @@ -85,10 +86,12 @@ class FinishaddopenidAction extends Action $response = $consumer->complete(common_local_url('finishaddopenid')); if ($response->status == Auth_OpenID_CANCEL) { + // TRANS: Status message in case the response from the OpenID provider is that the logon attempt was cancelled. $this->message(_m('OpenID authentication cancelled.')); return; } else if ($response->status == Auth_OpenID_FAILURE) { - // Authentication failed; display the error message. + // TRANS: OpenID authentication failed; display the error message. + // TRANS: %s is the error message. $this->message(sprintf(_m('OpenID authentication failed: %s'), $response->message)); } else if ($response->status == Auth_OpenID_SUCCESS) { @@ -103,14 +106,22 @@ class FinishaddopenidAction extends Action $sreg = $sreg_resp->contents(); } + // Launchpad teams extension + if (!oid_check_teams($response)) { + $this->message(_m('OpenID authentication aborted: you are not allowed to login to this site.')); + return; + } + $cur = common_current_user(); $other = oid_get_user($canonical); if ($other) { if ($other->id == $cur->id) { + // TRANS: message in case a user tries to add an OpenID that is already connected to them. $this->message(_m('You already have this OpenID!')); } else { + // TRANS: message in case a user tries to add an OpenID that is already used by another user. $this->message(_m('Someone else already has this OpenID.')); } return; @@ -123,15 +134,20 @@ class FinishaddopenidAction extends Action $result = oid_link_user($cur->id, $canonical, $display); if (!$result) { + // TRANS: message in case the OpenID object cannot be connected to the user. $this->message(_m('Error connecting user.')); return; } - if ($sreg) { - if (!oid_update_user($cur, $sreg)) { - $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! @@ -167,6 +183,7 @@ class FinishaddopenidAction extends Action function title() { + // TRANS: Title after getting the status of the OpenID authorisation request. return _m('OpenID Login'); } diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index 32b092a0bd..0c03b5c4db 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -31,15 +31,18 @@ class FinishopenidloginAction extends Action { parent::handle($args); if (common_is_real_login()) { + // TRANS: Client error message trying to log on with OpenID while already logged on. $this->clientError(_m('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { $token = $this->trimmed('token'); if (!$token || $token != common_session_token()) { + // TRANS: Message given when there is a problem with the user's session token. $this->showForm(_m('There was a problem with your session token. Try again, please.')); return; } if ($this->arg('create')) { if (!$this->boolean('license')) { + // TRANS: Message given if user does not agree with the site's license. $this->showForm(_m('You can\'t register if you don\'t agree to the license.'), $this->trimmed('newname')); return; @@ -48,7 +51,8 @@ class FinishopenidloginAction extends Action } else if ($this->arg('connect')) { $this->connectUser(); } else { - $this->showForm(_m('Something weird happened.'), + // TRANS: Messag given on an unknown error. + $this->showForm(_m('An unknown error has occured.'), $this->trimmed('newname')); } } else { @@ -62,12 +66,15 @@ class FinishopenidloginAction extends Action $this->element('div', array('class' => 'error'), $this->error); } else { $this->element('div', 'instructions', + // TRANS: Instructions given after a first successful logon using OpenID. + // TRANS: %s is the site name. sprintf(_m('This is the first time you\'ve logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one.'), common_config('site', 'name'))); } } function title() { + // TRANS: Title return _m('OpenID Account Setup'); } @@ -115,6 +122,8 @@ class FinishopenidloginAction extends Action 'value' => 'true')); $this->elementStart('label', array('for' => 'license', 'class' => 'checkbox')); + // TRANS: OpenID plugin link text. + // TRANS: %s is a link to a licese with the license name as link text. $message = _('My text and files are available under %s ' . 'except this private data: password, ' . 'email address, IM address, and phone number.'); @@ -127,23 +136,29 @@ class FinishopenidloginAction extends Action $this->elementEnd('label'); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('create', _m('Create')); + // TRANS: Button label in form in which to create a new user on the site for an OpenID. + $this->submit('create', _m('BUTTON', 'Create')); $this->elementEnd('fieldset'); $this->elementStart('fieldset', array('id' => 'form_openid_createaccount')); $this->element('legend', null, + // TRANS: Used as form legend for form in which to connect an OpenID to an existing user on the site. _m('Connect existing account')); $this->element('p', null, + // TRANS: User instructions for form in which to connect an OpenID to an existing user on the site. _m('If you already have an account, login with your username and password to connect it to your OpenID.')); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); + // TRANS: Field label in form in which to connect an OpenID to an existing user on the site. $this->input('nickname', _m('Existing nickname')); $this->elementEnd('li'); $this->elementStart('li'); + // TRANS: Field label in form in which to connect an OpenID to an existing user on the site. $this->password('password', _m('Password')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('connect', _m('Connect')); + // TRANS: Button label in form in which to connect an OpenID to an existing user on the site. + $this->submit('connect', _m('BUTTON', 'Connect')); $this->elementEnd('fieldset'); $this->elementEnd('form'); } @@ -155,10 +170,11 @@ class FinishopenidloginAction extends Action $response = $consumer->complete(common_local_url('finishopenidlogin')); if ($response->status == Auth_OpenID_CANCEL) { + // TRANS: Status message in case the response from the OpenID provider is that the logon attempt was cancelled. $this->message(_m('OpenID authentication cancelled.')); return; } else if ($response->status == Auth_OpenID_FAILURE) { - // Authentication failed; display the error message. + // TRANS: OpenID authentication failed; display the error message. %s is the error message. $this->message(sprintf(_m('OpenID authentication failed: %s'), $response->message)); } else if ($response->status == Auth_OpenID_SUCCESS) { // This means the authentication succeeded; extract the @@ -177,6 +193,12 @@ class FinishopenidloginAction extends Action $sreg = $sreg_resp->contents(); } + // Launchpad teams extension + if (!oid_check_teams($response)) { + $this->message(_m('OpenID authentication aborted: you are not allowed to login to this site.')); + return; + } + $user = oid_get_user($canonical); if ($user) { @@ -224,6 +246,7 @@ class FinishopenidloginAction extends Action # FIXME: save invite code before redirect, and check here if (common_config('site', 'closed')) { + // TRANS: OpenID plugin message. No new user registration is allowed on the site. $this->clientError(_m('Registration not allowed.')); return; } @@ -233,6 +256,7 @@ class FinishopenidloginAction extends Action if (common_config('site', 'inviteonly')) { $code = $_SESSION['invitecode']; if (empty($code)) { + // TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and none was provided. $this->clientError(_m('Registration not allowed.')); return; } @@ -240,6 +264,7 @@ class FinishopenidloginAction extends Action $invite = Invitation::staticGet($code); if (empty($invite)) { + // TRANS: OpenID plugin message. No new user registration is allowed on the site without an invitation code, and the one provided was not valid. $this->clientError(_m('Not a valid invitation code.')); return; } @@ -250,16 +275,19 @@ class FinishopenidloginAction extends Action if (!Validate::string($nickname, array('min_length' => 1, 'max_length' => 64, 'format' => NICKNAME_FMT))) { + // TRANS: OpenID plugin message. The entered new user name did not conform to the requirements. $this->showForm(_m('Nickname must have only lowercase letters and numbers and no spaces.')); return; } if (!User::allowed_nickname($nickname)) { + // TRANS: OpenID plugin message. The entered new user name is blacklisted. $this->showForm(_m('Nickname not allowed.')); return; } if (User::staticGet('nickname', $nickname)) { + // TRANS: OpenID plugin message. The entered new user name is already used. $this->showForm(_m('Nickname already in use. Try another one.')); return; } @@ -267,6 +295,7 @@ class FinishopenidloginAction extends Action list($display, $canonical, $sreg) = $this->getSavedValues(); if (!$display || !$canonical) { + // TRANS: OpenID plugin server error. A stored OpenID cannot be retrieved. $this->serverError(_m('Stored OpenID not found.')); return; } @@ -276,10 +305,13 @@ class FinishopenidloginAction extends Action $other = oid_get_user($canonical); if ($other) { + // TRANS: OpenID plugin server error. $this->serverError(_m('Creating new account for OpenID that already has a user.')); return; } + Event::handle('StartOpenIDCreateNewUser', array($canonical, &$sreg)); + $location = ''; if (!empty($sreg['country'])) { if ($sreg['postcode']) { @@ -319,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); @@ -336,6 +370,7 @@ class FinishopenidloginAction extends Action $password = $this->trimmed('password'); if (!common_check_user($nickname, $password)) { + // TRANS: OpenID plugin message. $this->showForm(_m('Invalid username or password.')); return; } @@ -347,6 +382,7 @@ class FinishopenidloginAction extends Action list($display, $canonical, $sreg) = $this->getSavedValues(); if (!$display || !$canonical) { + // TRANS: OpenID plugin server error. A stored OpenID cannot be found. $this->serverError(_m('Stored OpenID not found.')); return; } @@ -354,11 +390,16 @@ class FinishopenidloginAction extends Action $result = oid_link_user($user->id, $canonical, $display); if (!$result) { + // TRANS: OpenID plugin server error. The user or user profile could not be saved. $this->serverError(_m('Error connecting user to OpenID.')); 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/locale/OpenID.pot b/plugins/OpenID/locale/OpenID.pot index 7ed8798355..70908422e5 100644 --- a/plugins/OpenID/locale/OpenID.pot +++ b/plugins/OpenID/locale/OpenID.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+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" @@ -16,256 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: finishaddopenid.php:67 -msgid "Not logged in." -msgstr "" - -#: finishaddopenid.php:88 finishopenidlogin.php:149 -msgid "OpenID authentication cancelled." -msgstr "" - -#: finishaddopenid.php:92 finishopenidlogin.php:153 -#, php-format -msgid "OpenID authentication failed: %s" -msgstr "" - -#: finishaddopenid.php:112 -msgid "You already have this OpenID!" -msgstr "" - -#: finishaddopenid.php:114 -msgid "Someone else already has this OpenID." -msgstr "" - -#: finishaddopenid.php:126 -msgid "Error connecting user." -msgstr "" - -#: finishaddopenid.php:131 -msgid "Error updating profile" -msgstr "" - -#: finishaddopenid.php:170 openidlogin.php:95 -msgid "OpenID Login" -msgstr "" - -#: finishopenidlogin.php:34 openidlogin.php:30 -msgid "Already logged in." -msgstr "" - -#: finishopenidlogin.php:38 openidlogin.php:37 openidsettings.php:194 -msgid "There was a problem with your session token. Try again, please." -msgstr "" - -#: finishopenidlogin.php:43 -msgid "You can't register if you don't agree to the license." -msgstr "" - -#: finishopenidlogin.php:52 openidsettings.php:208 -msgid "Something weird happened." -msgstr "" - -#: finishopenidlogin.php:66 -#, php-format -msgid "" -"This is the first time you've logged into %s so we must connect your OpenID " -"to a local account. You can either create a new account, or connect with " -"your existing account, if you have one." -msgstr "" - -#: finishopenidlogin.php:72 -msgid "OpenID Account Setup" -msgstr "" - -#: finishopenidlogin.php:97 -msgid "Create new account" -msgstr "" - -#: finishopenidlogin.php:99 -msgid "Create a new user with this nickname." -msgstr "" - -#: finishopenidlogin.php:102 -msgid "New nickname" -msgstr "" - -#: finishopenidlogin.php:104 -msgid "1-64 lowercase letters or numbers, no punctuation or spaces" -msgstr "" - -#: finishopenidlogin.php:114 -msgid "My text and files are available under " -msgstr "" - -#: finishopenidlogin.php:117 -msgid "" -" except this private data: password, email address, IM address, phone number." -msgstr "" - -#: finishopenidlogin.php:121 -msgid "Create" -msgstr "" - -#: finishopenidlogin.php:126 -msgid "Connect existing account" -msgstr "" - -#: finishopenidlogin.php:128 -msgid "" -"If you already have an account, login with your username and password to " -"connect it to your OpenID." -msgstr "" - -#: finishopenidlogin.php:131 -msgid "Existing nickname" -msgstr "" - -#: finishopenidlogin.php:134 -msgid "Password" -msgstr "" - -#: finishopenidlogin.php:137 -msgid "Connect" -msgstr "" - -#: finishopenidlogin.php:215 finishopenidlogin.php:224 -msgid "Registration not allowed." -msgstr "" - -#: finishopenidlogin.php:231 -msgid "Not a valid invitation code." -msgstr "" - -#: finishopenidlogin.php:241 -msgid "Nickname must have only lowercase letters and numbers and no spaces." -msgstr "" - -#: finishopenidlogin.php:246 -msgid "Nickname not allowed." -msgstr "" - -#: finishopenidlogin.php:251 -msgid "Nickname already in use. Try another one." -msgstr "" - -#: finishopenidlogin.php:258 finishopenidlogin.php:338 -msgid "Stored OpenID not found." -msgstr "" - -#: finishopenidlogin.php:267 -msgid "Creating new account for OpenID that already has a user." -msgstr "" - -#: finishopenidlogin.php:327 -msgid "Invalid username or password." -msgstr "" - -#: finishopenidlogin.php:345 -msgid "Error connecting user to OpenID." -msgstr "" - -#: openid.php:141 -msgid "Cannot instantiate OpenID consumer object." -msgstr "" - -#: openid.php:151 -msgid "Not a valid OpenID." -msgstr "" - -#: openid.php:153 -#, php-format -msgid "OpenID failure: %s" -msgstr "" - -#: openid.php:180 -#, php-format -msgid "Could not redirect to server: %s" -msgstr "" - -#: openid.php:198 -#, php-format -msgid "Could not create OpenID form: %s" -msgstr "" - -#: openid.php:214 -msgid "" -"This form should automatically submit itself. If not, click the submit " -"button to go to your OpenID provider." -msgstr "" - -#: openid.php:246 -msgid "Error saving the profile." -msgstr "" - -#: openid.php:257 -msgid "Error saving the user." -msgstr "" - -#: openid.php:277 -msgid "OpenID Auto-Submit" -msgstr "" - -#: openidlogin.php:66 -#, php-format -msgid "" -"For security reasons, please re-login with your [OpenID](%%doc.openid%%) " -"before changing your settings." -msgstr "" - -#: openidlogin.php:70 -#, php-format -msgid "Login with an [OpenID](%%doc.openid%%) account." -msgstr "" - -#: openidlogin.php:112 -msgid "OpenID login" -msgstr "" - -#: openidlogin.php:117 openidsettings.php:107 -msgid "OpenID URL" -msgstr "" - -#: openidlogin.php:119 -msgid "Your OpenID URL" -msgstr "" - -#: openidlogin.php:122 -msgid "Remember me" -msgstr "" - -#: openidlogin.php:123 -msgid "Automatically login in the future; not for shared computers!" -msgstr "" - -#: openidlogin.php:127 -msgid "Login" -msgstr "" - -#: OpenIDPlugin.php:123 OpenIDPlugin.php:135 -msgid "OpenID" -msgstr "" - -#: OpenIDPlugin.php:124 -msgid "Login or register with OpenID" -msgstr "" - -#: OpenIDPlugin.php:136 -msgid "Add or remove OpenIDs" -msgstr "" - -#: OpenIDPlugin.php:324 -msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site." -msgstr "" - -#: openidserver.php:106 -#, php-format -msgid "You are not authorized to use the identity %s." -msgstr "" - -#: openidserver.php:126 -msgid "Just an OpenID provider. Nothing to see here, move along..." -msgstr "" - #: openidsettings.php:59 msgid "OpenID settings" msgstr "" @@ -287,6 +37,10 @@ msgid "" "click \"Add\"." msgstr "" +#: openidsettings.php:107 openidlogin.php:119 +msgid "OpenID URL" +msgstr "" + #: openidsettings.php:117 msgid "Add" msgstr "" @@ -307,22 +61,304 @@ msgid "" "\"Remove\"." msgstr "" -#: openidsettings.php:172 +#: openidsettings.php:172 openidsettings.php:213 msgid "Remove" msgstr "" -#: openidsettings.php:228 +#: openidsettings.php:186 +msgid "OpenID Trusted Sites" +msgstr "" + +#: openidsettings.php:189 +msgid "" +"The following sites are allowed to access your identity and log you in. You " +"can remove a site from this list to deny it access to your OpenID." +msgstr "" + +#: openidsettings.php:231 finishopenidlogin.php:38 openidlogin.php:39 +msgid "There was a problem with your session token. Try again, please." +msgstr "" + +#: openidsettings.php:247 finishopenidlogin.php:51 +msgid "Something weird happened." +msgstr "" + +#: openidsettings.php:271 +msgid "No such OpenID trustroot." +msgstr "" + +#: openidsettings.php:275 +msgid "Trustroots removed" +msgstr "" + +#: openidsettings.php:298 msgid "No such OpenID." msgstr "" -#: openidsettings.php:233 +#: openidsettings.php:303 msgid "That OpenID does not belong to you." msgstr "" -#: openidsettings.php:237 +#: openidsettings.php:307 msgid "OpenID removed." msgstr "" +#: openid.php:137 +msgid "Cannot instantiate OpenID consumer object." +msgstr "" + +#: openid.php:147 +msgid "Not a valid OpenID." +msgstr "" + +#: openid.php:149 +#, php-format +msgid "OpenID failure: %s" +msgstr "" + +#: openid.php:176 +#, php-format +msgid "Could not redirect to server: %s" +msgstr "" + +#: openid.php:194 +#, php-format +msgid "Could not create OpenID form: %s" +msgstr "" + +#: openid.php:210 +msgid "" +"This form should automatically submit itself. If not, click the submit " +"button to go to your OpenID provider." +msgstr "" + +#: openid.php:242 +msgid "Error saving the profile." +msgstr "" + +#: openid.php:253 +msgid "Error saving the user." +msgstr "" + +#: openid.php:282 +msgid "Unauthorized URL used for OpenID login." +msgstr "" + +#: openid.php:302 +msgid "OpenID Login Submission" +msgstr "" + +#: openid.php:312 +msgid "Requesting authorization from your login provider..." +msgstr "" + +#: openid.php:315 +msgid "" +"If you are not redirected to your login provider in a few seconds, try " +"pushing the button below." +msgstr "" + +#. TRANS: Tooltip for main menu option "Login" +#: OpenIDPlugin.php:204 +msgctxt "TOOLTIP" +msgid "Login to the site" +msgstr "" + +#: OpenIDPlugin.php:207 +msgctxt "MENU" +msgid "Login" +msgstr "" + +#. TRANS: Tooltip for main menu option "Help" +#: OpenIDPlugin.php:212 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "" + +#: OpenIDPlugin.php:215 +msgctxt "MENU" +msgid "Help" +msgstr "" + +#. TRANS: Tooltip for main menu option "Search" +#: OpenIDPlugin.php:221 +msgctxt "TOOLTIP" +msgid "Search for people or text" +msgstr "" + +#: OpenIDPlugin.php:224 +msgctxt "MENU" +msgid "Search" +msgstr "" + +#: OpenIDPlugin.php:283 OpenIDPlugin.php:319 +msgid "OpenID" +msgstr "" + +#: OpenIDPlugin.php:284 +msgid "Login or register with OpenID" +msgstr "" + +#: OpenIDPlugin.php:320 +msgid "Add or remove OpenIDs" +msgstr "" + +#: OpenIDPlugin.php:595 +msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site." +msgstr "" + +#: openidserver.php:106 +#, php-format +msgid "You are not authorized to use the identity %s." +msgstr "" + +#: openidserver.php:126 +msgid "Just an OpenID provider. Nothing to see here, move along..." +msgstr "" + +#: finishopenidlogin.php:34 openidlogin.php:30 +msgid "Already logged in." +msgstr "" + +#: finishopenidlogin.php:43 +msgid "You can't register if you don't agree to the license." +msgstr "" + +#: finishopenidlogin.php:65 +#, php-format +msgid "" +"This is the first time you've logged into %s so we must connect your OpenID " +"to a local account. You can either create a new account, or connect with " +"your existing account, if you have one." +msgstr "" + +#: finishopenidlogin.php:71 +msgid "OpenID Account Setup" +msgstr "" + +#: finishopenidlogin.php:101 +msgid "Create new account" +msgstr "" + +#: finishopenidlogin.php:103 +msgid "Create a new user with this nickname." +msgstr "" + +#: finishopenidlogin.php:106 +msgid "New nickname" +msgstr "" + +#: finishopenidlogin.php:108 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces" +msgstr "" + +#: finishopenidlogin.php:130 +msgid "Create" +msgstr "" + +#: finishopenidlogin.php:135 +msgid "Connect existing account" +msgstr "" + +#: finishopenidlogin.php:137 +msgid "" +"If you already have an account, login with your username and password to " +"connect it to your OpenID." +msgstr "" + +#: finishopenidlogin.php:140 +msgid "Existing nickname" +msgstr "" + +#: finishopenidlogin.php:143 +msgid "Password" +msgstr "" + +#: finishopenidlogin.php:146 +msgid "Connect" +msgstr "" + +#: finishopenidlogin.php:158 finishaddopenid.php:88 +msgid "OpenID authentication cancelled." +msgstr "" + +#: finishopenidlogin.php:162 finishaddopenid.php:92 +#, php-format +msgid "OpenID authentication failed: %s" +msgstr "" + +#: finishopenidlogin.php:227 finishopenidlogin.php:236 +msgid "Registration not allowed." +msgstr "" + +#: finishopenidlogin.php:243 +msgid "Not a valid invitation code." +msgstr "" + +#: finishopenidlogin.php:253 +msgid "Nickname must have only lowercase letters and numbers and no spaces." +msgstr "" + +#: finishopenidlogin.php:258 +msgid "Nickname not allowed." +msgstr "" + +#: finishopenidlogin.php:263 +msgid "Nickname already in use. Try another one." +msgstr "" + +#: finishopenidlogin.php:270 finishopenidlogin.php:350 +msgid "Stored OpenID not found." +msgstr "" + +#: finishopenidlogin.php:279 +msgid "Creating new account for OpenID that already has a user." +msgstr "" + +#: finishopenidlogin.php:339 +msgid "Invalid username or password." +msgstr "" + +#: finishopenidlogin.php:357 +msgid "Error connecting user to OpenID." +msgstr "" + +#: openidlogin.php:68 +#, php-format +msgid "" +"For security reasons, please re-login with your [OpenID](%%doc.openid%%) " +"before changing your settings." +msgstr "" + +#: openidlogin.php:72 +#, php-format +msgid "Login with an [OpenID](%%doc.openid%%) account." +msgstr "" + +#: openidlogin.php:97 finishaddopenid.php:170 +msgid "OpenID Login" +msgstr "" + +#: openidlogin.php:114 +msgid "OpenID login" +msgstr "" + +#: openidlogin.php:121 +msgid "Your OpenID URL" +msgstr "" + +#: openidlogin.php:124 +msgid "Remember me" +msgstr "" + +#: openidlogin.php:125 +msgid "Automatically login in the future; not for shared computers!" +msgstr "" + +#: openidlogin.php:129 +msgid "Login" +msgstr "" + #: openidtrust.php:51 msgid "OpenID Identity Verification" msgstr "" @@ -332,17 +368,37 @@ msgid "" "This page should only be reached during OpenID processing, not directly." msgstr "" -#: openidtrust.php:118 +#: openidtrust.php:117 #, php-format msgid "" "%s has asked to verify your identity. Click Continue to verify your " "identity and login without creating a new password." msgstr "" -#: openidtrust.php:136 +#: openidtrust.php:135 msgid "Continue" msgstr "" -#: openidtrust.php:137 +#: openidtrust.php:136 msgid "Cancel" msgstr "" + +#: finishaddopenid.php:67 +msgid "Not logged in." +msgstr "" + +#: finishaddopenid.php:112 +msgid "You already have this OpenID!" +msgstr "" + +#: finishaddopenid.php:114 +msgid "Someone else already has this OpenID." +msgstr "" + +#: finishaddopenid.php:126 +msgid "Error connecting user." +msgstr "" + +#: finishaddopenid.php:131 +msgid "Error updating profile" +msgstr "" diff --git a/plugins/OpenID/locale/nl/LC_MESSAGES/OpenID.po b/plugins/OpenID/locale/nl/LC_MESSAGES/OpenID.po index ae0329376c..5cda9b129a 100644 --- a/plugins/OpenID/locale/nl/LC_MESSAGES/OpenID.po +++ b/plugins/OpenID/locale/nl/LC_MESSAGES/OpenID.po @@ -8,265 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: StatusNet\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-11 21:42+0000\n" -"PO-Revision-Date: 2010-04-12 00:53+0100\n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" +"PO-Revision-Date: 2010-04-30 02:16+0100\n" +"Last-Translator: Siebrand Mazeland <s.mazeland@xs4all.nl>\n" "Language-Team: Dutch\n" +"MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Last-Translator: Siebrand Mazeland <s.mazeland@xs4all.nl>\n" -"MIME-Version: 1.0\n" - -#: finishaddopenid.php:67 -msgid "Not logged in." -msgstr "Niet aangemeld." - -#: finishaddopenid.php:88 -#: finishopenidlogin.php:149 -msgid "OpenID authentication cancelled." -msgstr "De authenticatie via OpenID is afgebroken." - -#: finishaddopenid.php:92 -#: finishopenidlogin.php:153 -#, php-format -msgid "OpenID authentication failed: %s" -msgstr "De authenticatie via OpenID is mislukt: %s" - -#: finishaddopenid.php:112 -msgid "You already have this OpenID!" -msgstr "U hebt deze OpenID al!" - -#: finishaddopenid.php:114 -msgid "Someone else already has this OpenID." -msgstr "Iemand anders gebruikt deze OpenID al." - -#: finishaddopenid.php:126 -msgid "Error connecting user." -msgstr "Fout bij het verbinden met de gebruiker." - -#: finishaddopenid.php:131 -msgid "Error updating profile" -msgstr "Fout bij het bijwerken van het profiel." - -#: finishaddopenid.php:170 -#: openidlogin.php:95 -msgid "OpenID Login" -msgstr "Aanmelden via OpenID" - -#: finishopenidlogin.php:34 -#: openidlogin.php:30 -msgid "Already logged in." -msgstr "U bent al aangemeld." - -#: finishopenidlogin.php:38 -#: openidlogin.php:37 -#: openidsettings.php:194 -msgid "There was a problem with your session token. Try again, please." -msgstr "Er was een probleem met uw sessietoken. Probeer het opnieuw." - -#: finishopenidlogin.php:43 -msgid "You can't register if you don't agree to the license." -msgstr "U kunt niet registreren als u niet akkoord gaat met de licentie." - -#: finishopenidlogin.php:52 -#: openidsettings.php:208 -msgid "Something weird happened." -msgstr "Er is iets vreemds gebeurd." - -#: finishopenidlogin.php:66 -#, php-format -msgid "This is the first time you've logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one." -msgstr "Dit is de eerste keer dat u aameldt bij %s en uw OpenID moet gekoppeld worden aan uw lokale gebruiker. U kunt een nieuwe gebruiker aanmaken of koppelen met uw bestaande gebruiker als u die al hebt." - -#: finishopenidlogin.php:72 -msgid "OpenID Account Setup" -msgstr "Instellingen OpenID" - -#: finishopenidlogin.php:97 -msgid "Create new account" -msgstr "Nieuwe gebruiker aanmaken" - -#: finishopenidlogin.php:99 -msgid "Create a new user with this nickname." -msgstr "Nieuwe gebruiker met deze naam aanmaken." - -#: finishopenidlogin.php:102 -msgid "New nickname" -msgstr "Nieuwe gebruiker" - -#: finishopenidlogin.php:104 -msgid "1-64 lowercase letters or numbers, no punctuation or spaces" -msgstr "1-64 kleine letters of getallen; geen leestekens of spaties" - -#: finishopenidlogin.php:114 -msgid "My text and files are available under " -msgstr "Mijn teksten en bestanden zijn beschikbaar onder" - -#: finishopenidlogin.php:117 -msgid " except this private data: password, email address, IM address, phone number." -msgstr "behalve de volgende privégegevens: wachtwoord, e-mailadres, IM-adres, telefoonnummer." - -#: finishopenidlogin.php:121 -msgid "Create" -msgstr "Aanmaken" - -#: finishopenidlogin.php:126 -msgid "Connect existing account" -msgstr "Koppelen met bestaande gebruiker" - -#: finishopenidlogin.php:128 -msgid "If you already have an account, login with your username and password to connect it to your OpenID." -msgstr "Als u al een gebruiker hebt, meld u dan aan met uw gebruikersnaam en wachtwoord om de gebruiker te koppelen met uw OpenID." - -#: finishopenidlogin.php:131 -msgid "Existing nickname" -msgstr "Bestaande gebruiker" - -#: finishopenidlogin.php:134 -msgid "Password" -msgstr "Wachtwoord" - -#: finishopenidlogin.php:137 -msgid "Connect" -msgstr "Koppelen" - -#: finishopenidlogin.php:215 -#: finishopenidlogin.php:224 -msgid "Registration not allowed." -msgstr "Registreren is niet mogelijk." - -#: finishopenidlogin.php:231 -msgid "Not a valid invitation code." -msgstr "De uitnodigingscode is niet geldig." - -#: finishopenidlogin.php:241 -msgid "Nickname must have only lowercase letters and numbers and no spaces." -msgstr "De gebruikersnaam mag alleen uit kleine letters en cijfers bestaan, en geen spaties bevatten." - -#: finishopenidlogin.php:246 -msgid "Nickname not allowed." -msgstr "Deze gebruikersnaam is niet toegestaan." - -#: finishopenidlogin.php:251 -msgid "Nickname already in use. Try another one." -msgstr "Deze gebruikersnaam wordt al gebruikt. Kies een andere." - -#: finishopenidlogin.php:258 -#: finishopenidlogin.php:338 -msgid "Stored OpenID not found." -msgstr "Het opgeslagen OpenID is niet aangetroffen." - -#: finishopenidlogin.php:267 -msgid "Creating new account for OpenID that already has a user." -msgstr "Bezig met het aanmaken van een gebruiker voor OpenID die al een gebruiker heeft." - -#: finishopenidlogin.php:327 -msgid "Invalid username or password." -msgstr "Ongeldige gebruikersnaam of wachtwoord." - -#: finishopenidlogin.php:345 -msgid "Error connecting user to OpenID." -msgstr "Fout bij het koppelen met OpenID." - -#: openid.php:141 -msgid "Cannot instantiate OpenID consumer object." -msgstr "Het was niet mogelijk een OpenID-object aan te maken." - -#: openid.php:151 -msgid "Not a valid OpenID." -msgstr "Geen geldige OpenID." - -#: openid.php:153 -#, php-format -msgid "OpenID failure: %s" -msgstr "OpenID-fout: %s" - -#: openid.php:180 -#, php-format -msgid "Could not redirect to server: %s" -msgstr "Het was niet mogelijk door te verwijzen naar de server: %s" - -#: openid.php:198 -#, php-format -msgid "Could not create OpenID form: %s" -msgstr "Het was niet mogelijk het OpenID-formulier aan te maken: %s" - -#: openid.php:214 -msgid "This form should automatically submit itself. If not, click the submit button to go to your OpenID provider." -msgstr "Dit formulier hoort zichzelf automatisch op te slaan. Als dat niet gebeurt, klik dan op de knop \"Aanmelden\" om naar uw OpenID-provider te gaan." - -#: openid.php:246 -msgid "Error saving the profile." -msgstr "Fout bij het opslaan van het profiel." - -#: openid.php:257 -msgid "Error saving the user." -msgstr "Fout bij het opslaan van de gebruiker." - -#: openid.php:277 -msgid "OpenID Auto-Submit" -msgstr "OpenID automatisch opslaan" - -#: openidlogin.php:66 -#, php-format -msgid "For security reasons, please re-login with your [OpenID](%%doc.openid%%) before changing your settings." -msgstr "Om veiligheidsreden moet u opnieuw aanmelden met uw [OpenID](%%doc.openid%%) voordat u uw instellingen kunt wijzigen." - -#: openidlogin.php:70 -#, php-format -msgid "Login with an [OpenID](%%doc.openid%%) account." -msgstr "Aanmelden met een [OpenID](%%doc.openid%%)-gebruiker." - -#: openidlogin.php:112 -msgid "OpenID login" -msgstr "Aanmelden via OpenID" - -#: openidlogin.php:117 -#: openidsettings.php:107 -msgid "OpenID URL" -msgstr "OpenID-URL" - -#: openidlogin.php:119 -msgid "Your OpenID URL" -msgstr "Uw OpenID-URL" - -#: openidlogin.php:122 -msgid "Remember me" -msgstr "Aanmeldgegevens onthouden" - -#: openidlogin.php:123 -msgid "Automatically login in the future; not for shared computers!" -msgstr "In het vervolg automatisch aanmelden. Niet gebruiken op gedeelde computers!" - -#: openidlogin.php:127 -msgid "Login" -msgstr "Aanmelden" - -#: OpenIDPlugin.php:123 -#: OpenIDPlugin.php:135 -msgid "OpenID" -msgstr "OpenID" - -#: OpenIDPlugin.php:124 -msgid "Login or register with OpenID" -msgstr "Aanmelden of registreren met OpenID" - -#: OpenIDPlugin.php:136 -msgid "Add or remove OpenIDs" -msgstr "OpenID's toevoegen of verwijderen" - -#: OpenIDPlugin.php:324 -msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site." -msgstr "Gebruik <a href=\"http://openid.net/\">OpenID</a> om aan te melden bij de site." - -#: openidserver.php:106 -#, php-format -msgid "You are not authorized to use the identity %s." -msgstr "U mag de identiteit %s niet gebruiken." - -#: openidserver.php:126 -msgid "Just an OpenID provider. Nothing to see here, move along..." -msgstr "Gewoon een OpenID-provider. Niets te zien hier..." #: openidsettings.php:59 msgid "OpenID settings" @@ -285,6 +34,11 @@ msgstr "OpenID toevoegen" msgid "If you want to add an OpenID to your account, enter it in the box below and click \"Add\"." msgstr "Als u een OpenID aan uw gebruiker wilt toevoegen, voer deze dan hieronder in en klik op \"Toevoegen\"." +#: openidsettings.php:107 +#: openidlogin.php:119 +msgid "OpenID URL" +msgstr "OpenID-URL" + #: openidsettings.php:117 msgid "Add" msgstr "Toevoegen" @@ -302,21 +56,303 @@ msgid "You can remove an OpenID from your account by clicking the button marked msgstr "U kunt een OpenID van uw gebruiker verwijderen door te klikken op de knop \"Verwijderen\"." #: openidsettings.php:172 +#: openidsettings.php:213 msgid "Remove" msgstr "Verwijderen" -#: openidsettings.php:228 +#: openidsettings.php:186 +msgid "OpenID Trusted Sites" +msgstr "Vertrouwde OpenID-sites" + +#: openidsettings.php:189 +msgid "The following sites are allowed to access your identity and log you in. You can remove a site from this list to deny it access to your OpenID." +msgstr "De volgende sites hebben toegang tot uw indentiteit en kunnen u aanmelden. U kunt een site verwijderen uit deze lijst zodat deze niet langer toegang heeft tot uw OpenID." + +#: openidsettings.php:231 +#: finishopenidlogin.php:38 +#: openidlogin.php:39 +msgid "There was a problem with your session token. Try again, please." +msgstr "Er was een probleem met uw sessietoken. Probeer het opnieuw." + +#: openidsettings.php:247 +#: finishopenidlogin.php:51 +msgid "Something weird happened." +msgstr "Er is iets vreemds gebeurd." + +#: openidsettings.php:271 +msgid "No such OpenID trustroot." +msgstr "Die OpenID trustroot bestaat niet." + +#: openidsettings.php:275 +msgid "Trustroots removed" +msgstr "De trustroots zijn verwijderd" + +#: openidsettings.php:298 msgid "No such OpenID." msgstr "De OpenID bestaat niet." -#: openidsettings.php:233 +#: openidsettings.php:303 msgid "That OpenID does not belong to you." msgstr "Die OpenID is niet van u." -#: openidsettings.php:237 +#: openidsettings.php:307 msgid "OpenID removed." msgstr "OpenID verwijderd." +#: openid.php:137 +msgid "Cannot instantiate OpenID consumer object." +msgstr "Het was niet mogelijk een OpenID-object aan te maken." + +#: openid.php:147 +msgid "Not a valid OpenID." +msgstr "Geen geldige OpenID." + +#: openid.php:149 +#, php-format +msgid "OpenID failure: %s" +msgstr "OpenID-fout: %s" + +#: openid.php:176 +#, php-format +msgid "Could not redirect to server: %s" +msgstr "Het was niet mogelijk door te verwijzen naar de server: %s" + +#: openid.php:194 +#, php-format +msgid "Could not create OpenID form: %s" +msgstr "Het was niet mogelijk het OpenID-formulier aan te maken: %s" + +#: openid.php:210 +msgid "This form should automatically submit itself. If not, click the submit button to go to your OpenID provider." +msgstr "Dit formulier hoort zichzelf automatisch op te slaan. Als dat niet gebeurt, klik dan op de knop \"Aanmelden\" om naar uw OpenID-provider te gaan." + +#: openid.php:242 +msgid "Error saving the profile." +msgstr "Fout bij het opslaan van het profiel." + +#: openid.php:253 +msgid "Error saving the user." +msgstr "Fout bij het opslaan van de gebruiker." + +#: openid.php:282 +msgid "Unauthorized URL used for OpenID login." +msgstr "Ongeautoriseerde URL gebruikt voor aanmelden via OpenID" + +#: openid.php:302 +#, fuzzy +msgid "OpenID Login Submission" +msgstr "Aanmelden via OpenID" + +#: openid.php:312 +msgid "Requesting authorization from your login provider..." +msgstr "Bezig met het vragen van autorisatie van uw aanmeldprovider..." + +#: openid.php:315 +msgid "If you are not redirected to your login provider in a few seconds, try pushing the button below." +msgstr "Als u binnen een aantal seconden niet wordt doorverwezen naar uw aanmeldprovider, klik dan op de onderstaande knop." + +#. TRANS: Tooltip for main menu option "Login" +#: OpenIDPlugin.php:204 +msgctxt "TOOLTIP" +msgid "Login to the site" +msgstr "Aanmelden bij de site" + +#: OpenIDPlugin.php:207 +#, fuzzy +msgctxt "MENU" +msgid "Login" +msgstr "Aanmelden" + +#. TRANS: Tooltip for main menu option "Help" +#: OpenIDPlugin.php:212 +msgctxt "TOOLTIP" +msgid "Help me!" +msgstr "Help me" + +#: OpenIDPlugin.php:215 +msgctxt "MENU" +msgid "Help" +msgstr "Hulp" + +#. TRANS: Tooltip for main menu option "Search" +#: OpenIDPlugin.php:221 +msgctxt "TOOLTIP" +msgid "Search for people or text" +msgstr "Zoeken naar mensen of tekst" + +#: OpenIDPlugin.php:224 +msgctxt "MENU" +msgid "Search" +msgstr "Zoeken" + +#: OpenIDPlugin.php:283 +#: OpenIDPlugin.php:319 +msgid "OpenID" +msgstr "OpenID" + +#: OpenIDPlugin.php:284 +msgid "Login or register with OpenID" +msgstr "Aanmelden of registreren met OpenID" + +#: OpenIDPlugin.php:320 +msgid "Add or remove OpenIDs" +msgstr "OpenID's toevoegen of verwijderen" + +#: OpenIDPlugin.php:595 +msgid "Use <a href=\"http://openid.net/\">OpenID</a> to login to the site." +msgstr "Gebruik <a href=\"http://openid.net/\">OpenID</a> om aan te melden bij de site." + +#: openidserver.php:106 +#, php-format +msgid "You are not authorized to use the identity %s." +msgstr "U mag de identiteit %s niet gebruiken." + +#: openidserver.php:126 +msgid "Just an OpenID provider. Nothing to see here, move along..." +msgstr "Gewoon een OpenID-provider. Niets te zien hier..." + +#: finishopenidlogin.php:34 +#: openidlogin.php:30 +msgid "Already logged in." +msgstr "U bent al aangemeld." + +#: finishopenidlogin.php:43 +msgid "You can't register if you don't agree to the license." +msgstr "U kunt niet registreren als u niet akkoord gaat met de licentie." + +#: finishopenidlogin.php:65 +#, php-format +msgid "This is the first time you've logged into %s so we must connect your OpenID to a local account. You can either create a new account, or connect with your existing account, if you have one." +msgstr "Dit is de eerste keer dat u aameldt bij %s en uw OpenID moet gekoppeld worden aan uw lokale gebruiker. U kunt een nieuwe gebruiker aanmaken of koppelen met uw bestaande gebruiker als u die al hebt." + +#: finishopenidlogin.php:71 +msgid "OpenID Account Setup" +msgstr "Instellingen OpenID" + +#: finishopenidlogin.php:101 +msgid "Create new account" +msgstr "Nieuwe gebruiker aanmaken" + +#: finishopenidlogin.php:103 +msgid "Create a new user with this nickname." +msgstr "Nieuwe gebruiker met deze naam aanmaken." + +#: finishopenidlogin.php:106 +msgid "New nickname" +msgstr "Nieuwe gebruiker" + +#: finishopenidlogin.php:108 +msgid "1-64 lowercase letters or numbers, no punctuation or spaces" +msgstr "1-64 kleine letters of getallen; geen leestekens of spaties" + +#: finishopenidlogin.php:130 +msgid "Create" +msgstr "Aanmaken" + +#: finishopenidlogin.php:135 +msgid "Connect existing account" +msgstr "Koppelen met bestaande gebruiker" + +#: finishopenidlogin.php:137 +msgid "If you already have an account, login with your username and password to connect it to your OpenID." +msgstr "Als u al een gebruiker hebt, meld u dan aan met uw gebruikersnaam en wachtwoord om de gebruiker te koppelen met uw OpenID." + +#: finishopenidlogin.php:140 +msgid "Existing nickname" +msgstr "Bestaande gebruiker" + +#: finishopenidlogin.php:143 +msgid "Password" +msgstr "Wachtwoord" + +#: finishopenidlogin.php:146 +msgid "Connect" +msgstr "Koppelen" + +#: finishopenidlogin.php:158 +#: finishaddopenid.php:88 +msgid "OpenID authentication cancelled." +msgstr "De authenticatie via OpenID is afgebroken." + +#: finishopenidlogin.php:162 +#: finishaddopenid.php:92 +#, php-format +msgid "OpenID authentication failed: %s" +msgstr "De authenticatie via OpenID is mislukt: %s" + +#: finishopenidlogin.php:227 +#: finishopenidlogin.php:236 +msgid "Registration not allowed." +msgstr "Registreren is niet mogelijk." + +#: finishopenidlogin.php:243 +msgid "Not a valid invitation code." +msgstr "De uitnodigingscode is niet geldig." + +#: finishopenidlogin.php:253 +msgid "Nickname must have only lowercase letters and numbers and no spaces." +msgstr "De gebruikersnaam mag alleen uit kleine letters en cijfers bestaan, en geen spaties bevatten." + +#: finishopenidlogin.php:258 +msgid "Nickname not allowed." +msgstr "Deze gebruikersnaam is niet toegestaan." + +#: finishopenidlogin.php:263 +msgid "Nickname already in use. Try another one." +msgstr "Deze gebruikersnaam wordt al gebruikt. Kies een andere." + +#: finishopenidlogin.php:270 +#: finishopenidlogin.php:350 +msgid "Stored OpenID not found." +msgstr "Het opgeslagen OpenID is niet aangetroffen." + +#: finishopenidlogin.php:279 +msgid "Creating new account for OpenID that already has a user." +msgstr "Bezig met het aanmaken van een gebruiker voor OpenID die al een gebruiker heeft." + +#: finishopenidlogin.php:339 +msgid "Invalid username or password." +msgstr "Ongeldige gebruikersnaam of wachtwoord." + +#: finishopenidlogin.php:357 +msgid "Error connecting user to OpenID." +msgstr "Fout bij het koppelen met OpenID." + +#: openidlogin.php:68 +#, php-format +msgid "For security reasons, please re-login with your [OpenID](%%doc.openid%%) before changing your settings." +msgstr "Om veiligheidsreden moet u opnieuw aanmelden met uw [OpenID](%%doc.openid%%) voordat u uw instellingen kunt wijzigen." + +#: openidlogin.php:72 +#, php-format +msgid "Login with an [OpenID](%%doc.openid%%) account." +msgstr "Aanmelden met een [OpenID](%%doc.openid%%)-gebruiker." + +#: openidlogin.php:97 +#: finishaddopenid.php:170 +msgid "OpenID Login" +msgstr "Aanmelden via OpenID" + +#: openidlogin.php:114 +msgid "OpenID login" +msgstr "Aanmelden via OpenID" + +#: openidlogin.php:121 +msgid "Your OpenID URL" +msgstr "Uw OpenID-URL" + +#: openidlogin.php:124 +msgid "Remember me" +msgstr "Aanmeldgegevens onthouden" + +#: openidlogin.php:125 +msgid "Automatically login in the future; not for shared computers!" +msgstr "In het vervolg automatisch aanmelden. Niet gebruiken op gedeelde computers!" + +#: openidlogin.php:129 +msgid "Login" +msgstr "Aanmelden" + #: openidtrust.php:51 msgid "OpenID Identity Verification" msgstr "OpenID-identiteitscontrole" @@ -325,16 +361,35 @@ msgstr "OpenID-identiteitscontrole" msgid "This page should only be reached during OpenID processing, not directly." msgstr "Deze pagina hoort alleen bezocht te worden tijdens het verwerken van een OpenID, en niet direct." -#: openidtrust.php:118 +#: openidtrust.php:117 #, php-format msgid "%s has asked to verify your identity. Click Continue to verify your identity and login without creating a new password." msgstr "%s heeft gevraagd uw identiteit te bevestigen. Klik op \"Doorgaan\" om uw indentiteit te controleren en aan te melden zonder een wachtwoord te hoeven invoeren." -#: openidtrust.php:136 +#: openidtrust.php:135 msgid "Continue" msgstr "Doorgaan" -#: openidtrust.php:137 +#: openidtrust.php:136 msgid "Cancel" msgstr "Annuleren" +#: finishaddopenid.php:67 +msgid "Not logged in." +msgstr "Niet aangemeld." + +#: finishaddopenid.php:112 +msgid "You already have this OpenID!" +msgstr "U hebt deze OpenID al!" + +#: finishaddopenid.php:114 +msgid "Someone else already has this OpenID." +msgstr "Iemand anders gebruikt deze OpenID al." + +#: finishaddopenid.php:126 +msgid "Error connecting user." +msgstr "Fout bij het verbinden met de gebruiker." + +#: finishaddopenid.php:131 +msgid "Error updating profile" +msgstr "Fout bij het bijwerken van het profiel." diff --git a/plugins/OpenID/openid.php b/plugins/OpenID/openid.php index 1524389177..1b93163e5f 100644 --- a/plugins/OpenID/openid.php +++ b/plugins/OpenID/openid.php @@ -134,6 +134,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) $consumer = oid_consumer(); if (!$consumer) { + // TRANS: OpenID plugin server error. common_server_error(_m('Cannot instantiate OpenID consumer object.')); return false; } @@ -144,8 +145,13 @@ 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); } @@ -164,19 +170,43 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) $auth_request->addExtension($sreg_request); } + $requiredTeam = common_config('openid', 'required_team'); + if ($requiredTeam) { + // LaunchPad OpenID extension + $team_request = new Auth_OpenID_TeamsRequest(array($requiredTeam)); + if ($team_request) { + $auth_request->addExtension($team_request); + } + } + $trust_root = common_root_url(true); $process_url = common_local_url($returnto); - if ($auth_request->shouldSendRedirect()) { + // Net::OpenID::Server as used on LiveJournal appears to incorrectly + // reject POST requests for data submissions that OpenID 1.1 specs + // as GET, although 2.0 allows them: + // https://rt.cpan.org/Public/Bug/Display.html?id=42202 + // + // Our OpenID libraries would have switched in the redirect automatically + // if it were detecting 1.1 compatibility mode, however the server is + // advertising itself as 2.0-compatible, so we got switched to the POST. + // + // Since the GET should always work anyway, we'll just take out the + // autosubmitter for now. + // + //if ($auth_request->shouldSendRedirect()) { $redirect_url = $auth_request->redirectURL($trust_root, $process_url, $immediate); if (!$redirect_url) { } else if (Auth_OpenID::isFailure($redirect_url)) { + // TRANS: OpenID plugin server error. Given when the OpenID authentication request cannot be redirected. + // TRANS: %s is the failure message. return sprintf(_m('Could not redirect to server: %s'), $redirect_url->message); } else { common_redirect($redirect_url, 303); } + /* } else { // Generate form markup and render it. $form_id = 'openid_message'; @@ -191,6 +221,8 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) // Display an error if the form markup couldn't be generated; // otherwise, render the HTML. if (Auth_OpenID::isFailure($form_html)) { + // TRANS: OpenID plugin server error if the form markup could not be generated. + // TRANS: %s is the failure message. common_server_error(sprintf(_m('Could not create OpenID form: %s'), $form_html->message)); } else { $action = new AutosubmitAction(); // see below @@ -200,6 +232,7 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) $action->handle(array('action' => 'autosubmit')); } } + */ } # Half-assed attempt at a module-private function @@ -207,16 +240,20 @@ function oid_authenticate($openid_url, $returnto, $immediate=false) function _oid_print_instructions() { common_element('div', 'instructions', + // TRANS: OpenID plugin user instructions. _m('This form should automatically submit itself. '. 'If not, click the submit button to go to your '. '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); @@ -239,6 +276,7 @@ function oid_update_user(&$user, &$sreg) # XXX save timezone if it's passed if (!$profile->update($orig_profile)) { + // TRANS: OpenID plugin server error. common_server_error(_m('Error saving the profile.')); return false; } @@ -250,6 +288,7 @@ function oid_update_user(&$user, &$sreg) } if (!$user->update($orig_user)) { + // TRANS: OpenID plugin server error. common_server_error(_m('Error saving the user.')); return false; } @@ -279,6 +318,7 @@ function oid_assert_allowed($url) return; } } + // TRANS: OpenID plugin client exception (403). throw new ClientException(_m("Unauthorized URL used for OpenID login."), 403); } } @@ -286,6 +326,33 @@ function oid_assert_allowed($url) return; } +/** + * Check the teams available in the given OpenID response + * Using Launchpad's OpenID teams extension + * + * @return boolean whether this user is acceptable + */ +function oid_check_teams($response) +{ + $requiredTeam = common_config('openid', 'required_team'); + if ($requiredTeam) { + $team_resp = new Auth_OpenID_TeamsResponse($response); + if ($team_resp) { + $teams = $team_resp->getTeams(); + } else { + $teams = array(); + } + + $match = in_array($requiredTeam, $teams); + $is = $match ? 'is' : 'is not'; + common_log(LOG_DEBUG, "Remote user $is in required team $requiredTeam: [" . implode(', ', $teams) . "]"); + + return $match; + } + + return true; +} + class AutosubmitAction extends Action { var $form_html = null; @@ -299,11 +366,24 @@ class AutosubmitAction extends Action function title() { - return _m('OpenID Auto-Submit'); + // TRANS: Title + return _m('OpenID Login Submission'); } function showContent() { + $this->raw('<p style="margin: 20px 80px">'); + // @fixme this would be better using standard CSS class, but the present theme's a bit scary. + $this->element('img', array('src' => Theme::path('images/icons/icon_processing.gif', 'base'), + // for some reason the base CSS sets <img>s as block display?! + 'style' => 'display: inline')); + // TRANS: OpenID plugin message used while requesting authorization user's OpenID login provider. + $this->text(_m('Requesting authorization from your login provider...')); + $this->raw('</p>'); + $this->raw('<p style="margin-top: 60px; font-style: italic">'); + // TRANS: OpenID plugin message. User instruction while requesting authorization user's OpenID login provider. + $this->text(_m('If you are not redirected to your login provider in a few seconds, try pushing the button below.')); + $this->raw('</p>'); $this->raw($this->form_html); } @@ -311,8 +391,6 @@ class AutosubmitAction extends Action { parent::showScripts(); $this->element('script', null, - '$(document).ready(function() { ' . - ' $(\'#'. $this->form_id .'\').submit(); '. - '});'); + 'document.getElementById(\'' . $this->form_id . '\').submit();'); } } diff --git a/plugins/OpenID/openidadminpanel.php b/plugins/OpenID/openidadminpanel.php new file mode 100644 index 0000000000..ce4806cc89 --- /dev/null +++ b/plugins/OpenID/openidadminpanel.php @@ -0,0 +1,280 @@ +<?php +/** + * StatusNet, the distributed open-source microblogging tool + * + * OpenID bridge 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 Settings + * @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); +} + +/** + * Administer global OpenID settings + * + * @category Admin + * @package StatusNet + * @author Zach Copley <zach@status.net> + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + +class OpenidadminpanelAction extends AdminPanelAction +{ + /** + * Returns the page title + * + * @return string page title + */ + + function title() + { + return _m('OpenID'); + } + + /** + * Instructions for using this form. + * + * @return string instructions + */ + + function getInstructions() + { + return _m('OpenID settings'); + } + + /** + * Show the OpenID admin panel form + * + * @return void + */ + + function showForm() + { + $form = new OpenIDAdminPanelForm($this); + $form->show(); + return; + } + + /** + * Save settings from the form + * + * @return void + */ + + function saveSettings() + { + static $settings = array( + 'openid' => array('trusted_provider', 'required_team') + ); + + static $booleans = array( + 'openid' => array('append_username'), + 'site' => array('openidonly') + ); + + $values = array(); + + foreach ($settings as $section => $parts) { + foreach ($parts as $setting) { + $values[$section][$setting] + = $this->trimmed($setting); + } + } + + foreach ($booleans as $section => $parts) { + foreach ($parts as $setting) { + $values[$section][$setting] + = ($this->boolean($setting)) ? 1 : 0; + } + } + + // 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]); + } + } + + foreach ($booleans as $section => $parts) { + foreach ($parts as $setting) { + Config::save($section, $setting, $values[$section][$setting]); + } + } + + $config->query('COMMIT'); + + return; + } + + function validate(&$values) + { + // Validate consumer key and secret (can't be too long) + + if (mb_strlen($values['openid']['trusted_provider']) > 255) { + $this->clientError( + _m("Invalid provider URL. Max length is 255 characters.") + ); + } + + if (mb_strlen($values['openid']['required_team']) > 255) { + $this->clientError( + _m("Invalid team name. Max length is 255 characters.") + ); + } + } +} + +class OpenIDAdminPanelForm extends AdminForm +{ + /** + * ID of the form + * + * @return int ID of the form + */ + + function id() + { + return 'openidadminpanel'; + } + + /** + * class of the form + * + * @return string class of the form + */ + + function formClass() + { + return 'form_settings'; + } + + /** + * Action of the form + * + * @return string URL of the action + */ + + function action() + { + return common_local_url('openidadminpanel'); + } + + /** + * Data elements of the form + * + * @return void + * + * @todo Some of the options could prevent users from logging in again. + * Make sure that the acting administrator has a valid OpenID matching, + * or more carefully warn folks. + */ + + function formData() + { + $this->out->elementStart( + 'fieldset', + array('id' => 'settings_openid') + ); + $this->out->element('legend', null, _m('Trusted provider')); + $this->out->element('p', 'form_guide', + _m('By default, users are allowed to authenticate with any OpenID provider. ' . + 'If you are using your own OpenID service for shared sign-in, ' . + 'you can restrict access to only your own users here.')); + $this->out->elementStart('ul', 'form_data'); + + $this->li(); + $this->input( + 'trusted_provider', + _m('Provider URL'), + _m('All OpenID logins will be sent to this URL; other providers may not be used.'), + 'openid' + ); + $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'), + _m('Only allow logins from users in the given team (Launchpad extension).'), + 'openid' + ); + $this->unli(); + + $this->out->elementEnd('ul'); + $this->out->elementEnd('fieldset'); + + $this->out->elementStart( + 'fieldset', + array('id' => 'settings_openid-options') + ); + $this->out->element('legend', null, _m('Options')); + + $this->out->elementStart('ul', 'form_data'); + + $this->li(); + + $this->out->checkbox( + 'openidonly', _m('Enable OpenID-only mode'), + (bool) $this->value('openidonly', 'site'), + _m('Require all users to login via OpenID. WARNING: disables password authentication for all users!'), + 'true' + ); + $this->unli(); + + $this->out->elementEnd('ul'); + + $this->out->elementEnd('fieldset'); + } + + /** + * Action elements + * + * @return void + */ + + function formActions() + { + $this->out->submit('submit', _('Save'), 'submit', null, _m('Save OpenID settings')); + } +} diff --git a/plugins/OpenID/openidlogin.php b/plugins/OpenID/openidlogin.php index 2a743672cf..f3a5c88479 100644 --- a/plugins/OpenID/openidlogin.php +++ b/plugins/OpenID/openidlogin.php @@ -27,19 +27,21 @@ class OpenidloginAction extends Action { parent::handle($args); if (common_is_real_login()) { + // TRANS: Client error message trying to log on with OpenID while already logged on. $this->clientError(_m('Already logged in.')); } else if ($_SERVER['REQUEST_METHOD'] == 'POST') { - $openid_url = $this->trimmed('openid_url'); + $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'); + } oid_assert_allowed($openid_url); - # CSRF protection - $token = $this->trimmed('token'); - if (!$token || $token != common_session_token()) { - $this->showForm(_m('There was a problem with your session token. Try again, please.'), $openid_url); - return; - } - $rememberme = $this->boolean('rememberme'); common_ensure_session(); @@ -65,10 +67,14 @@ class OpenidloginAction extends Action common_get_returnto()) { // rememberme logins have to reauthenticate before // changing any profile settings (cookie-stealing protection) + // TRANS: OpenID plugin message. Rememberme logins have to reauthenticate before changing any profile settings. + // TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)". return _m('For security reasons, please re-login with your ' . '[OpenID](%%doc.openid%%) ' . 'before changing your settings.'); } else { + // TRANS: OpenID plugin message. + // TRANS: "OpenID" is the display text for a link with URL "(%%doc.openid%%)". return _m('Login with an [OpenID](%%doc.openid%%) account.'); } } @@ -89,11 +95,20 @@ 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() { + // TRANS: OpenID plugin message. Title. return _m('OpenID Login'); } @@ -111,22 +126,43 @@ class OpenidloginAction extends Action 'class' => 'form_settings', 'action' => $formaction)); $this->elementStart('fieldset'); + // TRANS: OpenID plugin logon form legend. $this->element('legend', null, _m('OpenID login')); - $this->hidden('token', common_session_token()); $this->elementStart('ul', 'form_data'); $this->elementStart('li'); - $this->input('openid_url', _m('OpenID URL'), - $this->openid_url, - _m('Your OpenID URL')); + $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 { + // TRANS: OpenID plugin logon form field label. + $this->input('openid_url', _m('OpenID URL'), + $this->openid_url, + // TRANS: OpenID plugin logon form field instructions. + _m('Your OpenID URL')); + } $this->elementEnd('li'); $this->elementStart('li', array('id' => 'settings_rememberme')); + // TRANS: OpenID plugin logon form checkbox label for setting to put the OpenID information in a cookie. $this->checkbox('rememberme', _m('Remember me'), false, + // TRANS: OpenID plugin logon form field instructions. _m('Automatically login in the future; ' . 'not for shared computers!')); $this->elementEnd('li'); $this->elementEnd('ul'); - $this->submit('submit', _m('Login')); + // TRANS: OpenID plugin logon form button label to start logon with the data provided in the logon form. + $this->submit('submit', _m('BUTTON', 'Login')); $this->elementEnd('fieldset'); $this->elementEnd('form'); } diff --git a/plugins/OpenID/openidserver.php b/plugins/OpenID/openidserver.php index a31596a107..b2cf1f8ac3 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; } @@ -103,6 +114,7 @@ class OpenidserverAction extends Action $response = $this->generateDenyResponse($request); } else { //invalid + // TRANS: OpenID plugin client error given trying to add an unauthorised OpenID to a user (403). $this->clientError(sprintf(_m('You are not authorized to use the identity %s.'),$request->identity),$code=403); } } else { @@ -123,6 +135,7 @@ class OpenidserverAction extends Action } $this->raw($response->body); }else{ + // TRANS: OpenID plugin client error given when not getting a response for a given OpenID provider (500). $this->clientError(_m('Just an OpenID provider. Nothing to see here, move along...'),$code=500); } } diff --git a/plugins/OpenID/openidsettings.php b/plugins/OpenID/openidsettings.php index 16142cf48c..505e7d0ee3 100644 --- a/plugins/OpenID/openidsettings.php +++ b/plugins/OpenID/openidsettings.php @@ -90,34 +90,36 @@ class OpenidsettingsAction extends AccountSettingsAction { $user = common_current_user(); - $this->elementStart('form', array('method' => 'post', - 'id' => 'form_settings_openid_add', - 'class' => 'form_settings', - 'action' => - common_local_url('openidsettings'))); - $this->elementStart('fieldset', array('id' => 'settings_openid_add')); - $this->element('legend', null, _m('Add OpenID')); - $this->hidden('token', common_session_token()); - $this->element('p', 'form_guide', - _m('If you want to add an OpenID to your account, ' . - 'enter it in the box below and click "Add".')); - $this->elementStart('ul', 'form_data'); - $this->elementStart('li'); - $this->element('label', array('for' => 'openid_url'), - _m('OpenID URL')); - $this->element('input', array('name' => 'openid_url', - 'type' => 'text', - 'id' => 'openid_url')); - $this->elementEnd('li'); - $this->elementEnd('ul'); - $this->element('input', array('type' => 'submit', - 'id' => 'settings_openid_add_action-submit', - 'name' => 'add', - 'class' => 'submit', - 'value' => _m('Add'))); - $this->elementEnd('fieldset'); - $this->elementEnd('form'); - + if (!common_config('openid', 'trusted_provider')) { + $this->elementStart('form', array('method' => 'post', + 'id' => 'form_settings_openid_add', + 'class' => 'form_settings', + 'action' => + common_local_url('openidsettings'))); + $this->elementStart('fieldset', array('id' => 'settings_openid_add')); + + $this->element('legend', null, _m('Add OpenID')); + $this->hidden('token', common_session_token()); + $this->element('p', 'form_guide', + _m('If you want to add an OpenID to your account, ' . + 'enter it in the box below and click "Add".')); + $this->elementStart('ul', 'form_data'); + $this->elementStart('li'); + $this->element('label', array('for' => 'openid_url'), + _m('OpenID URL')); + $this->element('input', array('name' => 'openid_url', + 'type' => 'text', + 'id' => 'openid_url')); + $this->elementEnd('li'); + $this->elementEnd('ul'); + $this->element('input', array('type' => 'submit', + 'id' => 'settings_openid_add_action-submit', + 'name' => 'add', + 'class' => 'submit', + 'value' => _m('Add'))); + $this->elementEnd('fieldset'); + $this->elementEnd('form'); + } $oid = new User_openid(); $oid->user_id = $user->id; @@ -234,10 +236,14 @@ class OpenidsettingsAction extends AccountSettingsAction } if ($this->arg('add')) { - $result = oid_authenticate($this->trimmed('openid_url'), - 'finishaddopenid'); - if (is_string($result)) { // error message - $this->showForm($result); + if (common_config('openid', 'trusted_provider')) { + $this->showForm(_m("Can't add new providers.")); + } else { + $result = oid_authenticate($this->trimmed('openid_url'), + 'finishaddopenid'); + if (is_string($result)) { // error message + $this->showForm($result); + } } } else if ($this->arg('remove')) { $this->removeOpenid(); diff --git a/plugins/PostDebug/locale/PostDebug.pot b/plugins/PostDebug/locale/PostDebug.pot new file mode 100644 index 0000000000..b7107d4c17 --- /dev/null +++ b/plugins/PostDebug/locale/PostDebug.pot @@ -0,0 +1,21 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: PostDebugPlugin.php:58 +msgid "Debugging tool to record request details on POST." +msgstr "" diff --git a/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot b/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot index 8f8434a85d..bc0e814f2c 100644 --- a/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot +++ b/plugins/PoweredByStatusNet/locale/PoweredByStatusNet.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+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" diff --git a/plugins/PtitUrl/PtitUrlPlugin.php b/plugins/PtitUrl/PtitUrlPlugin.php index cdf46846ba..25a463c0be 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/PtitUrl/locale/PtitUrl.pot b/plugins/PtitUrl/locale/PtitUrl.pot new file mode 100644 index 0000000000..a888f80e4a --- /dev/null +++ b/plugins/PtitUrl/locale/PtitUrl.pot @@ -0,0 +1,22 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: PtitUrlPlugin.php:67 +#, php-format +msgid "Uses <a href=\"http://%1$s/\">%1$s</a> URL-shortener service." +msgstr "" diff --git a/plugins/RSSCloud/RSSCloudPlugin.php b/plugins/RSSCloud/RSSCloudPlugin.php index 001106acec..c1951cdbf8 100644 --- a/plugins/RSSCloud/RSSCloudPlugin.php +++ b/plugins/RSSCloud/RSSCloudPlugin.php @@ -100,7 +100,7 @@ class RSSCloudPlugin extends Plugin * * Hook for RouterInitialized event. * - * @param Mapper &$m URL parser and mapper + * @param Mapper $m URL parser and mapper * * @return boolean hook return */ @@ -192,24 +192,12 @@ 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/RSSCloud/RSSCloudQueueHandler.php b/plugins/RSSCloud/RSSCloudQueueHandler.php index 295c261895..ef11eda2e7 100644 --- a/plugins/RSSCloud/RSSCloudQueueHandler.php +++ b/plugins/RSSCloud/RSSCloudQueueHandler.php @@ -28,7 +28,12 @@ class RSSCloudQueueHandler extends QueueHandler function handle($notice) { - $profile = $notice->getProfile(); + try { + $profile = $notice->getProfile(); + } catch (Exception $e) { + common_log(LOG_ERR, "Dropping RSSCloud item for notice with bogus profile: " . $e->getMessage()); + return true; + } $notifier = new RSSCloudNotifier(); return $notifier->notify($profile); } diff --git a/plugins/RSSCloud/locale/RSSCloud.pot b/plugins/RSSCloud/locale/RSSCloud.pot new file mode 100644 index 0000000000..4078cc749d --- /dev/null +++ b/plugins/RSSCloud/locale/RSSCloud.pot @@ -0,0 +1,24 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: RSSCloudPlugin.php:260 +msgid "" +"The RSSCloud plugin enables your StatusNet instance to publish real-time " +"updates for profile RSS feeds using the <a href=\"http://rsscloud.org/" +"\">RSSCloud protocol</a>\"." +msgstr "" diff --git a/plugins/Realtime/README b/plugins/Realtime/README index 524382696b..99c79cfab5 100644 --- a/plugins/Realtime/README +++ b/plugins/Realtime/README @@ -1,6 +1,5 @@ == TODO == * i18n -* Change in context URL to conversation (try not to construct the URL in JS) * Update mark behaviour (on notice send) * Pause, Send a notice ~ should not update counter * Pause ~ retain up to 50-100 most recent notices diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index b559d80c60..352afcf785 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -250,14 +250,7 @@ class RealtimePlugin extends Plugin $arr['url'] = $notice->bestUrl(); $arr['html'] = htmlspecialchars($notice->rendered); $arr['source'] = htmlspecialchars($arr['source']); - - if (!empty($notice->reply_to)) { - $reply_to = Notice::staticGet('id', $notice->reply_to); - if (!empty($reply_to)) { - $arr['in_reply_to_status_url'] = $reply_to->bestUrl(); - } - $reply_to = null; - } + $arr['conversation_url'] = $this->getConversationUrl($notice); $profile = $notice->getProfile(); $arr['user']['profile_url'] = $profile->profileurl; @@ -272,10 +265,7 @@ class RealtimePlugin extends Plugin $arr['retweeted_status']['source'] = htmlspecialchars($original->source); $originalProfile = $original->getProfile(); $arr['retweeted_status']['user']['profile_url'] = $originalProfile->profileurl; - if (!empty($original->reply_to)) { - $originalReply = Notice::staticGet('id', $original->reply_to); - $arr['retweeted_status']['in_reply_to_status_url'] = $originalReply->bestUrl(); - } + $arr['retweeted_status']['conversation_url'] = $this->getConversationUrl($original); } $original = null; } @@ -303,6 +293,34 @@ class RealtimePlugin extends Plugin return $tags; } + function getConversationUrl($notice) + { + $convurl = null; + + if ($notice->hasConversation()) { + $conv = Conversation::staticGet( + 'id', + $notice->conversation + ); + $convurl = $conv->uri; + + if(empty($convurl)) { + $msg = sprintf( + "Couldn't find Conversation ID %d to make 'in context'" + . "link for Notice ID %d", + $notice->conversation, + $notice->id + ); + + common_log(LOG_WARNING, $msg); + } else { + $convurl .= '#notice-' . $notice->id; + } + } + + return $convurl; + } + function _getScripts() { return array('plugins/Realtime/realtimeupdate.js'); diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index 2e5851ae53..25dc12d584 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -149,8 +149,8 @@ RealtimeUpdate = { "from "+ "<span class=\"device\">"+source+"</span>"+ // may have a link "</span>"; - if (data['in_reply_to_status_id']) { - ni = ni+" <a class=\"response\" href=\""+data['in_reply_to_status_url']+"\">in context</a>"; + if (data['conversation_url']) { + ni = ni+" <a class=\"response\" href=\""+data['conversation_url']+"\">in context</a>"; } if (repeat) { diff --git a/plugins/Recaptcha/RecaptchaPlugin.php b/plugins/Recaptcha/RecaptchaPlugin.php index c585da43c4..b7a0e92c7f 100644 --- a/plugins/Recaptcha/RecaptchaPlugin.php +++ b/plugins/Recaptcha/RecaptchaPlugin.php @@ -41,7 +41,8 @@ class RecaptchaPlugin extends Plugin var $failed; var $ssl; - function onInitializePlugin(){ + function onInitializePlugin() + { if(!isset($this->private_key)) { common_log(LOG_ERR, 'Recaptcha: Must specify private_key in config.php'); } @@ -50,7 +51,8 @@ class RecaptchaPlugin extends Plugin } } - function checkssl(){ + function checkssl() + { if(common_config('site', 'ssl') === 'sometimes' || common_config('site', 'ssl') === 'always') { return true; } @@ -62,12 +64,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; } @@ -82,7 +104,7 @@ class RecaptchaPlugin extends Plugin if($this->display_errors) { $action->showForm ("(reCAPTCHA error: " . $resp->error . ")"); } - $action->showForm("Captcha does not match!"); + $action->showForm(_m("Captcha does not match!")); return false; } } @@ -98,4 +120,4 @@ class RecaptchaPlugin extends Plugin 'captcha to the registration page.')); return true; } -} +} \ No newline at end of file diff --git a/plugins/Recaptcha/locale/Recaptcha.pot b/plugins/Recaptcha/locale/Recaptcha.pot new file mode 100644 index 0000000000..6611ff604a --- /dev/null +++ b/plugins/Recaptcha/locale/Recaptcha.pot @@ -0,0 +1,23 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: RecaptchaPlugin.php:97 +msgid "" +"Uses <a href=\"http://recaptcha.org/\">Recaptcha</a> service to add a " +"captcha to the registration page." +msgstr "" diff --git a/plugins/RegisterThrottle/locale/RegisterThrottle.pot b/plugins/RegisterThrottle/locale/RegisterThrottle.pot new file mode 100644 index 0000000000..834f5fd4ad --- /dev/null +++ b/plugins/RegisterThrottle/locale/RegisterThrottle.pot @@ -0,0 +1,29 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: RegisterThrottlePlugin.php:122 RegisterThrottlePlugin.php:161 +msgid "Cannot find IP address." +msgstr "" + +#: RegisterThrottlePlugin.php:167 +msgid "Cannot find user after successful registration." +msgstr "" + +#: RegisterThrottlePlugin.php:200 +msgid "Throttles excessive registration from a single IP." +msgstr "" diff --git a/plugins/RequireValidatedEmail/README b/plugins/RequireValidatedEmail/README index 46ee24d5fe..84b1485b25 100644 --- a/plugins/RequireValidatedEmail/README +++ b/plugins/RequireValidatedEmail/README @@ -12,6 +12,20 @@ registered prior to that timestamp. addPlugin('RequireValidatedEmail', array('grandfatherCutoff' => 'Dec 7, 2009'); +You can also exclude the validation checks from OpenID accounts +connected to a trusted provider, by providing a list of regular +expressions to match their provider URLs. + +For example, to trust WikiHow and Wikipedia users: + + addPlugin('RequireValidatedEmailPlugin', array( + 'trustedOpenIDs' => array( + '!^http://\w+\.wikihow\.com/!', + '!^http://\w+\.wikipedia\.org/!', + ), + )); + + Todo: * add a more visible indicator that validation is still outstanding diff --git a/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php b/plugins/RequireValidatedEmail/RequireValidatedEmailPlugin.php index ccefa14f62..af75b96e0b 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/ */ @@ -37,6 +38,20 @@ class RequireValidatedEmailPlugin extends Plugin // without the validation requirement. public $grandfatherCutoff=null; + // If OpenID plugin is installed, users with a verified OpenID + // association whose provider URL matches one of these regexes + // will be considered to be sufficiently valid for our needs. + // + // For example, to trust WikiHow and Wikipedia OpenID users: + // + // addPlugin('RequireValidatedEmailPlugin', array( + // 'trustedOpenIDs' => array( + // '!^http://\w+\.wikihow\.com/!', + // '!^http://\w+\.wikipedia\.org/!', + // ), + // )); + public $trustedOpenIDs=array(); + function __construct() { parent::__construct(); @@ -90,13 +105,17 @@ class RequireValidatedEmailPlugin extends Plugin */ protected function validated($user) { - if ($this->grandfathered($user)) { - return true; - } - // The email field is only stored after validation... // Until then you'll find them in confirm_address. - return !empty($user->email); + $knownGood = !empty($user->email) || + $this->grandfathered($user) || + $this->hasTrustedOpenID($user); + + // Give other plugins a chance to override, if they can validate + // that somebody's ok despite a non-validated email. + Event::handle('RequireValidatedEmailPlugin_Override', array($user, &$knownGood)); + + return $knownGood; } /** @@ -118,6 +137,28 @@ class RequireValidatedEmailPlugin extends Plugin return false; } + /** + * Override for RequireValidatedEmail plugin. If we have a user who's + * not validated an e-mail, but did come from a trusted provider, + * we'll consider them ok. + */ + function hasTrustedOpenID($user) + { + if ($this->trustedOpenIDs && class_exists('User_openid')) { + foreach ($this->trustedOpenIDs as $regex) { + $oid = new User_openid(); + $oid->user_id = $user->id; + $oid->find(); + while ($oid->fetch()) { + if (preg_match($regex, $oid->canonical)) { + return true; + } + } + } + } + return false; + } + function onPluginVersion(&$versions) { $versions[] = array('name' => 'Require Validated Email', diff --git a/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot b/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot index 49ac4f6f4d..c8953a1fa3 100644 --- a/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot +++ b/plugins/RequireValidatedEmail/locale/RequireValidatedEmail.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-10 10:05-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+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" diff --git a/plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php b/plugins/ReverseUsernameAuthentication/ReverseUsernameAuthenticationPlugin.php index dac5a15884..8a05a77340 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/ReverseUsernameAuthentication/locale/ReverseUsernameAuthentication.pot b/plugins/ReverseUsernameAuthentication/locale/ReverseUsernameAuthentication.pot new file mode 100644 index 0000000000..6fa18c464c --- /dev/null +++ b/plugins/ReverseUsernameAuthentication/locale/ReverseUsernameAuthentication.pot @@ -0,0 +1,24 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ReverseUsernameAuthenticationPlugin.php:67 +msgid "" +"The Reverse Username Authentication plugin allows for StatusNet to handle " +"authentication by checking if the provided password is the same as the " +"reverse of the username." +msgstr "" diff --git a/plugins/Sample/User_greeting_count.php b/plugins/Sample/User_greeting_count.php index d9a59770d3..fc0cbd28ff 100644 --- a/plugins/Sample/User_greeting_count.php +++ b/plugins/Sample/User_greeting_count.php @@ -94,29 +94,34 @@ class User_greeting_count extends Memcached_DataObject /** * return key definitions for DB_DataObject * - * DB_DataObject needs to know about keys that the table has; this function - * defines them. + * DB_DataObject needs to know about keys that the table has, since it + * won't appear in StatusNet's own keys list. In most cases, this will + * simply reference your keyTypes() function. * - * @return array key definitions + * @return array list of key field names */ function keys() { - return array('user_id' => 'K'); + 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. + * method to get them. This key information is used to store and clear + * cached data, so be sure to list any key that will be used for static + * lookups. * - * @return array key definitions + * @return array associative array of key definitions, field name to type: + * 'K' for primary key: for compound keys, add an entry for each component; + * 'U' for unique keys: compound keys are not well supported here. */ function keyTypes() { - return $this->keys(); + return array('user_id' => 'K'); } /** diff --git a/plugins/Sample/locale/Sample.pot b/plugins/Sample/locale/Sample.pot index a52c4ec01c..bd21dd3c4c 100644 --- a/plugins/Sample/locale/Sample.pot +++ b/plugins/Sample/locale/Sample.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,10 +17,28 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: hello.php:115 SamplePlugin.php:266 +#: 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 "" + +#: SamplePlugin.php:266 hello.php:115 msgid "Hello" msgstr "" +#: SamplePlugin.php:266 +msgid "A warm greeting" +msgstr "" + +#: SamplePlugin.php:277 +msgid "A sample plugin to show basics of development for new hackers." +msgstr "" + #: hello.php:117 hello.php:141 #, php-format msgid "Hello, %s" @@ -36,21 +54,3 @@ 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/SimpleUrl/SimpleUrlPlugin.php b/plugins/SimpleUrl/SimpleUrlPlugin.php index 5d3f97d33d..24250f4d07 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/SimpleUrl/locale/SimpleUrl.pot b/plugins/SimpleUrl/locale/SimpleUrl.pot new file mode 100644 index 0000000000..e3c241d538 --- /dev/null +++ b/plugins/SimpleUrl/locale/SimpleUrl.pot @@ -0,0 +1,22 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: SimpleUrlPlugin.php:58 +#, php-format +msgid "Uses <a href=\"http://%1$s/\">%1$s</a> URL-shortener service." +msgstr "" diff --git a/plugins/Sitemap/SitemapPlugin.php b/plugins/Sitemap/SitemapPlugin.php new file mode 100644 index 0000000000..b6d3b1ad33 --- /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 0000000000..6e0061e97b --- /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 0000000000..98dd05bfed --- /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 0000000000..7d9d2e5d68 --- /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 0000000000..91bc0ac4e9 --- /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 0000000000..73b9248a38 --- /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 0000000000..3c295b08e0 --- /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 0000000000..169e3031ce --- /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 0000000000..de12007157 --- /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 0000000000..80c6c5a88f --- /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 0000000000..5acdf1dfe4 --- /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 0000000000..be6942efa7 --- /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 0000000000..c7fdab0d67 --- /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 0000000000..5463a8dc0c --- /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 0000000000..bd8fc80a5f --- /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 0000000000..0a798c9eaf --- /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 0000000000..8236da3896 --- /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 0000000000..92b36b5ebf --- /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 bf89c478c3..46e329d8a4 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/TabFocus/locale/TabFocus.pot b/plugins/TabFocus/locale/TabFocus.pot new file mode 100644 index 0000000000..3b0e3c261b --- /dev/null +++ b/plugins/TabFocus/locale/TabFocus.pot @@ -0,0 +1,24 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: TabFocusPlugin.php:54 +msgid "" +"TabFocus changes the notice form behavior so that, while in the text area, " +"pressing the tab key focuses the \"Send\" button, matching the behavor of " +"Twitter." +msgstr "" diff --git a/plugins/TightUrl/TightUrlPlugin.php b/plugins/TightUrl/TightUrlPlugin.php index f242db6c80..8fd645945b 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/TightUrl/locale/TightUrl.pot b/plugins/TightUrl/locale/TightUrl.pot new file mode 100644 index 0000000000..10f59a1e86 --- /dev/null +++ b/plugins/TightUrl/locale/TightUrl.pot @@ -0,0 +1,22 @@ +# 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-04-29 23:39+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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: TightUrlPlugin.php:68 +#, php-format +msgid "Uses <a href=\"http://%1$s/\">%1$s</a> URL-shortener service." +msgstr "" diff --git a/plugins/TinyMCE/TinyMCEPlugin.php b/plugins/TinyMCE/TinyMCEPlugin.php new file mode 100644 index 0000000000..ca16f60591 --- /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 new file mode 100644 index 0000000000..911f257d50 Binary files /dev/null and b/plugins/TinyMCE/icons/placeholder.png differ diff --git a/plugins/TinyMCE/icons/placeholder.xcf b/plugins/TinyMCE/icons/placeholder.xcf new file mode 100644 index 0000000000..e05f8a9c98 Binary files /dev/null and b/plugins/TinyMCE/icons/placeholder.xcf differ diff --git a/plugins/TinyMCE/js/jquery.tinymce.js b/plugins/TinyMCE/js/jquery.tinymce.js new file mode 100644 index 0000000000..4866c2a06b --- /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 0000000000..ea4a1b0e14 --- /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 0000000000..60d6d4c8f5 --- /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 0000000000..0e22834985 --- /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 0000000000..4d3b062dee --- /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 0000000000..0c652d3303 --- /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 0000000000..b6cbd66c75 --- /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 0000000000..873bfd8d38 --- /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 0000000000..fc37b2aecd --- /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} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + +
+ + +
+
+
+ +
+ + +
+
+ + 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 0000000000..0a6251a696 --- /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 0000000000..4c7a9c3a88 --- /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 0000000000..2625dd2131 --- /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 0000000000..79cff3f19f --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advimage/image.htm @@ -0,0 +1,232 @@ + + + + {#advimage_dlg.dialog_title} + + + + + + + + + +
+ + +
+
+
+ {#advimage_dlg.general} + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+ +
+ {#advimage_dlg.preview} + +
+
+ +
+
+ {#advimage_dlg.tab_appearance} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ {#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. +
+
+ x + px +
  + + + + +
+
+
+
+ +
+
+ {#advimage_dlg.swap_image} + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+ + + + +
 
+
+ +
+ {#advimage_dlg.misc} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + + + +
 
+
+
+
+ +
+ + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/advimage/img/sample.gif b/plugins/TinyMCE/js/plugins/advimage/img/sample.gif new file mode 100644 index 0000000000..53bf6890b5 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/advimage/img/sample.gif differ 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 0000000000..3bda86a2d3 --- /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(''); + }, + + 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, '', {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', ''); + else + tinyMCEPopup.dom.setHTML('prev', ''); + } +}; + +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 0000000000..f493d196fa --- /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 0000000000..14364316a1 --- /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 0000000000..983fe5a9ca --- /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 0000000000..14e46a7629 --- /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 0000000000..b78e82f76b --- /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(''); +} + +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'); + for (var i=0; i'; + html += ''; + + for (i=0; i' + name + ''; + } + + html += ''; + + 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' + tinyMCELinkList[i][0] + ''; + + html += ''; + + 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 += ''; + + 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 0000000000..c71ffbd0f1 --- /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 0000000000..876669c6b3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/advlink/link.htm @@ -0,0 +1,333 @@ + + + + {#advlink_dlg.title} + + + + + + + + +
+ + +
+
+
+ {#advlink_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+ +
+
+
+ + + +
+
+ {#advlink_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ {#advlink_dlg.event_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+ + +
+
+ + 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 0000000000..02d16971a1 --- /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 0000000000..a61887a922 --- /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 0000000000..1676b154a8 --- /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 0000000000..c260b7a24f --- /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 0000000000..6e485400b3 --- /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[^>]*>|]*>/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()]*>|]*>/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 0000000000..fce6bd3e1f --- /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 0000000000..930fdff0af --- /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>/gi,"[url=$1]$2[/url]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/(.*?)<\/font>/gi,"$1");b(//gi,"[img]$1[/img]");b(/(.*?)<\/span>/gi,"[code]$1[/code]");b(/(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/(.*?)<\/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>/gi,"[u]$1[/u]");b(//gi,"[u]");b(/]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/
/gi,"\n");b(//gi,"\n");b(/
/gi,"\n");b(/

/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,"
");b(/\[b\]/gi,"");b(/\[\/b\]/gi,"");b(/\[i\]/gi,"");b(/\[\/i\]/gi,"");b(/\[u\]/gi,"");b(/\[\/u\]/gi,"");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2');b(/\[url\](.*?)\[\/url\]/gi,'$1');b(/\[img\](.*?)\[\/img\]/gi,'');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2');b(/\[code\](.*?)\[\/code\]/gi,'$1 ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 ');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 0000000000..5586637f33 --- /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: to [b] + rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); + rep(/(.*?)<\/font>/gi,"$1"); + rep(//gi,"[img]$1[/img]"); + rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); + rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); + rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); + rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); + rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); + rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); + rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); + rep(/(.*?)<\/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>/gi,"[u]$1[/u]"); + rep(//gi,"[u]"); + rep(/]*>/gi,"[quote]"); + rep(/<\/blockquote>/gi,"[/quote]"); + rep(/
/gi,"\n"); + rep(//gi,"\n"); + rep(/
/gi,"\n"); + rep(/

/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 + rep(/\n/gi,"
"); + rep(/\[b\]/gi,""); + rep(/\[\/b\]/gi,""); + rep(/\[i\]/gi,""); + rep(/\[\/i\]/gi,""); + rep(/\[u\]/gi,""); + rep(/\[\/u\]/gi,""); + rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); + rep(/\[url\](.*?)\[\/url\]/gi,"$1"); + rep(/\[img\](.*?)\[\/img\]/gi,""); + rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); + rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); + rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); + + 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 0000000000..9749e5164c --- /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 0000000000..13813a64e4 --- /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 0000000000..bce8e73995 --- /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 0000000000..4444959bf3 --- /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 0000000000..dbdd8ffb58 --- /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 0000000000..71d5416972 --- /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 0000000000..55a1d72fa7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/emotions/emotions.htm @@ -0,0 +1,40 @@ + + + + {#emotions_dlg.title} + + + + +

+
{#emotions_dlg.title}:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{#emotions_dlg.cool}{#emotions_dlg.cry}{#emotions_dlg.embarassed}{#emotions_dlg.foot_in_mouth}
{#emotions_dlg.frown}{#emotions_dlg.innocent}{#emotions_dlg.kiss}{#emotions_dlg.laughing}
{#emotions_dlg.money_mouth}{#emotions_dlg.sealed}{#emotions_dlg.smile}{#emotions_dlg.surprised}
{#emotions_dlg.tongue-out}{#emotions_dlg.undecided}{#emotions_dlg.wink}{#emotions_dlg.yell}
+
+ + diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-cool.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cool.gif new file mode 100644 index 0000000000..ba90cc36fb Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cool.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-cry.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cry.gif new file mode 100644 index 0000000000..74d897a4f6 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-cry.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-embarassed.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-embarassed.gif new file mode 100644 index 0000000000..963a96b8a7 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-embarassed.gif differ 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 new file mode 100644 index 0000000000..16f68cc1e9 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-foot-in-mouth.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-frown.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-frown.gif new file mode 100644 index 0000000000..716f55e161 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-frown.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-innocent.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-innocent.gif new file mode 100644 index 0000000000..334d49e0e6 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-innocent.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-kiss.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-kiss.gif new file mode 100644 index 0000000000..4efd549ed3 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-kiss.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-laughing.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-laughing.gif new file mode 100644 index 0000000000..1606c119e7 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-laughing.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-money-mouth.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-money-mouth.gif new file mode 100644 index 0000000000..ca2451e102 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-money-mouth.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-sealed.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-sealed.gif new file mode 100644 index 0000000000..b33d3cca1e Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-sealed.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-smile.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-smile.gif new file mode 100644 index 0000000000..e6a9e60d5d Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-smile.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-surprised.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-surprised.gif new file mode 100644 index 0000000000..cb99cdd913 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-surprised.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-tongue-out.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-tongue-out.gif new file mode 100644 index 0000000000..2075dc1605 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-tongue-out.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-undecided.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-undecided.gif new file mode 100644 index 0000000000..bef7e25730 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-undecided.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-wink.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-wink.gif new file mode 100644 index 0000000000..9faf1aff8f Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-wink.gif differ diff --git a/plugins/TinyMCE/js/plugins/emotions/img/smiley-yell.gif b/plugins/TinyMCE/js/plugins/emotions/img/smiley-yell.gif new file mode 100644 index 0000000000..648e6e8791 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/emotions/img/smiley-yell.gif differ 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 0000000000..c549367096 --- /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 0000000000..3b57ad9e3c --- /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 0000000000..50b2b34451 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/example/dialog.htm @@ -0,0 +1,22 @@ + + + + {#example_dlg.title} + + + + + +
+

Here is a example dialog.

+

Selected text:

+

Custom arg:

+ +
+ + +
+
+ + + 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 0000000000..ec1f81ea40 --- /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 0000000000..9a0e7da15d --- /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 new file mode 100644 index 0000000000..1ab5da4461 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/example/img/example.gif differ 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 0000000000..fa8341132f --- /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 0000000000..e0784f80f4 --- /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 0000000000..ebcf948dac --- /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 0000000000..7a3334f08d --- /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 0000000000..aeaa669794 --- /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",a);h.head=f.substring(0,a+1);j=f.indexOf("\n'}h.head+=d.getParam("fullpage_default_doctype",'');h.head+="\n\n\n"+d.getParam("fullpage_default_title","Untitled document")+"\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='\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+="\n\n";h.foot="\n\n"}},_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 0000000000..a2c9df8987 --- /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('', sp); + t.head = c.substring(0, sp + 1); + + ep = c.indexOf('\n'; + + t.head += ed.getParam('fullpage_default_doctype', ''); + t.head += '\n\n\n' + ed.getParam('fullpage_default_title', 'Untitled document') + '\n'; + + if (v = ed.getParam('fullpage_default_encoding')) + t.head += '\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 += '\n\n'; + t.foot = '\n\n'; + } + }, + + _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 0000000000..c32afaf2d9 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/fullpage/fullpage.htm @@ -0,0 +1,571 @@ + + + + {#fullpage_dlg.title} + + + + + + + +
+ + +
+
+
+ {#fullpage_dlg.meta_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
 
 
 
 
  + +
+
+ +
+ {#fullpage_dlg.langprops} + + + + + + + + + + + + + + + + + + + + + + +
+ +
  + +
 
+ +
 
+
+
+ +
+
+ {#fullpage_dlg.appearance_textprops} + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+
+ +
+ {#fullpage_dlg.appearance_bgprops} + + + + + + + + + + +
+ + + + + +
 
+
+ + + + + +
 
+
+
+ +
+ {#fullpage_dlg.appearance_marginprops} + + + + + + + + + + + + + + +
+
+ +
+ {#fullpage_dlg.appearance_linkprops} + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
 
+
+ + + + + +
 
+
  
+
+ +
+ {#fullpage_dlg.appearance_style} + + + + + + + + + + +
+ + + + +
 
+
+
+ +
+ + +
+ {#fullpage_dlg.head_elements} + +
+
+
+ + +
+
+ + +
+
+
+ +
+
+ +
+ {#fullpage_dlg.meta_element} + + + + + + + + + + + + + + +
+ + +
+ +
+ {#fullpage_dlg.title_element} + + + + + + +
+ + +
+ +
+ {#fullpage_dlg.script_element} + + + +
+ +
+
+ + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+ +
+ +
+
+ + +
+ +
+ {#fullpage_dlg.style_element} + + + +
+ +
+
+ + + + + + + + + +
+
+ +
+ +
+
+ + +
+ +
+ {#fullpage_dlg.base_element} + + + + + + + + + + +
+ + +
+ + + +
+ {#fullpage_dlg.comment_element} + + + + +
+
+
+ +
+ + +
+
+ + 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 0000000000..a1bb719a38 --- /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=,' + + 'XHTML 1.0 Frameset=,' + + 'XHTML 1.0 Strict=,' + + 'XHTML 1.1=,' + + 'HTML 4.01 Transitional=,' + + 'HTML 4.01 Strict=,' + + 'HTML 4.01 Frameset='; + +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 1) + addSelectValue(f, 'doctypes', p[0], p[1]); + } + + // Setup fonts select box + fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';'); + for (i=0; i 1) + addSelectValue(f, 'fontface', p[0], p[1]); + } + + // Setup fontsize select box + fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(','); + for (i=0; i 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 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(/ + + + +
+ +
+ + + + + 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 0000000000..e9cba106c6 --- /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 0000000000..1b2bb98460 --- /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 0000000000..07ea477b7c --- /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","
"))}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;gf){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 0000000000..e991683de4 --- /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', '
')); + } + + // 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 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 new file mode 100644 index 0000000000..94abd08763 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/alert.gif differ diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/button.gif new file mode 100644 index 0000000000..e671094cb0 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/button.gif differ diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif new file mode 100644 index 0000000000..6baf64ad32 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif differ diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif new file mode 100644 index 0000000000..497307a85a Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif differ diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/corners.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/corners.gif new file mode 100644 index 0000000000..c894b2e835 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/corners.gif differ diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif new file mode 100644 index 0000000000..c2a2ad454d Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif differ diff --git a/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif new file mode 100644 index 0000000000..43a735f22c Binary files /dev/null and b/plugins/TinyMCE/js/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif differ 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 0000000000..5e6fd7d3cf --- /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 0000000000..f9ec64219d --- /dev/null +++ b/plugins/TinyMCE/js/plugins/inlinepopups/template.htm @@ -0,0 +1,387 @@ + + + +Template for dialogs + + + + +
+
+
+
+
+
+
+ Blured +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Focused +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Statusbar +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Statusbar, Resizable +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Resizable, Maximizable +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Blurred, Maximizable, Statusbar, Resizable +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Maximized, Maximizable, Minimizable +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Blured +
+ +
+
+ Content +
+
+ +
+
+
+
+ Statusbar text. +
+ + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+
+ Alert +
+ +
+
+ + 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. + +
+
+
+ +
+
+
+
+
+ + + Ok + +
+
+ +
+
+
+
+
+
+ Confirm +
+ +
+
+ + 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. + +
+
+
+ +
+
+
+
+
+ + + Ok + Cancel + +
+
+
+ + + 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 0000000000..938ce6b17d --- /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-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;fg[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 0000000000..d5aa86548c --- /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 -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[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 0000000000..29d43c5244 --- /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 0000000000..e852da15ea --- /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 0000000000..ecab340ab2 --- /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 0000000000..7e97a78e4a --- /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 0000000000..d2693927c1 --- /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 0000000000..1bf6a75869 --- /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 0000000000..2d087944de --- /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 0000000000..4bbe367e36 --- /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(/]+>/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=''; + } + + 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(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) { + var o = t._parse(c); + + return '' + }); + + h = h.replace(/]*)>/gi, ''); + h = h.replace(/]*)\/?>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/<\/(object)([^>]*)>/gi, ''); + h = h.replace(/<\/embed>/gi, ''); + h = h.replace(/]*)>/gi, function(a, b) {return ''}); + h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam">'); + + 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 new file mode 100644 index 0000000000..cb192e6ced Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/flash.gif differ diff --git a/plugins/TinyMCE/js/plugins/media/img/flv_player.swf b/plugins/TinyMCE/js/plugins/media/img/flv_player.swf new file mode 100644 index 0000000000..042c2ab969 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/flv_player.swf differ diff --git a/plugins/TinyMCE/js/plugins/media/img/quicktime.gif b/plugins/TinyMCE/js/plugins/media/img/quicktime.gif new file mode 100644 index 0000000000..3b0499145b Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/quicktime.gif differ diff --git a/plugins/TinyMCE/js/plugins/media/img/realmedia.gif b/plugins/TinyMCE/js/plugins/media/img/realmedia.gif new file mode 100644 index 0000000000..fdfe0b9ac0 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/realmedia.gif differ diff --git a/plugins/TinyMCE/js/plugins/media/img/shockwave.gif b/plugins/TinyMCE/js/plugins/media/img/shockwave.gif new file mode 100644 index 0000000000..5f235dfc73 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/shockwave.gif differ diff --git a/plugins/TinyMCE/js/plugins/media/img/trans.gif b/plugins/TinyMCE/js/plugins/media/img/trans.gif new file mode 100644 index 0000000000..388486517f Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/trans.gif differ diff --git a/plugins/TinyMCE/js/plugins/media/img/windowsmedia.gif b/plugins/TinyMCE/js/plugins/media/img/windowsmedia.gif new file mode 100644 index 0000000000..ab50f2d887 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/media/img/windowsmedia.gif differ 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 0000000000..f8dc810527 --- /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 += ''; + + h += ''); + +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 = ' 0) { + var html = ""; + + html += ''; + + 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 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 = ''; + + 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 += ''; + + for (n in pl) { + h += ''; + + // Add extra url parameter if it's an absolute URL + if (n == 'src' && pl[n].indexOf('://') != -1) + h += ''; + } + } + + h += ' + + + {#media_dlg.title} + + + + + + + + + +
+ + +
+
+
+ {#media_dlg.general} + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
 
+
+ + + + + + +
x   
+
+
+ +
+ {#media_dlg.preview} + +
+
+ +
+
+ {#media_dlg.advanced} + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
 
+
+
+ +
+ {#media_dlg.flash_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + +
+
+ +
+ {#media_dlg.flv_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ +
+ {#media_dlg.qt_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+  
+ + + + + +
 
+
+
+ +
+ {#media_dlg.wmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ +
+ {#media_dlg.rmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+   +
+
+ +
+ {#media_dlg.shockwave_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+ +
+ + +
+
+ + 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 0000000000..eb40a6a39c --- /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)?' ':" ")});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 0000000000..ca83ee26e5 --- /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) ? ' ' : ' '); + }); + + // 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 0000000000..9945cd8580 --- /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 0000000000..656c971b8c --- /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 0000000000..c949d58cc4 --- /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 0000000000..a212f69633 --- /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='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),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(/]+>/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 0000000000..4e1eb0a7aa --- /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 = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), 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(/]+>/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 new file mode 100644 index 0000000000..acdf4085f3 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/pagebreak/img/pagebreak.gif differ diff --git a/plugins/TinyMCE/js/plugins/pagebreak/img/trans.gif b/plugins/TinyMCE/js/plugins/pagebreak/img/trans.gif new file mode 100644 index 0000000000..388486517f Binary files /dev/null and b/plugins/TinyMCE/js/plugins/pagebreak/img/trans.gif differ 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 0000000000..3785ab2d09 --- /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
');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,/( |]*>)+\s*$/gi]);if(b(l,"paste_convert_headers_to_strong")){k=k.replace(/

]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

$1

")}if(b(l,"paste_convert_middot_lists")){e([[//gi,"$&__MCE_ITEM__"],[/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"]])}e([//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([[/([\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([[/]*>/gi,"

"],[/<\/h[1-6][^>]*>/gi,"

"]])}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;m0){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]*>/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('',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(oe.y+e.h){l.getDoc().body.scrollTop=o0)){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"],[/]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*]*>/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,"
"]])}else{q([/^\s+|\s+$/g,[/\n\n/g,"

"],[/\n/g,"
"]])}}if((l=v.indexOf("

"))!=-1){k=v.lastIndexOf("

");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";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+' ');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((Ai.y+i.h)){z.body.scrollTop=A

]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "

$1

"); + } + + if (getParam(ed, "paste_convert_middot_lists")) { + process([ + [//gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker + [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol spans to item markers + ]); + } + + process([ + // Word comments like conditional comments etc + //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 into 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 ___ to string of alternating breaking/non-breaking spaces of same length + [/([\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 + if (getParam(ed, "paste_convert_headers_to_strong")) { + process([ + [/]*>/gi, "

"], + [/<\/h[1-6][^>]*>/gi, "

"] + ]); + } + + // 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 it will become + // 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('', 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 + [/]*>|<\/tr>/gi, "\n"], // Single linebreak for
tags and table rows + [/<\/t[dh]>\s*]*>/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, "
"] + ]); + } + else { + process([ + /^\s+|\s+$/g, + [/\n\n/g, "

"], + [/\n/g, "
"] + ]); + } + + // 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("

")) != -1) { + rpos = h.lastIndexOf("

"); + 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"; + 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 + ' '); + + // 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 0000000000..c524f9eb03 --- /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 += '

' + row + '

'; + }); + } + } + + 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 0000000000..a52731c368 --- /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 = ''; + 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 += ''; + }); + + // Write content into iframe + doc.open(); + doc.write('' + cssHTML + ''); + 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 0000000000..eeac778960 --- /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 0000000000..b655945476 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/pastetext.htm @@ -0,0 +1,27 @@ + + + {#paste.paste_text_desc} + + + + +
+
{#paste.paste_text_desc}
+ +
+ +
+ +
+ +
{#paste_dlg.text_title}
+ + + +
+ + +
+
+ + \ 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 0000000000..0f6bb41210 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/paste/pasteword.htm @@ -0,0 +1,21 @@ + + + {#paste.paste_word_desc} + + + + +
+
{#paste.paste_word_desc}
+ +
{#paste_dlg.word_title}
+ +
+ +
+ + +
+
+ + 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 0000000000..507909c5f0 --- /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 0000000000..80f00f0d9f --- /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 0000000000..b2c3d90ce0 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/preview/example.html @@ -0,0 +1,28 @@ + + + + + +Example of a custom preview page + + + +Editor contents:
+
+ +
+ + + 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 0000000000..f8dc810527 --- /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 += ''; + + h += ' + + + + + +{#preview.preview_desc} + + + + + 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 0000000000..b5b3a55edf --- /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 0000000000..3933fe656c --- /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 0000000000..8e93996671 --- /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 0000000000..f5a3de8f5f --- /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 0000000000..ecdf58c7b5 --- /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 0000000000..cd9c985b7a --- /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 0000000000..1433a06a4a --- /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 0000000000..c0a6243297 --- /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 0000000000..370959afa3 --- /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 0000000000..d0424cfc9b --- /dev/null +++ b/plugins/TinyMCE/js/plugins/searchreplace/searchreplace.htm @@ -0,0 +1,99 @@ + + + + {#searchreplace_dlg.replace_title} + + + + + + + +
+ + +
+
+ + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + +
+
+
+ +
+ +
+ + + + +
+
+ + 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 0000000000..24efa02170 --- /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 0000000000..a9ec3b9cf0 --- /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$1$2');q=q.replace(g,'$1$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 0000000000..d8680baf2c --- /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$1$2'); + v = v.replace(r3, '$1$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 new file mode 100644 index 0000000000..7d0a4dbca0 Binary files /dev/null and b/plugins/TinyMCE/js/plugins/spellchecker/img/wline.gif differ 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 0000000000..eb1f264960 --- /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 0000000000..cab2153c40 --- /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 0000000000..5f7755f184 --- /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 0000000000..a8dd93dec5 --- /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 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 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 0000000000..5026313e2e --- /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 0000000000..549ed0408e --- /dev/null +++ b/plugins/TinyMCE/js/plugins/style/props.htm @@ -0,0 +1,723 @@ + + + + {#style_dlg.title} + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
 
+
+ +
+ + + +
+ + + + + + +
+ +  
+
+ +
+ + + + + +
 
+
{#style_dlg.text_decoration} + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
 
+
+ + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+ +
+ + + + + + + + + + + + + + +
+ + + + + + +
 
+
   
+ + + + + + +
 
+
   
+
+
+ {#style_dlg.padding} + + + + + + + + + + + + + + + + + + + + + + +
 
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+
+ +
+
+ {#style_dlg.margin} + + + + + + + + + + + + + + + + + + + + + + +
 
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
      
{#style_dlg.top}   + + + + + + +
 
+
  + + + + + +
 
+
{#style_dlg.right}   + + + + + + +
 
+
  + + + + + +
 
+
{#style_dlg.bottom}   + + + + + + +
 
+
  + + + + + +
 
+
{#style_dlg.left}   + + + + + + +
 
+
  + + + + + +
 
+
+
+ +
+ + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
   
+ + + + + + +
 
+
   
+ + + + + + +
 
+
   
+ +
+
+ {#style_dlg.placement} + + + + + + + + + + + + + + + + + + + + + + +
 
{#style_dlg.top} + + + + + + +
 
+
{#style_dlg.right} + + + + + + +
 
+
{#style_dlg.bottom} + + + + + + +
 
+
{#style_dlg.left} + + + + + + +
 
+
+
+
+ +
+
+ {#style_dlg.clip} + + + + + + + + + + + + + + + + + + + + + + +
 
{#style_dlg.top} + + + + + + +
 
+
{#style_dlg.right} + + + + + + +
 
+
{#style_dlg.bottom} + + + + + + +
 
+
{#style_dlg.left} + + + + + + +
 
+
+
+
+
+
+
+ +
+ + + +
+
+ +
+
+
+ + + 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 0000000000..27d2440222 --- /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=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 0000000000..c2be2f40a6 --- /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 0000000000..d243e1d833 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/cell.htm @@ -0,0 +1,178 @@ + + + + {#table_dlg.cell_title} + + + + + + + + +
+ + +
+
+
+ {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ +
+
+
+ +
+
+ {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ + + +
+
+ + 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 0000000000..a067ecdfed --- /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 0000000000..1f7755dafa --- /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 0000000000..d11c3f69cb --- /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 0000000000..266d7d5371 --- /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'}return false}},"childNodes");K=w(K,false);K.rowSpan=K.colSpan=1;if(L){K.appendChild(L)}else{if(!b.isIE){K.innerHTML='
'}}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;O1){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;iL){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)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,'
')}}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 0000000000..c2f307f045 --- /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 ? ' ' : '
'; + + return false; + } + }, 'childNodes'); + + cell = cloneNode(cell, false); + cell.rowSpan = cell.colSpan = 1; + + if (formatNode) { + cell.appendChild(formatNode); + } else { + if (!tinymce.isIE) + cell.innerHTML = '
'; + } + + 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, '
'); + }; + + // 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 0000000000..b5fc1fda3d --- /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 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 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 = '
'; + + 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 += ''); + + 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, '>'); + + 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 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 0000000000..000332a35d --- /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 0000000000..9736ed8c03 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/merge_cells.htm @@ -0,0 +1,32 @@ + + + + {#table_dlg.merge_cells_title} + + + + + + +
+
+ {#table_dlg.merge_cells_title} + + + + + + + + + +
{#table_dlg.cols}:
{#table_dlg.rows}:
+
+ +
+ + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/table/row.htm b/plugins/TinyMCE/js/plugins/table/row.htm new file mode 100644 index 0000000000..092e6c8270 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/row.htm @@ -0,0 +1,155 @@ + + + + {#table_dlg.row_title} + + + + + + + + +
+ + +
+
+
+ {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+
+
+ +
+
+ {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ + + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/table/table.htm b/plugins/TinyMCE/js/plugins/table/table.htm new file mode 100644 index 0000000000..f269039228 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/table/table.htm @@ -0,0 +1,187 @@ + + + + {#table_dlg.title} + + + + + + + + + +
+ + +
+
+
+ {#table_dlg.general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ {#table_dlg.advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
 
+
+ +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+ + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/template/blank.htm b/plugins/TinyMCE/js/plugins/template/blank.htm new file mode 100644 index 0000000000..ecde53fae7 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/template/blank.htm @@ -0,0 +1,12 @@ + + + blank_page + + + + + + + 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 0000000000..2d23a4938c --- /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 0000000000..ebe3c27d78 --- /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 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 0000000000..24045d7311 --- /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(''); + }, + + 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'); + }); + }, + + 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 + + {#template_dlg.title} + + + + + +
+
+
{#template_dlg.desc}
+
+ +
+
+
+
+ {#template_dlg.preview} + +
+
+ +
+ + +
+
+ + 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 0000000000..94719f93a1 --- /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$1');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 0000000000..35856e26a0 --- /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, '$1'); + + 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 0000000000..a099e6a8c5 --- /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: ")+'0')}}else{tinymce.DOM.add(h,"span",{},'0')}});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 0000000000..5cb92fa0f0 --- /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: ') + '0'); + } else + tinymce.DOM.add(id, 'span', {}, '0'); + }); + + 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 0000000000..3aeac0deba --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/abbr.htm @@ -0,0 +1,141 @@ + + + + {#xhtmlxtras_dlg.title_abbr_element} + + + + + + + + + +
+ + +
+
+
+ {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+ + + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/acronym.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/acronym.htm new file mode 100644 index 0000000000..31ee7b70f3 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/acronym.htm @@ -0,0 +1,141 @@ + + + + {#xhtmlxtras_dlg.title_acronym_element} + + + + + + + + + +
+ + +
+
+
+ {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+ + + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/attributes.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/attributes.htm new file mode 100644 index 0000000000..17054da3ed --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/attributes.htm @@ -0,0 +1,148 @@ + + + + {#xhtmlxtras_dlg.attribs_title} + + + + + + + + +
+ + +
+
+
+ {#xhtmlxtras_dlg.attribute_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
+ +
:
: + +
: + +
+
+
+
+
+ {#xhtmlxtras_dlg.attribute_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+ + +
+
+ + diff --git a/plugins/TinyMCE/js/plugins/xhtmlxtras/cite.htm b/plugins/TinyMCE/js/plugins/xhtmlxtras/cite.htm new file mode 100644 index 0000000000..d0a3e3a8e5 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/cite.htm @@ -0,0 +1,141 @@ + + + + {#xhtmlxtras_dlg.title_cite_element} + + + + + + + + + +
+ + +
+
+
+ {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+ + + +
+
+ + 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 0000000000..9a6a235c35 --- /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 0000000000..e67114dbaa --- /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 0000000000..8b07fa8429 --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/del.htm @@ -0,0 +1,161 @@ + + + + {#xhtmlxtras_dlg.title_del_element} + + + + + + + + + +
+ + +
+
+
+ {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
: + + + + + +
+
:
+
+
+ {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+ + + +
+
+ + 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 0000000000..a9393ad6db --- /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 0000000000..5f9d9bd50b --- /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 0000000000..6c5470cfcc --- /dev/null +++ b/plugins/TinyMCE/js/plugins/xhtmlxtras/ins.htm @@ -0,0 +1,161 @@ + + + + {#xhtmlxtras_dlg.title_ins_element} + + + + + + + + + +
+ + +
+
+
+ {#xhtmlxtras_dlg.fieldset_general_tab} + + + + + + + + + +
: + + + + + +
+
:
+
+
+ {#xhtmlxtras_dlg.fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {#xhtmlxtras_dlg.fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+ + + +
+
+ + 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 0000000000..4b51a25721 --- /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 0000000000..6ec2f88716 --- /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 0000000000..d62a219e6b --- /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 0000000000..009b71546a --- /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 0000000000..9e5d8c5717 --- /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 0) { + tagName = element_name; + + insertInlineElement(element_name); + var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); + for (var i=0; i -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 0000000000..3774f0a184 --- /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 + + + {#advanced_dlg.about_title} + + + + + + + +
+
+

{#advanced_dlg.about_title}

+

Version: ()

+

TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

+

Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

+

For more information about this software visit the TinyMCE website.

+ +
+ Got Moxie? + Hosted By Sourceforge + Also on freshmeat +
+
+ +
+
+

{#advanced_dlg.about_loaded}

+ +
+
+ +

 

+
+
+ +
+
+
+
+ +
+ +
+ + diff --git a/plugins/TinyMCE/js/themes/advanced/anchor.htm b/plugins/TinyMCE/js/themes/advanced/anchor.htm new file mode 100644 index 0000000000..2bc63fcfdc --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/anchor.htm @@ -0,0 +1,26 @@ + + + + {#advanced_dlg.anchor_title} + + + + +
+ + + + + + + + +
{#advanced_dlg.anchor_title}
{#advanced_dlg.anchor_name}:
+ +
+ + +
+
+ + diff --git a/plugins/TinyMCE/js/themes/advanced/charmap.htm b/plugins/TinyMCE/js/themes/advanced/charmap.htm new file mode 100644 index 0000000000..3991b8141b --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/charmap.htm @@ -0,0 +1,52 @@ + + + + {#advanced_dlg.charmap_title} + + + + + + + + + + + + + + + +
{#advanced_dlg.charmap_title}
+ + + + + + + + + +
 
 
+
+ + + + + + + + + + + + + + + + +
HTML-Code
 
 
NUM-Code
 
+
+ + + 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 0000000000..096e7550c3 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/color_picker.htm @@ -0,0 +1,73 @@ + + + + {#advanced_dlg.colorpicker_title} + + + + + +
+ + +
+
+
+ {#advanced_dlg.colorpicker_picker_title} +
+ + +
+ +
+ +
+
+
+
+ +
+
+ {#advanced_dlg.colorpicker_palette_title} +
+ +
+ +
+
+
+ +
+
+ {#advanced_dlg.colorpicker_named_title} +
+ +
+ +
+ +
+ {#advanced_dlg.colorpicker_name} +
+
+
+
+ +
+ + +
+ +
+ +
+
+
+ + 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 0000000000..4c433127f9 --- /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:"#"},""),"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"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},""));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();"},""));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= 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 : '#'}, ''), '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();'}, '')); + + h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '')); + + // 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();'}, '')); + 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 0000000000..f30d670641 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/image.htm @@ -0,0 +1,80 @@ + + + + {#advanced_dlg.image_title} + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+ x +
+
+
+ +
+ + +
+
+ + diff --git a/plugins/TinyMCE/js/themes/advanced/img/colorpicker.jpg b/plugins/TinyMCE/js/themes/advanced/img/colorpicker.jpg new file mode 100644 index 0000000000..b4c542d107 Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/img/colorpicker.jpg differ diff --git a/plugins/TinyMCE/js/themes/advanced/img/icons.gif b/plugins/TinyMCE/js/themes/advanced/img/icons.gif new file mode 100644 index 0000000000..e46de53330 Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/img/icons.gif differ 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 0000000000..5cee9ed863 --- /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 += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + tinymce.each(ed.plugins, function(p, n) { + var info; + + if (!p.getInfo) + return; + + html += ''; + + info = p.getInfo(); + + if (info.infourl != null && info.infourl != '') + html += ''; + else + html += ''; + + if (info.authorurl != null && info.authorurl != '') + html += ''; + else + html += ''; + + html += ''; + html += ''; + + document.getElementById('plugins_tab').style.display = ''; + + }); + + html += ''; + html += '
' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
'; + + 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 = ''; + 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 0000000000..7fe7810558 --- /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 0000000000..8c5aea1721 --- /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 = ''; + var cols=-1; + + for (i=0; i' + + '' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + + html += '
'; + + 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 0000000000..fd9700f222 --- /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 += '
'; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + h += '' + + ''; + + for (i=0; i' + + '' + + ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
'; + + 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 += '' + } + + 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=0) && (i'); + }, + + 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, '', {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 0000000000..f67a5bc828 --- /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(''); + }, + + 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 0000000000..279328614c --- /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 0000000000..69694b1f9f --- /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 0000000000..9d124d7db6 --- /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 0000000000..7565b9ae8b --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/link.htm @@ -0,0 +1,58 @@ + + + + {#advanced_dlg.link_title} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+
+ +
+ + +
+
+ + 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 0000000000..9fba0431da --- /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 0000000000..f01222650e --- /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 new file mode 100644 index 0000000000..7dd58418ba Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/default/img/buttons.png differ diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/items.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/items.gif new file mode 100644 index 0000000000..2eafd7954e Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/default/img/items.gif differ 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 new file mode 100644 index 0000000000..85e31dfb2d Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_arrow.gif differ 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 new file mode 100644 index 0000000000..adfdddccd7 Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/default/img/menu_check.gif differ diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/progress.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/progress.gif new file mode 100644 index 0000000000..5bb90fd6a4 Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/default/img/progress.gif differ diff --git a/plugins/TinyMCE/js/themes/advanced/skins/default/img/tabs.gif b/plugins/TinyMCE/js/themes/advanced/skins/default/img/tabs.gif new file mode 100644 index 0000000000..ce4be63558 Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/default/img/tabs.gif differ 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 0000000000..0049c7b3d0 --- /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 0000000000..3b833d9451 --- /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 0000000000..e3af1396e4 --- /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 new file mode 100644 index 0000000000..12cfb419bb Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg.png differ 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 new file mode 100644 index 0000000000..8996c7493e Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_black.png differ 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 new file mode 100644 index 0000000000..bd5d2550c0 Binary files /dev/null and b/plugins/TinyMCE/js/themes/advanced/skins/o2k7/img/button_bg_silver.png differ 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 0000000000..a6253976af --- /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 0000000000..153f0c38a6 --- /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 0000000000..7fe3b45e12 --- /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 0000000000..5957bbd178 --- /dev/null +++ b/plugins/TinyMCE/js/themes/advanced/source_editor.htm @@ -0,0 +1,25 @@ + + + {#advanced_dlg.code_title} + + + + +
+
{#advanced_dlg.code_title}
+ +
+ +
+ +
+ + + +
+ + +
+
+ + 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 0000000000..ed89abc067 --- /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 0000000000..4b862d49d6 --- /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 new file mode 100644 index 0000000000..16af141ff0 Binary files /dev/null and b/plugins/TinyMCE/js/themes/simple/img/icons.gif differ 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 0000000000..9f08f102fb --- /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 0000000000..2506c807ca --- /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 0000000000..076fe84e34 --- /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 0000000000..595809fa61 --- /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 new file mode 100644 index 0000000000..527e3495a6 Binary files /dev/null and b/plugins/TinyMCE/js/themes/simple/skins/o2k7/img/button_bg.png differ 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 0000000000..cf6c35d109 --- /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 0000000000..782f7f40ba --- /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=c.length){for(e=0,b=g.length;e=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e=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="[";c0?",":"")+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+""}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="
"+p;v.removeChild(v.firstChild)}catch(x){r=o.create("div");r.innerHTML="
"+p;k(r.childNodes,function(B,A){if(A){v.appendChild(B)}})}}if(o.settings.fix_ie_paragraphs){p=p.replace(/

<\/p>|]+)><\/p>|/gi,' 

')}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(/

]+)>|

/ig,'

');p=p.replace(/<\/p>/gi,"
");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]+)\/>|/gi,"");if(q.keep_values){if(/)/g,"\n");t=t.replace(/^[\r\n]*|[\r\n]*$/g,"");t=t.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,"");return t}r=r.replace(/]+|)>([\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=""}return""+t+""});r=r.replace(/]+|)>([\s\S]*?)<\/style>/gi,function(s,x,t){if(t){v.push(o(t));t=""}return""+t+""});r=r.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(s,x,t){return""})}r=r.replace(//g,"");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(Z0){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_';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(''+l+"");if(!n){j.collapse(false);j.pasteHTML(''+l+"")}}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='
'}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>||]+>/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("")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("");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("");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("");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(/(
\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^
\s*<\//.test(n)){return""}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=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;m1){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=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>)/g},{pattern:/(]*>)(.*?)(<\/noscript>)/g},{pattern:/(]*>)(.*?)(<\/style>)/g},{pattern:/(]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/()/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/

\s+<\/p>|]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?" 

":" 

");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,"")}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,"\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(//g,"");if(k.entity_encoding=="raw"){j=j.replace(/

 <\/p>|]+)> <\/p>/g,"\u00a0

")}j=j.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(h,p,o){return""+i.dom.decode(o.replace(//g,""))+""})}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-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+""+p}))});return j},_unprotect:function(i,j){i=i.replace(/\"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,""))}}if(b.stdMode){e+=''+j.renderHTML()+""}else{e+=""+j.renderHTML()+""}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,""))}}}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,""));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},""+e+"")}});(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':"",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';if(F.document_base_url!=m.documentBaseURL){E.iframeHTML+=''}E.iframeHTML+='';if(m.relaxedDomain){E.iframeHTML+=''; + + 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 += ''; + + // 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('', 'g'), ''); + }); + }; + + 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, '
'); + }); + } + + 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*/, ''); + o.content = o.content.replace(/<\/pre>\s*$/, ''); + + if (o.set) + o.content = '
' + o.content + '
'; + }); + } + + 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(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
[\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(), '
'); + 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, '

']); + t.addShortcut('ctrl+8', '', ['FormatBlock', false, '

']); + t.addShortcut('ctrl+9', '', ['FormatBlock', false, '
']); + + 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.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 += ''; + + 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('
'); + }, + + 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, '
'); + 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>|]+)\\\/>|]+)>\\s+<\\\/p>|

<\\\/p>||

\\s+<\\\/p>'.replace(/p/g, elm), 'gi'); + t.reNbsp2BR1 = new RegExp(']+)>[\\s\\u00a0]+<\\\/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(']+)>\\s*
\\s*<\\\/p>|

\\s*
\\s*<\\\/p>'.replace(/p/g, elm), 'gi'); + + function padd(ed, o) { + if (isOpera) + o.content = o.content.replace(t.reOpera, ''); + + o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0'); + + if (!isIE && !isOpera && o.set) { + // Use   instead of BR in padded paragraphs + o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2>
'); + o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2>
'); + } else + o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0'); + }; + + 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('
', {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:

becomes

 

+ 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, '
'); + aft = ed.dom.add(sn, se.element, null, '
'); + } else { + n = sn.innerHTML; + sn.innerHTML = ''; + ed.dom.add(sn, se.element, null, n); + aft = ed.dom.add(sn, se.element, null, '
'); + } + + // 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 = '
'; + + 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 ? ' ' : '
'; // Extra space for Opera so that the caret can move there + return nl[0]; // Move caret to most inner element + } else + e.innerHTML = isOpera ? ' ' : '
'; // 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: text + // will become: text + 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 texttext becomes texttext + 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: "text|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 !: !

*texttext*

! + // 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 or + 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 0000000000..fd943c0f87 --- /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'; + h += ' '; + + 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 += ''; + html += ' '; + + 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 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, 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 \n" +"Language-Team: LANGUAGE \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/Notice_to_status.php b/plugins/TwitterBridge/Notice_to_status.php new file mode 100644 index 0000000000..2e32ba963c --- /dev/null +++ b/plugins/TwitterBridge/Notice_to_status.php @@ -0,0 +1,180 @@ + + * @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 . + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; + +/** + * Data class for mapping notices to statuses + * + * Notices flow back and forth between Twitter and StatusNet. We use this + * table to remember which StatusNet notice corresponds to which Twitter + * status. + * + * Note that notice_id is unique only within a single database; if you + * want to share this data for some reason, get the notice's URI and use + * that instead, since it's universally unique. + * + * @category Action + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * @see DB_DataObject + */ + +class Notice_to_status extends Memcached_DataObject +{ + public $__table = 'notice_to_status'; // table name + public $notice_id; // int(4) primary_key not_null + public $status_id; // int(4) + public $created; // datetime + + /** + * 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 + * @param mixed $v Value to lookup + * + * @return Notice_to_status object found, or null for no hits + * + */ + + function staticGet($k, $v=null) + { + return Memcached_DataObject::staticGet('Notice_to_status', $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, + 'status_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'created' => 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, since it + * won't appear in StatusNet's own keys list. In most cases, this will + * simply reference your keyTypes() function. + * + * @return array list of key field names + */ + + 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. This key information is used to store and clear + * cached data, so be sure to list any key that will be used for static + * lookups. + * + * @return array associative array of key definitions, field name to type: + * 'K' for primary key: for compound keys, add an entry for each component; + * 'U' for unique keys: compound keys are not well supported here. + */ + + function keyTypes() + { + return array('notice_id' => 'K', 'status_id' => 'U'); + } + + /** + * Magic formula for non-autoincrementing integer primary keys + * + * If a table has a single integer column as its primary key, DB_DataObject + * assumes that the column is auto-incrementing and makes a sequence table + * to do this incrementation. Since we don't need this for our class, we + * overload this method and return the magic formula that DB_DataObject needs. + * + * @return array magic three-false array that stops auto-incrementing. + */ + + function sequenceKey() + { + return array(false, false, false); + } + + /** + * Save a mapping between a notice and a status + * + * @param integer $notice_id ID of the notice in StatusNet + * @param integer $status_id ID of the status in Twitter + * + * @return Notice_to_status new object for this value + */ + + static function saveNew($notice_id, $status_id) + { + $n2s = Notice_to_status::staticGet('notice_id', $notice_id); + + if (!empty($n2s)) { + return $n2s; + } + + $n2s = Notice_to_status::staticGet('status_id', $status_id); + + if (!empty($n2s)) { + return $n2s; + } + + common_debug("Mapping notice {$notice_id} to Twitter status {$status_id}"); + + $n2s = new Notice_to_status(); + + $n2s->notice_id = $notice_id; + $n2s->status_id = $status_id; + $n2s->created = common_sql_now(); + + $n2s->insert(); + + return $n2s; + } +} diff --git a/plugins/TwitterBridge/README b/plugins/TwitterBridge/README index d7dfe20de5..10ea35b2b6 100644 --- a/plugins/TwitterBridge/README +++ b/plugins/TwitterBridge/README @@ -62,6 +62,14 @@ unless you configure it with a consumer key and secret.) $config['twitter']['global_consumer_key'] = 'YOUR_CONSUMER_KEY'; $config['twitter']['global_consumer_secret'] = 'YOUR_CONSUMER_SECRET'; +Upgrade +------- + +If you've used the Twitter bridge plugin prior to version 0.9.5, +you'll need to run the new scripts/initialize_notice_to_status.php +script to initialize the new notice-to-status mapping file, which +greatly improves the integration between StatusNet and Twitter. + Administration panel -------------------- diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php index 1a0a69682a..34b82ef83a 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. @@ -193,18 +194,22 @@ class TwitterBridgePlugin extends Plugin */ function onAutoload($cls) { + $dir = dirname(__FILE__); + switch ($cls) { case 'TwittersettingsAction': case 'TwitterauthorizationAction': case 'TwitterloginAction': case 'TwitteradminpanelAction': - include_once INSTALLDIR . '/plugins/TwitterBridge/' . - strtolower(mb_substr($cls, 0, -6)) . '.php'; + include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; return false; case 'TwitterOAuthClient': case 'TwitterQueueHandler': - include_once INSTALLDIR . '/plugins/TwitterBridge/' . - strtolower($cls) . '.php'; + include_once $dir . '/' . strtolower($cls) . '.php'; + return false; + case 'Notice_to_status': + case 'Twitter_synch_status': + include_once $dir . '/' . $cls . '.php'; return false; default: return true; @@ -221,7 +226,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 +327,194 @@ 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; + } + /** + * When the site is set to ssl=sometimes mode, we should make sure our + * various auth-related pages are on SSL to keep things looking happy. + * Although we're not submitting passwords directly, we do link out to + * an authentication source and it's a lot happier if we've got some + * protection against MitM. + * + * @param string $action name + * @param boolean $ssl outval to force SSL + * @return mixed hook return value + */ + function onSensitiveAction($action, &$ssl) + { + $sensitive = array('twitteradminpanel', + 'twittersettings', + 'twitterauthorization', + 'twitterlogin'); + if (in_array($action, $sensitive)) { + $ssl = true; + return false; + } else { + return true; + } + } + + /** + * Database schema setup + * + * We maintain a table mapping StatusNet notices to Twitter statuses + * + * @see Schema + * @see ColumnDef + * + * @return boolean hook value; true means continue processing, false means stop. + */ + + function onCheckSchema() + { + $schema = Schema::get(); + + // For saving the last-synched status of various timelines + // home_timeline, messages (in), messages (out), ... + + $schema->ensureTable('twitter_synch_status', + array(new ColumnDef('foreign_id', 'bigint', null, + false, 'PRI'), + new ColumnDef('timeline', 'varchar', 255, + false, 'PRI'), + new ColumnDef('last_id', 'bigint', null, // XXX: check for PostgreSQL + false), + new ColumnDef('created', 'datetime', null, + false), + new ColumnDef('modified', 'datetime', null, + false))); + + // For storing user-submitted flags on profiles + + $schema->ensureTable('notice_to_status', + array(new ColumnDef('notice_id', 'integer', null, + false, 'PRI'), + new ColumnDef('status_id', 'bigint', null, // XXX: check for PostgreSQL + false, 'UNI'), + new ColumnDef('created', 'datetime', null, + false))); + + return true; + } + + /** + * If a notice gets deleted, remove the Notice_to_status mapping and + * delete the status on Twitter. + * + * @param User $user The user doing the deleting + * @param Notice $notice The notice getting deleted + * + * @return boolean hook value + */ + + function onStartDeleteOwnNotice(User $user, Notice $notice) + { + $n2s = Notice_to_status::staticGet('notice_id', $notice->id); + + if (!empty($n2s)) { + + $flink = Foreign_link::getByUserID($notice->profile_id, + TWITTER_SERVICE); // twitter service + + if (empty($flink)) { + return true; + } + + if (!TwitterOAuthClient::isPackedToken($flink->credentials)) { + $this->log(LOG_INFO, "Skipping deleting notice for {$notice->id} since link is not OAuth."); + return true; + } + + $token = TwitterOAuthClient::unpackToken($flink->credentials); + $client = new TwitterOAuthClient($token->key, $token->secret); + + $client->statusesDestroy($n2s->status_id); + + $n2s->delete(); + } + return true; + } + + /** + * Notify remote users when their notices get favorited. + * + * @param Profile or User $profile of local user doing the faving + * @param Notice $notice being favored + * @return hook return value + */ + + function onEndFavorNotice(Profile $profile, Notice $notice) + { + $flink = Foreign_link::getByUserID($profile->id, + TWITTER_SERVICE); // twitter service + + if (empty($flink)) { + return true; + } + + if (!TwitterOAuthClient::isPackedToken($flink->credentials)) { + $this->log(LOG_INFO, "Skipping fave processing for {$profile->id} since link is not OAuth."); + return true; + } + + $status_id = twitter_status_id($notice); + + if (empty($status_id)) { + return true; + } + + $token = TwitterOAuthClient::unpackToken($flink->credentials); + $client = new TwitterOAuthClient($token->key, $token->secret); + + $client->favoritesCreate($status_id); + + return true; + } + + /** + * Notify remote users when their notices get de-favorited. + * + * @param Profile $profile Profile person doing the de-faving + * @param Notice $notice Notice being favored + * + * @return hook return value + */ + + function onEndDisfavorNotice(Profile $profile, Notice $notice) + { + $flink = Foreign_link::getByUserID($profile->id, + TWITTER_SERVICE); // twitter service + + if (empty($flink)) { + return true; + } + + if (!TwitterOAuthClient::isPackedToken($flink->credentials)) { + $this->log(LOG_INFO, "Skipping fave processing for {$profile->id} since link is not OAuth."); + return true; + } + + $status_id = twitter_status_id($notice); + + if (empty($status_id)) { + return true; + } + + $token = TwitterOAuthClient::unpackToken($flink->credentials); + $client = new TwitterOAuthClient($token->key, $token->secret); + + $client->favoritesDestroy($status_id); + + return true; + } +} diff --git a/plugins/TwitterBridge/Twitter_synch_status.php b/plugins/TwitterBridge/Twitter_synch_status.php new file mode 100644 index 0000000000..2a5f1fd605 --- /dev/null +++ b/plugins/TwitterBridge/Twitter_synch_status.php @@ -0,0 +1,202 @@ + + * @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 . + */ + +if (!defined('STATUSNET')) { + exit(1); +} + +require_once INSTALLDIR . '/classes/Memcached_DataObject.php'; + +/** + * Store various timeline data + * + * We don't want to keep re-fetching the same statuses and direct messages from Twitter. + * So, we store the last ID we see from a timeline, and store it. Next time + * around, we use that ID in the since_id parameter. + * + * @category Action + * @package StatusNet + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 + * @link http://status.net/ + * + * @see DB_DataObject + */ + +class Twitter_synch_status extends Memcached_DataObject +{ + public $__table = 'twitter_synch_status'; // table name + public $foreign_id; // int(4) primary_key not_null + public $timeline; // varchar(255) primary_key not_null + public $last_id; // bigint not_null + public $created; // datetime not_null + public $modified; // datetime not_null + + /** + * Get an instance by key + * + * @param string $k Key to use to lookup (usually 'foreign_id' for this class) + * @param mixed $v Value to lookup + * + * @return Twitter_synch_status object found, or null for no hits + * + */ + + function staticGet($k, $v=null) + { + throw new Exception("Use pkeyGet() for this class."); + } + + /** + * Get an instance by compound primary key + * + * @param array $kv key-value pair array + * + * @return Twitter_synch_status object found, or null for no hits + * + */ + + function pkeyGet($kv) + { + return Memcached_DataObject::pkeyGet('Twitter_synch_status', $kv); + } + + /** + * 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('foreign_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + 'timeline' => DB_DATAOBJECT_STR + DB_DATAOBJECT_NOTNULL, + 'last_id' => DB_DATAOBJECT_INT + DB_DATAOBJECT_NOTNULL, + '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, since it + * won't appear in StatusNet's own keys list. In most cases, this will + * simply reference your keyTypes() function. + * + * @return array list of key field names + */ + + 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. This key information is used to store and clear + * cached data, so be sure to list any key that will be used for static + * lookups. + * + * @return array associative array of key definitions, field name to type: + * 'K' for primary key: for compound keys, add an entry for each component; + * 'U' for unique keys: compound keys are not well supported here. + */ + + function keyTypes() + { + return array('foreign_id' => 'K', + 'timeline' => 'K'); + } + + /** + * Magic formula for non-autoincrementing integer primary keys + * + * If a table has a single integer column as its primary key, DB_DataObject + * assumes that the column is auto-incrementing and makes a sequence table + * to do this incrementation. Since we don't need this for our class, we + * overload this method and return the magic formula that DB_DataObject needs. + * + * @return array magic three-false array that stops auto-incrementing. + */ + + function sequenceKey() + { + return array(false, false, false); + } + + static function getLastId($foreign_id, $timeline) + { + $tss = self::pkeyGet(array('foreign_id' => $foreign_id, + 'timeline' => $timeline)); + + if (empty($tss)) { + return null; + } else { + return $tss->last_id; + } + } + + static function setLastId($foreign_id, $timeline, $last_id) + { + $tss = self::pkeyGet(array('foreign_id' => $foreign_id, + 'timeline' => $timeline)); + + if (empty($tss)) { + + $tss = new Twitter_synch_status(); + + $tss->foreign_id = $foreign_id; + $tss->timeline = $timeline; + $tss->last_id = $last_id; + $tss->created = common_sql_now(); + $tss->modified = $tss->created; + + $tss->insert(); + + return true; + + } else { + + $orig = clone($tss); + + $tss->last_id = $last_id; + $tss->modified = common_sql_now(); + + $tss->update(); + + return true; + } + } +} diff --git a/plugins/TwitterBridge/daemons/synctwitterfriends.php b/plugins/TwitterBridge/daemons/synctwitterfriends.php index df7da0943d..02546a02ca 100755 --- a/plugins/TwitterBridge/daemons/synctwitterfriends.php +++ b/plugins/TwitterBridge/daemons/synctwitterfriends.php @@ -33,7 +33,6 @@ END_OF_TRIM_HELP; require_once INSTALLDIR . '/scripts/commandline.inc'; require_once INSTALLDIR . '/lib/parallelizingdaemon.php'; require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php'; -require_once INSTALLDIR . '/plugins/TwitterBridge/twitterbasicauthclient.php'; require_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php'; /** @@ -144,8 +143,8 @@ class SyncTwitterFriendsDaemon extends ParallelizingDaemon $client = new TwitterOAuthClient($token->key, $token->secret); common_debug($this->name() . '- Grabbing friends IDs with OAuth.'); } else { - $client = new TwitterBasicAuthClient($flink); - common_debug($this->name() . '- Grabbing friends IDs with basic auth.'); + common_debug("Skipping Twitter friends for {$flink->user_id} since not OAuth."); + return $friends; } try { diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php index 7c624fdb3b..f1305696b3 100755 --- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php +++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php @@ -40,7 +40,6 @@ require_once INSTALLDIR . '/scripts/commandline.inc'; require_once INSTALLDIR . '/lib/common.php'; require_once INSTALLDIR . '/lib/daemon.php'; require_once INSTALLDIR . '/plugins/TwitterBridge/twitter.php'; -require_once INSTALLDIR . '/plugins/TwitterBridge/twitterbasicauthclient.php'; require_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php'; /** @@ -104,7 +103,6 @@ class TwitterStatusFetcher extends ParallelizingDaemon function getObjects() { global $_DB_DATAOBJECT; - $flink = new Foreign_link(); $conn = &$flink->getDatabaseConnection(); @@ -168,10 +166,6 @@ class TwitterStatusFetcher extends ParallelizingDaemon common_debug($this->name() . ' - Trying to get timeline for Twitter user ' . $flink->foreign_id); - // XXX: Biggest remaining issue - How do we know at which status - // to start importing? How many statuses? Right now I'm going - // with the default last 20. - $client = null; if (TwitterOAuthClient::isPackedToken($flink->credentials)) { @@ -179,14 +173,17 @@ class TwitterStatusFetcher extends ParallelizingDaemon $client = new TwitterOAuthClient($token->key, $token->secret); common_debug($this->name() . ' - Grabbing friends timeline with OAuth.'); } else { - $client = new TwitterBasicAuthClient($flink); - common_debug($this->name() . ' - Grabbing friends timeline with basic auth.'); + common_debug("Skipping friends timeline for $flink->foreign_id since not OAuth."); } $timeline = null; + $lastId = Twitter_synch_status::getLastId($flink->foreign_id, 'home_timeline'); + + common_debug("Got lastId value '{$lastId}' for foreign id '{$flink->foreign_id}' and timeline 'home_timeline'"); + try { - $timeline = $client->statusesFriendsTimeline(); + $timeline = $client->statusesHomeTimeline($lastId); } catch (Exception $e) { common_log(LOG_WARNING, $this->name() . ' - Twitter client unable to get friends timeline for user ' . @@ -215,7 +212,23 @@ class TwitterStatusFetcher extends ParallelizingDaemon continue; } - $this->saveStatus($status, $flink); + // Don't save it if the user is protected + // FIXME: save it but treat it as private + + if ($status->user->protected) { + continue; + } + + $notice = $this->saveStatus($status); + + if (!empty($notice)) { + Inbox::insertNotice($flink->user_id, $notice->id); + } + } + + if (!empty($timeline)) { + Twitter_synch_status::setLastId($flink->foreign_id, 'home_timeline', $timeline[0]->id); + common_debug("Set lastId value '{$timeline[0]->id}' for foreign id '{$flink->foreign_id}' and timeline 'home_timeline'"); } // Okay, record the time we synced with Twitter for posterity @@ -224,32 +237,61 @@ class TwitterStatusFetcher extends ParallelizingDaemon $flink->update(); } - function saveStatus($status, $flink) + function saveStatus($status) { $profile = $this->ensureProfile($status->user); if (empty($profile)) { common_log(LOG_ERR, $this->name() . ' - Problem saving notice. No associated Profile.'); - return; + return null; } - $statusUri = 'http://twitter.com/' - . $status->user->screen_name - . '/status/' - . $status->id; + $statusUri = $this->makeStatusURI($status->user->screen_name, $status->id); // check to see if we've already imported the status - $dupe = $this->checkDupe($profile, $statusUri); + $n2s = Notice_to_status::staticGet('status_id', $status->id); - if (!empty($dupe)) { + if (!empty($n2s)) { common_log( LOG_INFO, $this->name() . - " - Ignoring duplicate import: $statusUri" + " - Ignoring duplicate import: {$status->id}" ); - return; + return Notice::staticGet('id', $n2s->notice_id); + } + + // If it's a retweet, save it as a repeat! + + if (!empty($status->retweeted_status)) { + common_log(LOG_INFO, "Status {$status->id} is a retweet of {$status->retweeted_status->id}."); + $original = $this->saveStatus($status->retweeted_status); + if (empty($original)) { + return null; + } else { + $author = $original->getProfile(); + // 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. + $content = sprintf(_('RT @%1$s %2$s'), + $author->nickname, + $original->content); + + if (Notice::contentTooLong($content)) { + $contentlimit = Notice::maxContent(); + $content = mb_substr($content, 0, $contentlimit - 4) . ' ...'; + } + + $repeat = Notice::saveNew($profile->id, + $content, + 'twitter', + array('repeat_of' => $original->id, + 'uri' => $statusUri, + 'is_local' => Notice::GATEWAY)); + common_log(LOG_INFO, "Saved {$repeat->id} as a repeat of {$original->id}"); + Notice_to_status::saveNew($repeat->id, $status->id); + return $repeat; + } } $notice = new Notice(); @@ -263,14 +305,36 @@ class TwitterStatusFetcher extends ParallelizingDaemon ); $notice->source = 'twitter'; + $notice->reply_to = null; + + if (!empty($status->in_reply_to_status_id)) { + common_log(LOG_INFO, "Status {$status->id} is a reply to status {$status->in_reply_to_status_id}"); + $n2s = Notice_to_status::staticGet('status_id', $status->in_reply_to_status_id); + if (empty($n2s)) { + common_log(LOG_INFO, "Couldn't find local notice for status {$status->in_reply_to_status_id}"); + } else { + $reply = Notice::staticGet('id', $n2s->notice_id); + if (empty($reply)) { + common_log(LOG_INFO, "Couldn't find local notice for status {$status->in_reply_to_status_id}"); + } else { + common_log(LOG_INFO, "Found local notice {$reply->id} for status {$status->in_reply_to_status_id}"); + $notice->reply_to = $reply->id; + $notice->conversation = $reply->conversation; + } + } + } + + if (empty($notice->conversation)) { + $conv = Conversation::create(); + $notice->conversation = $conv->id; + common_log(LOG_INFO, "No known conversation for status {$status->id} so making a new one {$conv->id}."); + } + $notice->is_local = Notice::GATEWAY; - $notice->content = common_shorten_links($status->text); - $notice->rendered = common_render_content( - $notice->content, - $notice - ); + $notice->content = html_entity_decode($status->text); + $notice->rendered = $this->linkify($status); if (Event::handle('StartNoticeSave', array(&$notice))) { @@ -285,23 +349,31 @@ class TwitterStatusFetcher extends ParallelizingDaemon Event::handle('EndNoticeSave', array($notice)); } - $orig = clone($notice); - $conv = Conversation::create(); + Notice_to_status::saveNew($notice->id, $status->id); - $notice->conversation = $conv->id; + $this->saveStatusMentions($notice, $status); - if (!$notice->update($orig)) { - common_log_db_error($notice, 'UPDATE', __FILE__); - common_log(LOG_ERR, $this->name() . - ' - Problem saving notice.'); - } - - Inbox::insertNotice($flink->user_id, $notice->id); $notice->blowOnInsert(); return $notice; } + /** + * Make an URI for a status. + * + * @param object $status status object + * + * @return string URI + */ + + function makeStatusURI($username, $id) + { + return 'http://twitter.com/' + . $username + . '/status/' + . $id; + } + /** * Look up a Profile by profileurl field. Profile::staticGet() was * not working consistently. @@ -631,6 +703,104 @@ class TwitterStatusFetcher extends ParallelizingDaemon return true; } + + const URL = 1; + const HASHTAG = 2; + const MENTION = 3; + + function linkify($status) + { + $text = $status->text; + + if (empty($status->entities)) { + return $text; + } + + // Move all the entities into order so we can + // replace them in reverse order and thus + // not mess up their indices + + $toReplace = array(); + + if (!empty($status->entities->urls)) { + foreach ($status->entities->urls as $url) { + $toReplace[$url->indices[0]] = array(self::URL, $url); + } + } + + if (!empty($status->entities->hashtags)) { + foreach ($status->entities->hashtags as $hashtag) { + $toReplace[$hashtag->indices[0]] = array(self::HASHTAG, $hashtag); + } + } + + if (!empty($status->entities->user_mentions)) { + foreach ($status->entities->user_mentions as $mention) { + $toReplace[$mention->indices[0]] = array(self::MENTION, $mention); + } + } + + // sort in reverse order by key + + krsort($toReplace); + + foreach ($toReplace as $part) { + list($type, $object) = $part; + switch($type) { + case self::URL: + $linkText = $this->makeUrlLink($object); + break; + case self::HASHTAG: + $linkText = $this->makeHashtagLink($object); + break; + case self::MENTION: + $linkText = $this->makeMentionLink($object); + break; + default: + continue; + } + $text = mb_substr($text, 0, $object->indices[0]) . $linkText . mb_substr($text, $object->indices[1]); + } + return $text; + } + + function makeUrlLink($object) + { + return "{$object->url}"; + } + + function makeHashtagLink($object) + { + return "#{$object->text}"; + } + + function makeMentionLink($object) + { + return "@{$object->screen_name}"; + } + + function saveStatusMentions($notice, $status) + { + $mentions = array(); + + if (empty($status->entities) || empty($status->entities->user_mentions)) { + return; + } + + foreach ($status->entities->user_mentions as $mention) { + $flink = Foreign_link::getByForeignID($mention->id, TWITTER_SERVICE); + if (!empty($flink)) { + $user = User::staticGet('id', $flink->user_id); + if (!empty($user)) { + $reply = new Reply(); + $reply->notice_id = $notice->id; + $reply->profile_id = $user->id; + common_log(LOG_INFO, __METHOD__ . ": saving reply: notice {$notice->id} to profile {$user->id}"); + $id = $reply->insert(); + } + } + } + } } $id = null; diff --git a/plugins/TwitterBridge/locale/TwitterBridge.pot b/plugins/TwitterBridge/locale/TwitterBridge.pot index eff1255799..c7ac8053ca 100644 --- a/plugins/TwitterBridge/locale/TwitterBridge.pot +++ b/plugins/TwitterBridge/locale/TwitterBridge.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-03-01 14:58-0800\n" +"POT-Creation-Date: 2010-04-29 23:39+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,11 +16,11 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: twitter.php:320 +#: twitter.php:342 msgid "Your Twitter bridge has been disabled." msgstr "" -#: twitter.php:324 +#: twitter.php:346 #, php-format msgid "" "Hi, %1$s. We're sorry to inform you that your link to Twitter has been " @@ -36,6 +36,89 @@ msgid "" "%3$s\n" msgstr "" +#: TwitterBridgePlugin.php:155 TwitterBridgePlugin.php:178 +#: TwitterBridgePlugin.php:291 twitteradminpanel.php:54 +msgid "Twitter" +msgstr "" + +#: TwitterBridgePlugin.php:156 +msgid "Login or register using Twitter" +msgstr "" + +#: TwitterBridgePlugin.php:179 +msgid "Twitter integration options" +msgstr "" + +#: TwitterBridgePlugin.php:292 +msgid "Twitter bridge configuration" +msgstr "" + +#: TwitterBridgePlugin.php:317 +msgid "" +"The Twitter \"bridge\" plugin allows you to integrate your StatusNet " +"instance with Twitter." +msgstr "" + +#: twitteradminpanel.php:65 +msgid "Twitter bridge settings" +msgstr "" + +#: twitteradminpanel.php:148 +msgid "Invalid consumer key. Max length is 255 characters." +msgstr "" + +#: twitteradminpanel.php:154 +msgid "Invalid consumer secret. Max length is 255 characters." +msgstr "" + +#: twitteradminpanel.php:207 +msgid "Twitter application settings" +msgstr "" + +#: twitteradminpanel.php:213 +msgid "Consumer key" +msgstr "" + +#: twitteradminpanel.php:214 +msgid "Consumer key assigned by Twitter" +msgstr "" + +#: twitteradminpanel.php:222 +msgid "Consumer secret" +msgstr "" + +#: twitteradminpanel.php:223 +msgid "Consumer secret assigned by Twitter" +msgstr "" + +#: twitteradminpanel.php:240 +msgid "Integration source" +msgstr "" + +#: twitteradminpanel.php:241 +msgid "Name of your Twitter application" +msgstr "" + +#: twitteradminpanel.php:253 +msgid "Options" +msgstr "" + +#: twitteradminpanel.php:260 +msgid "Enable \"Sign-in with Twitter\"" +msgstr "" + +#: twitteradminpanel.php:262 +msgid "Allow users to login with their Twitter credentials" +msgstr "" + +#: twitteradminpanel.php:268 +msgid "Enable Twitter import" +msgstr "" + +#: twitteradminpanel.php:270 +msgid "Allow users to import their Twitter friends' timelines" +msgstr "" + #: twitterauthorization.php:181 twitterauthorization.php:229 msgid "Couldn't link your Twitter account." msgstr "" @@ -44,20 +127,6 @@ msgstr "" msgid "Couldn't link your Twitter account: oauth_token mismatch." msgstr "" -#: TwitterBridgePlugin.php:114 -msgid "Twitter" -msgstr "" - -#: TwitterBridgePlugin.php:115 -msgid "Twitter integration options" -msgstr "" - -#: TwitterBridgePlugin.php:207 -msgid "" -"The Twitter \"bridge\" plugin allows you to integrate your StatusNet " -"instance with Twitter." -msgstr "" - #: twittersettings.php:59 msgid "Twitter settings" msgstr "" diff --git a/plugins/TwitterBridge/scripts/initialize_notice_to_status.php b/plugins/TwitterBridge/scripts/initialize_notice_to_status.php new file mode 100644 index 0000000000..d1acfd53fa --- /dev/null +++ b/plugins/TwitterBridge/scripts/initialize_notice_to_status.php @@ -0,0 +1,51 @@ +#!/usr/bin/env php +. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..')); + +$helptext = <<query('SELECT notice.id, notice.uri ' . + 'FROM notice LEFT JOIN notice_to_status ' . + 'ON notice.id = notice_to_status.notice_id ' . + 'WHERE notice.source = "twitter"' . + 'AND notice_to_status.status_id IS NULL'); + +while ($n->fetch()) { + if (preg_match('#^http://twitter.com/[\w_.]+/status/(\d+)$#', $n->uri, $match)) { + $status_id = $match[1]; + Notice_to_status::saveNew($n->id, $status_id); + } +} diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php index 21adc7a908..90b0f0f14f 100644 --- a/plugins/TwitterBridge/twitter.php +++ b/plugins/TwitterBridge/twitter.php @@ -23,7 +23,6 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { define('TWITTER_SERVICE', 1); // Twitter is foreign_service ID 1 -require_once INSTALLDIR . '/plugins/TwitterBridge/twitterbasicauthclient.php'; require_once INSTALLDIR . '/plugins/TwitterBridge/twitteroauthclient.php'; function add_twitter_user($twitter_id, $screen_name) @@ -75,8 +74,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 +85,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); @@ -98,9 +114,12 @@ function is_twitter_bound($notice, $flink) { // Check to see if notice should go to Twitter if (!empty($flink) && ($flink->noticesync & FOREIGN_NOTICE_SEND)) { - // If it's not a Twitter-style reply, or if the user WANTS to send replies. + // If it's not a Twitter-style reply, or if the user WANTS to send replies, + // or if it's in reply to a twitter notice + if (!preg_match('/^@[a-zA-Z0-9_]{1,15}\b/u', $notice->content) || - ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY)) { + ($flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) || + is_twitter_notice($notice->reply_to)) { return true; } } @@ -108,22 +127,64 @@ function is_twitter_bound($notice, $flink) { return false; } +function is_twitter_notice($id) +{ + $n2s = Notice_to_status::staticGet('notice_id', $id); + + return (!empty($n2s)); +} + function broadcast_twitter($notice) { $flink = Foreign_link::getByUserID($notice->profile_id, TWITTER_SERVICE); - if (is_twitter_bound($notice, $flink)) { - if (TwitterOAuthClient::isPackedToken($flink->credentials)) { + // Don't bother with basic auth, since it's no longer allowed + + if (!empty($flink) && TwitterOAuthClient::isPackedToken($flink->credentials)) { + if (!empty($notice->repeat_of) && is_twitter_notice($notice->repeat_of)) { + $retweet = retweet_notice($flink, Notice::staticGet('id', $notice->repeat_of)); + if (!empty($retweet)) { + Notice_to_status::saveNew($notice->id, $retweet->id); + } + } else if (is_twitter_bound($notice, $flink)) { return broadcast_oauth($notice, $flink); - } else { - return broadcast_basicauth($notice, $flink); } } return true; } +function retweet_notice($flink, $notice) +{ + $token = TwitterOAuthClient::unpackToken($flink->credentials); + $client = new TwitterOAuthClient($token->key, $token->secret); + + $id = twitter_status_id($notice); + + if (empty($id)) { + common_log(LOG_WARNING, "Trying to retweet notice {$notice->id} with no known status id."); + return null; + } + + try { + $status = $client->statusesRetweet($id); + return $status; + } catch (OAuthClientException $e) { + return process_error($e, $flink, $notice); + } +} + +function twitter_status_id($notice) +{ + $n2s = Notice_to_status::staticGet('notice_id', $notice->id); + if (empty($n2s)) { + return null; + } else { + return $n2s->status_id; + } +} + /** * Pull any extra information from a notice that we should transfer over * to Twitter beyond the notice text itself. @@ -139,10 +200,13 @@ function twitter_update_params($notice) $params['lat'] = $notice->lat; $params['long'] = $notice->lon; } + if (!empty($notice->reply_to) && is_twitter_notice($notice->reply_to)) { + $reply = Notice::staticGet('id', $notice->reply_to); + $params['in_reply_to_status_id'] = twitter_status_id($reply); + } return $params; } - function broadcast_oauth($notice, $flink) { $user = $flink->getUser(); $statustxt = format_status($notice); @@ -154,6 +218,9 @@ function broadcast_oauth($notice, $flink) { try { $status = $client->statusesUpdate($statustxt, $params); + if (!empty($status)) { + Notice_to_status::saveNew($notice->id, $status->id); + } } catch (OAuthClientException $e) { return process_error($e, $flink, $notice); } @@ -187,52 +254,6 @@ function broadcast_oauth($notice, $flink) { return true; } -function broadcast_basicauth($notice, $flink) -{ - $user = $flink->getUser(); - - $statustxt = format_status($notice); - $params = twitter_update_params($notice); - - $client = new TwitterBasicAuthClient($flink); - $status = null; - - try { - $status = $client->statusesUpdate($statustxt, $params); - } catch (BasicAuthException $e) { - return process_error($e, $flink, $notice); - } - - if (empty($status)) { - - $errmsg = sprintf('Twitter bridge - No data returned by Twitter API when ' . - 'trying to post notice %d for %s (user id %d).', - $notice->id, - $user->nickname, - $user->id); - - common_log(LOG_WARNING, $errmsg); - - $errmsg = sprintf('No data returned by Twitter API when ' . - 'trying to post notice %d for %s (user id %d).', - $notice->id, - $user->nickname, - $user->id); - common_log(LOG_WARNING, $errmsg); - return false; - } - - $msg = sprintf('Twitter bridge - posted notice %d to Twitter using ' . - 'HTTP basic auth for User %s (user id %d).', - $notice->id, - $user->nickname, - $user->id); - - common_log(LOG_INFO, $msg); - - return true; -} - function process_error($e, $flink, $notice) { $user = $flink->getUser(); @@ -335,10 +356,10 @@ function remove_twitter_link($flink) function mail_twitter_bridge_removed($user) { - common_init_locale($user->language); - $profile = $user->getProfile(); + common_switch_locale($user->language); + $subject = sprintf(_m('Your Twitter bridge has been disabled.')); $site_name = common_config('site', 'name'); @@ -354,7 +375,7 @@ function mail_twitter_bridge_removed($user) common_local_url('twittersettings'), common_config('site', 'name')); - common_init_locale(); + common_switch_locale(); return mail_to_user($user, $subject, $body); } diff --git a/plugins/TwitterBridge/twitteradminpanel.php b/plugins/TwitterBridge/twitteradminpanel.php index a78a92c667..69f8da078a 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/TwitterBridge/twitterbasicauthclient.php b/plugins/TwitterBridge/twitterbasicauthclient.php deleted file mode 100644 index 2c18c94695..0000000000 --- a/plugins/TwitterBridge/twitterbasicauthclient.php +++ /dev/null @@ -1,229 +0,0 @@ -. - * - * @category Integration - * @package StatusNet - * @author Zach Copley - * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - */ - -if (!defined('STATUSNET') && !defined('LACONICA')) { - exit(1); -} - -/** - * General Exception wrapper for HTTP basic auth errors - * - * @category Integration - * @package StatusNet - * @author Zach Copley - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - * - */ -class BasicAuthException extends Exception -{ -} - -/** - * Class for talking to the Twitter API with HTTP Basic Auth. - * - * @category Integration - * @package StatusNet - * @author Zach Copley - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 - * @link http://status.net/ - * - */ -class TwitterBasicAuthClient -{ - var $screen_name = null; - var $password = null; - - /** - * constructor - * - * @param Foreign_link $flink a Foreign_link storing the - * Twitter user's password, etc. - */ - function __construct($flink) - { - $fuser = $flink->getForeignUser(); - $this->screen_name = $fuser->nickname; - $this->password = $flink->credentials; - } - - /** - * Calls Twitter's /statuses/update API method - * - * @param string $status text of the status - * @param mixed $params optional other parameters to pass to Twitter, - * as defined. For back-compatibility, if an int - * is passed we'll consider it a reply-to ID. - * - * @return mixed the status - */ - function statusesUpdate($status, $in_reply_to_status_id = null) - { - $url = 'https://twitter.com/statuses/update.json'; - if (is_numeric($params)) { - $params = array('in_reply_to_status_id' => intval($params)); - } - $params['status'] = $status; - $params['source'] = common_config('integration', 'source'); - $response = $this->httpRequest($url, $params); - $status = json_decode($response); - return $status; - } - - /** - * Calls Twitter's /statuses/friends_timeline API method - * - * @param int $since_id show statuses after this id - * @param int $max_id show statuses before this id - * @param int $cnt number of statuses to show - * @param int $page page number - * - * @return mixed an array of statuses - */ - function statusesFriendsTimeline($since_id = null, $max_id = null, - $cnt = null, $page = null) - { - $url = 'https://twitter.com/statuses/friends_timeline.json'; - $params = array('since_id' => $since_id, - 'max_id' => $max_id, - 'count' => $cnt, - 'page' => $page); - $qry = http_build_query($params); - - if (!empty($qry)) { - $url .= "?$qry"; - } - - $response = $this->httpRequest($url); - $statuses = json_decode($response); - return $statuses; - } - - /** - * Calls Twitter's /statuses/friends API method - * - * @param int $id id of the user whom you wish to see friends of - * @param int $user_id numerical user id - * @param int $screen_name screen name - * @param int $page page number - * - * @return mixed an array of twitter users and their latest status - */ - function statusesFriends($id = null, $user_id = null, $screen_name = null, - $page = null) - { - $url = "https://twitter.com/statuses/friends.json"; - - $params = array('id' => $id, - 'user_id' => $user_id, - 'screen_name' => $screen_name, - 'page' => $page); - $qry = http_build_query($params); - - if (!empty($qry)) { - $url .= "?$qry"; - } - - $response = $this->httpRequest($url); - $friends = json_decode($response); - return $friends; - } - - /** - * Calls Twitter's /statuses/friends/ids API method - * - * @param int $id id of the user whom you wish to see friends of - * @param int $user_id numerical user id - * @param int $screen_name screen name - * @param int $page page number - * - * @return mixed a list of ids, 100 per page - */ - function friendsIds($id = null, $user_id = null, $screen_name = null, - $page = null) - { - $url = "https://twitter.com/friends/ids.json"; - - $params = array('id' => $id, - 'user_id' => $user_id, - 'screen_name' => $screen_name, - 'page' => $page); - $qry = http_build_query($params); - - if (!empty($qry)) { - $url .= "?$qry"; - } - - $response = $this->httpRequest($url); - $ids = json_decode($response); - return $ids; - } - - /** - * Make an HTTP request - * - * @param string $url Where to make the request - * @param array $params post parameters - * - * @return mixed the request - * @throws BasicAuthException - */ - function httpRequest($url, $params = null, $auth = true) - { - $request = HTTPClient::start(); - $request->setConfig(array( - 'follow_redirects' => true, - 'connect_timeout' => 120, - 'timeout' => 120, - 'ssl_verify_peer' => false, - 'ssl_verify_host' => false - )); - - if ($auth) { - $request->setAuth($this->screen_name, $this->password); - } - - if (isset($params)) { - // Twitter is strict about accepting invalid "Expect" headers - $headers = array('Expect:'); - $response = $request->post($url, $headers, $params); - } else { - $response = $request->get($url); - } - - $code = $response->getStatus(); - - if ($code < 200 || $code >= 400) { - throw new BasicAuthException($response->getBody(), $code); - } - - return $response->getBody(); - } - -} diff --git a/plugins/TwitterBridge/twitteroauthclient.php b/plugins/TwitterBridge/twitteroauthclient.php index d895d8c73c..dae76ec845 100644 --- a/plugins/TwitterBridge/twitteroauthclient.php +++ b/plugins/TwitterBridge/twitteroauthclient.php @@ -188,7 +188,7 @@ class TwitterOAuthClient extends OAuthClient } /** - * Calls Twitter's /statuses/friends_timeline API method + * Calls Twitter's /statuses/home_timeline API method * * @param int $since_id show statuses after this id * @param int $max_id show statuses before this id @@ -197,11 +197,47 @@ class TwitterOAuthClient extends OAuthClient * * @return mixed an array of statuses */ - function statusesFriendsTimeline($since_id = null, $max_id = null, + function statusesHomeTimeline($since_id = null, $max_id = null, + $cnt = null, $page = null) + { + + $url = 'https://twitter.com/statuses/home_timeline.json'; + + $params = array('include_entities' => 'true'); + + if (!empty($since_id)) { + $params['since_id'] = $since_id; + } + if (!empty($max_id)) { + $params['max_id'] = $max_id; + } + if (!empty($cnt)) { + $params['count'] = $cnt; + } + if (!empty($page)) { + $params['page'] = $page; + } + + $response = $this->oAuthGet($url, $params); + $statuses = json_decode($response); + return $statuses; + } + + /** + * Calls Twitter's /statuses/home_timeline API method + * + * @param int $since_id show statuses after this id + * @param int $max_id show statuses before this id + * @param int $cnt number of statuses to show + * @param int $page page number + * + * @return mixed an array of statuses, similar to friends_timeline but including retweets + */ + function statusesHomeTimeline($since_id = null, $max_id = null, $cnt = null, $page = null) { - $url = 'https://twitter.com/statuses/friends_timeline.json'; + $url = 'https://twitter.com/statuses/home_timeline.json'; $params = array('since_id' => $since_id, 'max_id' => $max_id, 'count' => $cnt, @@ -232,17 +268,25 @@ class TwitterOAuthClient extends OAuthClient { $url = "https://twitter.com/statuses/friends.json"; - $params = array('id' => $id, - 'user_id' => $user_id, - 'screen_name' => $screen_name, - 'page' => $page); - $qry = http_build_query($params); + $params = array(); - if (!empty($qry)) { - $url .= "?$qry"; + if (!empty($id)) { + $params['id'] = $id; } - $response = $this->oAuthGet($url); + if (!empty($user_id)) { + $params['user_id'] = $user_id; + } + + if (!empty($screen_name)) { + $params['screen_name'] = $screen_name; + } + + if (!empty($page)) { + $params['page'] = $page; + } + + $response = $this->oAuthGet($url, $params); $friends = json_decode($response); return $friends; } @@ -262,19 +306,90 @@ class TwitterOAuthClient extends OAuthClient { $url = "https://twitter.com/friends/ids.json"; - $params = array('id' => $id, - 'user_id' => $user_id, - 'screen_name' => $screen_name, - 'page' => $page); - $qry = http_build_query($params); + $params = array(); - if (!empty($qry)) { - $url .= "?$qry"; + if (!empty($id)) { + $params['id'] = $id; } - $response = $this->oAuthGet($url); + if (!empty($user_id)) { + $params['user_id'] = $user_id; + } + + if (!empty($screen_name)) { + $params['screen_name'] = $screen_name; + } + + if (!empty($page)) { + $params['page'] = $page; + } + + $response = $this->oAuthGet($url, $params); $ids = json_decode($response); return $ids; } + /** + * Calls Twitter's /statuses/retweet/id.json API method + * + * @param int $id id of the notice to retweet + * + * @return retweeted status + */ + + function statusesRetweet($id) + { + $url = "http://api.twitter.com/1/statuses/retweet/$id.json"; + $response = $this->oAuthPost($url); + $status = json_decode($response); + return $status; + } + + /** + * Calls Twitter's /favorites/create API method + * + * @param int $id ID of the status to favorite + * + * @return object faved status + */ + + function favoritesCreate($id) + { + $url = "http://api.twitter.com/1/favorites/create/$id.json"; + $response = $this->oAuthPost($url); + $status = json_decode($response); + return $status; + } + + /** + * Calls Twitter's /favorites/destroy API method + * + * @param int $id ID of the status to unfavorite + * + * @return object unfaved status + */ + + function favoritesDestroy($id) + { + $url = "http://api.twitter.com/1/favorites/destroy/$id.json"; + $response = $this->oAuthPost($url); + $status = json_decode($response); + return $status; + } + + /** + * Calls Twitter's /statuses/destroy API method + * + * @param int $id ID of the status to destroy + * + * @return object destroyed + */ + + function statusesDestroy($id) + { + $url = "http://api.twitter.com/1/statuses/destroy/$id.json"; + $response = $this->oAuthPost($url); + $status = json_decode($response); + return $status; + } } diff --git a/plugins/UserFlag/clearflag.php b/plugins/UserFlag/clearflag.php index bd6732e2da..f032527ed6 100644 --- a/plugins/UserFlag/clearflag.php +++ b/plugins/UserFlag/clearflag.php @@ -81,7 +81,7 @@ class ClearflagAction extends ProfileFormAction if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->handlePost(); if (!$this->boolean('ajax')) { - $this->returnToArgs(); + $this->returnToPrevious(); } } } diff --git a/plugins/UserFlag/flagprofile.php b/plugins/UserFlag/flagprofile.php index 2d0f0abb90..018c1e8ac9 100644 --- a/plugins/UserFlag/flagprofile.php +++ b/plugins/UserFlag/flagprofile.php @@ -87,7 +87,7 @@ class FlagprofileAction extends ProfileFormAction if ($_SERVER['REQUEST_METHOD'] == 'POST') { $this->handlePost(); if (!$this->boolean('ajax')) { - $this->returnToArgs(); + $this->returnToPrevious(); } } } diff --git a/plugins/WikiHowProfile/README b/plugins/WikiHowProfile/README new file mode 100644 index 0000000000..ee6096c9fb --- /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 0000000000..b72bd55d6d --- /dev/null +++ b/plugins/WikiHowProfile/WikiHowProfilePlugin.php @@ -0,0 +1,196 @@ +. + * + * @category Plugins + * @package StatusNet + * @author Brion Vibber + * @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 + * @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/plugins/Xmpp/Fake_XMPP.php b/plugins/Xmpp/Queued_XMPP.php similarity index 87% rename from plugins/Xmpp/Fake_XMPP.php rename to plugins/Xmpp/Queued_XMPP.php index 0f7cfd3b4d..24f542805b 100644 --- a/plugins/Xmpp/Fake_XMPP.php +++ b/plugins/Xmpp/Queued_XMPP.php @@ -2,7 +2,7 @@ /** * StatusNet, the distributed open-source microblogging tool * - * Instead of sending XMPP messages, retrieve the raw XML that would be sent + * Queue-mediated proxy class for outgoing XMPP messages. * * PHP version 5 * @@ -31,13 +31,17 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } -class Fake_XMPP extends XMPPHP_XMPP +class Queued_XMPP extends XMPPHP_XMPP { - public $would_be_sent = null; + /** + * Reference to the XmppPlugin object we're hooked up to. + */ + public $plugin; /** * Constructor * + * @param XmppPlugin $plugin * @param string $host * @param integer $port * @param string $user @@ -47,8 +51,10 @@ class Fake_XMPP extends XMPPHP_XMPP * @param boolean $printlog * @param string $loglevel */ - public function __construct($host, $port, $user, $password, $resource, $server = null, $printlog = false, $loglevel = null) + public function __construct($plugin, $host, $port, $user, $password, $resource, $server = null, $printlog = false, $loglevel = null) { + $this->plugin = $plugin; + parent::__construct($host, $port, $user, $password, $resource, $server, $printlog, $loglevel); // We use $host to connect, but $server to build JIDs if specified. @@ -73,7 +79,7 @@ class Fake_XMPP extends XMPPHP_XMPP */ public function send($msg, $timeout=NULL) { - $this->would_be_sent = $msg; + $this->plugin->enqueueOutgoingRaw($msg); } //@{ @@ -110,5 +116,6 @@ class Fake_XMPP extends XMPPHP_XMPP throw new Exception("Can't read stream from fake XMPP."); } //@} + } diff --git a/plugins/Xmpp/XmppPlugin.php b/plugins/Xmpp/XmppPlugin.php index 03bf47feac..2002541782 100644 --- a/plugins/Xmpp/XmppPlugin.php +++ b/plugins/Xmpp/XmppPlugin.php @@ -34,8 +34,6 @@ if (!defined('STATUSNET')) { exit(1); } -set_include_path(get_include_path() . PATH_SEPARATOR . INSTALLDIR . '/extlib/XMPPHP'); - /** * Plugin for XMPP * @@ -60,8 +58,6 @@ class XmppPlugin extends ImPlugin public $transport = 'xmpp'; - protected $fake_xmpp; - function getDisplayName(){ return _m('XMPP/Jabber/GTalk'); } @@ -258,7 +254,7 @@ class XmppPlugin extends ImPlugin return false; } - function daemon_screenname() + function daemonScreenname() { $ret = $this->user . '@' . $this->server; if($this->resource) @@ -289,10 +285,10 @@ class XmppPlugin extends ImPlugin switch ($cls) { case 'XMPPHP_XMPP': - require_once 'XMPP.php'; + require_once $dir . '/extlib/XMPPHP/XMPP.php'; return false; case 'Sharing_XMPP': - case 'Fake_XMPP': + case 'Queued_XMPP': require_once $dir . '/'.$cls.'.php'; return false; case 'XmppManager': @@ -315,20 +311,17 @@ class XmppPlugin extends ImPlugin return 'xmpp:' . $screenname; } - function send_message($screenname, $body) + function sendMessage($screenname, $body) { - $this->fake_xmpp->message($screenname, $body, 'chat'); - $this->enqueue_outgoing_raw($this->fake_xmpp->would_be_sent); - return true; + $this->queuedConnection()->message($screenname, $body, 'chat'); } - function send_notice($screenname, $notice) + function sendNotice($screenname, $notice) { - $msg = $this->format_notice($notice); + $msg = $this->formatNotice($notice); $entry = $this->format_entry($notice); - $this->fake_xmpp->message($screenname, $msg, 'chat', null, $entry); - $this->enqueue_outgoing_raw($this->fake_xmpp->would_be_sent); + $this->queuedConnection()->message($screenname, $msg, 'chat', null, $entry); return true; } @@ -371,24 +364,33 @@ class XmppPlugin extends ImPlugin return $html . ' ' . $entry; } - function receive_raw_message($pl) + function receiveRawMessage($pl) { $from = $this->normalize($pl['from']); if ($pl['type'] != 'chat') { - common_log(LOG_WARNING, "Ignoring message of type ".$pl['type']." from $from."); - return true; + $this->log(LOG_WARNING, "Ignoring message of type ".$pl['type']." from $from: " . $pl['xml']->toString()); + return; } if (mb_strlen($pl['body']) == 0) { - common_log(LOG_WARNING, "Ignoring message with empty body from $from."); - return true; + $this->log(LOG_WARNING, "Ignoring message with empty body from $from: " . $pl['xml']->toString()); + return; } - return $this->handle_incoming($from, $pl['body']); + $this->handleIncoming($from, $pl['body']); + + return true; } - function initialize(){ + /** + * Build a queue-proxied XMPP interface object. Any outgoing messages + * will be run back through us for enqueing rather than sent directly. + * + * @return Queued_XMPP + * @throws Exception if server settings are invalid. + */ + function queuedConnection(){ if(!isset($this->server)){ throw new Exception("must specify a server"); } @@ -402,7 +404,7 @@ class XmppPlugin extends ImPlugin throw new Exception("must specify a password"); } - $this->fake_xmpp = new Fake_XMPP($this->host ? + return new Queued_XMPP($this, $this->host ? $this->host : $this->server, $this->port, @@ -415,7 +417,6 @@ class XmppPlugin extends ImPlugin $this->debug ? XMPPHP_Log::LEVEL_VERBOSE : null ); - return true; } function onPluginVersion(&$versions) diff --git a/extlib/XMPPHP/BOSH.php b/plugins/Xmpp/extlib/XMPPHP/BOSH.php similarity index 100% rename from extlib/XMPPHP/BOSH.php rename to plugins/Xmpp/extlib/XMPPHP/BOSH.php diff --git a/extlib/XMPPHP/Exception.php b/plugins/Xmpp/extlib/XMPPHP/Exception.php similarity index 100% rename from extlib/XMPPHP/Exception.php rename to plugins/Xmpp/extlib/XMPPHP/Exception.php diff --git a/extlib/XMPPHP/Log.php b/plugins/Xmpp/extlib/XMPPHP/Log.php similarity index 100% rename from extlib/XMPPHP/Log.php rename to plugins/Xmpp/extlib/XMPPHP/Log.php diff --git a/extlib/XMPPHP/Roster.php b/plugins/Xmpp/extlib/XMPPHP/Roster.php similarity index 100% rename from extlib/XMPPHP/Roster.php rename to plugins/Xmpp/extlib/XMPPHP/Roster.php diff --git a/extlib/XMPPHP/XMLObj.php b/plugins/Xmpp/extlib/XMPPHP/XMLObj.php similarity index 100% rename from extlib/XMPPHP/XMLObj.php rename to plugins/Xmpp/extlib/XMPPHP/XMLObj.php diff --git a/extlib/XMPPHP/XMLStream.php b/plugins/Xmpp/extlib/XMPPHP/XMLStream.php similarity index 100% rename from extlib/XMPPHP/XMLStream.php rename to plugins/Xmpp/extlib/XMPPHP/XMLStream.php diff --git a/extlib/XMPPHP/XMPP.php b/plugins/Xmpp/extlib/XMPPHP/XMPP.php similarity index 99% rename from extlib/XMPPHP/XMPP.php rename to plugins/Xmpp/extlib/XMPPHP/XMPP.php index 429f45e565..c0f8963396 100644 --- a/extlib/XMPPHP/XMPP.php +++ b/plugins/Xmpp/extlib/XMPPHP/XMPP.php @@ -171,7 +171,7 @@ class XMPPHP_XMPP extends XMPPHP_XMLStream { $body = htmlspecialchars($body); $subject = htmlspecialchars($subject); - $out = ""; + $out = "fulljid}\" to=\"$to\" type='$type'>"; if($subject) $out .= "$subject"; $out .= "$body"; if($payload) $out .= $payload; @@ -194,7 +194,7 @@ class XMPPHP_XMPP extends XMPPHP_XMLStream { if($show == 'unavailable') $type = 'unavailable'; $out = "pingid}"); - $this->conn->send(""); + $this->conn->send(""); $this->lastping = $now; return true; } function handle_xmpp_message(&$pl) { - $this->plugin->enqueue_incoming_raw($pl); + $this->plugin->enqueueIncomingRaw($pl); return true; } diff --git a/scripts/apidocs.config b/scripts/apidocs.config new file mode 100644 index 0000000000..fdbe35ba19 --- /dev/null +++ b/scripts/apidocs.config @@ -0,0 +1,1551 @@ +# Doxyfile 1.6.2 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "StatusNet REST API" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../apidocs + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = NO + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = NO + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = NO + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = NO + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= NO + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = NO + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = NO + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../actions ../lib + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = api*.php + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = *Action Api* if* + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = NO + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be implemented using a PHP enabled web server instead of at the web client using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server based approach is that it scales better to large projects and allows full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = NO + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/scripts/clearcache.php b/scripts/clearcache.php index 0fb75daa03..c67d6275d8 100644 --- a/scripts/clearcache.php +++ b/scripts/clearcache.php @@ -38,7 +38,7 @@ require_once INSTALLDIR.'/scripts/commandline.inc'; $karg = get_option_value('k', 'key'); if (!empty($karg)) { - $k = common_cache_key($karg); + $k = Cache::key($karg); } else { $table = get_option_value('t', 'table'); if (empty($table)) { @@ -55,7 +55,7 @@ if (!empty($karg)) { print "Clearing key '$k'..."; -$c = common_memcache(); +$c = Cache::instance(); if (empty($c)) { die("Can't initialize cache object!\n"); diff --git a/scripts/commandline.inc b/scripts/commandline.inc index 9029bb19db..a475e11d01 100644 --- a/scripts/commandline.inc +++ b/scripts/commandline.inc @@ -123,6 +123,10 @@ require_once INSTALLDIR . '/lib/common.php'; set_error_handler('common_error_handler'); +// Set up the language infrastructure so we can localize anything that +// needs to be sent out to users, such as mail notifications. +common_init_language(); + function _make_matches($opt, $alt) { $matches = array(); diff --git a/scripts/docgen.php b/scripts/docgen.php index 78bbe37d8a..ac0a5c83dc 100755 --- a/scripts/docgen.php +++ b/scripts/docgen.php @@ -17,10 +17,30 @@ Options: ENDOFHELP; define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); -require_once INSTALLDIR.'/scripts/commandline.inc'; +set_include_path(INSTALLDIR . DIRECTORY_SEPARATOR . 'extlib' . PATH_SEPARATOR . get_include_path()); $pattern = "*.php *.inc"; $exclude = 'config.php */extlib/* */local/* */plugins/* */scripts/*'; +$plugin = false; + +require_once 'Console/Getopt.php'; +$parser = new Console_Getopt(); +$result = $parser->getopt($_SERVER['argv'], $shortoptions, $longoptions); +if (PEAR::isError($result)) { + print $result->getMessage() . "\n"; + exit(1); +} +list($options, $args) = $result; + +foreach ($options as $option) { + $arg = $option[0]; + if ($arg == '--plugin') { + $plugin = $options[1]; + } else if ($arg == 'h' || $arg == '--help') { + print $helptext; + exit(0); + } +} if (isset($args[0])) { $outdir = $args[0]; @@ -33,8 +53,7 @@ if (isset($args[0])) { exit(1); } -if (have_option('p', 'plugin')) { - $plugin = get_option_value('plugin'); +if ($plugin) { $exclude = "*/extlib/*"; $indir = INSTALLDIR . "/plugins/" . $plugin; if (!is_dir($indir)) { @@ -51,8 +70,19 @@ if (have_option('p', 'plugin')) { $indir = INSTALLDIR; } +function getVersion() +{ + // define('STATUSNET_VERSION', '0.9.1'); + $source = file_get_contents(INSTALLDIR . '/lib/common.php'); + if (preg_match('/^\s*define\s*\(\s*[\'"]STATUSNET_VERSION[\'"]\s*,\s*[\'"](.*)[\'"]\s*\)\s*;/m', $source, $matches)) { + return $matches[1]; + } + return 'unknown'; +} + + $replacements = array( - '%%version%%' => STATUSNET_VERSION, + '%%version%%' => getVersion(), '%%indir%%' => $indir, '%%pattern%%' => $pattern, '%%outdir%%' => $outdir, diff --git a/scripts/fixup_inboxes.php b/scripts/fixup_inboxes.php index d55a538853..c6e4fd0717 100755 --- a/scripts/fixup_inboxes.php +++ b/scripts/fixup_inboxes.php @@ -46,7 +46,7 @@ if ($start_at) { } $cnt = $user->find(); -$cache = common_memcache(); +$cache = Cache::instance(); while ($user->fetch()) { common_log(LOG_INFO, 'Updating inbox for user ' . $user->id); @@ -76,6 +76,6 @@ while ($user->fetch()) { $inbox->free(); unset($inbox); if ($cache) { - $cache->delete(common_cache_key('user:notices_with_friends:' . $user->id)); + $cache->delete(Cache::key('user:notices_with_friends:' . $user->id)); } } diff --git a/scripts/fixup_status_network.php b/scripts/fixup_status_network.php new file mode 100644 index 0000000000..def1eaa884 --- /dev/null +++ b/scripts/fixup_status_network.php @@ -0,0 +1,37 @@ +#!/usr/bin/env php +. + */ + +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 d1b06ff100..ca260f7bf9 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 4ebb696c71..e801efaa27 100755 --- a/scripts/setup_status_network.sh +++ b/scripts/setup_status_network.sh @@ -6,7 +6,7 @@ set -e source /etc/statusnet/setup.cfg -# setup_status_net.sh mysite 'My Site' '1user' 'owner@example.com' 'Firsty McLastname' +# setup_status_network.sh mysite 'My Site' '1user' 'owner@example.com' 'Firsty McLastname' export nickname="$1" export sitename="$2" @@ -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/showcache.php b/scripts/showcache.php index 93b57a484b..8ef08467d6 100644 --- a/scripts/showcache.php +++ b/scripts/showcache.php @@ -38,7 +38,7 @@ require_once INSTALLDIR.'/scripts/commandline.inc'; $karg = get_option_value('k'); if (!empty($karg)) { - $k = common_cache_key($karg); + $k = Cache::key($karg); } else { $table = get_option_value('t'); if (empty($table)) { @@ -55,7 +55,7 @@ if (!empty($karg)) { print "Checking key '$k'...\n"; -$c = common_memcache(); +$c = Cache::instance(); if (empty($c)) { die("Can't initialize cache object!\n"); diff --git a/scripts/uncache_users.php b/scripts/uncache_users.php index 5a1d330307..eb7e398023 100644 --- a/scripts/uncache_users.php +++ b/scripts/uncache_users.php @@ -34,7 +34,7 @@ common_log(LOG_INFO, 'Updating user inboxes.'); $ids = file($id_file); -$memc = common_memcache(); +$memc = Cache::instance(); foreach ($ids as $id) { @@ -47,6 +47,6 @@ foreach ($ids as $id) { $user->decache(); - $memc->delete(common_cache_key('user:notices_with_friends:'. $user->id)); - $memc->delete(common_cache_key('user:notices_with_friends:'. $user->id . ';last')); + $memc->delete(Cache::key('user:notices_with_friends:'. $user->id)); + $memc->delete(Cache::key('user:notices_with_friends:'. $user->id . ';last')); } diff --git a/scripts/update_po_templates.php b/scripts/update_po_templates.php index af9ed8d208..f10f208424 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 0000000000..b9e74a570a --- /dev/null +++ b/tests/ActivityGenerationTests.php @@ -0,0 +1,592 @@ +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 = ''."\n\n"; + $xml .= '' . "\n"; + $doc = DOMDocument::loadXML($xml); + $feed = $doc->documentElement; + $entries = $feed->getElementsByTagName('entry'); + + return $entries->item(0); + } +} diff --git a/tests/ActivityParseTests.php b/tests/ActivityParseTests.php index 4563da9146..378478d741 100644 --- a/tests/ActivityParseTests.php +++ b/tests/ActivityParseTests.php @@ -32,6 +32,18 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase $this->assertEquals('tag:versioncentral.example.org,2009:/change/1643245', $act->objects[0]->id); } + public function testExample2() + { + global $_example2; + $dom = DOMDocument::loadXML($_example2); + $act = new Activity($dom->documentElement); + + $this->assertFalse(empty($act)); + // Did we handle correctly with a typical payload? + $this->assertEquals("

Geraldine posted a Photo on PhotoPanic

\n " . + "", trim($act->content)); + } + public function testExample3() { global $_example3; @@ -305,6 +317,71 @@ class ActivityParseTests extends PHPUnit_Framework_TestCase } + public function testAtomContent() + { + $tests = array(array("Some regular plain text.", + "Some regular plain text."), + array("<b>this is not HTML</b>", + "<b>this is not HTML</b>"), + array("Some regular plain HTML.", + "Some regular plain HTML."), + array("<b>this is too HTML</b>", + "this is too HTML"), + array("&lt;b&gt;but this is not HTML!&lt;/b&gt;", + "<b>but this is not HTML!</b>"), + array("
Some regular plain XHTML.
", + "Some regular plain XHTML."), + array("
This is some XHTML!
", + "This is some XHTML!"), + array("
<b>This is not some XHTML!</b>
", + "<b>This is not some XHTML!</b>"), + array("
&lt;b&gt;This is not some XHTML either!&lt;/b&gt;
", + "&lt;b&gt;This is not some XHTML either!&lt;/b&gt;")); + foreach ($tests as $data) { + list($source, $output) = $data; + $xml = "" . + "http://example.com/fakeid" . + "Test" . + "Atom content tests" . + $source . + ""; + $dom = DOMDocument::loadXML($xml); + $act = new Activity($dom->documentElement); + + $this->assertFalse(empty($act)); + $this->assertEquals($output, trim($act->content)); + } + } + + public function testRssContent() + { + $tests = array(array("Some regular plain HTML.", + "Some regular plain HTML."), + array("Some <b>exciting bold HTML</b>", + "Some exciting bold HTML"), + array("Some &lt;b&gt;escaped non-HTML.&lt;/b&gt;", + "Some <b>escaped non-HTML.</b>"), + array("Some plain text.", + "Some plain text."), + array("Some <b>non-HTML text</b>", + "Some <b>non-HTML text</b>"), + array("Some &lt;b&gt;double-escaped text&lt;/b&gt;", + "Some &lt;b&gt;double-escaped text&lt;/b&gt;")); + foreach ($tests as $data) { + list($source, $output) = $data; + $xml = "" . + "http://example.com/fakeid" . + "RSS content tests" . + $source . + ""; + $dom = DOMDocument::loadXML($xml); + $act = new Activity($dom->documentElement); + + $this->assertFalse(empty($act)); + $this->assertEquals($output, trim($act->content)); + } + } + } $_example1 = <<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 new file mode 100644 index 0000000000..b636f4b8df Binary files /dev/null and b/tests/sample-uploads/image.gif differ diff --git a/tests/sample-uploads/image.jpeg b/tests/sample-uploads/image.jpeg new file mode 100644 index 0000000000..21fcb5aef4 Binary files /dev/null and b/tests/sample-uploads/image.jpeg differ diff --git a/tests/sample-uploads/image.jpg b/tests/sample-uploads/image.jpg new file mode 100644 index 0000000000..21fcb5aef4 Binary files /dev/null and b/tests/sample-uploads/image.jpg differ diff --git a/tests/sample-uploads/image.png b/tests/sample-uploads/image.png new file mode 100644 index 0000000000..60cbcfd17f Binary files /dev/null and b/tests/sample-uploads/image.png differ diff --git a/tests/sample-uploads/office.pdf b/tests/sample-uploads/office.pdf new file mode 100644 index 0000000000..670bc2343e Binary files /dev/null and b/tests/sample-uploads/office.pdf differ diff --git a/tests/sample-uploads/presentation.odp b/tests/sample-uploads/presentation.odp new file mode 100644 index 0000000000..8dd3a428bc Binary files /dev/null and b/tests/sample-uploads/presentation.odp differ diff --git a/tests/sample-uploads/presentation.otp b/tests/sample-uploads/presentation.otp new file mode 100644 index 0000000000..1927ee79dd Binary files /dev/null and b/tests/sample-uploads/presentation.otp differ diff --git a/tests/sample-uploads/presentation.pot b/tests/sample-uploads/presentation.pot new file mode 100644 index 0000000000..f5124ffa2b Binary files /dev/null and b/tests/sample-uploads/presentation.pot differ diff --git a/tests/sample-uploads/presentation.potm b/tests/sample-uploads/presentation.potm new file mode 100644 index 0000000000..ade1bcb10f Binary files /dev/null and b/tests/sample-uploads/presentation.potm differ diff --git a/tests/sample-uploads/presentation.ppt b/tests/sample-uploads/presentation.ppt new file mode 100644 index 0000000000..f5124ffa2b Binary files /dev/null and b/tests/sample-uploads/presentation.ppt differ diff --git a/tests/sample-uploads/presentation.pptx b/tests/sample-uploads/presentation.pptx new file mode 100644 index 0000000000..21ea61a159 Binary files /dev/null and b/tests/sample-uploads/presentation.pptx differ diff --git a/tests/sample-uploads/spreadsheet.ods b/tests/sample-uploads/spreadsheet.ods new file mode 100644 index 0000000000..7b43e75075 Binary files /dev/null and b/tests/sample-uploads/spreadsheet.ods differ diff --git a/tests/sample-uploads/spreadsheet.ots b/tests/sample-uploads/spreadsheet.ots new file mode 100644 index 0000000000..5f830e6def Binary files /dev/null and b/tests/sample-uploads/spreadsheet.ots differ diff --git a/tests/sample-uploads/spreadsheet.xls b/tests/sample-uploads/spreadsheet.xls new file mode 100644 index 0000000000..2d470e6871 Binary files /dev/null and b/tests/sample-uploads/spreadsheet.xls differ diff --git a/tests/sample-uploads/spreadsheet.xlsx b/tests/sample-uploads/spreadsheet.xlsx new file mode 100644 index 0000000000..b97a551f86 Binary files /dev/null and b/tests/sample-uploads/spreadsheet.xlsx differ diff --git a/tests/sample-uploads/spreadsheet.xlt b/tests/sample-uploads/spreadsheet.xlt new file mode 100644 index 0000000000..980423b20f Binary files /dev/null and b/tests/sample-uploads/spreadsheet.xlt differ diff --git a/tests/sample-uploads/wordproc.doc b/tests/sample-uploads/wordproc.doc new file mode 100644 index 0000000000..81c5e34c6c Binary files /dev/null and b/tests/sample-uploads/wordproc.doc differ diff --git a/tests/sample-uploads/wordproc.docx b/tests/sample-uploads/wordproc.docx new file mode 100644 index 0000000000..04ea3c3ec1 Binary files /dev/null and b/tests/sample-uploads/wordproc.docx differ diff --git a/tests/sample-uploads/wordproc.odt b/tests/sample-uploads/wordproc.odt new file mode 100644 index 0000000000..fa6fe5e9ff Binary files /dev/null and b/tests/sample-uploads/wordproc.odt differ diff --git a/tests/sample-uploads/wordproc.ott b/tests/sample-uploads/wordproc.ott new file mode 100644 index 0000000000..99ca8c0684 Binary files /dev/null and b/tests/sample-uploads/wordproc.ott differ diff --git a/tests/sample-uploads/wordproc.rtf b/tests/sample-uploads/wordproc.rtf new file mode 100644 index 0000000000..aad2c4605e --- /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/README b/theme/README index e154a723c4..56a7a66c38 100644 --- a/theme/README +++ b/theme/README @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 unported * @link http://status.net/ */ @@ -23,25 +23,19 @@ default/default-avatar-stream.png #48x48 default avatar for notice timelines default/default-avatar-profile.png #96x96 default avatar for the profile page - == How to create your own theme == - You probably want to do one of the following: - * If you just want to change the text, link, background, content, sidebar colours, background image: ** Do this from the Admin->Design settings (recommended!). You could also create a directory and a file structure like the default theme, search and replace with your own values. This is more work, but, you can do this if you plan to make additional *minimal* changes. - * If you want to change the background images and colours: # Create a directory and a file structure like the default theme. # Have your stylesheet import base/css/display.css and add your own styles below. It is okay to add *minimal* changes here. - * If you want to create a different layout, typography, background images and colours: ** Create your own theme directory (base or default) with stylesheets and images like. - Finally, enable your theme by selecting it from the Admin->Design interface. You can set site's logo from here as well. diff --git a/theme/base/css/display.css b/theme/base/css/display.css index f48bdf55e7..a278126dc2 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009-2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/base/css/ie.css b/theme/base/css/ie.css index 41d053ac46..48b5cd6af7 100644 --- a/theme/base/css/ie.css +++ b/theme/base/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ input.checkbox, input.radio { diff --git a/theme/base/css/ie6.css b/theme/base/css/ie6.css index 6df5e01cee..1784677d08 100644 --- a/theme/base/css/ie6.css +++ b/theme/base/css/ie6.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE6 specific styles */ address { margin-left:7px; diff --git a/theme/base/css/jquery.Jcrop.css b/theme/base/css/jquery.Jcrop.css index b35f332aae..a3f0d22776 100644 --- a/theme/base/css/jquery.Jcrop.css +++ b/theme/base/css/jquery.Jcrop.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* Fixes issue here http://code.google.com/p/jcrop/issues/detail?id=1 */ .jcrop-holder { text-align: left; } diff --git a/theme/base/css/uap.css b/theme/base/css/uap.css index 73be5f0c14..80c73e2ea5 100644 --- a/theme/base/css/uap.css +++ b/theme/base/css/uap.css @@ -7,7 +7,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/biz/css/base.css b/theme/biz/css/base.css index f5efdb49c4..c0ca648847 100644 --- a/theme/biz/css/base.css +++ b/theme/biz/css/base.css @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/biz/css/display.css b/theme/biz/css/display.css index ea09ef4c0f..8b49cbb247 100644 --- a/theme/biz/css/display.css +++ b/theme/biz/css/display.css @@ -3,11 +3,11 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @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/biz/css/ie.css b/theme/biz/css/ie.css index 2f463bb44d..46d14c2021 100644 --- a/theme/biz/css/ie.css +++ b/theme/biz/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ .notice-options input.submit { diff --git a/theme/cloudy/css/display.css b/theme/cloudy/css/display.css index caea5cf443..d93cd398fe 100644 --- a/theme/cloudy/css/display.css +++ b/theme/cloudy/css/display.css @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/cloudy/css/ie.css b/theme/cloudy/css/ie.css index a698676fbb..e8f964ef43 100644 --- a/theme/cloudy/css/ie.css +++ b/theme/cloudy/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ .notice-options input.submit { diff --git a/theme/default/css/display.css b/theme/default/css/display.css index 5e3748cb7a..a2624ff4c5 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -3,12 +3,10 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009-2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ -@import url(../../base/css/display.css) screen, projection, tv, print; - @media screen, projection, tv { body, a:active { diff --git a/theme/default/css/ie.css b/theme/default/css/ie.css index 2283471661..6a95e0369e 100644 --- a/theme/default/css/ie.css +++ b/theme/default/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ .notice-options input.submit { diff --git a/theme/default/theme.ini b/theme/default/theme.ini new file mode 100644 index 0000000000..33d0b67978 --- /dev/null +++ b/theme/default/theme.ini @@ -0,0 +1 @@ +include=base diff --git a/theme/h4ck3r/css/base.css b/theme/h4ck3r/css/base.css index 4c0e74218e..a4dac0145a 100644 --- a/theme/h4ck3r/css/base.css +++ b/theme/h4ck3r/css/base.css @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/h4ck3r/css/display.css b/theme/h4ck3r/css/display.css index 276659dced..edf071a659 100644 --- a/theme/h4ck3r/css/display.css +++ b/theme/h4ck3r/css/display.css @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/h4ck3r/css/ie.css b/theme/h4ck3r/css/ie.css index 2f463bb44d..46d14c2021 100644 --- a/theme/h4ck3r/css/ie.css +++ b/theme/h4ck3r/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ .notice-options input.submit { diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index 440dd8be22..67068104bc 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -3,12 +3,10 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009-2010 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ -@import url(../../base/css/display.css) screen, projection, tv, print; - @media screen, projection, tv { body, a:active { diff --git a/theme/identica/css/ie.css b/theme/identica/css/ie.css index f69c13ae76..62b62748b0 100644 --- a/theme/identica/css/ie.css +++ b/theme/identica/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ .notice-options input.submit { diff --git a/theme/identica/theme.ini b/theme/identica/theme.ini new file mode 100644 index 0000000000..33d0b67978 --- /dev/null +++ b/theme/identica/theme.ini @@ -0,0 +1 @@ +include=base diff --git a/theme/pigeonthoughts/css/base.css b/theme/pigeonthoughts/css/base.css index bc2e24dc50..c31ea6b678 100644 --- a/theme/pigeonthoughts/css/base.css +++ b/theme/pigeonthoughts/css/base.css @@ -3,7 +3,7 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @link http://status.net/ */ diff --git a/theme/pigeonthoughts/css/display.css b/theme/pigeonthoughts/css/display.css index e584683fcd..91078806a6 100644 --- a/theme/pigeonthoughts/css/display.css +++ b/theme/pigeonthoughts/css/display.css @@ -3,11 +3,11 @@ * @package StatusNet * @author Sarven Capadisli * @copyright 2009 StatusNet, Inc. - * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported * @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/pigeonthoughts/css/ie.css b/theme/pigeonthoughts/css/ie.css index 2f463bb44d..46d14c2021 100644 --- a/theme/pigeonthoughts/css/ie.css +++ b/theme/pigeonthoughts/css/ie.css @@ -1,3 +1,10 @@ +/** + * @package StatusNet + * @author Sarven Capadisli + * @copyright 2009-2010 StatusNet, Inc. + * @license http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported + * @link http://status.net/ + */ /* IE specific styles */ .notice-options input.submit {